diff --git a/AI Bot Starter App.mpr b/AI Bot Starter App.mpr index 8636e7d..9804aef 100644 Binary files a/AI Bot Starter App.mpr and b/AI Bot Starter App.mpr differ diff --git a/javasource/amazonbedrockconnector/impl/AmazonBedrockClient.java b/javasource/amazonbedrockconnector/impl/AmazonBedrockClient.java index b546d18..9786dbf 100644 --- a/javasource/amazonbedrockconnector/impl/AmazonBedrockClient.java +++ b/javasource/amazonbedrockconnector/impl/AmazonBedrockClient.java @@ -21,7 +21,7 @@ public class AmazonBedrockClient { private static final MxLogger LOGGER = new MxLogger(AmazonBedrockClient.class); //TODO Replace X.Y.Z below with correct version nr and delete this line in rc-branch - private static final String AWS_HEADER_VALUE = "Mendix-Bedrock-5.2.0"; + private static final String AWS_HEADER_VALUE = "Mendix-Bedrock-5.2.1"; public static BedrockClient getBedrockClient(Credentials credentials, ENUM_Region region, AbstractRequest request) { diff --git a/javasource/awsauthentication/actions/CreateAssumeRoleRequest.java b/javasource/awsauthentication/actions/CreateAssumeRoleRequest.java index c24ea4b..08320e8 100644 --- a/javasource/awsauthentication/actions/CreateAssumeRoleRequest.java +++ b/javasource/awsauthentication/actions/CreateAssumeRoleRequest.java @@ -96,7 +96,7 @@ public IMendixObject executeAction() throws Exception // Get Client Certificate from Environment variables JSONObject cert = Utils.getClientCertificateDetails(ClientCertificateID); if(nonNull(cert)) { - LOGGER.debug("Certificate found from Enviroment variables using ClientCertificate Id :: "+ClientCertificateID); + LOGGER.debug("Certificate found from Environment variables using ClientCertificate Id :: "+ClientCertificateID); String pfxCert = cert.getString(PFX_KEY); passPhrase = cert.getString(PASSWORD_KEY); // Load certificate into stream @@ -107,15 +107,15 @@ public IMendixObject executeAction() throws Exception } }else { // Running locally form studio-pro, certificate from configuration. - LOGGER.debug("Certificate not found from Enviroment variables, searching in runtime configuration"); + LOGGER.debug("Certificate not found from Environment variables, searching in runtime configuration"); int certIndex = getCertificateID(); // validates if the certificateID is not less than 0. As the input is 1 based but the retrieve is 0 based, the certIndex is check but the ClientCertificateID is logged // Also, this check cannot be performed within the validation function, as the client certificate id can be any string in cloud environments // TODO check if this can be moved to getCertificateID if (certIndex < 0) { - LOGGER.error("The client certifcate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); - throw new IllegalArgumentException("The client certifcate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); + LOGGER.error("The client certificate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); + throw new IllegalArgumentException("The client certificate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); } LOGGER.debug("Searching certificate at index :: "+ClientCertificateID); try(InputStream stream = Core.getConfiguration().getClientCertificates().get(certIndex)){ @@ -177,7 +177,7 @@ public IMendixObject executeAction() throws Exception awsRegionString, SERVICE); - // create the autherization header based on the steps found here: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html + // create the authorization header based on the steps found here: http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html String authorization_header = createAutherizationHeader(privateKey, algorithmName, algorithmHeader, amz_x509, serial_number_dec, amzDate, requestParameters, signedHeaders, host, credentialScope); @@ -303,7 +303,7 @@ private int getCertificateID() { int certIndex = Integer.valueOf(ClientCertificateID) - ONE_TO_ZERO_INDEX_CORRECTION; return certIndex; } catch (NumberFormatException e) { - LOGGER.error("The client certifcate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); + LOGGER.error("The client certificate id must be a number of 1 or greater. Instead value was set to: " + ClientCertificateID); throw e; } } diff --git a/javasource/awsauthentication/impl/AWSBuilderConfigurator.java b/javasource/awsauthentication/impl/AWSBuilderConfigurator.java index a9c31c1..5756cb0 100644 --- a/javasource/awsauthentication/impl/AWSBuilderConfigurator.java +++ b/javasource/awsauthentication/impl/AWSBuilderConfigurator.java @@ -44,7 +44,7 @@ public class AWSBuilderConfigurator -{ - public static ImmutablePair of(T left, U right) { - return new ImmutablePair(left, right); - } - - private final T left; - private final U right; - - private ImmutablePair(T left, U right) { - if (left == null) - throw new IllegalArgumentException("Left is NULL"); - if (right == null) - throw new IllegalArgumentException("Right is NULL"); - - this.left = left; - this.right = right; - } - - public T getLeft() { - return left; - } - - public U getRight() { - return right; - } - - @Override - public String toString() { - return "<" + left.toString()+ "," + right.toString() + ">"; - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof ImmutablePair)) - return false; - - if (this == other) - return true; - - ImmutablePair o = (ImmutablePair) other; - return left.equals(o.getLeft()) && right.equals(o.getRight()); - } - - @Override - public int hashCode() { - return new HashCodeBuilder(19, 85) - .append(left) - .append(right) - .toHashCode(); - } - -} +package communitycommons; + +import org.apache.commons.lang3.builder.HashCodeBuilder; + + +public class ImmutablePair +{ + public static ImmutablePair of(T left, U right) { + return new ImmutablePair(left, right); + } + + private final T left; + private final U right; + + private ImmutablePair(T left, U right) { + if (left == null) + throw new IllegalArgumentException("Left is NULL"); + if (right == null) + throw new IllegalArgumentException("Right is NULL"); + + this.left = left; + this.right = right; + } + + public T getLeft() { + return left; + } + + public U getRight() { + return right; + } + + @Override + public String toString() { + return "<" + left.toString()+ "," + right.toString() + ">"; + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof ImmutablePair)) + return false; + + if (this == other) + return true; + + ImmutablePair o = (ImmutablePair) other; + return left.equals(o.getLeft()) && right.equals(o.getRight()); + } + + @Override + public int hashCode() { + return new HashCodeBuilder(19, 85) + .append(left) + .append(right) + .toHashCode(); + } + +} diff --git a/javasource/communitycommons/Logging.java b/javasource/communitycommons/Logging.java index dfbf47e..5fb7859 100644 --- a/javasource/communitycommons/Logging.java +++ b/javasource/communitycommons/Logging.java @@ -1,90 +1,90 @@ -package communitycommons; - -import com.mendix.core.Core; -import com.mendix.logging.ILogNode; -import communitycommons.proxies.LogLevel; -import communitycommons.proxies.LogNodes; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -public class Logging { - - private static Map timers = new HashMap(); - - public static void trace(String lognode, String message) { - log(lognode, LogLevel.Trace, message, null); - } - - public static void info(String lognode, String message) { - log(lognode, LogLevel.Info, message, null); - } - - public static void debug(String lognode, String message) { - log(lognode, LogLevel.Debug, message, null); - } - - public static void warn(String lognode, String message, Throwable e) { - log(lognode, LogLevel.Warning, message, e); - } - - public static void warn(String lognode, String message) { - warn(lognode, message, null); - } - - public static void error(String lognode, String message, Throwable e) { - log(lognode, LogLevel.Error, message, e); - } - - public static void error(String lognode, String message) { - error(lognode, message, null); - } - - public static void critical(String lognode, String message, Throwable e) { - log(lognode, LogLevel.Critical, message, e); - } - - public static void log(String lognode, LogLevel loglevel, String message, Throwable e) { - ILogNode logger = createLogNode(lognode); - switch (loglevel) { - case Critical: - logger.critical(message, e); - break; - case Warning: - logger.warn(message, e); - break; - case Debug: - logger.debug(message); - break; - case Error: - logger.error(message, e); - break; - case Info: - logger.info(message); - break; - case Trace: - logger.trace(message); - break; - } - } - - public static Long measureEnd(String timerName, LogLevel loglevel, - String message) { - Long cur = new Date().getTime(); - if (!timers.containsKey(timerName)) { - throw new IllegalArgumentException(String.format("Timer with key %s not found", timerName)); - } - Long timeTaken = cur - timers.get(timerName); - String time = String.format("%d", timeTaken); - log(LogNodes.CommunityCommons.name(), loglevel, "Timer " + timerName + " finished in " + time + " ms. " + message, null); - return timeTaken; - } - - public static void measureStart(String timerName) { - timers.put(timerName, new Date().getTime()); - } - - public static ILogNode createLogNode(String logNode) { - return Core.getLogger(logNode); - } -} +package communitycommons; + +import com.mendix.core.Core; +import com.mendix.logging.ILogNode; +import communitycommons.proxies.LogLevel; +import communitycommons.proxies.LogNodes; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class Logging { + + private static Map timers = new HashMap(); + + public static void trace(String lognode, String message) { + log(lognode, LogLevel.Trace, message, null); + } + + public static void info(String lognode, String message) { + log(lognode, LogLevel.Info, message, null); + } + + public static void debug(String lognode, String message) { + log(lognode, LogLevel.Debug, message, null); + } + + public static void warn(String lognode, String message, Throwable e) { + log(lognode, LogLevel.Warning, message, e); + } + + public static void warn(String lognode, String message) { + warn(lognode, message, null); + } + + public static void error(String lognode, String message, Throwable e) { + log(lognode, LogLevel.Error, message, e); + } + + public static void error(String lognode, String message) { + error(lognode, message, null); + } + + public static void critical(String lognode, String message, Throwable e) { + log(lognode, LogLevel.Critical, message, e); + } + + public static void log(String lognode, LogLevel loglevel, String message, Throwable e) { + ILogNode logger = createLogNode(lognode); + switch (loglevel) { + case Critical: + logger.critical(message, e); + break; + case Warning: + logger.warn(message, e); + break; + case Debug: + logger.debug(message); + break; + case Error: + logger.error(message, e); + break; + case Info: + logger.info(message); + break; + case Trace: + logger.trace(message); + break; + } + } + + public static Long measureEnd(String timerName, LogLevel loglevel, + String message) { + Long cur = new Date().getTime(); + if (!timers.containsKey(timerName)) { + throw new IllegalArgumentException(String.format("Timer with key %s not found", timerName)); + } + Long timeTaken = cur - timers.get(timerName); + String time = String.format("%d", timeTaken); + log(LogNodes.CommunityCommons.name(), loglevel, "Timer " + timerName + " finished in " + time + " ms. " + message, null); + return timeTaken; + } + + public static void measureStart(String timerName) { + timers.put(timerName, new Date().getTime()); + } + + public static ILogNode createLogNode(String logNode) { + return Core.getLogger(logNode); + } +} diff --git a/javasource/communitycommons/Misc.java b/javasource/communitycommons/Misc.java index fffc18d..054ee2f 100644 --- a/javasource/communitycommons/Misc.java +++ b/javasource/communitycommons/Misc.java @@ -1,736 +1,736 @@ -package communitycommons; - -import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.core.conf.RuntimeVersion; -import com.mendix.core.objectmanagement.member.MendixBoolean; -import com.mendix.integration.WebserviceException; -import com.mendix.systemwideinterfaces.core.IContext; -import com.mendix.systemwideinterfaces.core.IMendixObject; -import com.mendix.systemwideinterfaces.core.ISession; -import com.mendix.systemwideinterfaces.core.IUser; -import communitycommons.proxies.LogNodes; -import static communitycommons.proxies.constants.Constants.getMergeMultiplePdfs_MaxAtOnce; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.net.URLConnection; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.atomic.AtomicLong; -import java.util.stream.Collectors; -import org.apache.commons.io.IOUtils; -import org.apache.pdfbox.multipdf.Overlay; -import org.apache.pdfbox.multipdf.PDFMergerUtility; -import org.apache.pdfbox.pdmodel.PDDocument; -import system.proxies.FileDocument; -import system.proxies.Language; - -public class Misc { - - private static final String LOGNODE = LogNodes.CommunityCommons.name(); - private static boolean UNDER_TEST = false; - - static { - try { - // if this succeeds, we have a runtime - Logging.createLogNode(LOGNODE); - } catch (NullPointerException npe) { - UNDER_TEST = true; - } - } - - public abstract static class IterateCallback { - - boolean start = false; - boolean stop = false; - private Iterator mapIter; - - public abstract void hit(T1 key, T2 value) throws Exception; - - public void exit() { - stop = true; - } - - public void remove() { - mapIter.remove(); - } - - synchronized void runOn(Map map) throws Exception { - if (start) { - throw new IllegalMonitorStateException(); - } - start = true; - - try { - this.mapIter = map.keySet().iterator(); - - while (mapIter.hasNext()) { - T1 key = mapIter.next(); - T2 value = map.get(key); - - hit(key, value); - - if (stop) { - break; - } - } - } finally { - //reset state to allow reuse, even when exceptions occur - mapIter = null; - stop = false; - start = false; - } - } - } - - /** - * - * @param Any Java enumeration, such as a proxy class for a Mendix enumeration - * @param enumClass For instance: LogLevel.class - * @param value The value to look up in the enumeration - * @return An Optional of the requested enumeration. Will have the requested value if found, - * Optional.empty() otherwise. - */ - public static > Optional enumFromString(final Class enumClass, final String value) { - try { - if (value != null) { - return Optional.of(E.valueOf(enumClass, value)); - } - } catch (IllegalArgumentException iae) { - if (!UNDER_TEST) { - Logging.warn(LOGNODE, String.format("No enumeration with value %s found", value)); - } - } - return Optional.empty(); - } - - /** - * Because you cannot remove items from a map while iteration, this function is introduced. In - * the callback, you can use this.remove() or this.exit() to either remove or break the loop. - * Use return; to continue - * - * @throws Exception - */ - public static void iterateMap(Map map, IterateCallback callback) throws Exception { - //http://marxsoftware.blogspot.com/2008/04/removing-entry-from-java-map-during.html - if (map == null || callback == null) { - throw new IllegalArgumentException(); - } - - callback.runOn(map); - } - - public static String getApplicationURL() { - final String applicationURL = UNDER_TEST ? "http://localhost:8080/" : Core.getConfiguration().getApplicationRootUrl(); - return StringUtils.removeEnd(applicationURL, "/"); - } - - public static String getRuntimeVersion() { - RuntimeVersion runtimeVersion = RuntimeVersion.getInstance(); - return runtimeVersion.toString(); - } - - public static String getModelVersion() { - return Core.getModelVersion(); - } - - public static void throwException(String message) throws UserThrownException { - throw new UserThrownException(message); - } - - public static void throwWebserviceException(String faultstring) throws WebserviceException { - throw new WebserviceException(WebserviceException.clientFaultCode, faultstring); - } - - public static String retrieveURL(String url, String postdata) throws Exception { - // Send data, appname - URLConnection conn = new URL(url).openConnection(); - - conn.setDoInput(true); - conn.setDoOutput(true); - conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - - if (postdata != null) { - try ( - OutputStream os = conn.getOutputStream()) { - IOUtils.copy(new ByteArrayInputStream(postdata.getBytes(StandardCharsets.UTF_8)), os); - } - } - - String result; - try ( - InputStream is = conn.getInputStream()) { - // Get the response - result = IOUtils.toString(is, StandardCharsets.UTF_8); - } - - return result; - } - - public static Boolean duplicateFileDocument(IContext context, IMendixObject toClone, IMendixObject target) throws Exception { - if (toClone == null || target == null) { - throw new Exception("No file to clone or to clone into provided"); - } - - MendixBoolean hasContents = (MendixBoolean) toClone.getMember(context, FileDocument.MemberNames.HasContents.toString()); - if (!hasContents.getValue(context)) { - return false; - } - - try ( - InputStream inputStream = Core.getFileDocumentContent(context, toClone)) { - Core.storeFileDocumentContent(context, target, (String) toClone.getValue(context, system.proxies.FileDocument.MemberNames.Name.toString()), inputStream); - } - - return true; - } - - public static Boolean duplicateImage(IContext context, IMendixObject toClone, IMendixObject target, int thumbWidth, int thumbHeight) throws Exception { - if (toClone == null || target == null) { - throw new Exception("No file to clone or to clone into provided"); - } - - MendixBoolean hasContents = (MendixBoolean) toClone.getMember(context, FileDocument.MemberNames.HasContents.toString()); - if (!hasContents.getValue(context)) { - return false; - } - - try ( - InputStream inputStream = Core.getImage(context, toClone, false)) { - Core.storeImageDocumentContent(context, target, inputStream, thumbWidth, thumbHeight); - - } - - return true; - } - - public static Boolean storeURLToFileDocument(IContext context, String url, IMendixObject __document, String filename) throws IOException { - if (__document == null || url == null || filename == null) { - throw new IllegalArgumentException("No document, filename or URL provided"); - } - - final int MAX_REMOTE_FILESIZE = 1024 * 1024 * 200; //maximum of 200 MB - try { - URL imageUrl = new URL(url); - URLConnection connection = imageUrl.openConnection(); - //we connect in 20 seconds or not at all - connection.setConnectTimeout(20000); - connection.setReadTimeout(20000); - connection.connect(); - - int contentLength = connection.getContentLength(); - - //check on forehand the size of the remote file, we don't want to kill the server by providing a 3 terabyte image. - Logging.trace(LOGNODE, String.format("Remote filesize: %d", contentLength)); - - if (contentLength > MAX_REMOTE_FILESIZE) { //maximum of 200 mb - throw new IllegalArgumentException(String.format("Wrong filesize of remote url: %d (max: %d)", contentLength, MAX_REMOTE_FILESIZE)); - } - - InputStream fileContentIS; - try (InputStream connectionInputStream = connection.getInputStream()) { - if (contentLength >= 0) { - fileContentIS = connectionInputStream; - } else { // contentLength is negative or unknown - Logging.trace(LOGNODE, String.format("Unknown content length; limiting to %d", MAX_REMOTE_FILESIZE)); - byte[] outBytes = new byte[MAX_REMOTE_FILESIZE]; - int actualLength = IOUtils.read(connectionInputStream, outBytes, 0, MAX_REMOTE_FILESIZE); - fileContentIS = new ByteArrayInputStream(Arrays.copyOf(outBytes, actualLength)); - } - Core.storeFileDocumentContent(context, __document, filename, fileContentIS); - } - } catch (IOException ioe) { - Logging.error(LOGNODE, String.format("A problem occurred while reading from URL %s: %s", url, ioe.getMessage())); - throw ioe; - } - - return true; - } - - public static Long getFileSize(IContext context, IMendixObject document) { - final int BUFFER_SIZE = 4096; - long size = 0; - - if (context != null) { - byte[] buffer = new byte[BUFFER_SIZE]; - - try ( - InputStream inputStream = Core.getFileDocumentContent(context, document)) { - int i; - while ((i = inputStream.read(buffer)) != -1) { - size += i; - } - } catch (IOException e) { - Logging.error(LOGNODE, "Couldn't determine filesize of FileDocument '" + document.getId()); - } - } - - return size; - } - - public static void delay(long delaytime) throws InterruptedException { - Thread.sleep(delaytime); - } - - public static IContext getContextFor(IContext context, String username, boolean sudoContext) { - if (username == null || username.isEmpty()) { - throw new RuntimeException("Assertion: No username provided"); - } - - if (username.equals(context.getSession().getUserName())) { - return context; - } else { // when it is a scheduled event, then get the right session. - ISession session = getSessionFor(context, username); - - IContext c = session.createContext(); - if (sudoContext) { - return c.createSudoClone(); - } - - return c; - } - } - - private static ISession getSessionFor(IContext context, String username) { - ISession session = Core.getActiveSession(username); - - if (session == null) { - IContext newContext = context.getSession().createContext().createSudoClone(); - newContext.startTransaction(); - try { - session = initializeSessionForUser(newContext, username); - } catch (CoreException e) { - newContext.rollbackTransaction(); - - throw new RuntimeException("Failed to initialize session for user: " + username + ": " + e.getMessage(), e); - } finally { - newContext.endTransaction(); - } - } - - return session; - } - - private static ISession initializeSessionForUser(IContext context, String username) throws CoreException { - IUser user = Core.getUser(context, username); - - if (user == null) { - throw new RuntimeException("Assertion: user with username '" + username + "' does not exist"); - } - - return Core.initializeSession(user, null); - } - - public static Object executeMicroflowAsUser(IContext context, - String microflowName, String username, Boolean sudoContext, Object... args) throws Exception { - - if (context == null) { - throw new Exception("Assertion: No context provided"); - } - if (microflowName == null || microflowName.isEmpty()) { - throw new Exception("Assertion: No context provided"); - } - if (!Core.getMicroflowNames().contains(microflowName)) { - throw new Exception("Assertion: microflow not found: " + microflowName); - } - if (args.length % 2 != 0) { - throw new Exception("Assertion: odd number of dynamic arguments provided, please name every argument: " + args.length); - } - - Map params = new LinkedHashMap(); - for (int i = 0; i < args.length; i += 2) { - if (args[i] != null) { - params.put(args[i].toString(), args[i + 1]); - } - } - - IContext c = getContextFor(context, username, sudoContext); - - return Core.microflowCall(microflowName).withParams(params).execute(c); - } - - //MWE: based on: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html - static class MFSerialExecutor { - - private static MFSerialExecutor _instance = new MFSerialExecutor(); - - private final AtomicLong tasknr = new AtomicLong(); - private final ExecutorService executor; - - public static MFSerialExecutor instance() { - return _instance; - } - - private MFSerialExecutor() { - executor = Executors.newSingleThreadExecutor(new ThreadFactory() { - - //Default thread factory takes care of setting the proper thread context - private final ThreadFactory defaultFactory = Executors.defaultThreadFactory(); - - @Override - public Thread newThread(Runnable runnable) { - Thread t = defaultFactory.newThread(runnable); - t.setPriority(Thread.MIN_PRIORITY); - t.setName("CommunityCommons background pool executor thread"); - return t; - } - - }); - } - - public void execute(final Runnable command) { - if (command == null) { - throw new NullPointerException("command"); - } - - final long currenttasknr = tasknr.incrementAndGet(); - Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Scheduling task #" + currenttasknr); - - executor.submit(new Runnable() { - @Override - public void run() { - Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Running task #" + currenttasknr); - try { - command.run(); - } catch (RuntimeException e) { - Logging.error(LOGNODE, "[RunMicroflowAsyncInQueue] Execution of task #" + currenttasknr + " failed: " + e.getMessage(), e); - throw e; //single thread executor will continue, even if an exception is thrown. - } - Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Completed task #" + currenttasknr + ". Tasks left: " + (tasknr.get() - currenttasknr)); - } - }); - } - } - - public static Boolean runMicroflowAsyncInQueue(final String microflowName) { - MFSerialExecutor.instance().execute(new Runnable() { - @Override - public void run() { - try { - Future future = Core.executeAsync(Core.createSystemContext(), microflowName, true, new HashMap<>()); //MWE: somehow, it only works with system context... well thats OK for now. - future.get(); - } catch (CoreException | InterruptedException | ExecutionException e) { - throw new RuntimeException("Failed to run Async: " + microflowName + ": " + e.getMessage(), e); - } - } - }); - return true; - } - - public static Boolean runMicroflowInBackground(final IContext context, final String microflowName, - final IMendixObject paramObject) { - - MFSerialExecutor.instance().execute(new Runnable() { - - @Override - public void run() { - try { - IContext c = Core.createSystemContext(); - if (paramObject != null) { - Core.executeAsync(c, microflowName, true, paramObject).get(); //MWE: somehow, it only works with system context... well thats OK for now. - } else { - Core.executeAsync(c, microflowName, true, new HashMap<>()).get(); //MWE: somehow, it only works with system context... well thats OK for now. - } - } catch (CoreException | InterruptedException | ExecutionException e) { - throw new RuntimeException("Failed to run Async: " + microflowName + ": " + e.getMessage(), e); - } - - } - - }); - return true; - } - - private interface IBatchItemHandler { - - void exec(IContext context, IMendixObject obj) throws Exception; - - } - - private static class BatchState { - - private int state = 0; //-1 = error, 1 = done. - private final IBatchItemHandler callback; - - public BatchState(IBatchItemHandler callback) { - this.callback = callback; - } - - public void setState(int state) { - this.state = state; - } - - public int getState() { - return state; - } - - public void handle(IContext context, IMendixObject obj) throws Exception { - callback.exec(context, obj); - } - } - - public static Boolean executeMicroflowInBatches(String xpath, final String microflow, int batchsize, boolean waitUntilFinished, boolean asc) throws CoreException, InterruptedException { - Logging.debug(LOGNODE, "[ExecuteInBatches] Starting microflow batch '" + microflow + "..."); - - return executeInBatches(xpath, new BatchState(new IBatchItemHandler() { - - @Override - public void exec(IContext context, IMendixObject obj) throws Exception { - Core.executeAsync(context, microflow, true, obj).get(); - } - - }), batchsize, waitUntilFinished, asc); - } - - public static Boolean recommitInBatches(String xpath, int batchsize, - boolean waitUntilFinished, Boolean asc) throws CoreException, InterruptedException { - Logging.debug(LOGNODE, "[ExecuteInBatches] Starting recommit batch..."); - - return executeInBatches(xpath, new BatchState(new IBatchItemHandler() { - - @Override - public void exec(IContext context, IMendixObject obj) throws Exception { - Core.commit(context, obj); - } - - }), batchsize, waitUntilFinished, asc); - } - - public static Boolean executeInBatches(String xpathRaw, BatchState batchState, int batchsize, boolean waitUntilFinished, boolean asc) throws CoreException, InterruptedException { - String xpath = xpathRaw.startsWith("//") ? xpathRaw : "//" + xpathRaw; - - long count = Core.retrieveXPathQueryAggregate(Core.createSystemContext(), "count(" + xpath + ")"); - int loop = (int) Math.ceil(((float) count) / ((float) batchsize)); - - Logging.debug(LOGNODE, - "[ExecuteInBatches] Starting batch on ~ " + count + " objects divided over ~ " + loop + " batches. " - + (waitUntilFinished ? "Waiting until the batch has finished..." : "") - ); - - executeInBatchesHelper(xpath, batchsize, 0, batchState, count, asc); - - if (waitUntilFinished) { - while (batchState.getState() == 0) { - Thread.sleep(5000); - } - if (batchState.getState() == 1) { - Logging.debug(LOGNODE, "[ExecuteInBatches] Successfully finished batch"); - return true; - } - Logging.error(LOGNODE, "[ExecuteInBatches] Failed to finish batch. Please check the application log for more details."); - return false; - } - - return true; - } - - static void executeInBatchesHelper(final String xpath, final int batchsize, final long last, final BatchState batchState, final long count, final boolean asc) { - MFSerialExecutor.instance().execute(new Runnable() { - - @Override - public void run() { - try { - Thread.sleep(200); - IContext c = Core.createSystemContext(); - - List objects = Core.retrieveXPathQuery(c, xpath + (last > 0 ? "[id " + (asc ? "> " : "< ") + last + "]" : ""), - batchsize, - 0, - new HashMap() { - { - put("id", asc ? "asc" : "desc"); - } - } - ); - - //no new objects found :) - if (objects.isEmpty()) { - Logging.debug(LOGNODE, "[ExecuteInBatches] Succesfully finished batch on ~" + count + " objects."); - batchState.setState(1); - } else { - - //process objects - for (IMendixObject obj : objects) { - batchState.handle(c, obj); - } - - //invoke next batch - executeInBatchesHelper(xpath, batchsize, objects.get(objects.size() - 1).getId().toLong(), batchState, count, asc); - } - } catch (Exception e) { - batchState.setState(-1); - throw new RuntimeException("[ExecuteInBatches] Failed to run in batch: " + e.getMessage(), e); - } - } - - }); - } - - /** - * Tests if two objects are equal with throwing unecessary null pointer exceptions. - * - * This is almost the most stupid function ever, since it should be part of Java itself. - * - * @param left - * @param right - * @return - * @deprecated Native Java function Objects.equals() is available since Java 7 - */ - @Deprecated - public static boolean objectsAreEqual(Object left, Object right) { - if (left == null && right == null) { - return true; - } - if (left == null || right == null) { - return false; - } - return left.equals(right); - } - - /** - * Get the default language - * - * @param context - * @return The default language - * @throws CoreException - */ - public static Language getDefaultLanguage(IContext context) throws CoreException { - String languageCode = Core.getDefaultLanguage().getCode(); - List languageList = Language.load(context, "[Code = '" + languageCode + "']"); - if (languageList == null || languageList.isEmpty()) { - throw new RuntimeException("No language found for default language constant value " + languageCode); - } - return languageList.get(0); - } - - public static boolean mergePDF(IContext context, List documents, IMendixObject mergedDocument) throws IOException { - if (getMergeMultiplePdfs_MaxAtOnce() <= 0 || documents.size() <= getMergeMultiplePdfs_MaxAtOnce()) { - - List sources = new ArrayList<>(); - try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { - PDFMergerUtility mergePdf = new PDFMergerUtility(); - - for (FileDocument file : documents) { - InputStream content = Core.getFileDocumentContent(context, file.getMendixObject()); - sources.add(content); - } - mergePdf.addSources(sources); - mergePdf.setDestinationStream(out); - mergePdf.mergeDocuments(null); - - Core.storeFileDocumentContent(context, mergedDocument, new ByteArrayInputStream(out.toByteArray())); - - out.reset(); - documents.clear(); - } catch (IOException e) { - throw new RuntimeException("Failed to merge documents" + e.getMessage(), e); - } finally { // We cannot use try-with-resources because streams would be prematurely closed - for (InputStream is : sources) { - is.close(); - } - } - - return true; - } else { - throw new IllegalArgumentException("MergeMultiplePDFs: you cannot merge more than " + getMergeMultiplePdfs_MaxAtOnce() - + " PDF files at once. You are trying to merge " + documents.size() + " PDF files."); - } - } - - /** - * Overlay a generated PDF document with another PDF (containing the company stationary for - * example) - * - * @param context - * @param generatedDocumentMendixObject The document to overlay - * @param overlayMendixObject The document containing the overlay - * @param onTopOfContent if true, puts overlay position in the foreground, otherwise in the - * background - * @return boolean - * @throws IOException - */ - public static boolean overlayPdf(IContext context, IMendixObject generatedDocumentMendixObject, IMendixObject overlayMendixObject, boolean onTopOfContent) throws IOException { - Logging.trace(LOGNODE, "Retrieve generated document"); - try ( - PDDocument inputDoc = PDDocument.load(Core.getFileDocumentContent(context, generatedDocumentMendixObject)); - PDDocument overlayDoc = PDDocument.load(Core.getFileDocumentContent(context, overlayMendixObject)); - ByteArrayOutputStream baos = new ByteArrayOutputStream()) { - Logging.trace(LOGNODE, "Overlay PDF start, retrieve overlay PDF"); - - Logging.trace(LOGNODE, "Perform overlay"); - Overlay overlay = new Overlay(); - overlay.setInputPDF(inputDoc); - overlay.setDefaultOverlayPDF(overlayDoc); - if (onTopOfContent == true) { - overlay.setOverlayPosition(Overlay.Position.FOREGROUND); - } else { - overlay.setOverlayPosition(Overlay.Position.BACKGROUND); - } - - Logging.trace(LOGNODE, "Save result in output stream"); - - overlay.overlay(new HashMap<>()).save(baos); - - Logging.trace(LOGNODE, "Duplicate result in input stream"); - try (InputStream overlayedContent = new ByteArrayInputStream(baos.toByteArray())) { - Logging.trace(LOGNODE, "Store result in original document"); - Core.storeFileDocumentContent(context, generatedDocumentMendixObject, overlayedContent); - } - } - - Logging.trace(LOGNODE, "Overlay PDF end"); - return true; - } - - /** - * Get the Cloud Foundry Instance Index (0 for leader and >0 for slave) - * - * @return CF_INSTANCE_INDEX environment variable if available, otherwise -1 - */ - public static long getCFInstanceIndex() { - long cfInstanceIndex = -1L; - - try { - cfInstanceIndex = Long.parseLong(System.getenv("CF_INSTANCE_INDEX")); - } catch (SecurityException securityException) { - Logging.info(LOGNODE, "GetCFInstanceIndex: Could not access environment variable CF_INSTANCE_INDEX, permission denied. Value of -1 is returned."); - } catch (NumberFormatException numberFormatException) { - Logging.info(LOGNODE, "GetCFInstanceIndex: Could not parse value of environment variable CF_INSTANCE_INDEX as Long. Value of -1 is returned."); - } catch (NullPointerException nullPointerException) { - Logging.info(LOGNODE, "GetCFInstanceIndex: Could not find value for environment variable CF_INSTANCE_INDEX. This could indicate a local deployment is running. Value of -1 is returned."); - } - - return cfInstanceIndex; - } - - /** - * Returns the top n items of a List - * - * @param the type of the list elements - * @param objects the list to take the top n items from - * @param top the number of items to take - * @return the sublist of
objects
with max - *
top
elements - */ - public static List listTop(List objects, int top) { - return objects.stream() - .limit(top) - .collect(Collectors.toList()); - } -} +package communitycommons; + +import com.mendix.core.Core; +import com.mendix.core.CoreException; +import com.mendix.core.conf.RuntimeVersion; +import com.mendix.core.objectmanagement.member.MendixBoolean; +import com.mendix.integration.WebserviceException; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import com.mendix.systemwideinterfaces.core.ISession; +import com.mendix.systemwideinterfaces.core.IUser; +import communitycommons.proxies.LogNodes; +import static communitycommons.proxies.constants.Constants.getMergeMultiplePdfs_MaxAtOnce; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; +import org.apache.commons.io.IOUtils; +import org.apache.pdfbox.multipdf.Overlay; +import org.apache.pdfbox.multipdf.PDFMergerUtility; +import org.apache.pdfbox.pdmodel.PDDocument; +import system.proxies.FileDocument; +import system.proxies.Language; + +public class Misc { + + private static final String LOGNODE = LogNodes.CommunityCommons.name(); + private static boolean UNDER_TEST = false; + + static { + try { + // if this succeeds, we have a runtime + Logging.createLogNode(LOGNODE); + } catch (NullPointerException npe) { + UNDER_TEST = true; + } + } + + public abstract static class IterateCallback { + + boolean start = false; + boolean stop = false; + private Iterator mapIter; + + public abstract void hit(T1 key, T2 value) throws Exception; + + public void exit() { + stop = true; + } + + public void remove() { + mapIter.remove(); + } + + synchronized void runOn(Map map) throws Exception { + if (start) { + throw new IllegalMonitorStateException(); + } + start = true; + + try { + this.mapIter = map.keySet().iterator(); + + while (mapIter.hasNext()) { + T1 key = mapIter.next(); + T2 value = map.get(key); + + hit(key, value); + + if (stop) { + break; + } + } + } finally { + //reset state to allow reuse, even when exceptions occur + mapIter = null; + stop = false; + start = false; + } + } + } + + /** + * + * @param Any Java enumeration, such as a proxy class for a Mendix enumeration + * @param enumClass For instance: LogLevel.class + * @param value The value to look up in the enumeration + * @return An Optional of the requested enumeration. Will have the requested value if found, + * Optional.empty() otherwise. + */ + public static > Optional enumFromString(final Class enumClass, final String value) { + try { + if (value != null) { + return Optional.of(E.valueOf(enumClass, value)); + } + } catch (IllegalArgumentException iae) { + if (!UNDER_TEST) { + Logging.warn(LOGNODE, String.format("No enumeration with value %s found", value)); + } + } + return Optional.empty(); + } + + /** + * Because you cannot remove items from a map while iteration, this function is introduced. In + * the callback, you can use this.remove() or this.exit() to either remove or break the loop. + * Use return; to continue + * + * @throws Exception + */ + public static void iterateMap(Map map, IterateCallback callback) throws Exception { + //http://marxsoftware.blogspot.com/2008/04/removing-entry-from-java-map-during.html + if (map == null || callback == null) { + throw new IllegalArgumentException(); + } + + callback.runOn(map); + } + + public static String getApplicationURL() { + final String applicationURL = UNDER_TEST ? "http://localhost:8080/" : Core.getConfiguration().getApplicationRootUrl(); + return StringUtils.removeEnd(applicationURL, "/"); + } + + public static String getRuntimeVersion() { + RuntimeVersion runtimeVersion = RuntimeVersion.getInstance(); + return runtimeVersion.toString(); + } + + public static String getModelVersion() { + return Core.getModelVersion(); + } + + public static void throwException(String message) throws UserThrownException { + throw new UserThrownException(message); + } + + public static void throwWebserviceException(String faultstring) throws WebserviceException { + throw new WebserviceException(WebserviceException.clientFaultCode, faultstring); + } + + public static String retrieveURL(String url, String postdata) throws Exception { + // Send data, appname + URLConnection conn = new URL(url).openConnection(); + + conn.setDoInput(true); + conn.setDoOutput(true); + conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + + if (postdata != null) { + try ( + OutputStream os = conn.getOutputStream()) { + IOUtils.copy(new ByteArrayInputStream(postdata.getBytes(StandardCharsets.UTF_8)), os); + } + } + + String result; + try ( + InputStream is = conn.getInputStream()) { + // Get the response + result = IOUtils.toString(is, StandardCharsets.UTF_8); + } + + return result; + } + + public static Boolean duplicateFileDocument(IContext context, IMendixObject toClone, IMendixObject target) throws Exception { + if (toClone == null || target == null) { + throw new Exception("No file to clone or to clone into provided"); + } + + MendixBoolean hasContents = (MendixBoolean) toClone.getMember(context, FileDocument.MemberNames.HasContents.toString()); + if (!hasContents.getValue(context)) { + return false; + } + + try ( + InputStream inputStream = Core.getFileDocumentContent(context, toClone)) { + Core.storeFileDocumentContent(context, target, (String) toClone.getValue(context, system.proxies.FileDocument.MemberNames.Name.toString()), inputStream); + } + + return true; + } + + public static Boolean duplicateImage(IContext context, IMendixObject toClone, IMendixObject target, int thumbWidth, int thumbHeight) throws Exception { + if (toClone == null || target == null) { + throw new Exception("No file to clone or to clone into provided"); + } + + MendixBoolean hasContents = (MendixBoolean) toClone.getMember(context, FileDocument.MemberNames.HasContents.toString()); + if (!hasContents.getValue(context)) { + return false; + } + + try ( + InputStream inputStream = Core.getImage(context, toClone, false)) { + Core.storeImageDocumentContent(context, target, inputStream, thumbWidth, thumbHeight); + + } + + return true; + } + + public static Boolean storeURLToFileDocument(IContext context, String url, IMendixObject __document, String filename) throws IOException { + if (__document == null || url == null || filename == null) { + throw new IllegalArgumentException("No document, filename or URL provided"); + } + + final int MAX_REMOTE_FILESIZE = 1024 * 1024 * 200; //maximum of 200 MB + try { + URL imageUrl = new URL(url); + URLConnection connection = imageUrl.openConnection(); + //we connect in 20 seconds or not at all + connection.setConnectTimeout(20000); + connection.setReadTimeout(20000); + connection.connect(); + + int contentLength = connection.getContentLength(); + + //check on forehand the size of the remote file, we don't want to kill the server by providing a 3 terabyte image. + Logging.trace(LOGNODE, String.format("Remote filesize: %d", contentLength)); + + if (contentLength > MAX_REMOTE_FILESIZE) { //maximum of 200 mb + throw new IllegalArgumentException(String.format("Wrong filesize of remote url: %d (max: %d)", contentLength, MAX_REMOTE_FILESIZE)); + } + + InputStream fileContentIS; + try (InputStream connectionInputStream = connection.getInputStream()) { + if (contentLength >= 0) { + fileContentIS = connectionInputStream; + } else { // contentLength is negative or unknown + Logging.trace(LOGNODE, String.format("Unknown content length; limiting to %d", MAX_REMOTE_FILESIZE)); + byte[] outBytes = new byte[MAX_REMOTE_FILESIZE]; + int actualLength = IOUtils.read(connectionInputStream, outBytes, 0, MAX_REMOTE_FILESIZE); + fileContentIS = new ByteArrayInputStream(Arrays.copyOf(outBytes, actualLength)); + } + Core.storeFileDocumentContent(context, __document, filename, fileContentIS); + } + } catch (IOException ioe) { + Logging.error(LOGNODE, String.format("A problem occurred while reading from URL %s: %s", url, ioe.getMessage())); + throw ioe; + } + + return true; + } + + public static Long getFileSize(IContext context, IMendixObject document) { + final int BUFFER_SIZE = 4096; + long size = 0; + + if (context != null) { + byte[] buffer = new byte[BUFFER_SIZE]; + + try ( + InputStream inputStream = Core.getFileDocumentContent(context, document)) { + int i; + while ((i = inputStream.read(buffer)) != -1) { + size += i; + } + } catch (IOException e) { + Logging.error(LOGNODE, "Couldn't determine filesize of FileDocument '" + document.getId()); + } + } + + return size; + } + + public static void delay(long delaytime) throws InterruptedException { + Thread.sleep(delaytime); + } + + public static IContext getContextFor(IContext context, String username, boolean sudoContext) { + if (username == null || username.isEmpty()) { + throw new RuntimeException("Assertion: No username provided"); + } + + if (username.equals(context.getSession().getUserName())) { + return context; + } else { // when it is a scheduled event, then get the right session. + ISession session = getSessionFor(context, username); + + IContext c = session.createContext(); + if (sudoContext) { + return c.createSudoClone(); + } + + return c; + } + } + + private static ISession getSessionFor(IContext context, String username) { + ISession session = Core.getActiveSession(username); + + if (session == null) { + IContext newContext = context.getSession().createContext().createSudoClone(); + newContext.startTransaction(); + try { + session = initializeSessionForUser(newContext, username); + } catch (CoreException e) { + newContext.rollbackTransaction(); + + throw new RuntimeException("Failed to initialize session for user: " + username + ": " + e.getMessage(), e); + } finally { + newContext.endTransaction(); + } + } + + return session; + } + + private static ISession initializeSessionForUser(IContext context, String username) throws CoreException { + IUser user = Core.getUser(context, username); + + if (user == null) { + throw new RuntimeException("Assertion: user with username '" + username + "' does not exist"); + } + + return Core.initializeSession(user, null); + } + + public static Object executeMicroflowAsUser(IContext context, + String microflowName, String username, Boolean sudoContext, Object... args) throws Exception { + + if (context == null) { + throw new Exception("Assertion: No context provided"); + } + if (microflowName == null || microflowName.isEmpty()) { + throw new Exception("Assertion: No context provided"); + } + if (!Core.getMicroflowNames().contains(microflowName)) { + throw new Exception("Assertion: microflow not found: " + microflowName); + } + if (args.length % 2 != 0) { + throw new Exception("Assertion: odd number of dynamic arguments provided, please name every argument: " + args.length); + } + + Map params = new LinkedHashMap(); + for (int i = 0; i < args.length; i += 2) { + if (args[i] != null) { + params.put(args[i].toString(), args[i + 1]); + } + } + + IContext c = getContextFor(context, username, sudoContext); + + return Core.microflowCall(microflowName).withParams(params).execute(c); + } + + //MWE: based on: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executor.html + static class MFSerialExecutor { + + private static MFSerialExecutor _instance = new MFSerialExecutor(); + + private final AtomicLong tasknr = new AtomicLong(); + private final ExecutorService executor; + + public static MFSerialExecutor instance() { + return _instance; + } + + private MFSerialExecutor() { + executor = Executors.newSingleThreadExecutor(new ThreadFactory() { + + //Default thread factory takes care of setting the proper thread context + private final ThreadFactory defaultFactory = Executors.defaultThreadFactory(); + + @Override + public Thread newThread(Runnable runnable) { + Thread t = defaultFactory.newThread(runnable); + t.setPriority(Thread.MIN_PRIORITY); + t.setName("CommunityCommons background pool executor thread"); + return t; + } + + }); + } + + public void execute(final Runnable command) { + if (command == null) { + throw new NullPointerException("command"); + } + + final long currenttasknr = tasknr.incrementAndGet(); + Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Scheduling task #" + currenttasknr); + + executor.submit(new Runnable() { + @Override + public void run() { + Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Running task #" + currenttasknr); + try { + command.run(); + } catch (RuntimeException e) { + Logging.error(LOGNODE, "[RunMicroflowAsyncInQueue] Execution of task #" + currenttasknr + " failed: " + e.getMessage(), e); + throw e; //single thread executor will continue, even if an exception is thrown. + } + Logging.debug(LOGNODE, "[RunMicroflowAsyncInQueue] Completed task #" + currenttasknr + ". Tasks left: " + (tasknr.get() - currenttasknr)); + } + }); + } + } + + public static Boolean runMicroflowAsyncInQueue(final String microflowName) { + MFSerialExecutor.instance().execute(new Runnable() { + @Override + public void run() { + try { + Future future = Core.executeAsync(Core.createSystemContext(), microflowName, true, new HashMap<>()); //MWE: somehow, it only works with system context... well thats OK for now. + future.get(); + } catch (CoreException | InterruptedException | ExecutionException e) { + throw new RuntimeException("Failed to run Async: " + microflowName + ": " + e.getMessage(), e); + } + } + }); + return true; + } + + public static Boolean runMicroflowInBackground(final IContext context, final String microflowName, + final IMendixObject paramObject) { + + MFSerialExecutor.instance().execute(new Runnable() { + + @Override + public void run() { + try { + IContext c = Core.createSystemContext(); + if (paramObject != null) { + Core.executeAsync(c, microflowName, true, paramObject).get(); //MWE: somehow, it only works with system context... well thats OK for now. + } else { + Core.executeAsync(c, microflowName, true, new HashMap<>()).get(); //MWE: somehow, it only works with system context... well thats OK for now. + } + } catch (CoreException | InterruptedException | ExecutionException e) { + throw new RuntimeException("Failed to run Async: " + microflowName + ": " + e.getMessage(), e); + } + + } + + }); + return true; + } + + private interface IBatchItemHandler { + + void exec(IContext context, IMendixObject obj) throws Exception; + + } + + private static class BatchState { + + private int state = 0; //-1 = error, 1 = done. + private final IBatchItemHandler callback; + + public BatchState(IBatchItemHandler callback) { + this.callback = callback; + } + + public void setState(int state) { + this.state = state; + } + + public int getState() { + return state; + } + + public void handle(IContext context, IMendixObject obj) throws Exception { + callback.exec(context, obj); + } + } + + public static Boolean executeMicroflowInBatches(String xpath, final String microflow, int batchsize, boolean waitUntilFinished, boolean asc) throws CoreException, InterruptedException { + Logging.debug(LOGNODE, "[ExecuteInBatches] Starting microflow batch '" + microflow + "..."); + + return executeInBatches(xpath, new BatchState(new IBatchItemHandler() { + + @Override + public void exec(IContext context, IMendixObject obj) throws Exception { + Core.executeAsync(context, microflow, true, obj).get(); + } + + }), batchsize, waitUntilFinished, asc); + } + + public static Boolean recommitInBatches(String xpath, int batchsize, + boolean waitUntilFinished, Boolean asc) throws CoreException, InterruptedException { + Logging.debug(LOGNODE, "[ExecuteInBatches] Starting recommit batch..."); + + return executeInBatches(xpath, new BatchState(new IBatchItemHandler() { + + @Override + public void exec(IContext context, IMendixObject obj) throws Exception { + Core.commit(context, obj); + } + + }), batchsize, waitUntilFinished, asc); + } + + public static Boolean executeInBatches(String xpathRaw, BatchState batchState, int batchsize, boolean waitUntilFinished, boolean asc) throws CoreException, InterruptedException { + String xpath = xpathRaw.startsWith("//") ? xpathRaw : "//" + xpathRaw; + + long count = Core.retrieveXPathQueryAggregate(Core.createSystemContext(), "count(" + xpath + ")"); + int loop = (int) Math.ceil(((float) count) / ((float) batchsize)); + + Logging.debug(LOGNODE, + "[ExecuteInBatches] Starting batch on ~ " + count + " objects divided over ~ " + loop + " batches. " + + (waitUntilFinished ? "Waiting until the batch has finished..." : "") + ); + + executeInBatchesHelper(xpath, batchsize, 0, batchState, count, asc); + + if (waitUntilFinished) { + while (batchState.getState() == 0) { + Thread.sleep(5000); + } + if (batchState.getState() == 1) { + Logging.debug(LOGNODE, "[ExecuteInBatches] Successfully finished batch"); + return true; + } + Logging.error(LOGNODE, "[ExecuteInBatches] Failed to finish batch. Please check the application log for more details."); + return false; + } + + return true; + } + + static void executeInBatchesHelper(final String xpath, final int batchsize, final long last, final BatchState batchState, final long count, final boolean asc) { + MFSerialExecutor.instance().execute(new Runnable() { + + @Override + public void run() { + try { + Thread.sleep(200); + IContext c = Core.createSystemContext(); + + List objects = Core.retrieveXPathQuery(c, xpath + (last > 0 ? "[id " + (asc ? "> " : "< ") + last + "]" : ""), + batchsize, + 0, + new HashMap() { + { + put("id", asc ? "asc" : "desc"); + } + } + ); + + //no new objects found :) + if (objects.isEmpty()) { + Logging.debug(LOGNODE, "[ExecuteInBatches] Succesfully finished batch on ~" + count + " objects."); + batchState.setState(1); + } else { + + //process objects + for (IMendixObject obj : objects) { + batchState.handle(c, obj); + } + + //invoke next batch + executeInBatchesHelper(xpath, batchsize, objects.get(objects.size() - 1).getId().toLong(), batchState, count, asc); + } + } catch (Exception e) { + batchState.setState(-1); + throw new RuntimeException("[ExecuteInBatches] Failed to run in batch: " + e.getMessage(), e); + } + } + + }); + } + + /** + * Tests if two objects are equal with throwing unecessary null pointer exceptions. + * + * This is almost the most stupid function ever, since it should be part of Java itself. + * + * @param left + * @param right + * @return + * @deprecated Native Java function Objects.equals() is available since Java 7 + */ + @Deprecated + public static boolean objectsAreEqual(Object left, Object right) { + if (left == null && right == null) { + return true; + } + if (left == null || right == null) { + return false; + } + return left.equals(right); + } + + /** + * Get the default language + * + * @param context + * @return The default language + * @throws CoreException + */ + public static Language getDefaultLanguage(IContext context) throws CoreException { + String languageCode = Core.getDefaultLanguage().getCode(); + List languageList = Language.load(context, "[Code = '" + languageCode + "']"); + if (languageList == null || languageList.isEmpty()) { + throw new RuntimeException("No language found for default language constant value " + languageCode); + } + return languageList.get(0); + } + + public static boolean mergePDF(IContext context, List documents, IMendixObject mergedDocument) throws IOException { + if (getMergeMultiplePdfs_MaxAtOnce() <= 0 || documents.size() <= getMergeMultiplePdfs_MaxAtOnce()) { + + List sources = new ArrayList<>(); + try (ByteArrayOutputStream out = new ByteArrayOutputStream()) { + PDFMergerUtility mergePdf = new PDFMergerUtility(); + + for (FileDocument file : documents) { + InputStream content = Core.getFileDocumentContent(context, file.getMendixObject()); + sources.add(content); + } + mergePdf.addSources(sources); + mergePdf.setDestinationStream(out); + mergePdf.mergeDocuments(null); + + Core.storeFileDocumentContent(context, mergedDocument, new ByteArrayInputStream(out.toByteArray())); + + out.reset(); + documents.clear(); + } catch (IOException e) { + throw new RuntimeException("Failed to merge documents" + e.getMessage(), e); + } finally { // We cannot use try-with-resources because streams would be prematurely closed + for (InputStream is : sources) { + is.close(); + } + } + + return true; + } else { + throw new IllegalArgumentException("MergeMultiplePDFs: you cannot merge more than " + getMergeMultiplePdfs_MaxAtOnce() + + " PDF files at once. You are trying to merge " + documents.size() + " PDF files."); + } + } + + /** + * Overlay a generated PDF document with another PDF (containing the company stationary for + * example) + * + * @param context + * @param generatedDocumentMendixObject The document to overlay + * @param overlayMendixObject The document containing the overlay + * @param onTopOfContent if true, puts overlay position in the foreground, otherwise in the + * background + * @return boolean + * @throws IOException + */ + public static boolean overlayPdf(IContext context, IMendixObject generatedDocumentMendixObject, IMendixObject overlayMendixObject, boolean onTopOfContent) throws IOException { + Logging.trace(LOGNODE, "Retrieve generated document"); + try ( + PDDocument inputDoc = PDDocument.load(Core.getFileDocumentContent(context, generatedDocumentMendixObject)); + PDDocument overlayDoc = PDDocument.load(Core.getFileDocumentContent(context, overlayMendixObject)); + ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + Logging.trace(LOGNODE, "Overlay PDF start, retrieve overlay PDF"); + + Logging.trace(LOGNODE, "Perform overlay"); + Overlay overlay = new Overlay(); + overlay.setInputPDF(inputDoc); + overlay.setDefaultOverlayPDF(overlayDoc); + if (onTopOfContent == true) { + overlay.setOverlayPosition(Overlay.Position.FOREGROUND); + } else { + overlay.setOverlayPosition(Overlay.Position.BACKGROUND); + } + + Logging.trace(LOGNODE, "Save result in output stream"); + + overlay.overlay(new HashMap<>()).save(baos); + + Logging.trace(LOGNODE, "Duplicate result in input stream"); + try (InputStream overlayedContent = new ByteArrayInputStream(baos.toByteArray())) { + Logging.trace(LOGNODE, "Store result in original document"); + Core.storeFileDocumentContent(context, generatedDocumentMendixObject, overlayedContent); + } + } + + Logging.trace(LOGNODE, "Overlay PDF end"); + return true; + } + + /** + * Get the Cloud Foundry Instance Index (0 for leader and >0 for slave) + * + * @return CF_INSTANCE_INDEX environment variable if available, otherwise -1 + */ + public static long getCFInstanceIndex() { + long cfInstanceIndex = -1L; + + try { + cfInstanceIndex = Long.parseLong(System.getenv("CF_INSTANCE_INDEX")); + } catch (SecurityException securityException) { + Logging.info(LOGNODE, "GetCFInstanceIndex: Could not access environment variable CF_INSTANCE_INDEX, permission denied. Value of -1 is returned."); + } catch (NumberFormatException numberFormatException) { + Logging.info(LOGNODE, "GetCFInstanceIndex: Could not parse value of environment variable CF_INSTANCE_INDEX as Long. Value of -1 is returned."); + } catch (NullPointerException nullPointerException) { + Logging.info(LOGNODE, "GetCFInstanceIndex: Could not find value for environment variable CF_INSTANCE_INDEX. This could indicate a local deployment is running. Value of -1 is returned."); + } + + return cfInstanceIndex; + } + + /** + * Returns the top n items of a List + * + * @param the type of the list elements + * @param objects the list to take the top n items from + * @param top the number of items to take + * @return the sublist of
objects
with max + *
top
elements + */ + public static List listTop(List objects, int top) { + return objects.stream() + .limit(top) + .collect(Collectors.toList()); + } +} diff --git a/javasource/communitycommons/ORM.java b/javasource/communitycommons/ORM.java index f666e32..f7f853a 100644 --- a/javasource/communitycommons/ORM.java +++ b/javasource/communitycommons/ORM.java @@ -1,355 +1,355 @@ -package communitycommons; - -import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.core.objectmanagement.member.MendixAutoNumber; -import com.mendix.core.objectmanagement.member.MendixDateTime; -import com.mendix.core.objectmanagement.member.MendixEnum; -import com.mendix.core.objectmanagement.member.MendixObjectReference; -import com.mendix.core.objectmanagement.member.MendixObjectReferenceSet; -import com.mendix.systemwideinterfaces.core.IContext; -import com.mendix.systemwideinterfaces.core.IMendixIdentifier; -import com.mendix.systemwideinterfaces.core.IMendixObject; -import com.mendix.systemwideinterfaces.core.IMendixObject.ObjectState; -import com.mendix.systemwideinterfaces.core.IMendixObjectMember; -import com.mendix.systemwideinterfaces.core.IMendixObjectMember.MemberState; -import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation; -import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation.AssociationType; -import com.mendix.systemwideinterfaces.core.meta.IMetaEnumValue; -import com.mendix.systemwideinterfaces.core.meta.IMetaEnumeration; -import com.mendix.systemwideinterfaces.core.meta.IMetaObject; -import com.mendix.systemwideinterfaces.core.meta.IMetaPrimitive; -import com.mendix.systemwideinterfaces.core.meta.IMetaPrimitive.PrimitiveType; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import system.proxies.FileDocument; - -public class ORM { - - public static Long getGUID(IMendixObject item) { - return item.getId().toLong(); - } - - public static String getOriginalValueAsString(IContext context, IMendixObject item, - String member) { - return String.valueOf(item.getMember(context, member).getOriginalValue(context)); - } - - public static boolean objectHasChanged(IMendixObject anyobject) { - if (anyobject == null) { - throw new IllegalArgumentException("The provided object is empty"); - } - return anyobject.isChanged(); - } - - /** - * checks whether a certain member of an object has changed. If the objects itself is still new, - * we consider to be changes as well. - * - * @param item - * @param member - * @param context - * @return - */ - public static boolean memberHasChanged(IContext context, IMendixObject item, String member) { - if (item == null) { - throw new IllegalArgumentException("The provided object is empty"); - } - if (!item.hasMember(member)) { - throw new IllegalArgumentException("Unknown member: " + member); - } - return item.getMember(context, member).getState() == MemberState.CHANGED || item.getState() != ObjectState.NORMAL; - } - - public static void deepClone(IContext c, IMendixObject source, IMendixObject target, String membersToSkip, String membersToKeep, String reverseAssociations, String excludeEntities, String excludeModules) throws CoreException { - List toskip = Arrays.asList((membersToSkip + ",createdDate,changedDate").split(",")); - List tokeep = Arrays.asList((membersToKeep + ",System.owner,System.changedBy").split(",")); - List revAssoc = Arrays.asList(reverseAssociations.split(",")); - List skipEntities = Arrays.asList(excludeEntities.split(",")); - List skipModules = Arrays.asList(excludeModules.split(",")); - Map mappedIDs = new HashMap(); - duplicate(c, source, target, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedIDs); - } - - private static void duplicate(IContext ctx, IMendixObject src, IMendixObject tar, - List toskip, List tokeep, List revAssoc, - List skipEntities, List skipModules, - Map mappedObjects) throws CoreException { - mappedObjects.put(src.getId(), tar.getId()); - - Map> members = src.getMembers(ctx); - String type = src.getType() + "/"; - - for (var entry : members.entrySet()) { - String key = entry.getKey(); - if (!toskip.contains(key) && !toskip.contains(type + key)) { - IMendixObjectMember m = entry.getValue(); - if (m.isVirtual() || m instanceof MendixAutoNumber) { - continue; - } - - boolean keep = tokeep.contains(key) || tokeep.contains(type + key); - - if (m instanceof MendixObjectReference && !keep && m.getValue(ctx) != null) { - IMendixObject o = Core.retrieveId(ctx, ((MendixObjectReference) m).getValue(ctx)); - IMendixIdentifier refObj = getCloneOfObject(ctx, o, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); - tar.setValue(ctx, key, refObj); - } else if (m instanceof MendixObjectReferenceSet && !keep && m.getValue(ctx) != null) { - MendixObjectReferenceSet rs = (MendixObjectReferenceSet) m; - List res = new ArrayList(); - for (IMendixIdentifier item : rs.getValue(ctx)) { - IMendixObject o = Core.retrieveId(ctx, item); - IMendixIdentifier refObj = getCloneOfObject(ctx, o, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); - res.add(refObj); - } - tar.setValue(ctx, key, res); - } else if (m instanceof MendixAutoNumber) //skip autonumbers! Ticket 14893 - { - // do nothing - } else if ("__UUID__".equals(key) && (isFileDocument(src) || isFileDocument(tar))) { - // do nothing - } else { - tar.setValue(ctx, key, m.getValue(ctx)); - } - } - } - Core.commitWithoutEvents(ctx, tar); - duplicateReverseAssociations(ctx, src, tar, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); - } - - private static IMendixIdentifier getCloneOfObject(IContext ctx, IMendixObject src, - List toskip, List tokeep, List revAssoc, - List skipEntities, List skipModules, - Map mappedObjects) throws CoreException { - String objType = src.getMetaObject().getName(); - String modName = src.getMetaObject().getModuleName(); - - // if object is already being cloned, return ref to clone - if (mappedObjects.containsKey(src.getId())) { - return mappedObjects.get(src.getId()); - // if object should be skipped based on module or entity, return source object - } else if (skipEntities.contains(objType) || skipModules.contains(modName)) { - return src.getId(); - // if not already being cloned, create clone - } else { - IMendixObject clone = Core.instantiate(ctx, src.getType()); - duplicate(ctx, src, clone, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); - return clone.getId(); - } - } - - private static void duplicateReverseAssociations(IContext ctx, IMendixObject src, IMendixObject tar, - List toskip, List tokeep, List revAssocs, - List skipEntities, List skipModules, - Map mappedObjects) throws CoreException { - for (String fullAssocName : revAssocs) { - String[] parts = fullAssocName.split("/"); - - if (parts.length != 1 && parts.length != 3) //specifying entity has no meaning anymore, but remain backward compatible. - { - throw new IllegalArgumentException("Reverse association is not defined correctly, please mention the relation name only: '" + fullAssocName + "'"); - } - - String assocname = parts.length == 3 ? parts[1] : parts[0]; //support length 3 for backward compatibility - - IMetaAssociation massoc = src.getMetaObject().getDeclaredMetaAssociationChild(assocname); - - if (massoc != null) { - IMetaObject relationParent = massoc.getParent(); - // if the parent is in the exclude list, we can't clone the parent, and setting the - // references to the newly cloned target object will screw up the source data. - if (skipEntities.contains(relationParent.getName()) || skipModules.contains(relationParent.getModuleName())) { - throw new IllegalArgumentException("A reverse reference has been specified that starts at an entity in the exclude list, this is not possible to clone: '" + fullAssocName + "'"); - } - - //MWE: what to do with reverse reference sets? -> to avoid spam creating objects on - //reverse references, do not support referenceset (todo: we could keep a map of converted guids and reuse that!) - if (massoc.getType() == AssociationType.REFERENCESET) { - throw new IllegalArgumentException("It is not possible to clone reverse referencesets: '" + fullAssocName + "'"); - } - - List objs = Core.createXPathQuery(String.format("//%s[%s=$value]", relationParent.getName(), assocname)) - .setVariable("value", src) - .execute(ctx); - - for (IMendixObject obj : objs) { - @SuppressWarnings("unused") // object is unused on purpose - IMendixIdentifier refObj = getCloneOfObject(ctx, obj, toskip, tokeep, revAssocs, skipEntities, skipModules, mappedObjects); - // setting reference explicitly is not necessary, this has been done in the - // duplicate() call. - } - } - } - } - - public static Boolean commitWithoutEvents(IContext context, IMendixObject subject) throws CoreException { - Core.commitWithoutEvents(context, subject); - return true; - } - - public static String getValueOfPath(IContext context, IMendixObject substitute, String fullpath, String datetimeformat) throws Exception { - String[] path = fullpath.split("/"); - if (path.length == 1) { - IMendixObjectMember member = substitute.getMember(context, path[0]); - - //special case, see ticket 9135, format datetime. - if (member instanceof MendixDateTime) { - Date time = ((MendixDateTime) member).getValue(context); - if (time == null) { - return ""; - } - String f = datetimeformat != null && !datetimeformat.isEmpty() ? datetimeformat : "EEE dd MMM yyyy, HH:mm"; - return new SimpleDateFormat(f).format(time); - } - - if (member instanceof MendixEnum) { - String value = member.parseValueToString(context); - if (value == null || value.isEmpty()) { - return ""; - } - - IMetaEnumeration enumeration = ((MendixEnum) member).getEnumeration(); - IMetaEnumValue evalue = enumeration.getEnumValues().get(value); - return Core.getInternationalizedString(context, evalue.getI18NCaptionKey()); - } - //default - return member.parseValueToString(context); - } else if (path.length == 0) { - throw new Exception("communitycommons.ORM.getValueOfPath: Unexpected end of path."); - } else { - IMendixObjectMember member = substitute.getMember(context, path[0]); - if (member instanceof MendixObjectReference) { - MendixObjectReference ref = (MendixObjectReference) member; - IMendixIdentifier id = ref.getValue(context); - if (id == null) { - return ""; - } - IMendixObject obj = Core.retrieveId(context, id); - if (obj == null) { - return ""; - } - return getValueOfPath(context, obj, fullpath.substring(fullpath.indexOf("/") + 1), datetimeformat); - } else if (member instanceof MendixObjectReferenceSet) { - MendixObjectReferenceSet ref = (MendixObjectReferenceSet) member; - List ids = ref.getValue(context); - if (ids == null) { - return ""; - } - StringBuilder res = new StringBuilder(); - for (IMendixIdentifier id : ids) { - if (id == null) { - continue; - } - IMendixObject obj = Core.retrieveId(context, id); - if (obj == null) { - continue; - } - res.append(", "); - res.append(getValueOfPath(context, obj, fullpath.substring(fullpath.indexOf("/") + 1), datetimeformat)); - } - return res.length() > 1 ? res.toString().substring(2) : ""; - } else { - throw new Exception("communitycommons.ORM.getValueOfPath: Not a valid reference: '" + path[0] + "' in '" + fullpath + "'"); - } - } - } - - private static boolean isFileDocument(IMendixObject object) { - return Core.isSubClassOf(Core.getMetaObject(FileDocument.entityName), object.getMetaObject()); - } - - public static Boolean cloneObject(IContext c, IMendixObject source, - IMendixObject target, Boolean withAssociations) { - Map> members = source.getMembers(c); - - for (var entry : members.entrySet()) { - IMendixObjectMember m = entry.getValue(); - if (m.isVirtual()) { - continue; - } - if (m instanceof MendixAutoNumber) { - continue; - } - if ("__UUID__".equals(m.getName()) && (isFileDocument(source) || isFileDocument(target))) { - continue; - } - if (withAssociations || ((!(m instanceof MendixObjectReference) && !(m instanceof MendixObjectReferenceSet) && !(m instanceof MendixAutoNumber)))) { - target.setValue(c, entry.getKey(), m.getValue(c)); - } - } - return true; - } - - public static IMendixObject firstWhere(IContext c, String entityName, - Object member, String value) throws CoreException { - List items = Core.retrieveXPathQuery(c, String.format("//%s[%s = '%s']", entityName, member, value), 1, 0, new HashMap()); - if (items == null || items.size() == 0) { - return null; - } - return items.get(0); - } - - public static IMendixObject getLastChangedByUser(IContext context, - IMendixObject thing) throws CoreException { - if (thing == null || !thing.hasChangedByAttribute()) { - return null; - } - - IMendixIdentifier itemId = thing.getChangedBy(context); - if (itemId == null) { - return null; - } - - return Core.retrieveId(context, itemId); - } - - public static IMendixObject getCreatedByUser(IContext context, - IMendixObject thing) throws CoreException { - if (thing == null || !thing.hasOwnerAttribute()) { - return null; - } - - IMendixIdentifier itemId = thing.getOwner(context); - if (itemId == null) { - return null; - } - - return Core.retrieveId(context, itemId); - } - - public static void commitSilent(IContext c, IMendixObject mendixObject) { - try { - Core.commit(c, mendixObject); - } catch (CoreException e) { - throw new RuntimeException(e); - } - } - - public static void copyAttributes(IContext context, IMendixObject source, IMendixObject target) { - if (source == null) { - throw new IllegalStateException("source is null"); - } - if (target == null) { - throw new IllegalStateException("target is null"); - } - - for (IMetaPrimitive e : target.getMetaObject().getMetaPrimitives()) { - if (!source.hasMember(e.getName())) { - continue; - } - if (e.isVirtual() || e.getType() == PrimitiveType.AutoNumber) { - continue; - } - if ("__UUID__".equals(e.getName()) && (isFileDocument(source) || isFileDocument(target))) { - continue; - } - - target.setValue(context, e.getName(), source.getValue(context, e.getName())); - } - } -} +package communitycommons; + +import com.mendix.core.Core; +import com.mendix.core.CoreException; +import com.mendix.core.objectmanagement.member.MendixAutoNumber; +import com.mendix.core.objectmanagement.member.MendixDateTime; +import com.mendix.core.objectmanagement.member.MendixEnum; +import com.mendix.core.objectmanagement.member.MendixObjectReference; +import com.mendix.core.objectmanagement.member.MendixObjectReferenceSet; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.systemwideinterfaces.core.IMendixIdentifier; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import com.mendix.systemwideinterfaces.core.IMendixObject.ObjectState; +import com.mendix.systemwideinterfaces.core.IMendixObjectMember; +import com.mendix.systemwideinterfaces.core.IMendixObjectMember.MemberState; +import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation; +import com.mendix.systemwideinterfaces.core.meta.IMetaAssociation.AssociationType; +import com.mendix.systemwideinterfaces.core.meta.IMetaEnumValue; +import com.mendix.systemwideinterfaces.core.meta.IMetaEnumeration; +import com.mendix.systemwideinterfaces.core.meta.IMetaObject; +import com.mendix.systemwideinterfaces.core.meta.IMetaPrimitive; +import com.mendix.systemwideinterfaces.core.meta.IMetaPrimitive.PrimitiveType; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import system.proxies.FileDocument; + +public class ORM { + + public static Long getGUID(IMendixObject item) { + return item.getId().toLong(); + } + + public static String getOriginalValueAsString(IContext context, IMendixObject item, + String member) { + return String.valueOf(item.getMember(context, member).getOriginalValue(context)); + } + + public static boolean objectHasChanged(IMendixObject anyobject) { + if (anyobject == null) { + throw new IllegalArgumentException("The provided object is empty"); + } + return anyobject.isChanged(); + } + + /** + * checks whether a certain member of an object has changed. If the objects itself is still new, + * we consider to be changes as well. + * + * @param item + * @param member + * @param context + * @return + */ + public static boolean memberHasChanged(IContext context, IMendixObject item, String member) { + if (item == null) { + throw new IllegalArgumentException("The provided object is empty"); + } + if (!item.hasMember(member)) { + throw new IllegalArgumentException("Unknown member: " + member); + } + return item.getMember(context, member).getState() == MemberState.CHANGED || item.getState() != ObjectState.NORMAL; + } + + public static void deepClone(IContext c, IMendixObject source, IMendixObject target, String membersToSkip, String membersToKeep, String reverseAssociations, String excludeEntities, String excludeModules) throws CoreException { + List toskip = Arrays.asList((membersToSkip + ",createdDate,changedDate").split(",")); + List tokeep = Arrays.asList((membersToKeep + ",System.owner,System.changedBy").split(",")); + List revAssoc = Arrays.asList(reverseAssociations.split(",")); + List skipEntities = Arrays.asList(excludeEntities.split(",")); + List skipModules = Arrays.asList(excludeModules.split(",")); + Map mappedIDs = new HashMap(); + duplicate(c, source, target, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedIDs); + } + + private static void duplicate(IContext ctx, IMendixObject src, IMendixObject tar, + List toskip, List tokeep, List revAssoc, + List skipEntities, List skipModules, + Map mappedObjects) throws CoreException { + mappedObjects.put(src.getId(), tar.getId()); + + Map> members = src.getMembers(ctx); + String type = src.getType() + "/"; + + for (var entry : members.entrySet()) { + String key = entry.getKey(); + if (!toskip.contains(key) && !toskip.contains(type + key)) { + IMendixObjectMember m = entry.getValue(); + if (m.isVirtual() || m instanceof MendixAutoNumber) { + continue; + } + + boolean keep = tokeep.contains(key) || tokeep.contains(type + key); + + if (m instanceof MendixObjectReference && !keep && m.getValue(ctx) != null) { + IMendixObject o = Core.retrieveId(ctx, ((MendixObjectReference) m).getValue(ctx)); + IMendixIdentifier refObj = getCloneOfObject(ctx, o, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); + tar.setValue(ctx, key, refObj); + } else if (m instanceof MendixObjectReferenceSet && !keep && m.getValue(ctx) != null) { + MendixObjectReferenceSet rs = (MendixObjectReferenceSet) m; + List res = new ArrayList(); + for (IMendixIdentifier item : rs.getValue(ctx)) { + IMendixObject o = Core.retrieveId(ctx, item); + IMendixIdentifier refObj = getCloneOfObject(ctx, o, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); + res.add(refObj); + } + tar.setValue(ctx, key, res); + } else if (m instanceof MendixAutoNumber) //skip autonumbers! Ticket 14893 + { + // do nothing + } else if ("__UUID__".equals(key) && (isFileDocument(src) || isFileDocument(tar))) { + // do nothing + } else { + tar.setValue(ctx, key, m.getValue(ctx)); + } + } + } + Core.commitWithoutEvents(ctx, tar); + duplicateReverseAssociations(ctx, src, tar, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); + } + + private static IMendixIdentifier getCloneOfObject(IContext ctx, IMendixObject src, + List toskip, List tokeep, List revAssoc, + List skipEntities, List skipModules, + Map mappedObjects) throws CoreException { + String objType = src.getMetaObject().getName(); + String modName = src.getMetaObject().getModuleName(); + + // if object is already being cloned, return ref to clone + if (mappedObjects.containsKey(src.getId())) { + return mappedObjects.get(src.getId()); + // if object should be skipped based on module or entity, return source object + } else if (skipEntities.contains(objType) || skipModules.contains(modName)) { + return src.getId(); + // if not already being cloned, create clone + } else { + IMendixObject clone = Core.instantiate(ctx, src.getType()); + duplicate(ctx, src, clone, toskip, tokeep, revAssoc, skipEntities, skipModules, mappedObjects); + return clone.getId(); + } + } + + private static void duplicateReverseAssociations(IContext ctx, IMendixObject src, IMendixObject tar, + List toskip, List tokeep, List revAssocs, + List skipEntities, List skipModules, + Map mappedObjects) throws CoreException { + for (String fullAssocName : revAssocs) { + String[] parts = fullAssocName.split("/"); + + if (parts.length != 1 && parts.length != 3) //specifying entity has no meaning anymore, but remain backward compatible. + { + throw new IllegalArgumentException("Reverse association is not defined correctly, please mention the relation name only: '" + fullAssocName + "'"); + } + + String assocname = parts.length == 3 ? parts[1] : parts[0]; //support length 3 for backward compatibility + + IMetaAssociation massoc = src.getMetaObject().getDeclaredMetaAssociationChild(assocname); + + if (massoc != null) { + IMetaObject relationParent = massoc.getParent(); + // if the parent is in the exclude list, we can't clone the parent, and setting the + // references to the newly cloned target object will screw up the source data. + if (skipEntities.contains(relationParent.getName()) || skipModules.contains(relationParent.getModuleName())) { + throw new IllegalArgumentException("A reverse reference has been specified that starts at an entity in the exclude list, this is not possible to clone: '" + fullAssocName + "'"); + } + + //MWE: what to do with reverse reference sets? -> to avoid spam creating objects on + //reverse references, do not support referenceset (todo: we could keep a map of converted guids and reuse that!) + if (massoc.getType() == AssociationType.REFERENCESET) { + throw new IllegalArgumentException("It is not possible to clone reverse referencesets: '" + fullAssocName + "'"); + } + + List objs = Core.createXPathQuery(String.format("//%s[%s=$value]", relationParent.getName(), assocname)) + .setVariable("value", src) + .execute(ctx); + + for (IMendixObject obj : objs) { + @SuppressWarnings("unused") // object is unused on purpose + IMendixIdentifier refObj = getCloneOfObject(ctx, obj, toskip, tokeep, revAssocs, skipEntities, skipModules, mappedObjects); + // setting reference explicitly is not necessary, this has been done in the + // duplicate() call. + } + } + } + } + + public static Boolean commitWithoutEvents(IContext context, IMendixObject subject) throws CoreException { + Core.commitWithoutEvents(context, subject); + return true; + } + + public static String getValueOfPath(IContext context, IMendixObject substitute, String fullpath, String datetimeformat) throws Exception { + String[] path = fullpath.split("/"); + if (path.length == 1) { + IMendixObjectMember member = substitute.getMember(context, path[0]); + + //special case, see ticket 9135, format datetime. + if (member instanceof MendixDateTime) { + Date time = ((MendixDateTime) member).getValue(context); + if (time == null) { + return ""; + } + String f = datetimeformat != null && !datetimeformat.isEmpty() ? datetimeformat : "EEE dd MMM yyyy, HH:mm"; + return new SimpleDateFormat(f).format(time); + } + + if (member instanceof MendixEnum) { + String value = member.parseValueToString(context); + if (value == null || value.isEmpty()) { + return ""; + } + + IMetaEnumeration enumeration = ((MendixEnum) member).getEnumeration(); + IMetaEnumValue evalue = enumeration.getEnumValues().get(value); + return Core.getInternationalizedString(context, evalue.getI18NCaptionKey()); + } + //default + return member.parseValueToString(context); + } else if (path.length == 0) { + throw new Exception("communitycommons.ORM.getValueOfPath: Unexpected end of path."); + } else { + IMendixObjectMember member = substitute.getMember(context, path[0]); + if (member instanceof MendixObjectReference) { + MendixObjectReference ref = (MendixObjectReference) member; + IMendixIdentifier id = ref.getValue(context); + if (id == null) { + return ""; + } + IMendixObject obj = Core.retrieveId(context, id); + if (obj == null) { + return ""; + } + return getValueOfPath(context, obj, fullpath.substring(fullpath.indexOf("/") + 1), datetimeformat); + } else if (member instanceof MendixObjectReferenceSet) { + MendixObjectReferenceSet ref = (MendixObjectReferenceSet) member; + List ids = ref.getValue(context); + if (ids == null) { + return ""; + } + StringBuilder res = new StringBuilder(); + for (IMendixIdentifier id : ids) { + if (id == null) { + continue; + } + IMendixObject obj = Core.retrieveId(context, id); + if (obj == null) { + continue; + } + res.append(", "); + res.append(getValueOfPath(context, obj, fullpath.substring(fullpath.indexOf("/") + 1), datetimeformat)); + } + return res.length() > 1 ? res.toString().substring(2) : ""; + } else { + throw new Exception("communitycommons.ORM.getValueOfPath: Not a valid reference: '" + path[0] + "' in '" + fullpath + "'"); + } + } + } + + private static boolean isFileDocument(IMendixObject object) { + return Core.isSubClassOf(Core.getMetaObject(FileDocument.entityName), object.getMetaObject()); + } + + public static Boolean cloneObject(IContext c, IMendixObject source, + IMendixObject target, Boolean withAssociations) { + Map> members = source.getMembers(c); + + for (var entry : members.entrySet()) { + IMendixObjectMember m = entry.getValue(); + if (m.isVirtual()) { + continue; + } + if (m instanceof MendixAutoNumber) { + continue; + } + if ("__UUID__".equals(m.getName()) && (isFileDocument(source) || isFileDocument(target))) { + continue; + } + if (withAssociations || ((!(m instanceof MendixObjectReference) && !(m instanceof MendixObjectReferenceSet) && !(m instanceof MendixAutoNumber)))) { + target.setValue(c, entry.getKey(), m.getValue(c)); + } + } + return true; + } + + public static IMendixObject firstWhere(IContext c, String entityName, + Object member, String value) throws CoreException { + List items = Core.retrieveXPathQuery(c, String.format("//%s[%s = '%s']", entityName, member, value), 1, 0, new HashMap()); + if (items == null || items.size() == 0) { + return null; + } + return items.get(0); + } + + public static IMendixObject getLastChangedByUser(IContext context, + IMendixObject thing) throws CoreException { + if (thing == null || !thing.hasChangedByAttribute()) { + return null; + } + + IMendixIdentifier itemId = thing.getChangedBy(context); + if (itemId == null) { + return null; + } + + return Core.retrieveId(context, itemId); + } + + public static IMendixObject getCreatedByUser(IContext context, + IMendixObject thing) throws CoreException { + if (thing == null || !thing.hasOwnerAttribute()) { + return null; + } + + IMendixIdentifier itemId = thing.getOwner(context); + if (itemId == null) { + return null; + } + + return Core.retrieveId(context, itemId); + } + + public static void commitSilent(IContext c, IMendixObject mendixObject) { + try { + Core.commit(c, mendixObject); + } catch (CoreException e) { + throw new RuntimeException(e); + } + } + + public static void copyAttributes(IContext context, IMendixObject source, IMendixObject target) { + if (source == null) { + throw new IllegalStateException("source is null"); + } + if (target == null) { + throw new IllegalStateException("target is null"); + } + + for (IMetaPrimitive e : target.getMetaObject().getMetaPrimitives()) { + if (!source.hasMember(e.getName())) { + continue; + } + if (e.isVirtual() || e.getType() == PrimitiveType.AutoNumber) { + continue; + } + if ("__UUID__".equals(e.getName()) && (isFileDocument(source) || isFileDocument(target))) { + continue; + } + + target.setValue(context, e.getName(), source.getValue(context, e.getName())); + } + } +} diff --git a/javasource/communitycommons/StringUtils.java b/javasource/communitycommons/StringUtils.java index 655fe12..1f201ed 100644 --- a/javasource/communitycommons/StringUtils.java +++ b/javasource/communitycommons/StringUtils.java @@ -1,508 +1,508 @@ -package communitycommons; - -import com.mendix.core.Core; -import com.mendix.systemwideinterfaces.core.IContext; -import com.mendix.systemwideinterfaces.core.IMendixObject; -import communitycommons.proxies.SanitizerPolicy; - -import static communitycommons.proxies.SanitizerPolicy.BLOCKS; -import static communitycommons.proxies.SanitizerPolicy.FORMATTING; -import static communitycommons.proxies.SanitizerPolicy.IMAGES; -import static communitycommons.proxies.SanitizerPolicy.LINKS; -import static communitycommons.proxies.SanitizerPolicy.STYLES; -import static communitycommons.proxies.SanitizerPolicy.TABLES; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringReader; -import java.io.UnsupportedEncodingException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.security.*; -import java.text.Normalizer; -import java.util.*; -import java.util.AbstractMap.SimpleEntry; -import java.util.function.Function; -import java.util.regex.MatchResult; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import javax.swing.text.MutableAttributeSet; -import javax.swing.text.html.HTML; -import javax.swing.text.html.HTMLEditorKit; -import javax.swing.text.html.parser.ParserDelegator; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.text.StringEscapeUtils; -import org.owasp.html.PolicyFactory; -import org.owasp.html.Sanitizers; -import system.proxies.FileDocument; - -public class StringUtils { - - private static final Random RANDOM = new SecureRandom(); - - private static final String UPPERCASE_ALPHA = stringRange('A', 'Z'); - private static final String LOWERCASE_ALPHA = stringRange('a', 'z'); - private static final String DIGITS = stringRange('0', '9'); - // Used in tests as well - static final String SPECIAL = stringRange('!', '/'); - private static final String ALPHANUMERIC = UPPERCASE_ALPHA + LOWERCASE_ALPHA + DIGITS; - - static final Map SANITIZER_POLICIES = - Map.ofEntries( - new SimpleEntry<>(BLOCKS.name(), Sanitizers.BLOCKS), - new SimpleEntry<>(FORMATTING.name(), Sanitizers.FORMATTING), - new SimpleEntry<>(IMAGES.name(), Sanitizers.IMAGES), - new SimpleEntry<>(LINKS.name(), Sanitizers.LINKS), - new SimpleEntry<>(STYLES.name(), Sanitizers.STYLES), - new SimpleEntry<>(TABLES.name(), Sanitizers.TABLES) - ); - - public static final String HASH_ALGORITHM = "SHA-256"; - - public static String hash(String value, int length) throws NoSuchAlgorithmException, DigestException { - byte[] inBytes = value.getBytes(StandardCharsets.UTF_8); - byte[] outBytes = new byte[length]; - - MessageDigest alg = MessageDigest.getInstance(HASH_ALGORITHM); - alg.update(inBytes); - - alg.digest(outBytes, 0, length); - - StringBuilder hexString = new StringBuilder(); - for (int i = 0; i < outBytes.length; i++) { - String hex = Integer.toHexString(0xff & outBytes[i]); - if (hex.length() == 1) { - hexString.append('0'); - } - hexString.append(hex); - } - - return hexString.toString(); - } - - /** - * The default replaceAll microflow function doesn't support capture variables such as $1, $2 - * etc. so for that reason we do not deprecate this method. - * - * @param haystack The string to replace patterns in - * @param needleRegex The regular expression pattern - * @param replacement The string that should come in place of the pattern matches. - * @return The resulting string, where all matches have been replaced by the replacement. - */ - public static String regexReplaceAll(String haystack, String needleRegex, - String replacement) { - Pattern pattern = Pattern.compile(needleRegex); - Matcher matcher = pattern.matcher(haystack); - return matcher.replaceAll(replacement); - } - - public static String leftPad(String value, Long amount, String fillCharacter) { - if (fillCharacter == null || fillCharacter.length() == 0) { - return org.apache.commons.lang3.StringUtils.leftPad(value, amount.intValue(), " "); - } - return org.apache.commons.lang3.StringUtils.leftPad(value, amount.intValue(), fillCharacter); - } - - public static String rightPad(String value, Long amount, String fillCharacter) { - if (fillCharacter == null || fillCharacter.length() == 0) { - return org.apache.commons.lang3.StringUtils.rightPad(value, amount.intValue(), " "); - } - return org.apache.commons.lang3.StringUtils.rightPad(value, amount.intValue(), fillCharacter); - } - - public static String randomString(int length) { - return randomStringFromCharArray(length, ALPHANUMERIC.toCharArray()); - } - - public static String substituteTemplate(final IContext context, String template, - final IMendixObject substitute, final boolean HTMLEncode, final String datetimeformat) { - return regexReplaceAll(template, "\\{(@)?([\\w./]+)\\}", (MatchResult match) -> { - String value; - String path = match.group(2); - if (match.group(1) != null) { - value = String.valueOf(Core.getConfiguration().getConstantValue(path)); - } else { - try { - value = ORM.getValueOfPath(context, substitute, path, datetimeformat); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - return HTMLEncode ? HTMLEncode(value) : value; - }); - } - - public static String regexReplaceAll(String source, String regexString, Function replaceFunction) { - if (source == null || source.trim().isEmpty()) // avoid NPE's, save CPU - { - return ""; - } - - StringBuffer resultString = new StringBuffer(); - Pattern regex = Pattern.compile(regexString); - Matcher regexMatcher = regex.matcher(source); - - while (regexMatcher.find()) { - MatchResult match = regexMatcher.toMatchResult(); - String value = replaceFunction.apply(match); - regexMatcher.appendReplacement(resultString, Matcher.quoteReplacement(value)); - } - regexMatcher.appendTail(resultString); - - return resultString.toString(); - } - - public static String HTMLEncode(String value) { - return StringEscapeUtils.escapeHtml4(value); - } - - public static String randomHash() { - return UUID.randomUUID().toString(); - } - - public static String base64Decode(String encoded) { - if (encoded == null) { - return null; - } - return new String(Base64.getDecoder().decode(encoded.getBytes())); - } - - public static void base64DecodeToFile(IContext context, String encoded, FileDocument targetFile) throws Exception { - if (targetFile == null) { - throw new IllegalArgumentException("Source file is null"); - } - if (encoded == null) { - throw new IllegalArgumentException("Source data is null"); - } - - byte[] decoded = Base64.getDecoder().decode(encoded.getBytes()); - - try (ByteArrayInputStream bais = new ByteArrayInputStream(decoded)) { - Core.storeFileDocumentContent(context, targetFile.getMendixObject(), bais); - } - } - - public static String base64Encode(String value) { - if (value == null) { - return null; - } - return Base64.getEncoder().encodeToString(value.getBytes()); - } - - public static String base64EncodeFile(IContext context, FileDocument file) throws IOException { - if (file == null) { - throw new IllegalArgumentException("Source file is null"); - } - if (!file.getHasContents()) { - throw new IllegalArgumentException("Source file has no contents!"); - } - - try (InputStream f = Core.getFileDocumentContent(context, file.getMendixObject())) { - return Base64.getEncoder().encodeToString(IOUtils.toByteArray(f)); - } - } - - public static String stringFromFile(IContext context, FileDocument source) throws IOException { - return stringFromFile(context, source, StandardCharsets.UTF_8); - } - - public static String stringFromFile(IContext context, FileDocument source, Charset charset) throws IOException { - if (source == null) { - return null; - } - try (InputStream f = Core.getFileDocumentContent(context, source.getMendixObject())) { - return IOUtils.toString(f, charset); - } - } - - public static void stringToFile(IContext context, String value, FileDocument destination) throws IOException { - stringToFile(context, value, destination, StandardCharsets.UTF_8); - } - - public static void stringToFile(IContext context, String value, FileDocument destination, Charset charset) throws IOException { - if (destination == null) { - throw new IllegalArgumentException("Destination file is null"); - } - if (value == null) { - throw new IllegalArgumentException("Value to write is null"); - } - - try (InputStream is = IOUtils.toInputStream(value, charset)) { - Core.storeFileDocumentContent(context, destination.getMendixObject(), is); - } - } - - public static String HTMLToPlainText(String html) throws IOException { - if (html == null) { - return ""; - } - final StringBuilder result = new StringBuilder(); - - HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback() { - @Override - public void handleText(char[] data, int pos) { - result.append(data); //TODO: needds to be html entity decode? - } - - @Override - public void handleComment(char[] data, int pos) { - //Do nothing - } - - @Override - public void handleError(String errorMsg, int pos) { - //Do nothing - } - - @Override - public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet a, int pos) { - if (tag == HTML.Tag.BR) { - result.append("\r\n"); - } - } - - @Override - public void handleEndTag(HTML.Tag tag, int pos) { - if (tag == HTML.Tag.P) { - result.append("\r\n"); - } - } - }; - - new ParserDelegator().parse(new StringReader(html), callback, true); - - return result.toString(); - } - - /** - * Returns a random strong password containing a specified minimum number of uppercase, digits - * and the exact number of special characters. - * - * @param minLen Minimum length - * @param maxLen Maximum length - * @param noOfCAPSAlpha Minimum number of capitals - * @param noOfDigits Minimum number of digits - * @param noOfSplChars Exact number of special characters - * @deprecated Use the overload randomStrongPassword instead - */ - @Deprecated - public static String randomStrongPassword(int minLen, int maxLen, int noOfCAPSAlpha, int noOfDigits, int noOfSplChars) { - if (minLen > maxLen) { - throw new IllegalArgumentException("Min. Length > Max. Length!"); - } - if ((noOfCAPSAlpha + noOfDigits + noOfSplChars) > minLen) { - throw new IllegalArgumentException("Min. Length should be atleast sum of (CAPS, DIGITS, SPL CHARS) Length!"); - } - return generateCommonLangPassword(minLen, maxLen, noOfCAPSAlpha, 0, noOfDigits, noOfSplChars); - } - - /** - * Returns a random strong password containing a specified minimum number of uppercase, lowercase, digits - * and the exact number of special characters. - * - * @param minLen Minimum length - * @param maxLen Maximum length - * @param noOfCAPSAlpha Minimum number of capitals - * @param noOfLowercaseAlpha Minimum number of lowercase letters - * @param noOfDigits Minimum number of digits - * @param noOfSplChars Exact number of special characters - */ - public static String randomStrongPassword(int minLen, int maxLen, int noOfCAPSAlpha, int noOfLowercaseAlpha, int noOfDigits, int noOfSplChars) { - if (minLen > maxLen) { - throw new IllegalArgumentException("Min. Length > Max. Length!"); - } - if ((noOfCAPSAlpha + noOfLowercaseAlpha + noOfDigits + noOfSplChars) > minLen) { - throw new IllegalArgumentException("Min. Length should be atleast sum of (CAPS, LOWER, DIGITS, SPL CHARS) Length!"); - } - return generateCommonLangPassword(minLen, maxLen, noOfCAPSAlpha, noOfLowercaseAlpha, noOfDigits, noOfSplChars); - } - - // See https://www.baeldung.com/java-generate-secure-password - // Implementation inspired by https://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-string-apis (under MIT license) - private static String generateCommonLangPassword(int minLen, int maxLen, int noOfCapsAlpha, int noOfLowercaseAlpha, int noOfDigits, int noOfSplChars) { - String upperCaseLetters = randomStringFromCharArray(noOfCapsAlpha, UPPERCASE_ALPHA.toCharArray()); - String lowerCaseLetters = randomStringFromCharArray(noOfLowercaseAlpha, LOWERCASE_ALPHA.toCharArray()); - String numbers = randomStringFromCharArray(noOfDigits, DIGITS.toCharArray()); - String specialChar = randomStringFromCharArray(noOfSplChars, SPECIAL.toCharArray()); - - final int fixedNumber = noOfCapsAlpha + noOfLowercaseAlpha + noOfDigits + noOfSplChars; - final int lowerBound = minLen - fixedNumber; - final int upperBound = maxLen - fixedNumber; - String totalChars = randomStringFromCharArray(lowerBound, upperBound, ALPHANUMERIC.toCharArray()); - - String combinedChars = upperCaseLetters - .concat(lowerCaseLetters) - .concat(numbers) - .concat(specialChar) - .concat(totalChars); - List pwdChars = combinedChars.chars() - .mapToObj(c -> (char) c) - .collect(Collectors.toList()); - Collections.shuffle(pwdChars); - String password = pwdChars.stream() - .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append) - .toString(); - return password; - } - - /** - * Generate a secure random string using the given array of characters, of which the resulting - * string will be composed of. - * - * @param count The length of the random string. - * @param allowedChars The characters used for constructing the random string. - * @return A random string. - * @throws IllegalArgumentException if count is negative or allowedChars is null or empty. - */ - private static String randomStringFromCharArray(int count, final char[] allowedChars) { - if (count == 0) - return ""; - if (count < 0) - throw new IllegalArgumentException("The requested length for the random string was negative: " + count); - if (allowedChars == null) - throw new IllegalArgumentException("The char array 'allowedChars' cannot be null."); - if (allowedChars.length == 0) - throw new IllegalArgumentException("The char array 'allowedChars' cannot be empty."); - - StringBuilder builder = new StringBuilder(); - - while (count-- > 0) { - int index = RANDOM.nextInt(allowedChars.length); - builder.append(allowedChars[index]); - } - - return builder.toString(); - } - - /** - * Generate a random string with a random length between minLengthBound and maxLengthBound (inclusive), - * using the given set of allowed characters. - * - * @param minLengthBound The lower bound for the random length of the string. - * @param maxLengthBound The upper bound for the random length of the string. - * @param allowedChars An array of characters of which the resulting string will be made up of. - * @return A random string with a length between minLengthBound and maxLengthBound. - * @throws IllegalArgumentException if minLengthBound is larger than maxLengthBound. - */ - private static String randomStringFromCharArray(int minLengthBound, int maxLengthBound, final char[] allowedChars) { - if (minLengthBound == maxLengthBound) - return randomStringFromCharArray(minLengthBound, allowedChars); - if (minLengthBound > maxLengthBound) - throw new IllegalArgumentException("The minimum bound (" + minLengthBound + ") was larger than the maximum bound (" + maxLengthBound + "."); - final int randomLength = minLengthBound + RANDOM.nextInt(maxLengthBound - minLengthBound + 1); // add one to make the range inclusive. - return randomStringFromCharArray(randomLength, allowedChars); - } - - /** - * Produces a 'range' string starting from the begin character up to - * the end character (inclusive range). For example, for the range (a-z), - * this method will generate the lowercase alphabet. - * - * @param begin The starting point of the string. - * @param end The ending point of the string. - * @return A string from begin to end (inclusive range). - * @throws IllegalArgumentException if the begin character has a higher code point than the end character. - */ - private static String stringRange(char begin, char end) { - if (begin > end) { - throw new IllegalArgumentException("The 'begin' character cannot be larger than the 'end' character."); - } - - StringBuilder builder = new StringBuilder(); - while (begin <= end) - builder.append(begin++); - return builder.toString(); - } - - private static byte[] generateHmacSha256Bytes(String key, String valueToEncrypt) throws UnsupportedEncodingException, IllegalStateException, InvalidKeyException, NoSuchAlgorithmException { - SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"); - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(secretKey); - mac.update(valueToEncrypt.getBytes("UTF-8")); - byte[] hmacData = mac.doFinal(); - - return hmacData; - } - - public static String generateHmacSha256(String key, String valueToEncrypt) { - try { - byte[] hash = generateHmacSha256Bytes(key, valueToEncrypt); - StringBuilder result = new StringBuilder(); - for (byte b : hash) { - result.append(String.format("%02x", b)); - } - return result.toString(); - } catch (UnsupportedEncodingException | IllegalStateException | InvalidKeyException | NoSuchAlgorithmException e) { - throw new RuntimeException("CommunityCommons::generateHmacSha256::Unable to encode: " + e.getMessage(), e); - } - } - - public static String generateHmacSha256Hash(String key, String valueToEncrypt) { - try { - return Base64.getEncoder().encodeToString(generateHmacSha256Bytes(key, valueToEncrypt)); - } catch (UnsupportedEncodingException | IllegalStateException | InvalidKeyException | NoSuchAlgorithmException e) { - throw new RuntimeException("CommunityCommons::generateHmacSha256Hash::Unable to encode: " + e.getMessage(), e); - } - } - - public static String escapeHTML(String input) { - return input.replace("&", "&") - .replace("<", "<") - .replace(">", ">") - .replace("\"", """) - .replace("'", "'");// notice this one: for xml "'" would be "'" (http://blogs.msdn.com/b/kirillosenkov/archive/2010/03/19/apos-is-in-xml-in-html-use-39.aspx) - // OWASP also advises to escape "/" but give no convincing reason why: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet - } - - public static String regexQuote(String unquotedLiteral) { - return Pattern.quote(unquotedLiteral); - } - - public static String substringBefore(String str, String separator) { - return org.apache.commons.lang3.StringUtils.substringBefore(str, separator); - } - - public static String substringBeforeLast(String str, String separator) { - return org.apache.commons.lang3.StringUtils.substringBeforeLast(str, separator); - } - - public static String substringAfter(String str, String separator) { - return org.apache.commons.lang3.StringUtils.substringAfter(str, separator); - } - - public static String substringAfterLast(String str, String separator) { - return org.apache.commons.lang3.StringUtils.substringAfterLast(str, separator); - } - - public static String removeEnd(String str, String toRemove) { - return org.apache.commons.lang3.StringUtils.removeEnd(str, toRemove); - } - - public static String sanitizeHTML(String html, List policyParams) { - PolicyFactory policyFactory = null; - - for (SanitizerPolicy param : policyParams) { - policyFactory = (policyFactory == null) ? SANITIZER_POLICIES.get(param.name()) : policyFactory.and(SANITIZER_POLICIES.get(param.name())); - } - - return sanitizeHTML(html, policyFactory); - } - - public static String sanitizeHTML(String html, PolicyFactory policyFactory) { - return policyFactory.sanitize(html); - } - - public static String stringSimplify(String value) { - String normalized = Normalizer.normalize(value, Normalizer.Form.NFD); - return normalized.replaceAll("\\p{M}", ""); // removes all characters in Unicode Mark category - } - - public static Boolean isStringSimplified(String value) { - return Normalizer.isNormalized(value, Normalizer.Form.NFD); - } -} +package communitycommons; + +import com.mendix.core.Core; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.systemwideinterfaces.core.IMendixObject; +import communitycommons.proxies.SanitizerPolicy; + +import static communitycommons.proxies.SanitizerPolicy.BLOCKS; +import static communitycommons.proxies.SanitizerPolicy.FORMATTING; +import static communitycommons.proxies.SanitizerPolicy.IMAGES; +import static communitycommons.proxies.SanitizerPolicy.LINKS; +import static communitycommons.proxies.SanitizerPolicy.STYLES; +import static communitycommons.proxies.SanitizerPolicy.TABLES; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringReader; +import java.io.UnsupportedEncodingException; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.security.*; +import java.text.Normalizer; +import java.util.*; +import java.util.AbstractMap.SimpleEntry; +import java.util.function.Function; +import java.util.regex.MatchResult; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.swing.text.MutableAttributeSet; +import javax.swing.text.html.HTML; +import javax.swing.text.html.HTMLEditorKit; +import javax.swing.text.html.parser.ParserDelegator; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.text.StringEscapeUtils; +import org.owasp.html.PolicyFactory; +import org.owasp.html.Sanitizers; +import system.proxies.FileDocument; + +public class StringUtils { + + private static final Random RANDOM = new SecureRandom(); + + private static final String UPPERCASE_ALPHA = stringRange('A', 'Z'); + private static final String LOWERCASE_ALPHA = stringRange('a', 'z'); + private static final String DIGITS = stringRange('0', '9'); + // Used in tests as well + static final String SPECIAL = stringRange('!', '/'); + private static final String ALPHANUMERIC = UPPERCASE_ALPHA + LOWERCASE_ALPHA + DIGITS; + + static final Map SANITIZER_POLICIES = + Map.ofEntries( + new SimpleEntry<>(BLOCKS.name(), Sanitizers.BLOCKS), + new SimpleEntry<>(FORMATTING.name(), Sanitizers.FORMATTING), + new SimpleEntry<>(IMAGES.name(), Sanitizers.IMAGES), + new SimpleEntry<>(LINKS.name(), Sanitizers.LINKS), + new SimpleEntry<>(STYLES.name(), Sanitizers.STYLES), + new SimpleEntry<>(TABLES.name(), Sanitizers.TABLES) + ); + + public static final String HASH_ALGORITHM = "SHA-256"; + + public static String hash(String value, int length) throws NoSuchAlgorithmException, DigestException { + byte[] inBytes = value.getBytes(StandardCharsets.UTF_8); + byte[] outBytes = new byte[length]; + + MessageDigest alg = MessageDigest.getInstance(HASH_ALGORITHM); + alg.update(inBytes); + + alg.digest(outBytes, 0, length); + + StringBuilder hexString = new StringBuilder(); + for (int i = 0; i < outBytes.length; i++) { + String hex = Integer.toHexString(0xff & outBytes[i]); + if (hex.length() == 1) { + hexString.append('0'); + } + hexString.append(hex); + } + + return hexString.toString(); + } + + /** + * The default replaceAll microflow function doesn't support capture variables such as $1, $2 + * etc. so for that reason we do not deprecate this method. + * + * @param haystack The string to replace patterns in + * @param needleRegex The regular expression pattern + * @param replacement The string that should come in place of the pattern matches. + * @return The resulting string, where all matches have been replaced by the replacement. + */ + public static String regexReplaceAll(String haystack, String needleRegex, + String replacement) { + Pattern pattern = Pattern.compile(needleRegex); + Matcher matcher = pattern.matcher(haystack); + return matcher.replaceAll(replacement); + } + + public static String leftPad(String value, Long amount, String fillCharacter) { + if (fillCharacter == null || fillCharacter.length() == 0) { + return org.apache.commons.lang3.StringUtils.leftPad(value, amount.intValue(), " "); + } + return org.apache.commons.lang3.StringUtils.leftPad(value, amount.intValue(), fillCharacter); + } + + public static String rightPad(String value, Long amount, String fillCharacter) { + if (fillCharacter == null || fillCharacter.length() == 0) { + return org.apache.commons.lang3.StringUtils.rightPad(value, amount.intValue(), " "); + } + return org.apache.commons.lang3.StringUtils.rightPad(value, amount.intValue(), fillCharacter); + } + + public static String randomString(int length) { + return randomStringFromCharArray(length, ALPHANUMERIC.toCharArray()); + } + + public static String substituteTemplate(final IContext context, String template, + final IMendixObject substitute, final boolean HTMLEncode, final String datetimeformat) { + return regexReplaceAll(template, "\\{(@)?([\\w./]+)\\}", (MatchResult match) -> { + String value; + String path = match.group(2); + if (match.group(1) != null) { + value = String.valueOf(Core.getConfiguration().getConstantValue(path)); + } else { + try { + value = ORM.getValueOfPath(context, substitute, path, datetimeformat); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + return HTMLEncode ? HTMLEncode(value) : value; + }); + } + + public static String regexReplaceAll(String source, String regexString, Function replaceFunction) { + if (source == null || source.trim().isEmpty()) // avoid NPE's, save CPU + { + return ""; + } + + StringBuffer resultString = new StringBuffer(); + Pattern regex = Pattern.compile(regexString); + Matcher regexMatcher = regex.matcher(source); + + while (regexMatcher.find()) { + MatchResult match = regexMatcher.toMatchResult(); + String value = replaceFunction.apply(match); + regexMatcher.appendReplacement(resultString, Matcher.quoteReplacement(value)); + } + regexMatcher.appendTail(resultString); + + return resultString.toString(); + } + + public static String HTMLEncode(String value) { + return StringEscapeUtils.escapeHtml4(value); + } + + public static String randomHash() { + return UUID.randomUUID().toString(); + } + + public static String base64Decode(String encoded) { + if (encoded == null) { + return null; + } + return new String(Base64.getDecoder().decode(encoded.getBytes())); + } + + public static void base64DecodeToFile(IContext context, String encoded, FileDocument targetFile) throws Exception { + if (targetFile == null) { + throw new IllegalArgumentException("Source file is null"); + } + if (encoded == null) { + throw new IllegalArgumentException("Source data is null"); + } + + byte[] decoded = Base64.getDecoder().decode(encoded.getBytes()); + + try (ByteArrayInputStream bais = new ByteArrayInputStream(decoded)) { + Core.storeFileDocumentContent(context, targetFile.getMendixObject(), bais); + } + } + + public static String base64Encode(String value) { + if (value == null) { + return null; + } + return Base64.getEncoder().encodeToString(value.getBytes()); + } + + public static String base64EncodeFile(IContext context, FileDocument file) throws IOException { + if (file == null) { + throw new IllegalArgumentException("Source file is null"); + } + if (!file.getHasContents()) { + throw new IllegalArgumentException("Source file has no contents!"); + } + + try (InputStream f = Core.getFileDocumentContent(context, file.getMendixObject())) { + return Base64.getEncoder().encodeToString(IOUtils.toByteArray(f)); + } + } + + public static String stringFromFile(IContext context, FileDocument source) throws IOException { + return stringFromFile(context, source, StandardCharsets.UTF_8); + } + + public static String stringFromFile(IContext context, FileDocument source, Charset charset) throws IOException { + if (source == null) { + return null; + } + try (InputStream f = Core.getFileDocumentContent(context, source.getMendixObject())) { + return IOUtils.toString(f, charset); + } + } + + public static void stringToFile(IContext context, String value, FileDocument destination) throws IOException { + stringToFile(context, value, destination, StandardCharsets.UTF_8); + } + + public static void stringToFile(IContext context, String value, FileDocument destination, Charset charset) throws IOException { + if (destination == null) { + throw new IllegalArgumentException("Destination file is null"); + } + if (value == null) { + throw new IllegalArgumentException("Value to write is null"); + } + + try (InputStream is = IOUtils.toInputStream(value, charset)) { + Core.storeFileDocumentContent(context, destination.getMendixObject(), is); + } + } + + public static String HTMLToPlainText(String html) throws IOException { + if (html == null) { + return ""; + } + final StringBuilder result = new StringBuilder(); + + HTMLEditorKit.ParserCallback callback = new HTMLEditorKit.ParserCallback() { + @Override + public void handleText(char[] data, int pos) { + result.append(data); //TODO: needds to be html entity decode? + } + + @Override + public void handleComment(char[] data, int pos) { + //Do nothing + } + + @Override + public void handleError(String errorMsg, int pos) { + //Do nothing + } + + @Override + public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet a, int pos) { + if (tag == HTML.Tag.BR) { + result.append("\r\n"); + } + } + + @Override + public void handleEndTag(HTML.Tag tag, int pos) { + if (tag == HTML.Tag.P) { + result.append("\r\n"); + } + } + }; + + new ParserDelegator().parse(new StringReader(html), callback, true); + + return result.toString(); + } + + /** + * Returns a random strong password containing a specified minimum number of uppercase, digits + * and the exact number of special characters. + * + * @param minLen Minimum length + * @param maxLen Maximum length + * @param noOfCAPSAlpha Minimum number of capitals + * @param noOfDigits Minimum number of digits + * @param noOfSplChars Exact number of special characters + * @deprecated Use the overload randomStrongPassword instead + */ + @Deprecated + public static String randomStrongPassword(int minLen, int maxLen, int noOfCAPSAlpha, int noOfDigits, int noOfSplChars) { + if (minLen > maxLen) { + throw new IllegalArgumentException("Min. Length > Max. Length!"); + } + if ((noOfCAPSAlpha + noOfDigits + noOfSplChars) > minLen) { + throw new IllegalArgumentException("Min. Length should be atleast sum of (CAPS, DIGITS, SPL CHARS) Length!"); + } + return generateCommonLangPassword(minLen, maxLen, noOfCAPSAlpha, 0, noOfDigits, noOfSplChars); + } + + /** + * Returns a random strong password containing a specified minimum number of uppercase, lowercase, digits + * and the exact number of special characters. + * + * @param minLen Minimum length + * @param maxLen Maximum length + * @param noOfCAPSAlpha Minimum number of capitals + * @param noOfLowercaseAlpha Minimum number of lowercase letters + * @param noOfDigits Minimum number of digits + * @param noOfSplChars Exact number of special characters + */ + public static String randomStrongPassword(int minLen, int maxLen, int noOfCAPSAlpha, int noOfLowercaseAlpha, int noOfDigits, int noOfSplChars) { + if (minLen > maxLen) { + throw new IllegalArgumentException("Min. Length > Max. Length!"); + } + if ((noOfCAPSAlpha + noOfLowercaseAlpha + noOfDigits + noOfSplChars) > minLen) { + throw new IllegalArgumentException("Min. Length should be atleast sum of (CAPS, LOWER, DIGITS, SPL CHARS) Length!"); + } + return generateCommonLangPassword(minLen, maxLen, noOfCAPSAlpha, noOfLowercaseAlpha, noOfDigits, noOfSplChars); + } + + // See https://www.baeldung.com/java-generate-secure-password + // Implementation inspired by https://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-string-apis (under MIT license) + private static String generateCommonLangPassword(int minLen, int maxLen, int noOfCapsAlpha, int noOfLowercaseAlpha, int noOfDigits, int noOfSplChars) { + String upperCaseLetters = randomStringFromCharArray(noOfCapsAlpha, UPPERCASE_ALPHA.toCharArray()); + String lowerCaseLetters = randomStringFromCharArray(noOfLowercaseAlpha, LOWERCASE_ALPHA.toCharArray()); + String numbers = randomStringFromCharArray(noOfDigits, DIGITS.toCharArray()); + String specialChar = randomStringFromCharArray(noOfSplChars, SPECIAL.toCharArray()); + + final int fixedNumber = noOfCapsAlpha + noOfLowercaseAlpha + noOfDigits + noOfSplChars; + final int lowerBound = minLen - fixedNumber; + final int upperBound = maxLen - fixedNumber; + String totalChars = randomStringFromCharArray(lowerBound, upperBound, ALPHANUMERIC.toCharArray()); + + String combinedChars = upperCaseLetters + .concat(lowerCaseLetters) + .concat(numbers) + .concat(specialChar) + .concat(totalChars); + List pwdChars = combinedChars.chars() + .mapToObj(c -> (char) c) + .collect(Collectors.toList()); + Collections.shuffle(pwdChars); + String password = pwdChars.stream() + .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append) + .toString(); + return password; + } + + /** + * Generate a secure random string using the given array of characters, of which the resulting + * string will be composed of. + * + * @param count The length of the random string. + * @param allowedChars The characters used for constructing the random string. + * @return A random string. + * @throws IllegalArgumentException if count is negative or allowedChars is null or empty. + */ + private static String randomStringFromCharArray(int count, final char[] allowedChars) { + if (count == 0) + return ""; + if (count < 0) + throw new IllegalArgumentException("The requested length for the random string was negative: " + count); + if (allowedChars == null) + throw new IllegalArgumentException("The char array 'allowedChars' cannot be null."); + if (allowedChars.length == 0) + throw new IllegalArgumentException("The char array 'allowedChars' cannot be empty."); + + StringBuilder builder = new StringBuilder(); + + while (count-- > 0) { + int index = RANDOM.nextInt(allowedChars.length); + builder.append(allowedChars[index]); + } + + return builder.toString(); + } + + /** + * Generate a random string with a random length between minLengthBound and maxLengthBound (inclusive), + * using the given set of allowed characters. + * + * @param minLengthBound The lower bound for the random length of the string. + * @param maxLengthBound The upper bound for the random length of the string. + * @param allowedChars An array of characters of which the resulting string will be made up of. + * @return A random string with a length between minLengthBound and maxLengthBound. + * @throws IllegalArgumentException if minLengthBound is larger than maxLengthBound. + */ + private static String randomStringFromCharArray(int minLengthBound, int maxLengthBound, final char[] allowedChars) { + if (minLengthBound == maxLengthBound) + return randomStringFromCharArray(minLengthBound, allowedChars); + if (minLengthBound > maxLengthBound) + throw new IllegalArgumentException("The minimum bound (" + minLengthBound + ") was larger than the maximum bound (" + maxLengthBound + "."); + final int randomLength = minLengthBound + RANDOM.nextInt(maxLengthBound - minLengthBound + 1); // add one to make the range inclusive. + return randomStringFromCharArray(randomLength, allowedChars); + } + + /** + * Produces a 'range' string starting from the begin character up to + * the end character (inclusive range). For example, for the range (a-z), + * this method will generate the lowercase alphabet. + * + * @param begin The starting point of the string. + * @param end The ending point of the string. + * @return A string from begin to end (inclusive range). + * @throws IllegalArgumentException if the begin character has a higher code point than the end character. + */ + private static String stringRange(char begin, char end) { + if (begin > end) { + throw new IllegalArgumentException("The 'begin' character cannot be larger than the 'end' character."); + } + + StringBuilder builder = new StringBuilder(); + while (begin <= end) + builder.append(begin++); + return builder.toString(); + } + + private static byte[] generateHmacSha256Bytes(String key, String valueToEncrypt) throws UnsupportedEncodingException, IllegalStateException, InvalidKeyException, NoSuchAlgorithmException { + SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(secretKey); + mac.update(valueToEncrypt.getBytes("UTF-8")); + byte[] hmacData = mac.doFinal(); + + return hmacData; + } + + public static String generateHmacSha256(String key, String valueToEncrypt) { + try { + byte[] hash = generateHmacSha256Bytes(key, valueToEncrypt); + StringBuilder result = new StringBuilder(); + for (byte b : hash) { + result.append(String.format("%02x", b)); + } + return result.toString(); + } catch (UnsupportedEncodingException | IllegalStateException | InvalidKeyException | NoSuchAlgorithmException e) { + throw new RuntimeException("CommunityCommons::generateHmacSha256::Unable to encode: " + e.getMessage(), e); + } + } + + public static String generateHmacSha256Hash(String key, String valueToEncrypt) { + try { + return Base64.getEncoder().encodeToString(generateHmacSha256Bytes(key, valueToEncrypt)); + } catch (UnsupportedEncodingException | IllegalStateException | InvalidKeyException | NoSuchAlgorithmException e) { + throw new RuntimeException("CommunityCommons::generateHmacSha256Hash::Unable to encode: " + e.getMessage(), e); + } + } + + public static String escapeHTML(String input) { + return input.replace("&", "&") + .replace("<", "<") + .replace(">", ">") + .replace("\"", """) + .replace("'", "'");// notice this one: for xml "'" would be "'" (http://blogs.msdn.com/b/kirillosenkov/archive/2010/03/19/apos-is-in-xml-in-html-use-39.aspx) + // OWASP also advises to escape "/" but give no convincing reason why: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet + } + + public static String regexQuote(String unquotedLiteral) { + return Pattern.quote(unquotedLiteral); + } + + public static String substringBefore(String str, String separator) { + return org.apache.commons.lang3.StringUtils.substringBefore(str, separator); + } + + public static String substringBeforeLast(String str, String separator) { + return org.apache.commons.lang3.StringUtils.substringBeforeLast(str, separator); + } + + public static String substringAfter(String str, String separator) { + return org.apache.commons.lang3.StringUtils.substringAfter(str, separator); + } + + public static String substringAfterLast(String str, String separator) { + return org.apache.commons.lang3.StringUtils.substringAfterLast(str, separator); + } + + public static String removeEnd(String str, String toRemove) { + return org.apache.commons.lang3.StringUtils.removeEnd(str, toRemove); + } + + public static String sanitizeHTML(String html, List policyParams) { + PolicyFactory policyFactory = null; + + for (SanitizerPolicy param : policyParams) { + policyFactory = (policyFactory == null) ? SANITIZER_POLICIES.get(param.name()) : policyFactory.and(SANITIZER_POLICIES.get(param.name())); + } + + return sanitizeHTML(html, policyFactory); + } + + public static String sanitizeHTML(String html, PolicyFactory policyFactory) { + return policyFactory.sanitize(html); + } + + public static String stringSimplify(String value) { + String normalized = Normalizer.normalize(value, Normalizer.Form.NFD); + return normalized.replaceAll("\\p{M}", ""); // removes all characters in Unicode Mark category + } + + public static Boolean isStringSimplified(String value) { + return Normalizer.isNormalized(value, Normalizer.Form.NFD); + } +} diff --git a/javasource/communitycommons/UserThrownException.java b/javasource/communitycommons/UserThrownException.java index 5c67787..f15069f 100644 --- a/javasource/communitycommons/UserThrownException.java +++ b/javasource/communitycommons/UserThrownException.java @@ -1,15 +1,15 @@ -package communitycommons; - -public class UserThrownException extends Exception -{ - /** - * - */ - private static final long serialVersionUID = -55911261625752858L; - - public UserThrownException(String arg0) - { - super(arg0); - } - -} +package communitycommons; + +public class UserThrownException extends Exception +{ + /** + * + */ + private static final long serialVersionUID = -55911261625752858L; + + public UserThrownException(String arg0) + { + super(arg0); + } + +} diff --git a/javasource/communitycommons/XPath.java b/javasource/communitycommons/XPath.java index 5fa0fe1..aafc11b 100644 --- a/javasource/communitycommons/XPath.java +++ b/javasource/communitycommons/XPath.java @@ -1,885 +1,885 @@ -package communitycommons; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.text.translate.AggregateTranslator; -import org.apache.commons.text.translate.CharSequenceTranslator; -import org.apache.commons.text.translate.EntityArrays; -import org.apache.commons.text.translate.LookupTranslator; - -import com.mendix.core.Core; -import com.mendix.core.CoreException; -import com.mendix.systemwideinterfaces.core.IContext; -import com.mendix.systemwideinterfaces.core.IMendixIdentifier; -import com.mendix.systemwideinterfaces.core.IMendixObject; - -public class XPath { - /** - * Built-in tokens, see: - * https://docs.mendix.com/refguide/xpath-keywords-and-system-variables/ - */ - - /* Keywords */ - public static final String ID = "id"; - public static final String NULL = "NULL"; - public static final String Empty = "empty"; - - /* Object related */ - public static final String CurrentUser = "[%CurrentUser%]"; - public static final String CurrentObject = "[%CurrentObject%]"; - - /* Time related */ - public static final String CurrentDateTime = "[%CurrentDateTime%]"; - public static final String BeginOfCurrentMinute = "[%BeginOfCurrentMinute%]"; - public static final String BeginOfCurrentMinuteUTC = "[%BeginOfCurrentMinuteUTC%]"; - public static final String EndOfCurrentMinute = "[%EndOfCurrentMinute%]"; - public static final String EndOfCurrentMinuteUTC = "[%EndOfCurrentMinuteUTC%]"; - public static final String BeginOfCurrentHour = "[%BeginOfCurrentHour%]"; - public static final String BeginOfCurrentHourUTC = "[%BeginOfCurrentHourUTC%]"; - public static final String EndOfCurrentHour = "[%EndOfCurrentHour%]"; - public static final String EndOfCurrentHourUTC = "[%EndOfCurrentHourUTC%]"; - public static final String BeginOfCurrentDay = "[%BeginOfCurrentDay%]"; - public static final String BeginOfCurrentDayUTC = "[%BeginOfCurrentDayUTC%]"; - public static final String EndOfCurrentDay = "[%EndOfCurrentDay%]"; - public static final String EndOfCurrentDayUTC = "[%EndOfCurrentDayUTC%]"; - public static final String BeginOfYesterday = "[%BeginOfYesterday%]"; - public static final String BeginOfYesterdayUTC = "[%BeginOfYesterdayUTC%]"; - public static final String EndOfYesterday = "[%EndOfYesterday%]"; - public static final String EndOfYesterdayUTC = "[%EndOfYesterdayUTC%]"; - public static final String BeginOfTomorrow = "[%BeginOfTomorrow%]"; - public static final String BeginOfTomorrowUTC = "[%BeginOfTomorrowUTC%]"; - public static final String EndOfTomorrow = "[%EndOfTomorrow%]"; - public static final String EndOfTomorrowUTC = "[%EndOfTomorrowUTC%]"; - public static final String BeginOfCurrentWeek = "[%BeginOfCurrentWeek%]"; - public static final String BeginOfCurrentWeekUTC = "[%BeginOfCurrentWeekUTC%]"; - public static final String EndOfCurrentWeek = "[%EndOfCurrentWeek%]"; - public static final String EndOfCurrentWeekUTC = "[%EndOfCurrentWeekUTC%]"; - public static final String BeginOfCurrentMonth = "[%BeginOfCurrentMonth%]"; - public static final String BeginOfCurrentMonthUTC = "[%BeginOfCurrentMonthUTC%]"; - public static final String EndOfCurrentMonth = "[%EndOfCurrentMonth%]"; - public static final String EndOfCurrentMonthUTC = "[%EndOfCurrentMonthUTC%]"; - public static final String BeginOfCurrentYear = "[%BeginOfCurrentYear%]"; - public static final String BeginOfCurrentYearUTC = "[%BeginOfCurrentYearUTC%]"; - public static final String EndOfCurrentYear = "[%EndOfCurrentYear%]"; - public static final String EndOfCurrentYearUTC = "[%EndOfCurrentYearUTC%]"; - - public static final String DayLength = "[%DayLength%]"; - public static final String HourLength = "[%HourLength%]"; - public static final String MinuteLength = "[%MinuteLength%]"; - public static final String SecondLength = "[%SecondLength%]"; - public static final String WeekLength = "[%WeekLength%]"; - public static final String MonthLength = "[%MonthLength%]"; - public static final String YearLength = "[%YearLength%]"; - - private String entity; - private int offset = 0; - private int limit = -1; - // important, linked map, insertion order is relevant! - private LinkedHashMap sorting = new LinkedHashMap(); - private LinkedList closeStack = new LinkedList(); - private StringBuilder builder = new StringBuilder(); - private IContext context; - private Class proxyClass; - // state property, indicates whether 'and' needs to be inserted before the next - // constraint - private boolean requiresBinOp = false; - - public static XPath create(IContext c, String entityType) { - XPath res = new XPath(c, IMendixObject.class); - res.entity = entityType; - return res; - } - - public static XPath create(IContext c, Class proxyClass) { - return new XPath(c, proxyClass); - } - - private XPath(IContext c, Class proxyClass) { - try { - if (proxyClass != IMendixObject.class) - entity = (String) proxyClass.getMethod("getType").invoke(null); - } catch (Exception e) { - throw new IllegalArgumentException( - "Failed to determine entity type of proxy class. Did you provide a valid proxy class? '" - + proxyClass.getName() + "'"); - } - - this.proxyClass = proxyClass; - this.context = c; - } - - private XPath autoInsertAnd() { - if (requiresBinOp) - and(); - return this; - } - - private XPath requireBinOp(boolean requires) { - requiresBinOp = requires; - return this; - } - - public XPath offset(int offset) { - if (offset < 0) - throw new IllegalArgumentException("Offset should not be negative"); - - this.offset = offset; - return this; - } - - public XPath limit(int limit) { - if (limit < -1 || limit == 0) - throw new IllegalArgumentException("Limit should be larger than zero or -1. "); - - this.limit = limit; - return this; - } - - public XPath addSortingAsc(Object... sortparts) { - assertOdd(sortparts); - sorting.put(StringUtils.join(sortparts, '/'), "asc"); - return this; - } - - public XPath addSortingDesc(Object... sortparts) { - sorting.put(StringUtils.join(sortparts, "/"), "desc"); - return this; - } - - public XPath eq(Object attr, Object valuecomparison) { - return compare(attr, "=", valuecomparison); - } - - public XPath eq(Object... pathAndValue) { - return compare("=", pathAndValue); - } - - public XPath equalsIgnoreCase(Object attr, String value) { - // (contains(Name, $email) and length(Name) = length($email) - return subconstraint() - .contains(attr, value) - .and() - .append(" length(" + attr + ") = ").append(value == null ? "0" : valueToXPathValue(value.length())) - .close(); - } - - public XPath notEq(Object attr, Object valuecomparison) { - return compare(attr, "!=", valuecomparison); - } - - public XPath notEq(Object... pathAndValue) { - return compare("!=", pathAndValue); - } - - public XPath gt(Object attr, Object valuecomparison) { - return compare(attr, ">", valuecomparison); - } - - public XPath gt(Object... pathAndValue) { - return compare(">", pathAndValue); - } - - public XPath gte(Object attr, Object valuecomparison) { - return compare(attr, ">=", valuecomparison); - } - - public XPath gte(Object... pathAndValue) { - return compare(">=", pathAndValue); - } - - public XPath lt(Object attr, Object valuecomparison) { - return compare(attr, "<", valuecomparison); - } - - public XPath lt(Object... pathAndValue) { - return compare("<", pathAndValue); - } - - public XPath lte(Object attr, Object valuecomparison) { - return compare(attr, "<=", valuecomparison); - } - - public XPath lte(Object... pathAndValue) { - return compare("<=", pathAndValue); - } - - public XPath contains(Object attr, String value) { - return functionCall("contains", String.valueOf(attr), valueToXPathValue(value)); - } - - public XPath startsWith(Object attr, String value) { - return functionCall("starts-with", String.valueOf(attr), valueToXPathValue(value)); - } - - public XPath endsWith(Object attr, String value) { - return functionCall("ends-with", String.valueOf(attr), valueToXPathValue(value)); - } - - private XPath functionCall(String functionName, String... args) { - autoInsertAnd(); - append(" " + functionName + "("); - - if (args.length > 0) { - append(args[0]); - for (int i = 1; i < args.length; i++) { - append(","); - append(args[i]); - } - } - append(") "); - return requireBinOp(true); - } - - public XPath compare(Object attr, String operator, Object value) { - return compare(new Object[] { attr }, operator, value); - } - - private XPath compare(String operator, Object[] pathAndValue) { - assertEven(pathAndValue); - int lastIndex = pathAndValue.length - 1; - return compare(Arrays.copyOf(pathAndValue, lastIndex), operator, pathAndValue[lastIndex]); - } - - public XPath compare(Object[] path, String operator, Object value) { - assertOdd(path); - autoInsertAnd().append(StringUtils.join(path, '/')).append(" ").append(operator).append(" ") - .append(valueToXPathValue(value)); - return requireBinOp(true); - } - - public XPath hasReference(Object... path) { - assertEven(path); // Reference + entity type - autoInsertAnd().append(StringUtils.join(path, '/')); - return requireBinOp(true); - } - - public XPath subconstraint(Object... path) { - assertEven(path); - autoInsertAnd().append(StringUtils.join(path, '/')).append("["); - closeStack.push("]"); - return requireBinOp(false); - } - - public XPath subconstraint() { - autoInsertAnd().append("("); - closeStack.push(")"); - return requireBinOp(false); - } - - public XPath addConstraint() { - if (!closeStack.isEmpty() && !closeStack.peek().equals("]")) - throw new IllegalStateException("Cannot add a constraint while in the middle of something else.."); - - return append("][").requireBinOp(false); - } - - public XPath close() { - if (closeStack.isEmpty()) - throw new IllegalStateException("XPathbuilder close stack is empty!"); - append(closeStack.pop()); - return requireBinOp(true); - // MWE: note that a close does not necessary require a binary operator, for - // example with two subsequent block([bla][boe]) constraints, - // but openening a binary constraint reset the flag, so that should be no issue - } - - public XPath or() { - if (!requiresBinOp) - throw new IllegalStateException("Received 'or' but no binary operator was expected"); - return append(" or ").requireBinOp(false); - } - - public XPath and() { - if (!requiresBinOp) - throw new IllegalStateException("Received 'and' but no binary operator was expected"); - return append(" and ").requireBinOp(false); - } - - public XPath not() { - autoInsertAnd(); - closeStack.push(")"); - return append(" not(").requireBinOp(false); - } - - private void assertOdd(Object[] stuff) { - if (stuff == null || stuff.length == 0 || stuff.length % 2 == 0) - throw new IllegalArgumentException("Expected an odd number of xpath path parts"); - } - - private void assertEven(Object[] stuff) { - if (stuff == null || stuff.length == 0 || stuff.length % 2 == 1) - throw new IllegalArgumentException("Expected an even number of xpath path parts"); - } - - public XPath append(String s) { - builder.append(s); - return this; - } - - public String getXPath() { - if (builder.length() > 0) - return "//" + entity + "[" + builder + "]"; - return "//" + entity; - } - - private void assertEmptyStack() throws IllegalStateException { - if (!closeStack.isEmpty()) - throw new IllegalStateException("Invalid xpath expression, not all items where closed"); - } - - public long count() throws CoreException { - assertEmptyStack(); - - return Core.retrieveXPathQueryAggregate(context, "count(" + getXPath() + ")"); - } - - public IMendixObject firstMendixObject() throws CoreException { - assertEmptyStack(); - - List result = Core.retrieveXPathQuery(context, getXPath(), 1, offset, sorting); - if (result.isEmpty()) - return null; - return result.get(0); - } - - public T first() throws CoreException { - return createProxy(context, proxyClass, firstMendixObject()); - } - - /** - * Given a set of attribute names and values, tries to find the first object - * that matches all conditions, or creates one - * - * @param keysAndValues - * @return - * @throws CoreException - */ - public T findOrCreateNoCommit(Object... keysAndValues) throws CoreException { - T res = findFirst(keysAndValues); - - return res != null ? res : constructInstance(false, keysAndValues); - } - - public T findOrCreate(Object... keysAndValues) throws CoreException { - T res = findFirst(keysAndValues); - - return res != null ? res : constructInstance(true, keysAndValues); - - } - - public T findOrCreateSynchronized(Object... keysAndValues) throws CoreException, InterruptedException { - T res = findFirst(keysAndValues); - - if (res != null) { - return res; - } else { - synchronized (Core.getMetaObject(entity)) { - IContext synchronizedContext = context.getSession().createContext().createSudoClone(); - try { - synchronizedContext.startTransaction(); - res = createProxy(synchronizedContext, proxyClass, - XPath.create(synchronizedContext, entity).findOrCreate(keysAndValues)); - synchronizedContext.endTransaction(); - return res; - } catch (CoreException e) { - if (synchronizedContext.isInTransaction()) { - synchronizedContext.rollbackTransaction(); - } - throw e; - } - } - } - } - - public T findFirst(Object... keysAndValues) - throws IllegalStateException, CoreException { - if (builder.length() > 0) - throw new IllegalStateException("FindFirst can only be used on XPath which do not have constraints already"); - - assertEven(keysAndValues); - for (int i = 0; i < keysAndValues.length; i += 2) - eq(keysAndValues[i], keysAndValues[i + 1]); - - return first(); - } - - /** - * Creates one instance of the type of this XPath query, and initializes the - * provided attributes to the provided values. - * - * @param keysAndValues AttributeName, AttributeValue, AttributeName2, - * AttributeValue2... list. - * @return - * @throws CoreException - */ - public T constructInstance(boolean autoCommit, Object... keysAndValues) throws CoreException { - assertEven(keysAndValues); - IMendixObject newObj = Core.instantiate(context, entity); - - for (int i = 0; i < keysAndValues.length; i += 2) - newObj.setValue(context, String.valueOf(keysAndValues[i]), toMemberValue(keysAndValues[i + 1])); - - if (autoCommit) - Core.commit(context, newObj); - - return createProxy(context, proxyClass, newObj); - } - - /** - * Given a current collection of primitive values, checks if for each value in - * the collection an object in the database exists. - * It creates a new object if needed, and removes any superfluos objects in the - * database that are no longer in the collection. - * - * @param currentCollection The collection that act as reference for the - * objects that should be in this database in the - * end. - * @param comparisonAttribute The attribute that should store the value as - * decribed in the collection - * @param autoDelete Automatically remove any superfluous objects form - * the database - * @param keysAndValues Constraints that should hold for the set of - * objects that are deleted or created. Objects - * outside this constraint are not processed. - * - * @return A pair of lists. The first list contains the newly created objects, - * the second list contains the objects that (should be or are) removed. - * @throws CoreException - */ - public ImmutablePair, List> syncDatabaseWithCollection(Collection currentCollection, - Object comparisonAttribute, boolean autoDelete, Object... keysAndValues) throws CoreException { - if (builder.length() > 0) - throw new IllegalStateException( - "syncDatabaseWithCollection can only be used on XPath which do not have constraints already"); - - List added = new ArrayList(); - List removed = new ArrayList(); - - Set col = new HashSet(currentCollection); - - for (int i = 0; i < keysAndValues.length; i += 2) - eq(keysAndValues[i], keysAndValues[i + 1]); - - for (IMendixObject existingItem : allMendixObjects()) { - // Item is still available - if (col.remove(existingItem.getValue(context, String.valueOf(comparisonAttribute)))) - continue; - - // No longer available - removed.add(createProxy(context, proxyClass, existingItem)); - if (autoDelete) - Core.delete(context, existingItem); - } - - // Some items where not found in the database - for (U value : col) { - - // In apache lang3, this would just be: ArrayUtils.addAll(keysAndValues, - // comparisonAttribute, value) - Object[] args = new Object[keysAndValues.length + 2]; - for (int i = 0; i < keysAndValues.length; i++) - args[i] = keysAndValues[i]; - args[keysAndValues.length] = comparisonAttribute; - args[keysAndValues.length + 1] = value; - - T newItem = constructInstance(true, args); - added.add(newItem); - } - - // Oké, stupid, Pair is also only available in apache lang3, so lets use a - // simple pair implementation for now - return ImmutablePair.of(added, removed); - } - - public T firstOrWait(long timeoutMSecs) throws CoreException, InterruptedException { - IMendixObject result = null; - - long start = System.currentTimeMillis(); - int sleepamount = 200; - int loopcount = 0; - - while (result == null) { - loopcount += 1; - result = firstMendixObject(); - - long now = System.currentTimeMillis(); - - if (start + timeoutMSecs < now) // Time expired - break; - - if (loopcount % 5 == 0) - sleepamount *= 1.5; - - // not expired, wait a bit - if (result == null) - Thread.sleep(sleepamount); - } - - return createProxy(context, proxyClass, result); - } - - public List allMendixObjects() throws CoreException { - assertEmptyStack(); - - return Core.retrieveXPathQuery(context, getXPath(), limit, offset, sorting); - } - - public List all() throws CoreException { - List res = new ArrayList(); - for (IMendixObject o : allMendixObjects()) - res.add(createProxy(context, proxyClass, o)); - - return res; - } - - @Override - public String toString() { - return getXPath(); - } - - /* Static utility functions */ - - // Cache for proxy constructors. Reflection is slow, so reuse as much as - // possible - private static Map initializers = new HashMap(); - - public static List createProxyList(IContext c, Class proxieClass, List objects) { - List res = new ArrayList(); - if (objects == null || objects.size() == 0) - return res; - - for (IMendixObject o : objects) - res.add(createProxy(c, proxieClass, o)); - - return res; - } - - public static T createProxy(IContext c, Class proxieClass, IMendixObject object) { - // Borrowed from nl.mweststrate.pages.MxQ package - - if (object == null) - return null; - - if (c == null || proxieClass == null) - throw new IllegalArgumentException("[CreateProxy] No context or proxieClass provided. "); - - // jeuj, we expect IMendixObject's. Thats nice.. - if (proxieClass == IMendixObject.class) - return proxieClass.cast(object); // .. since we can do a direct cast - - try { - String entityType = object.getType(); - - if (!initializers.containsKey(entityType)) { - - String[] entType = object.getType().split("\\."); - Class realClass = Class.forName(entType[0].toLowerCase() + ".proxies." + entType[1]); - - initializers.put(entityType, realClass.getMethod("initialize", IContext.class, IMendixObject.class)); - } - - // find constructor - Method m = initializers.get(entityType); - - // create proxy object - Object result = m.invoke(null, c, object); - - // cast, but check first is needed because the actual type might be a subclass - // of the requested type - if (!proxieClass.isAssignableFrom(result.getClass())) - throw new IllegalArgumentException("The type of the object ('" + object.getType() - + "') is not (a subclass) of '" + proxieClass.getName() + "'"); - - T proxie = proxieClass.cast(result); - return proxie; - } catch (Exception e) { - throw new RuntimeException("Unable to instantiate proxie: " + e.getMessage(), e); - } - } - - public static String valueToXPathValue(Object value) { - if (value == null) - return NULL; - - // Complex objects - if (value instanceof IMendixIdentifier) - return "'" + String.valueOf(((IMendixIdentifier) value).toLong()) + "'"; - if (value instanceof IMendixObject) - return valueToXPathValue(((IMendixObject) value).getId()); - if (value instanceof List) - throw new IllegalArgumentException("List based values are not supported!"); - - // Primitives - if (value instanceof Date) - return String.valueOf(((Date) value).getTime()); - if (value instanceof Long || value instanceof Integer) - return String.valueOf(value); - if (value instanceof Double || value instanceof Float) { - // make sure xpath understands our number formatting - NumberFormat format = NumberFormat.getNumberInstance(Locale.ENGLISH); - format.setMaximumFractionDigits(10); - format.setGroupingUsed(false); - return format.format(value); - } - if (value instanceof Boolean) { - return value.toString() + "()"; // xpath boolean, you know.. - } - if (value instanceof String) { - return "'" + ESCAPE_XML.translate(String.valueOf(value)) + "'"; - } - - // Object, assume its a proxy and deproxiefy - try { - IMendixObject mo = proxyToMendixObject(value); - return valueToXPathValue(mo); - } catch (NoSuchMethodException e) { - // This is O.K. just not a proxy object... - } catch (Exception e) { - throw new RuntimeException("Failed to retrieve MendixObject from proxy: " + e.getMessage(), e); - } - - // assume some string representation - return "'" + ESCAPE_XML.translate(String.valueOf(value)) + "'"; - } - - public static IMendixObject proxyToMendixObject(Object value) - throws NoSuchMethodException, SecurityException, IllegalAccessException, - IllegalArgumentException, InvocationTargetException { - Method m = value.getClass().getMethod("getMendixObject"); - IMendixObject mo = (IMendixObject) m.invoke(value); - return mo; - } - - public static List proxyListToMendixObjectList( - List objects) throws SecurityException, IllegalArgumentException, NoSuchMethodException, - IllegalAccessException, InvocationTargetException { - ArrayList res = new ArrayList(objects.size()); - for (T i : objects) - res.add(proxyToMendixObject(i)); - return res; - } - - public static Object toMemberValue(Object value) { - if (value == null) - return null; - - // Complex objects - if (value instanceof IMendixIdentifier) - return value; - if (value instanceof IMendixObject) - return ((IMendixObject) value).getId(); - - if (value instanceof List) - throw new IllegalArgumentException("List based values are not supported!"); - - // Primitives - if (value instanceof Date - || value instanceof Long - || value instanceof Integer - || value instanceof Double - || value instanceof Float - || value instanceof Boolean - || value instanceof String) { - return value; - } - - if (value.getClass().isEnum()) - return value.toString(); - - // Object, assume its a proxy and deproxiefy - try { - Method m = value.getClass().getMethod("getMendixObject"); - IMendixObject mo = (IMendixObject) m.invoke(value); - return toMemberValue(mo); - } catch (NoSuchMethodException e) { - // This is O.K. just not a proxy object... - } catch (Exception e) { - throw new RuntimeException( - "Failed to convert object to IMendixMember compatible value '" + value + "': " + e.getMessage(), e); - } - - throw new RuntimeException("Failed to convert object to IMendixMember compatible value: " + value); - } - - public static interface IBatchProcessor { - public void onItem(T item, long offset, long total) throws Exception; - } - - private static final class ParallelJobRunner implements Callable { - private final XPath self; - private final IBatchProcessor batchProcessor; - private final IMendixObject item; - private long index; - private long count; - - ParallelJobRunner(XPath self, IBatchProcessor batchProcessor, IMendixObject item, long index, long count) { - this.self = self; - this.batchProcessor = batchProcessor; - this.item = item; - this.index = index; - this.count = count; - } - - @Override - public Boolean call() { - try { - batchProcessor.onItem(XPath.createProxy(Core.createSystemContext(), self.proxyClass, item), index, count); - return true; - } catch (Exception e) { - throw new RuntimeException(String.format("Failed to execute batch on '%s' offset %d: %s", self.toString(), - self.offset, e.getMessage()), e); - } - } - } - - /** - * Retreives all items in this xpath query in batches of a limited size. - * Not that this function does not start a new transaction for all the batches, - * rather, it just limits the number of objects being retrieved and kept in - * memory at the same time. - * - * So it only batches the retrieve process, not the optional manipulations done - * in the onItem method. - * - * @param batchsize - * @param batchProcessor - * @throws CoreException - */ - public void batch(int batchsize, IBatchProcessor batchProcessor) throws CoreException { - if (sorting.isEmpty()) - addSortingAsc(XPath.ID); - - final long itemcount = count(); - - int baseoffset = offset; - int baselimit = limit; - - boolean useBaseLimit = baselimit > -1; - - offset(baseoffset); - List data; - - long i = 0; - - do { - int newlimit = useBaseLimit ? Math.min(batchsize, baseoffset + baselimit - offset) : batchsize; - if (newlimit == 0) - break; // where done, no more data is needed - - limit(newlimit); - data = all(); - - for (T item : data) { - i += 1; - try { - batchProcessor.onItem(item, i, Math.max(i, itemcount)); - } catch (Exception e) { - throw new RuntimeException(String.format("Failed to execute batch on '%s' offset %d: %s", this, - offset, e.getMessage()), e); - } - } - - offset(offset + data.size()); - } while (data.size() > 0); - } - - /** - * Batch with parallelization. - * - * IMPORTANT NOTE: DO NOT USE THE CONTEXT OF THE XPATH OBJECT ITSELF INSIDE THE - * BATCH PROCESSOR! - * - * Instead, use: Item.getContext(); !! - * - * - * @param batchsize - * @param threads - * @param batchProcessor - * @throws CoreException - * @throws InterruptedException - * @throws ExecutionException - */ - public void batch(int batchsize, int threads, final IBatchProcessor batchProcessor) - throws CoreException, InterruptedException, ExecutionException { - if (sorting.isEmpty()) - addSortingAsc(XPath.ID); - - ExecutorService pool = Executors.newFixedThreadPool(threads); - - final long itemcount = count(); - - int progress = 0; - List> futures = new ArrayList>(batchsize); // no need to synchronize - - offset(0); - limit(batchsize); - - List data = allMendixObjects(); - - while (data.size() > 0) { - for (final IMendixObject item : data) { - futures.add(pool.submit(new ParallelJobRunner(this, batchProcessor, item, progress, itemcount))); - progress += 1; - } - - while (!futures.isEmpty()) - futures.remove(0).get(); // wait for all futures before proceeding to next iteration - - offset(offset + data.size()); - data = allMendixObjects(); - } - - if (pool.shutdownNow().size() > 0) - throw new IllegalStateException("Not all tasks where finished!"); - } - - public static Class getProxyClassForEntityName(String entityname) { - { - String[] parts = entityname.split("\\."); - try { - return Class.forName(parts[0].toLowerCase() + ".proxies." + parts[1]); - } catch (ClassNotFoundException e) { - throw new RuntimeException("Cannot find class for entity: " + entityname + ": " + e.getMessage(), e); - } - } - } - - public boolean deleteAll() throws CoreException { - limit(1000); - List objs = allMendixObjects(); - while (!objs.isEmpty()) { - if (!Core.delete(context, objs.toArray(new IMendixObject[objs.size()]))) - return false; // TODO: throw? - - objs = allMendixObjects(); - } - return true; - } - - // Implement our own ESCAPE_XML because the original got deprecated and we - // originally translated only a very small - // subset of characters. - private static final CharSequenceTranslator ESCAPE_XML = new AggregateTranslator( - new LookupTranslator(EntityArrays.BASIC_ESCAPE), - new LookupTranslator(EntityArrays.APOS_ESCAPE)); -} +package communitycommons; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.text.translate.AggregateTranslator; +import org.apache.commons.text.translate.CharSequenceTranslator; +import org.apache.commons.text.translate.EntityArrays; +import org.apache.commons.text.translate.LookupTranslator; + +import com.mendix.core.Core; +import com.mendix.core.CoreException; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.systemwideinterfaces.core.IMendixIdentifier; +import com.mendix.systemwideinterfaces.core.IMendixObject; + +public class XPath { + /** + * Built-in tokens, see: + * https://docs.mendix.com/refguide/xpath-keywords-and-system-variables/ + */ + + /* Keywords */ + public static final String ID = "id"; + public static final String NULL = "NULL"; + public static final String Empty = "empty"; + + /* Object related */ + public static final String CurrentUser = "[%CurrentUser%]"; + public static final String CurrentObject = "[%CurrentObject%]"; + + /* Time related */ + public static final String CurrentDateTime = "[%CurrentDateTime%]"; + public static final String BeginOfCurrentMinute = "[%BeginOfCurrentMinute%]"; + public static final String BeginOfCurrentMinuteUTC = "[%BeginOfCurrentMinuteUTC%]"; + public static final String EndOfCurrentMinute = "[%EndOfCurrentMinute%]"; + public static final String EndOfCurrentMinuteUTC = "[%EndOfCurrentMinuteUTC%]"; + public static final String BeginOfCurrentHour = "[%BeginOfCurrentHour%]"; + public static final String BeginOfCurrentHourUTC = "[%BeginOfCurrentHourUTC%]"; + public static final String EndOfCurrentHour = "[%EndOfCurrentHour%]"; + public static final String EndOfCurrentHourUTC = "[%EndOfCurrentHourUTC%]"; + public static final String BeginOfCurrentDay = "[%BeginOfCurrentDay%]"; + public static final String BeginOfCurrentDayUTC = "[%BeginOfCurrentDayUTC%]"; + public static final String EndOfCurrentDay = "[%EndOfCurrentDay%]"; + public static final String EndOfCurrentDayUTC = "[%EndOfCurrentDayUTC%]"; + public static final String BeginOfYesterday = "[%BeginOfYesterday%]"; + public static final String BeginOfYesterdayUTC = "[%BeginOfYesterdayUTC%]"; + public static final String EndOfYesterday = "[%EndOfYesterday%]"; + public static final String EndOfYesterdayUTC = "[%EndOfYesterdayUTC%]"; + public static final String BeginOfTomorrow = "[%BeginOfTomorrow%]"; + public static final String BeginOfTomorrowUTC = "[%BeginOfTomorrowUTC%]"; + public static final String EndOfTomorrow = "[%EndOfTomorrow%]"; + public static final String EndOfTomorrowUTC = "[%EndOfTomorrowUTC%]"; + public static final String BeginOfCurrentWeek = "[%BeginOfCurrentWeek%]"; + public static final String BeginOfCurrentWeekUTC = "[%BeginOfCurrentWeekUTC%]"; + public static final String EndOfCurrentWeek = "[%EndOfCurrentWeek%]"; + public static final String EndOfCurrentWeekUTC = "[%EndOfCurrentWeekUTC%]"; + public static final String BeginOfCurrentMonth = "[%BeginOfCurrentMonth%]"; + public static final String BeginOfCurrentMonthUTC = "[%BeginOfCurrentMonthUTC%]"; + public static final String EndOfCurrentMonth = "[%EndOfCurrentMonth%]"; + public static final String EndOfCurrentMonthUTC = "[%EndOfCurrentMonthUTC%]"; + public static final String BeginOfCurrentYear = "[%BeginOfCurrentYear%]"; + public static final String BeginOfCurrentYearUTC = "[%BeginOfCurrentYearUTC%]"; + public static final String EndOfCurrentYear = "[%EndOfCurrentYear%]"; + public static final String EndOfCurrentYearUTC = "[%EndOfCurrentYearUTC%]"; + + public static final String DayLength = "[%DayLength%]"; + public static final String HourLength = "[%HourLength%]"; + public static final String MinuteLength = "[%MinuteLength%]"; + public static final String SecondLength = "[%SecondLength%]"; + public static final String WeekLength = "[%WeekLength%]"; + public static final String MonthLength = "[%MonthLength%]"; + public static final String YearLength = "[%YearLength%]"; + + private String entity; + private int offset = 0; + private int limit = -1; + // important, linked map, insertion order is relevant! + private LinkedHashMap sorting = new LinkedHashMap(); + private LinkedList closeStack = new LinkedList(); + private StringBuilder builder = new StringBuilder(); + private IContext context; + private Class proxyClass; + // state property, indicates whether 'and' needs to be inserted before the next + // constraint + private boolean requiresBinOp = false; + + public static XPath create(IContext c, String entityType) { + XPath res = new XPath(c, IMendixObject.class); + res.entity = entityType; + return res; + } + + public static XPath create(IContext c, Class proxyClass) { + return new XPath(c, proxyClass); + } + + private XPath(IContext c, Class proxyClass) { + try { + if (proxyClass != IMendixObject.class) + entity = (String) proxyClass.getMethod("getType").invoke(null); + } catch (Exception e) { + throw new IllegalArgumentException( + "Failed to determine entity type of proxy class. Did you provide a valid proxy class? '" + + proxyClass.getName() + "'"); + } + + this.proxyClass = proxyClass; + this.context = c; + } + + private XPath autoInsertAnd() { + if (requiresBinOp) + and(); + return this; + } + + private XPath requireBinOp(boolean requires) { + requiresBinOp = requires; + return this; + } + + public XPath offset(int offset) { + if (offset < 0) + throw new IllegalArgumentException("Offset should not be negative"); + + this.offset = offset; + return this; + } + + public XPath limit(int limit) { + if (limit < -1 || limit == 0) + throw new IllegalArgumentException("Limit should be larger than zero or -1. "); + + this.limit = limit; + return this; + } + + public XPath addSortingAsc(Object... sortparts) { + assertOdd(sortparts); + sorting.put(StringUtils.join(sortparts, '/'), "asc"); + return this; + } + + public XPath addSortingDesc(Object... sortparts) { + sorting.put(StringUtils.join(sortparts, "/"), "desc"); + return this; + } + + public XPath eq(Object attr, Object valuecomparison) { + return compare(attr, "=", valuecomparison); + } + + public XPath eq(Object... pathAndValue) { + return compare("=", pathAndValue); + } + + public XPath equalsIgnoreCase(Object attr, String value) { + // (contains(Name, $email) and length(Name) = length($email) + return subconstraint() + .contains(attr, value) + .and() + .append(" length(" + attr + ") = ").append(value == null ? "0" : valueToXPathValue(value.length())) + .close(); + } + + public XPath notEq(Object attr, Object valuecomparison) { + return compare(attr, "!=", valuecomparison); + } + + public XPath notEq(Object... pathAndValue) { + return compare("!=", pathAndValue); + } + + public XPath gt(Object attr, Object valuecomparison) { + return compare(attr, ">", valuecomparison); + } + + public XPath gt(Object... pathAndValue) { + return compare(">", pathAndValue); + } + + public XPath gte(Object attr, Object valuecomparison) { + return compare(attr, ">=", valuecomparison); + } + + public XPath gte(Object... pathAndValue) { + return compare(">=", pathAndValue); + } + + public XPath lt(Object attr, Object valuecomparison) { + return compare(attr, "<", valuecomparison); + } + + public XPath lt(Object... pathAndValue) { + return compare("<", pathAndValue); + } + + public XPath lte(Object attr, Object valuecomparison) { + return compare(attr, "<=", valuecomparison); + } + + public XPath lte(Object... pathAndValue) { + return compare("<=", pathAndValue); + } + + public XPath contains(Object attr, String value) { + return functionCall("contains", String.valueOf(attr), valueToXPathValue(value)); + } + + public XPath startsWith(Object attr, String value) { + return functionCall("starts-with", String.valueOf(attr), valueToXPathValue(value)); + } + + public XPath endsWith(Object attr, String value) { + return functionCall("ends-with", String.valueOf(attr), valueToXPathValue(value)); + } + + private XPath functionCall(String functionName, String... args) { + autoInsertAnd(); + append(" " + functionName + "("); + + if (args.length > 0) { + append(args[0]); + for (int i = 1; i < args.length; i++) { + append(","); + append(args[i]); + } + } + append(") "); + return requireBinOp(true); + } + + public XPath compare(Object attr, String operator, Object value) { + return compare(new Object[] { attr }, operator, value); + } + + private XPath compare(String operator, Object[] pathAndValue) { + assertEven(pathAndValue); + int lastIndex = pathAndValue.length - 1; + return compare(Arrays.copyOf(pathAndValue, lastIndex), operator, pathAndValue[lastIndex]); + } + + public XPath compare(Object[] path, String operator, Object value) { + assertOdd(path); + autoInsertAnd().append(StringUtils.join(path, '/')).append(" ").append(operator).append(" ") + .append(valueToXPathValue(value)); + return requireBinOp(true); + } + + public XPath hasReference(Object... path) { + assertEven(path); // Reference + entity type + autoInsertAnd().append(StringUtils.join(path, '/')); + return requireBinOp(true); + } + + public XPath subconstraint(Object... path) { + assertEven(path); + autoInsertAnd().append(StringUtils.join(path, '/')).append("["); + closeStack.push("]"); + return requireBinOp(false); + } + + public XPath subconstraint() { + autoInsertAnd().append("("); + closeStack.push(")"); + return requireBinOp(false); + } + + public XPath addConstraint() { + if (!closeStack.isEmpty() && !closeStack.peek().equals("]")) + throw new IllegalStateException("Cannot add a constraint while in the middle of something else.."); + + return append("][").requireBinOp(false); + } + + public XPath close() { + if (closeStack.isEmpty()) + throw new IllegalStateException("XPathbuilder close stack is empty!"); + append(closeStack.pop()); + return requireBinOp(true); + // MWE: note that a close does not necessary require a binary operator, for + // example with two subsequent block([bla][boe]) constraints, + // but openening a binary constraint reset the flag, so that should be no issue + } + + public XPath or() { + if (!requiresBinOp) + throw new IllegalStateException("Received 'or' but no binary operator was expected"); + return append(" or ").requireBinOp(false); + } + + public XPath and() { + if (!requiresBinOp) + throw new IllegalStateException("Received 'and' but no binary operator was expected"); + return append(" and ").requireBinOp(false); + } + + public XPath not() { + autoInsertAnd(); + closeStack.push(")"); + return append(" not(").requireBinOp(false); + } + + private void assertOdd(Object[] stuff) { + if (stuff == null || stuff.length == 0 || stuff.length % 2 == 0) + throw new IllegalArgumentException("Expected an odd number of xpath path parts"); + } + + private void assertEven(Object[] stuff) { + if (stuff == null || stuff.length == 0 || stuff.length % 2 == 1) + throw new IllegalArgumentException("Expected an even number of xpath path parts"); + } + + public XPath append(String s) { + builder.append(s); + return this; + } + + public String getXPath() { + if (builder.length() > 0) + return "//" + entity + "[" + builder + "]"; + return "//" + entity; + } + + private void assertEmptyStack() throws IllegalStateException { + if (!closeStack.isEmpty()) + throw new IllegalStateException("Invalid xpath expression, not all items where closed"); + } + + public long count() throws CoreException { + assertEmptyStack(); + + return Core.retrieveXPathQueryAggregate(context, "count(" + getXPath() + ")"); + } + + public IMendixObject firstMendixObject() throws CoreException { + assertEmptyStack(); + + List result = Core.retrieveXPathQuery(context, getXPath(), 1, offset, sorting); + if (result.isEmpty()) + return null; + return result.get(0); + } + + public T first() throws CoreException { + return createProxy(context, proxyClass, firstMendixObject()); + } + + /** + * Given a set of attribute names and values, tries to find the first object + * that matches all conditions, or creates one + * + * @param keysAndValues + * @return + * @throws CoreException + */ + public T findOrCreateNoCommit(Object... keysAndValues) throws CoreException { + T res = findFirst(keysAndValues); + + return res != null ? res : constructInstance(false, keysAndValues); + } + + public T findOrCreate(Object... keysAndValues) throws CoreException { + T res = findFirst(keysAndValues); + + return res != null ? res : constructInstance(true, keysAndValues); + + } + + public T findOrCreateSynchronized(Object... keysAndValues) throws CoreException, InterruptedException { + T res = findFirst(keysAndValues); + + if (res != null) { + return res; + } else { + synchronized (Core.getMetaObject(entity)) { + IContext synchronizedContext = context.getSession().createContext().createSudoClone(); + try { + synchronizedContext.startTransaction(); + res = createProxy(synchronizedContext, proxyClass, + XPath.create(synchronizedContext, entity).findOrCreate(keysAndValues)); + synchronizedContext.endTransaction(); + return res; + } catch (CoreException e) { + if (synchronizedContext.isInTransaction()) { + synchronizedContext.rollbackTransaction(); + } + throw e; + } + } + } + } + + public T findFirst(Object... keysAndValues) + throws IllegalStateException, CoreException { + if (builder.length() > 0) + throw new IllegalStateException("FindFirst can only be used on XPath which do not have constraints already"); + + assertEven(keysAndValues); + for (int i = 0; i < keysAndValues.length; i += 2) + eq(keysAndValues[i], keysAndValues[i + 1]); + + return first(); + } + + /** + * Creates one instance of the type of this XPath query, and initializes the + * provided attributes to the provided values. + * + * @param keysAndValues AttributeName, AttributeValue, AttributeName2, + * AttributeValue2... list. + * @return + * @throws CoreException + */ + public T constructInstance(boolean autoCommit, Object... keysAndValues) throws CoreException { + assertEven(keysAndValues); + IMendixObject newObj = Core.instantiate(context, entity); + + for (int i = 0; i < keysAndValues.length; i += 2) + newObj.setValue(context, String.valueOf(keysAndValues[i]), toMemberValue(keysAndValues[i + 1])); + + if (autoCommit) + Core.commit(context, newObj); + + return createProxy(context, proxyClass, newObj); + } + + /** + * Given a current collection of primitive values, checks if for each value in + * the collection an object in the database exists. + * It creates a new object if needed, and removes any superfluos objects in the + * database that are no longer in the collection. + * + * @param currentCollection The collection that act as reference for the + * objects that should be in this database in the + * end. + * @param comparisonAttribute The attribute that should store the value as + * decribed in the collection + * @param autoDelete Automatically remove any superfluous objects form + * the database + * @param keysAndValues Constraints that should hold for the set of + * objects that are deleted or created. Objects + * outside this constraint are not processed. + * + * @return A pair of lists. The first list contains the newly created objects, + * the second list contains the objects that (should be or are) removed. + * @throws CoreException + */ + public ImmutablePair, List> syncDatabaseWithCollection(Collection currentCollection, + Object comparisonAttribute, boolean autoDelete, Object... keysAndValues) throws CoreException { + if (builder.length() > 0) + throw new IllegalStateException( + "syncDatabaseWithCollection can only be used on XPath which do not have constraints already"); + + List added = new ArrayList(); + List removed = new ArrayList(); + + Set col = new HashSet(currentCollection); + + for (int i = 0; i < keysAndValues.length; i += 2) + eq(keysAndValues[i], keysAndValues[i + 1]); + + for (IMendixObject existingItem : allMendixObjects()) { + // Item is still available + if (col.remove(existingItem.getValue(context, String.valueOf(comparisonAttribute)))) + continue; + + // No longer available + removed.add(createProxy(context, proxyClass, existingItem)); + if (autoDelete) + Core.delete(context, existingItem); + } + + // Some items where not found in the database + for (U value : col) { + + // In apache lang3, this would just be: ArrayUtils.addAll(keysAndValues, + // comparisonAttribute, value) + Object[] args = new Object[keysAndValues.length + 2]; + for (int i = 0; i < keysAndValues.length; i++) + args[i] = keysAndValues[i]; + args[keysAndValues.length] = comparisonAttribute; + args[keysAndValues.length + 1] = value; + + T newItem = constructInstance(true, args); + added.add(newItem); + } + + // Oké, stupid, Pair is also only available in apache lang3, so lets use a + // simple pair implementation for now + return ImmutablePair.of(added, removed); + } + + public T firstOrWait(long timeoutMSecs) throws CoreException, InterruptedException { + IMendixObject result = null; + + long start = System.currentTimeMillis(); + int sleepamount = 200; + int loopcount = 0; + + while (result == null) { + loopcount += 1; + result = firstMendixObject(); + + long now = System.currentTimeMillis(); + + if (start + timeoutMSecs < now) // Time expired + break; + + if (loopcount % 5 == 0) + sleepamount = (int)(sleepamount * 1.5); + + // not expired, wait a bit + if (result == null) + Thread.sleep(sleepamount); + } + + return createProxy(context, proxyClass, result); + } + + public List allMendixObjects() throws CoreException { + assertEmptyStack(); + + return Core.retrieveXPathQuery(context, getXPath(), limit, offset, sorting); + } + + public List all() throws CoreException { + List res = new ArrayList(); + for (IMendixObject o : allMendixObjects()) + res.add(createProxy(context, proxyClass, o)); + + return res; + } + + @Override + public String toString() { + return getXPath(); + } + + /* Static utility functions */ + + // Cache for proxy constructors. Reflection is slow, so reuse as much as + // possible + private static Map initializers = new HashMap(); + + public static List createProxyList(IContext c, Class proxieClass, List objects) { + List res = new ArrayList(); + if (objects == null || objects.size() == 0) + return res; + + for (IMendixObject o : objects) + res.add(createProxy(c, proxieClass, o)); + + return res; + } + + public static T createProxy(IContext c, Class proxieClass, IMendixObject object) { + // Borrowed from nl.mweststrate.pages.MxQ package + + if (object == null) + return null; + + if (c == null || proxieClass == null) + throw new IllegalArgumentException("[CreateProxy] No context or proxieClass provided. "); + + // jeuj, we expect IMendixObject's. Thats nice.. + if (proxieClass == IMendixObject.class) + return proxieClass.cast(object); // .. since we can do a direct cast + + try { + String entityType = object.getType(); + + if (!initializers.containsKey(entityType)) { + + String[] entType = object.getType().split("\\."); + Class realClass = Class.forName(entType[0].toLowerCase() + ".proxies." + entType[1]); + + initializers.put(entityType, realClass.getMethod("initialize", IContext.class, IMendixObject.class)); + } + + // find constructor + Method m = initializers.get(entityType); + + // create proxy object + Object result = m.invoke(null, c, object); + + // cast, but check first is needed because the actual type might be a subclass + // of the requested type + if (!proxieClass.isAssignableFrom(result.getClass())) + throw new IllegalArgumentException("The type of the object ('" + object.getType() + + "') is not (a subclass) of '" + proxieClass.getName() + "'"); + + T proxie = proxieClass.cast(result); + return proxie; + } catch (Exception e) { + throw new RuntimeException("Unable to instantiate proxie: " + e.getMessage(), e); + } + } + + public static String valueToXPathValue(Object value) { + if (value == null) + return NULL; + + // Complex objects + if (value instanceof IMendixIdentifier) + return "'" + String.valueOf(((IMendixIdentifier) value).toLong()) + "'"; + if (value instanceof IMendixObject) + return valueToXPathValue(((IMendixObject) value).getId()); + if (value instanceof List) + throw new IllegalArgumentException("List based values are not supported!"); + + // Primitives + if (value instanceof Date) + return String.valueOf(((Date) value).getTime()); + if (value instanceof Long || value instanceof Integer) + return String.valueOf(value); + if (value instanceof Double || value instanceof Float) { + // make sure xpath understands our number formatting + NumberFormat format = NumberFormat.getNumberInstance(Locale.ENGLISH); + format.setMaximumFractionDigits(10); + format.setGroupingUsed(false); + return format.format(value); + } + if (value instanceof Boolean) { + return value.toString() + "()"; // xpath boolean, you know.. + } + if (value instanceof String) { + return "'" + ESCAPE_XML.translate(String.valueOf(value)) + "'"; + } + + // Object, assume its a proxy and deproxiefy + try { + IMendixObject mo = proxyToMendixObject(value); + return valueToXPathValue(mo); + } catch (NoSuchMethodException e) { + // This is O.K. just not a proxy object... + } catch (Exception e) { + throw new RuntimeException("Failed to retrieve MendixObject from proxy: " + e.getMessage(), e); + } + + // assume some string representation + return "'" + ESCAPE_XML.translate(String.valueOf(value)) + "'"; + } + + public static IMendixObject proxyToMendixObject(Object value) + throws NoSuchMethodException, SecurityException, IllegalAccessException, + IllegalArgumentException, InvocationTargetException { + Method m = value.getClass().getMethod("getMendixObject"); + IMendixObject mo = (IMendixObject) m.invoke(value); + return mo; + } + + public static List proxyListToMendixObjectList( + List objects) throws SecurityException, IllegalArgumentException, NoSuchMethodException, + IllegalAccessException, InvocationTargetException { + ArrayList res = new ArrayList(objects.size()); + for (T i : objects) + res.add(proxyToMendixObject(i)); + return res; + } + + public static Object toMemberValue(Object value) { + if (value == null) + return null; + + // Complex objects + if (value instanceof IMendixIdentifier) + return value; + if (value instanceof IMendixObject) + return ((IMendixObject) value).getId(); + + if (value instanceof List) + throw new IllegalArgumentException("List based values are not supported!"); + + // Primitives + if (value instanceof Date + || value instanceof Long + || value instanceof Integer + || value instanceof Double + || value instanceof Float + || value instanceof Boolean + || value instanceof String) { + return value; + } + + if (value.getClass().isEnum()) + return value.toString(); + + // Object, assume its a proxy and deproxiefy + try { + Method m = value.getClass().getMethod("getMendixObject"); + IMendixObject mo = (IMendixObject) m.invoke(value); + return toMemberValue(mo); + } catch (NoSuchMethodException e) { + // This is O.K. just not a proxy object... + } catch (Exception e) { + throw new RuntimeException( + "Failed to convert object to IMendixMember compatible value '" + value + "': " + e.getMessage(), e); + } + + throw new RuntimeException("Failed to convert object to IMendixMember compatible value: " + value); + } + + public static interface IBatchProcessor { + public void onItem(T item, long offset, long total) throws Exception; + } + + private static final class ParallelJobRunner implements Callable { + private final XPath self; + private final IBatchProcessor batchProcessor; + private final IMendixObject item; + private long index; + private long count; + + ParallelJobRunner(XPath self, IBatchProcessor batchProcessor, IMendixObject item, long index, long count) { + this.self = self; + this.batchProcessor = batchProcessor; + this.item = item; + this.index = index; + this.count = count; + } + + @Override + public Boolean call() { + try { + batchProcessor.onItem(XPath.createProxy(Core.createSystemContext(), self.proxyClass, item), index, count); + return true; + } catch (Exception e) { + throw new RuntimeException(String.format("Failed to execute batch on '%s' offset %d: %s", self.toString(), + self.offset, e.getMessage()), e); + } + } + } + + /** + * Retreives all items in this xpath query in batches of a limited size. + * Not that this function does not start a new transaction for all the batches, + * rather, it just limits the number of objects being retrieved and kept in + * memory at the same time. + * + * So it only batches the retrieve process, not the optional manipulations done + * in the onItem method. + * + * @param batchsize + * @param batchProcessor + * @throws CoreException + */ + public void batch(int batchsize, IBatchProcessor batchProcessor) throws CoreException { + if (sorting.isEmpty()) + addSortingAsc(XPath.ID); + + final long itemcount = count(); + + int baseoffset = offset; + int baselimit = limit; + + boolean useBaseLimit = baselimit > -1; + + offset(baseoffset); + List data; + + long i = 0; + + do { + int newlimit = useBaseLimit ? Math.min(batchsize, baseoffset + baselimit - offset) : batchsize; + if (newlimit == 0) + break; // where done, no more data is needed + + limit(newlimit); + data = all(); + + for (T item : data) { + i += 1; + try { + batchProcessor.onItem(item, i, Math.max(i, itemcount)); + } catch (Exception e) { + throw new RuntimeException(String.format("Failed to execute batch on '%s' offset %d: %s", this, + offset, e.getMessage()), e); + } + } + + offset(offset + data.size()); + } while (data.size() > 0); + } + + /** + * Batch with parallelization. + * + * IMPORTANT NOTE: DO NOT USE THE CONTEXT OF THE XPATH OBJECT ITSELF INSIDE THE + * BATCH PROCESSOR! + * + * Instead, use: Item.getContext(); !! + * + * + * @param batchsize + * @param threads + * @param batchProcessor + * @throws CoreException + * @throws InterruptedException + * @throws ExecutionException + */ + public void batch(int batchsize, int threads, final IBatchProcessor batchProcessor) + throws CoreException, InterruptedException, ExecutionException { + if (sorting.isEmpty()) + addSortingAsc(XPath.ID); + + ExecutorService pool = Executors.newFixedThreadPool(threads); + + final long itemcount = count(); + + int progress = 0; + List> futures = new ArrayList>(batchsize); // no need to synchronize + + offset(0); + limit(batchsize); + + List data = allMendixObjects(); + + while (data.size() > 0) { + for (final IMendixObject item : data) { + futures.add(pool.submit(new ParallelJobRunner(this, batchProcessor, item, progress, itemcount))); + progress += 1; + } + + while (!futures.isEmpty()) + futures.remove(0).get(); // wait for all futures before proceeding to next iteration + + offset(offset + data.size()); + data = allMendixObjects(); + } + + if (pool.shutdownNow().size() > 0) + throw new IllegalStateException("Not all tasks where finished!"); + } + + public static Class getProxyClassForEntityName(String entityname) { + { + String[] parts = entityname.split("\\."); + try { + return Class.forName(parts[0].toLowerCase() + ".proxies." + parts[1]); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Cannot find class for entity: " + entityname + ": " + e.getMessage(), e); + } + } + } + + public boolean deleteAll() throws CoreException { + limit(1000); + List objs = allMendixObjects(); + while (!objs.isEmpty()) { + if (!Core.delete(context, objs.toArray(new IMendixObject[objs.size()]))) + return false; // TODO: throw? + + objs = allMendixObjects(); + } + return true; + } + + // Implement our own ESCAPE_XML because the original got deprecated and we + // originally translated only a very small + // subset of characters. + private static final CharSequenceTranslator ESCAPE_XML = new AggregateTranslator( + new LookupTranslator(EntityArrays.BASIC_ESCAPE), + new LookupTranslator(EntityArrays.APOS_ESCAPE)); +} diff --git a/javasource/conversationalui/actions/DeploymentSelection_GetList.java b/javasource/conversationalui/actions/DeploymentSelection_GetList.java new file mode 100644 index 0000000..73d2d41 --- /dev/null +++ b/javasource/conversationalui/actions/DeploymentSelection_GetList.java @@ -0,0 +1,56 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Only the following code will be retained when actions are regenerated: +// - the import list +// - the code between BEGIN USER CODE and END USER CODE +// - the code between BEGIN EXTRA CODE and END EXTRA CODE +// Other code you write will be lost the next time you deploy the project. +// Special characters, e.g., é, ö, à, etc. are supported in comments. + +package conversationalui.actions; + +import java.util.stream.Collectors; +import com.mendix.core.Core; +import com.mendix.systemwideinterfaces.connectionbus.data.IDataTable; +import com.mendix.systemwideinterfaces.core.IContext; +import com.mendix.webui.CustomJavaAction; +import conversationalui.proxies.DeploymentSelection; +import com.mendix.systemwideinterfaces.core.IMendixObject; + +public class DeploymentSelection_GetList extends CustomJavaAction> +{ + public DeploymentSelection_GetList(IContext context) + { + super(context); + } + + @java.lang.Override + public java.util.List executeAction() throws Exception + { + // BEGIN USER CODE + String deploymentIdentifierAttribute = genaicommons.proxies.Usage.MemberNames.DeploymentIdentifier.toString(); + String usageEntity = genaicommons.proxies.Usage.entityName.toString(); + String oqlQuery = "SELECT DISTINCT " + deploymentIdentifierAttribute + " FROM " + usageEntity + " ORDER BY " + deploymentIdentifierAttribute; + IDataTable oqlResult = Core.retrieveOQLDataTable(getContext(), oqlQuery); + + return oqlResult.getRows().stream().map(e -> { + DeploymentSelection newDeploymentSelection = new DeploymentSelection(getContext()); + newDeploymentSelection.setDeploymentIdentifier(getContext(), e.getValue(getContext(), 0)); + return newDeploymentSelection; + }).map(e -> e.getMendixObject()).collect(Collectors.toList()); + // END USER CODE + } + + /** + * Returns a string representation of this action + * @return a string representation of this action + */ + @java.lang.Override + public java.lang.String toString() + { + return "DeploymentSelection_GetList"; + } + + // BEGIN EXTRA CODE + // END EXTRA CODE +} diff --git a/modules/GenAICommons.mxmodule b/modules/GenAICommons.mxmodule index 8bd16d5..b9bcc6b 100644 Binary files a/modules/GenAICommons.mxmodule and b/modules/GenAICommons.mxmodule differ diff --git a/modules/javasource/genaicommons/proxies/EmbeddingsResponse.java b/modules/javasource/genaicommons/proxies/EmbeddingsResponse.java index 3f7cb58..7f58bd4 100644 --- a/modules/javasource/genaicommons/proxies/EmbeddingsResponse.java +++ b/modules/javasource/genaicommons/proxies/EmbeddingsResponse.java @@ -26,6 +26,7 @@ public enum MemberNames { PromptTokens("PromptTokens"), TotalTokens("TotalTokens"), + DurationMilliseconds("DurationMilliseconds"), EmbeddingsResponse_ChunkCollection("GenAICommons.EmbeddingsResponse_ChunkCollection"); private final java.lang.String metaName; @@ -153,6 +154,42 @@ public final void setTotalTokens(com.mendix.systemwideinterfaces.core.IContext c getMendixObject().setValue(context, MemberNames.TotalTokens.toString(), totaltokens); } + /** + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds() + { + return getDurationMilliseconds(getContext()); + } + + /** + * @param context + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.DurationMilliseconds.toString()); + } + + /** + * Set value of DurationMilliseconds + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(java.lang.Integer durationmilliseconds) + { + setDurationMilliseconds(getContext(), durationmilliseconds); + } + + /** + * Set value of DurationMilliseconds + * @param context + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer durationmilliseconds) + { + getMendixObject().setValue(context, MemberNames.DurationMilliseconds.toString(), durationmilliseconds); + } + /** * @throws com.mendix.core.CoreException * @return value of EmbeddingsResponse_ChunkCollection diff --git a/modules/javasource/genaicommons/proxies/Response.java b/modules/javasource/genaicommons/proxies/Response.java index 4bebcf8..b23394b 100644 --- a/modules/javasource/genaicommons/proxies/Response.java +++ b/modules/javasource/genaicommons/proxies/Response.java @@ -26,6 +26,7 @@ public enum MemberNames RequestTokens("RequestTokens"), ResponseTokens("ResponseTokens"), TotalTokens("TotalTokens"), + DurationMilliseconds("DurationMilliseconds"), StopReason("StopReason"), Response_Message("GenAICommons.Response_Message"); @@ -199,6 +200,42 @@ public final void setTotalTokens(com.mendix.systemwideinterfaces.core.IContext c getMendixObject().setValue(context, MemberNames.TotalTokens.toString(), totaltokens); } + /** + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds() + { + return getDurationMilliseconds(getContext()); + } + + /** + * @param context + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.DurationMilliseconds.toString()); + } + + /** + * Set value of DurationMilliseconds + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(java.lang.Integer durationmilliseconds) + { + setDurationMilliseconds(getContext(), durationmilliseconds); + } + + /** + * Set value of DurationMilliseconds + * @param context + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer durationmilliseconds) + { + getMendixObject().setValue(context, MemberNames.DurationMilliseconds.toString(), durationmilliseconds); + } + /** * @return value of StopReason */ diff --git a/modules/javasource/genaicommons/proxies/Usage.java b/modules/javasource/genaicommons/proxies/Usage.java new file mode 100644 index 0000000..3576126 --- /dev/null +++ b/modules/javasource/genaicommons/proxies/Usage.java @@ -0,0 +1,318 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Code you write here will be lost the next time you deploy the project. + +package genaicommons.proxies; + +/** + * This entity represents usage statistics of a call to an LLM. It refers to a complete LLM interaction; in case there are several iterations (e.g. recursive procesisng of function calls), everything should be aggregated into one Usage record. + * + * Following the principles of GenAI Commons it must be stored based on the response for every successful call to a system of an LLM provider. This is only applicable for text & files operations and embeddings operations. It is the responsibility of connector developers implementing the GenAI principles in their GenAI operations to include the right microflows to ensure storage of Usage details after successful calls. + * + * The data stored in this entity is to be used later on for monitoring purposes. + * + * See ScE_Usage_Cleanup and Usage_CleanUpAterDays for more information about automatic cleanup. + */ +public class Usage implements com.mendix.systemwideinterfaces.core.IEntityProxy +{ + private final com.mendix.systemwideinterfaces.core.IMendixObject usageMendixObject; + + private final com.mendix.systemwideinterfaces.core.IContext context; + + /** + * Internal name of this entity + */ + public static final java.lang.String entityName = "GenAICommons.Usage"; + + /** + * Enum describing members of this entity + */ + public enum MemberNames + { + InputTokens("InputTokens"), + OutputTokens("OutputTokens"), + TotalTokens("TotalTokens"), + DurationMilliseconds("DurationMilliseconds"), + DeploymentIdentifier("DeploymentIdentifier"); + + private final java.lang.String metaName; + + MemberNames(java.lang.String s) + { + metaName = s; + } + + @java.lang.Override + public java.lang.String toString() + { + return metaName; + } + } + + public Usage(com.mendix.systemwideinterfaces.core.IContext context) + { + this(context, com.mendix.core.Core.instantiate(context, entityName)); + } + + protected Usage(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject usageMendixObject) + { + if (usageMendixObject == null) { + throw new java.lang.IllegalArgumentException("The given object cannot be null."); + } + if (!com.mendix.core.Core.isSubClassOf(entityName, usageMendixObject.getType())) { + throw new java.lang.IllegalArgumentException(String.format("The given object is not a %s", entityName)); + } + + this.usageMendixObject = usageMendixObject; + this.context = context; + } + + /** + * Initialize a proxy using context (recommended). This context will be used for security checking when the get- and set-methods without context parameters are called. + * The get- and set-methods with context parameter should be used when for instance sudo access is necessary (IContext.createSudoClone() can be used to obtain sudo access). + * @param context The context to be used + * @param mendixObject The Mendix object for the new instance + * @return a new instance of this proxy class + */ + public static genaicommons.proxies.Usage initialize(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixObject mendixObject) + { + return new genaicommons.proxies.Usage(context, mendixObject); + } + + public static genaicommons.proxies.Usage load(com.mendix.systemwideinterfaces.core.IContext context, com.mendix.systemwideinterfaces.core.IMendixIdentifier mendixIdentifier) throws com.mendix.core.CoreException + { + com.mendix.systemwideinterfaces.core.IMendixObject mendixObject = com.mendix.core.Core.retrieveId(context, mendixIdentifier); + return genaicommons.proxies.Usage.initialize(context, mendixObject); + } + + public static java.util.List load(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String xpathConstraint) throws com.mendix.core.CoreException + { + return com.mendix.core.Core.createXPathQuery(String.format("//%1$s%2$s", entityName, xpathConstraint)) + .execute(context) + .stream() + .map(obj -> genaicommons.proxies.Usage.initialize(context, obj)) + .collect(java.util.stream.Collectors.toList()); + } + + /** + * @return value of InputTokens + */ + public final java.lang.Integer getInputTokens() + { + return getInputTokens(getContext()); + } + + /** + * @param context + * @return value of InputTokens + */ + public final java.lang.Integer getInputTokens(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.InputTokens.toString()); + } + + /** + * Set value of InputTokens + * @param inputtokens + */ + public final void setInputTokens(java.lang.Integer inputtokens) + { + setInputTokens(getContext(), inputtokens); + } + + /** + * Set value of InputTokens + * @param context + * @param inputtokens + */ + public final void setInputTokens(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer inputtokens) + { + getMendixObject().setValue(context, MemberNames.InputTokens.toString(), inputtokens); + } + + /** + * @return value of OutputTokens + */ + public final java.lang.Integer getOutputTokens() + { + return getOutputTokens(getContext()); + } + + /** + * @param context + * @return value of OutputTokens + */ + public final java.lang.Integer getOutputTokens(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.OutputTokens.toString()); + } + + /** + * Set value of OutputTokens + * @param outputtokens + */ + public final void setOutputTokens(java.lang.Integer outputtokens) + { + setOutputTokens(getContext(), outputtokens); + } + + /** + * Set value of OutputTokens + * @param context + * @param outputtokens + */ + public final void setOutputTokens(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer outputtokens) + { + getMendixObject().setValue(context, MemberNames.OutputTokens.toString(), outputtokens); + } + + /** + * @return value of TotalTokens + */ + public final java.lang.Integer getTotalTokens() + { + return getTotalTokens(getContext()); + } + + /** + * @param context + * @return value of TotalTokens + */ + public final java.lang.Integer getTotalTokens(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.TotalTokens.toString()); + } + + /** + * Set value of TotalTokens + * @param totaltokens + */ + public final void setTotalTokens(java.lang.Integer totaltokens) + { + setTotalTokens(getContext(), totaltokens); + } + + /** + * Set value of TotalTokens + * @param context + * @param totaltokens + */ + public final void setTotalTokens(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer totaltokens) + { + getMendixObject().setValue(context, MemberNames.TotalTokens.toString(), totaltokens); + } + + /** + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds() + { + return getDurationMilliseconds(getContext()); + } + + /** + * @param context + * @return value of DurationMilliseconds + */ + public final java.lang.Integer getDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.Integer) getMendixObject().getValue(context, MemberNames.DurationMilliseconds.toString()); + } + + /** + * Set value of DurationMilliseconds + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(java.lang.Integer durationmilliseconds) + { + setDurationMilliseconds(getContext(), durationmilliseconds); + } + + /** + * Set value of DurationMilliseconds + * @param context + * @param durationmilliseconds + */ + public final void setDurationMilliseconds(com.mendix.systemwideinterfaces.core.IContext context, java.lang.Integer durationmilliseconds) + { + getMendixObject().setValue(context, MemberNames.DurationMilliseconds.toString(), durationmilliseconds); + } + + /** + * @return value of DeploymentIdentifier + */ + public final java.lang.String getDeploymentIdentifier() + { + return getDeploymentIdentifier(getContext()); + } + + /** + * @param context + * @return value of DeploymentIdentifier + */ + public final java.lang.String getDeploymentIdentifier(com.mendix.systemwideinterfaces.core.IContext context) + { + return (java.lang.String) getMendixObject().getValue(context, MemberNames.DeploymentIdentifier.toString()); + } + + /** + * Set value of DeploymentIdentifier + * @param deploymentidentifier + */ + public final void setDeploymentIdentifier(java.lang.String deploymentidentifier) + { + setDeploymentIdentifier(getContext(), deploymentidentifier); + } + + /** + * Set value of DeploymentIdentifier + * @param context + * @param deploymentidentifier + */ + public final void setDeploymentIdentifier(com.mendix.systemwideinterfaces.core.IContext context, java.lang.String deploymentidentifier) + { + getMendixObject().setValue(context, MemberNames.DeploymentIdentifier.toString(), deploymentidentifier); + } + + @java.lang.Override + public final com.mendix.systemwideinterfaces.core.IMendixObject getMendixObject() + { + return usageMendixObject; + } + + @java.lang.Override + public final com.mendix.systemwideinterfaces.core.IContext getContext() + { + return context; + } + + @java.lang.Override + public boolean equals(Object obj) + { + if (obj == this) { + return true; + } + if (obj != null && getClass().equals(obj.getClass())) + { + final genaicommons.proxies.Usage that = (genaicommons.proxies.Usage) obj; + return getMendixObject().equals(that.getMendixObject()); + } + return false; + } + + @java.lang.Override + public int hashCode() + { + return getMendixObject().hashCode(); + } + + /** + * Gives full name ("Module.Entity" name) of the type of the entity. + * + * @return the name + */ + public static java.lang.String getType() + { + return entityName; + } +} diff --git a/modules/javasource/genaicommons/proxies/constants/Constants.java b/modules/javasource/genaicommons/proxies/constants/Constants.java new file mode 100644 index 0000000..b88552e --- /dev/null +++ b/modules/javasource/genaicommons/proxies/constants/Constants.java @@ -0,0 +1,34 @@ +// This file was generated by Mendix Studio Pro. +// +// WARNING: Code you write here will be lost the next time you deploy the project. + +package genaicommons.proxies.constants; + +import com.mendix.core.Core; + +public final class Constants +{ + /** + * Private constructor to prevent instantiation of this class. + */ + private Constants() {} + + // These are the constants for the GenAICommons module + + /** + * This controls whether Usage data is stored in the operations that follow the principles of GenAI Commons. Currently only chat completions and embeddings support token usage storage. + */ + public static boolean getStoreUsageMetrics() + { + return (java.lang.Boolean)Core.getConfiguration().getConstantValue("GenAICommons.StoreUsageMetrics"); + } + + /** + * Controls the cleanup interval in days for the Usage data. If a positive value is set, Usage records are kept for the specified amount of days (UTC), older records are deleted in ScE_Usage_Cleanup, if enabled for the environment in the Mendix Cloud portal. + * If this constant is set to empty, zero or a negative value, nothing will be deleted. + */ + public static java.lang.Long getUsage_CleanUpAfterDays() + { + return (java.lang.Long)Core.getConfiguration().getConstantValue("GenAICommons.Usage_CleanUpAfterDays"); + } +} \ No newline at end of file diff --git a/modules/javasource/genaicommons/proxies/microflows/Microflows.java b/modules/javasource/genaicommons/proxies/microflows/Microflows.java index 842f49a..df51eeb 100644 --- a/modules/javasource/genaicommons/proxies/microflows/Microflows.java +++ b/modules/javasource/genaicommons/proxies/microflows/Microflows.java @@ -16,6 +16,42 @@ public final class Microflows private Microflows() {} // These are the microflows for the GenAICommons module + /** + * Can be used to trigger the scheduled event ScE_Usage_Cleanup logic manually. + * This is a cleanup of Usage data (token monitor). This microflow is used in the ScE with the same name. This can be toggled on/off in the Mendix Cloud portal per environment. It runs daily at 12:00AM UTC. + * See constant @ConversationalUI.Usage_CleanUpAfterDays for more information. + */ + public static com.mendix.core.actionmanagement.MicroflowCallBuilder aCT_Usage_Cleanup_TriggerScEBuilder() + { + com.mendix.core.actionmanagement.MicroflowCallBuilder builder = Core.microflowCall("GenAICommons.ACT_Usage_Cleanup_TriggerScE"); + return builder; + } + + /** + * Can be used to trigger the scheduled event ScE_Usage_Cleanup logic manually. + * This is a cleanup of Usage data (token monitor). This microflow is used in the ScE with the same name. This can be toggled on/off in the Mendix Cloud portal per environment. It runs daily at 12:00AM UTC. + * See constant @ConversationalUI.Usage_CleanUpAfterDays for more information. + */ + public static void aCT_Usage_Cleanup_TriggerScE(IContext context) + { + aCT_Usage_Cleanup_TriggerScEBuilder().execute(context); + } + /** + * Can be used to trigger the cleanup logic for all Usage records until the current moment manually. + */ + public static com.mendix.core.actionmanagement.MicroflowCallBuilder aCT_Usage_CleanupAllBuilder() + { + com.mendix.core.actionmanagement.MicroflowCallBuilder builder = Core.microflowCall("GenAICommons.ACT_Usage_CleanupAll"); + return builder; + } + + /** + * Can be used to trigger the cleanup logic for all Usage records until the current moment manually. + */ + public static void aCT_Usage_CleanupAll(IContext context) + { + aCT_Usage_CleanupAllBuilder().execute(context); + } /** * Create a chunk with only the input text populated. */ @@ -1187,4 +1223,100 @@ public static java.lang.String toolCall_ProcessAndExecuteFunction( .execute(context); return (java.lang.String) result; } + /** + * Use this microflow to create and store the Usage object based on the EmbeddingsReponse in the Embeddings Operations that follow the principles of GenAI Commons. + * + * The Deploymentidentifier string must be constructed in a custom way for the connector, so that end-users can distinguish between applicable deployments/models. + * + * The EmbeddingsResponse must have the following fields populated: + * -DurationMilliseconds: the duration of the technical part of the call to the LLM provider (excluding pre/post processing) + * -InputTokens: the number of input tokens + * -TotalTokens: the number of total tokens, for embeddings operations this is typically identical to the input since output token usage is not applicable. + * + * + */ + public static com.mendix.core.actionmanagement.MicroflowCallBuilder usage_Create_EmbeddingsBuilder( + genaicommons.proxies.EmbeddingsResponse _embeddingsResponse, + java.lang.String _deploymentIdentifier + ) + { + com.mendix.core.actionmanagement.MicroflowCallBuilder builder = Core.microflowCall("GenAICommons.Usage_Create_Embeddings"); + builder = builder.withParam("EmbeddingsResponse", _embeddingsResponse); + builder = builder.withParam("DeploymentIdentifier", _deploymentIdentifier); + return builder; + } + + /** + * Use this microflow to create and store the Usage object based on the EmbeddingsReponse in the Embeddings Operations that follow the principles of GenAI Commons. + * + * The Deploymentidentifier string must be constructed in a custom way for the connector, so that end-users can distinguish between applicable deployments/models. + * + * The EmbeddingsResponse must have the following fields populated: + * -DurationMilliseconds: the duration of the technical part of the call to the LLM provider (excluding pre/post processing) + * -InputTokens: the number of input tokens + * -TotalTokens: the number of total tokens, for embeddings operations this is typically identical to the input since output token usage is not applicable. + * + * + */ + public static void usage_Create_Embeddings( + IContext context, + genaicommons.proxies.EmbeddingsResponse _embeddingsResponse, + java.lang.String _deploymentIdentifier + ) + { + usage_Create_EmbeddingsBuilder( + _embeddingsResponse, + _deploymentIdentifier + ) + .execute(context); + } + /** + * Use this microflow to create and store the Usage object based on the Reponse object in the chat completions operations that follow the principles of GenAI Commons. + * + * The Deploymentidentifier string must be constructed in a custom way for the connector, so that end-users can distinguish between LLM provider/architecture and applicable deployments/models. + * + * The Response must have the following fields populated: + * -DurationMilliseconds: the duration of the technical part of the call to the LLM provider (excluding pre/post processing). + * -InputTokens: the number of input tokens. + * -OutputTokens: the number of output tokens. + * -TotalTokens: the number of total tokens (typically input + output). + * + * + */ + public static com.mendix.core.actionmanagement.MicroflowCallBuilder usage_Create_TextAndFilesBuilder( + genaicommons.proxies.Response _response, + java.lang.String _deploymentIdentifier + ) + { + com.mendix.core.actionmanagement.MicroflowCallBuilder builder = Core.microflowCall("GenAICommons.Usage_Create_TextAndFiles"); + builder = builder.withParam("Response", _response); + builder = builder.withParam("DeploymentIdentifier", _deploymentIdentifier); + return builder; + } + + /** + * Use this microflow to create and store the Usage object based on the Reponse object in the chat completions operations that follow the principles of GenAI Commons. + * + * The Deploymentidentifier string must be constructed in a custom way for the connector, so that end-users can distinguish between LLM provider/architecture and applicable deployments/models. + * + * The Response must have the following fields populated: + * -DurationMilliseconds: the duration of the technical part of the call to the LLM provider (excluding pre/post processing). + * -InputTokens: the number of input tokens. + * -OutputTokens: the number of output tokens. + * -TotalTokens: the number of total tokens (typically input + output). + * + * + */ + public static void usage_Create_TextAndFiles( + IContext context, + genaicommons.proxies.Response _response, + java.lang.String _deploymentIdentifier + ) + { + usage_Create_TextAndFilesBuilder( + _response, + _deploymentIdentifier + ) + .execute(context); + } } diff --git a/theme-cache/web/theme.compiled.css b/theme-cache/web/theme.compiled.css index 8ea3129..a2f87d1 100644 --- a/theme-cache/web/theme.compiled.css +++ b/theme-cache/web/theme.compiled.css @@ -5218,6 +5218,7 @@ input[type=checkbox].three-state-checkbox + .control-label { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; + line-clamp: 2; } .line-height--1 { @@ -5250,6 +5251,34 @@ input[type=checkbox].three-state-checkbox + .control-label { height: 100%; } +.card-border { + border: 1px solid #f3f3f4; +} + +.card-border-top { + border-top: 1px solid #f3f3f4; +} + +.card-statistics { + width: fit-content; +} +.card-statistics .mx-text.statistic { + min-width: 200px; +} + +.card--sticky-content { + overflow: unset; + padding-top: 0; +} + +.sticky-header { + position: sticky; + background-color: inherit; + top: 0px; + padding-top: 24px; + z-index: 101; +} + .chat-loading-wrapper { display: flex; justify-content: left; @@ -5359,6 +5388,24 @@ input[type=checkbox].three-state-checkbox + .control-label { font-weight: bold; } +.chart-input.widget-chart .fills .js-fill, +.chart-input.widget-chart .legendfill .js-fill { + fill: #8a9df1 !important; +} +.chart-input.widget-chart .lines .js-line, +.chart-input.widget-chart .legendlines .js-line { + stroke: #3c5ce8 !important; +} + +.chart-output.widget-chart .fills .js-fill, +.chart-output.widget-chart .legendfill .js-fill { + fill: #cbd4f9 !important; +} +.chart-output.widget-chart .lines .js-line, +.chart-output.widget-chart .legendlines .js-line { + stroke: #a8b7f5 !important; +} + .conversationstarter.card { margin-bottom: 8px; padding: 8px; @@ -5413,6 +5460,50 @@ input[type=checkbox].three-state-checkbox + .control-label { display: contents; } +.dataview--display-contents > div { + display: contents; +} + +.datetime-inputs-wrapper { + display: flex; + justify-content: flex-end; +} +.datetime-inputs-wrapper .time-input { + max-width: 100px; + margin-left: -1px; + margin-bottom: 0; +} +.datetime-inputs-wrapper .date-input { + max-width: 150px; + margin-left: 16px; + margin-bottom: 0; +} +.datetime-inputs-wrapper .mx-compound-control .btn { + margin-left: -44px; + border: 1px solid transparent; + background: transparent; +} + +.input-container { + border-bottom: 1px solid #f3f3f4; + display: flex; + justify-content: space-between; + align-items: start; +} + +.combo-deployment-selection { + min-width: 360px; +} +.combo-deployment-selection .deployment-selection { + display: flex; + align-items: center; + height: max-content; +} +.combo-deployment-selection .mx-image { + height: 14px; + margin-right: 8px; +} + .layoutgrid--full-height { height: 100%; } @@ -5492,6 +5583,19 @@ input[type=checkbox].three-state-checkbox + .control-label { height: 100%; } +.segmented-control { + height: fit-content; + border: 1px solid #ced0d3; + border-radius: 4px; + padding: 4px; + width: fit-content; + background-color: #f8f8f8; +} +.segmented-control .btn.btn-default { + border: 1px solid transparent; + background: transparent; +} + .layout-chat-sidebar { right: 0 !important; top: 0 !important; @@ -27552,33 +27656,30 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw These blocks contains styles directly related to the widget's appearance and are mostly unique styles needed to display the widget's UI correctly. */ -.mxfeedback-lightbox { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - overflow: auto; - padding-top: 10vh; - padding-bottom: 10vh; - background-color: rgba(0, 0, 0, 0.9); - z-index: 1000002; -} -.mxfeedback-lightbox__image { - margin: auto; - display: block; - max-width: 70%; -} -@media only screen and (min-width: 768px) { - .mxfeedback-lightbox__image { - max-width: calc(100% - 16px); - } -} -.mxfeedback-lightbox .mxfeedback-close-button__icon { - width: 16px; - height: 16px; -} +/* +About: ========================================================= +---------------------------------------------------------------- +This styling targets the main Feedback Button rendered on your page. +The Feedback widget button can be rendered on page in 3 formats. + +Render Modes: ================================================== +---------------------------------------------------------------- +Each render mode can be selected by double clicking the Feedback widget settings in Studio Pro. + +'Side Tab' - Fixes the button to the right hand margin and rotates by 270 degrees. +'Button' - Mimics a normal Mendix button. +'Do not render' - Hides the button on the live website but is still visible in the page editor for developers. + +CSS BEM Enumeration values: ==================================== +---------------------------------------------------------------- +At a code level each render mode selected has a coresspoinding CSS BEM modifier value. +Use these BEM modifiers to custom style each render mode. +Side Tab = "side" +Button = "normal" +Do not render = "none" + +*/ .mxfeedback-start-button--none { display: none !important; } @@ -27601,14 +27702,6 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw background-color: #1e3bb7; } -.mx-feedback-widget-display-none { - display: none !important; -} - -.mx-feedback-widget-modal-body-auto-height { - height: auto !important; -} - .mxfeedback-annotation-canvas { z-index: 1000003; display: flex; @@ -27634,115 +27727,11 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw z-index: 1000004; } -.mxfeedback-failed__message { - align-self: center; - margin: 8px; -} -.mxfeedback-failed__error-image { - margin-top: 30px; -} - -.mxfeedback-result__result-image { - align-self: center; - width: auto; - max-width: 50%; -} -.mxfeedback-result .mxfeedback-dialog__body-text { - margin: auto; -} -.mxfeedback-result__result-image { - margin-top: 30px; -} - -.mxfeedback-feedback-form__cancel-button { - border: 0; -} - /* ==| Generic blocks |==================================================================================== These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and outline the basic styles of the widget (in accordance with Atlas UI). */ -.mxfeedback-dialog { - display: flex; - flex-direction: column; - position: fixed; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - padding: 24px; - width: 560px; - max-width: calc(100% - 40px); - max-height: calc(100% - 40px); - background-color: #fff; - border: 1px solid #ced0d3; - border-radius: 4px; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); - overflow: hidden auto; - z-index: 1000001; -} -.mxfeedback-dialog__title { - font-size: 18px; - font-weight: 600; - line-height: 120%; - margin: 0 0 16px; - color: #0a1325; - align-self: center; -} - -.mxfeedback-underlay { - inset: 0; - z-index: 1000001; -} - -.mxfeedback-close-button { - right: 16px; - top: 12px; - padding: 0; - background-color: transparent; - border: none; - position: absolute; -} -.mxfeedback-close-button__icon { - width: 12px; - height: 12px; - color: #0a1325; - stroke: #0a1325; -} -.mxfeedback-close-button--white > .mxfeedback-close-button__icon { - fill: #fff; -} - -.mxfeedback-input { - display: flex; - flex-direction: column; - position: fixed; - left: 50% !important; - top: 50% !important; - transform: translate(-50%, -50%); - width: 560px; - max-width: calc(100% - 40px); - max-height: calc(100% - 40px); - background-color: #fff; - border-radius: 4px; - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2); - overflow: hidden auto; - z-index: 1000001; -} -.mxfeedback-input .modal-header { - border-bottom: unset; - margin-top: 1rem; - padding-top: 1rem !important; - padding-left: 3rem !important; -} -.mxfeedback-input .modal-header.modal-header > h4 { - font-size: 18px; - font-weight: 600; - line-height: 120%; - color: #0a1325; - align-self: center; -} - .mxfeedback-toolbar { position: fixed; display: flex; @@ -27911,16 +27900,6 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw height: 6px; } -.mxfeedback-label-group { - display: flex; - align-items: center; - gap: calc(8px / 2); - margin-bottom: 4px; -} -.mxfeedback-label-group__label.control-label { - margin-bottom: 0; -} - .mxfeedback-button-group { display: flex; justify-content: flex-end; @@ -27966,7 +27945,7 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw display: flex; justify-content: left; position: relative; - margin: 20px auto; + margin: 24px auto; cursor: pointer; } .mxfeedback-screenshot-preview__image > img { @@ -28002,45 +27981,9 @@ html div.dj_ios .widget-switch.auto .widget-switch-btn-wrapper.checked.widget-sw font-size: 12px; } -.mxfeedback-tooltip { - display: flex; - position: relative; -} -.mxfeedback-tooltip__icon { - width: 16px; - height: 16px; -} -.mxfeedback-tooltip__icon:hover ~ .mxfeedback-tooltip__tip { - visibility: visible; -} -.mxfeedback-tooltip__tip { - visibility: hidden; - position: absolute; - top: calc(100% + 8px); - left: calc(50% - 32px); - width: 240px; - max-width: calc(100vw - 32px); - padding: 6px 8px; - margin-bottom: 0; - border-radius: 2px; - background-color: #0a1325; - color: #fff; - font-size: 12px; - line-height: 1.5; - z-index: 1; - transition: visibility 100ms ease-in-out; -} -.mxfeedback-tooltip__tip::after { - content: ""; - position: absolute; - top: 0; - left: 32px; - transform: translate(-50%, -50%) rotate(45deg); - width: 12px; - height: 12px; - background-color: inherit; - text-align: center; - pointer-events: none; +.mxfeedback-underlay { + inset: 0; + z-index: 1000001; } .layout-atlas .region-topbar .navbar-brand .mx-navbar-subitem a { diff --git a/theme-cache/web/theme.compiled.css.map b/theme-cache/web/theme.compiled.css.map index 8b34538..8a96c7d 100644 --- a/theme-cache/web/theme.compiled.css.map +++ b/theme-cache/web/theme.compiled.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../themesource/atlas_core/web/main.scss","../../deployment/sass/Atlas_Core.Atlas_Filled.scss","../../deployment/sass/Atlas_Core.Atlas.scss","../../themesource/administration/web/main.scss","../../themesource/webactions/web/_take-picture.scss","../../themesource/atlas_web_content/web/buildingblocks/_alert.scss","../../theme/web/custom-variables.scss","../../themesource/atlas_core/web/_variables.scss","../../themesource/atlas_web_content/web/buildingblocks/_breadcrumb.scss","../../themesource/atlas_web_content/web/buildingblocks/_card.scss","../../themesource/atlas_web_content/web/buildingblocks/_chat.scss","../../themesource/atlas_web_content/web/buildingblocks/_controlgroup.scss","../../themesource/atlas_web_content/web/buildingblocks/_pageblocks.scss","../../themesource/atlas_web_content/web/buildingblocks/_pageheader.scss","../../themesource/atlas_web_content/web/buildingblocks/_heroheader.scss","../../themesource/atlas_web_content/web/buildingblocks/_formblock.scss","../../themesource/atlas_web_content/web/buildingblocks/_master-detail.scss","../../themesource/atlas_web_content/web/buildingblocks/_userprofile.scss","../../themesource/atlas_web_content/web/buildingblocks/_wizard.scss","../../themesource/atlas_web_content/web/pagetemplates/_login.scss","../../themesource/atlas_web_content/web/pagetemplates/_list-tab.scss","../../themesource/atlas_web_content/web/pagetemplates/_springboard.scss","../../themesource/atlas_web_content/web/pagetemplates/_statuspage.scss","../../themesource/datawidgets/web/_datagrid.scss","../../themesource/datawidgets/web/_date-picker.scss","../../themesource/datawidgets/web/_datagrid-filters.scss","../../themesource/datawidgets/web/_datagrid-design-properties.scss","../../themesource/datawidgets/web/_datagrid-scroll.scss","../../themesource/datawidgets/web/_drop-down-sort.scss","../../themesource/datawidgets/web/_gallery.scss","../../themesource/datawidgets/web/_gallery-design-properties.scss","../../themesource/datawidgets/web/_three-state-checkbox.scss","../../themesource/datawidgets/web/_tree-node.scss","../../themesource/datawidgets/web/_tree-node-design-properties.scss","../../themesource/conversationalui/web/abstracts/_helpers.scss","../../themesource/conversationalui/web/components/_accordion.scss","../../themesource/conversationalui/web/components/_card.scss","../../themesource/conversationalui/web/components/_chat.scss","../../themesource/conversationalui/web/_chat-variables.scss","../../themesource/conversationalui/web/components/_conversationstarter.scss","../../themesource/conversationalui/web/components/_dataview.scss","../../themesource/conversationalui/web/components/_layoutgrid.scss","../../themesource/conversationalui/web/components/_listview.scss","../../themesource/conversationalui/web/components/_popup-chat.scss","../../themesource/conversationalui/web/components/_sidebar-chat.scss","../../themesource/conversationalui/web/components/_typography.scss","../../themesource/atlas_core/web/_variables-css-mappings.scss","../../themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap.scss","../../themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap-rtl.scss","../../themesource/atlas_core/web/core/_legacy/_mxui.scss","../../themesource/atlas_core/web/core/base/_animation.scss","../../themesource/atlas_core/web/core/base/_flex.scss","../../themesource/atlas_core/web/core/base/_spacing.scss","../../themesource/atlas_core/web/core/base/mixins/_spacing.scss","../../themesource/atlas_core/web/core/base/mixins/_layout-spacing.scss","../../themesource/atlas_core/web/core/base/_base.scss","../../themesource/atlas_core/web/core/base/_login.scss","../../themesource/atlas_core/web/core/widgets/_input.scss","../../themesource/atlas_core/web/core/helpers/_background.scss","../../themesource/atlas_core/web/core/widgets/_label.scss","../../themesource/atlas_core/web/core/widgets/_badge.scss","../../themesource/atlas_core/web/core/helpers/_label.scss","../../themesource/atlas_core/web/core/widgets/_badge-button.scss","../../themesource/atlas_core/web/core/helpers/_badge-button.scss","../../themesource/atlas_core/web/core/widgets/_button.scss","../../themesource/atlas_core/web/core/helpers/_button.scss","../../themesource/atlas_core/web/core/base/mixins/_buttons.scss","../../themesource/atlas_core/web/core/widgets/_check-box.scss","../../themesource/atlas_core/web/core/widgets/_grid.scss","../../themesource/atlas_core/web/core/widgets/_data-grid.scss","../../themesource/atlas_core/web/core/base/mixins/_animations.scss","../../themesource/atlas_core/web/core/helpers/_data-grid.scss","../../themesource/atlas_core/web/core/widgets/_data-view.scss","../../themesource/atlas_core/web/core/widgets/_date-picker.scss","../../themesource/atlas_core/web/core/widgets/_header.scss","../../themesource/atlas_core/web/core/widgets/_glyphicon.scss","../../themesource/atlas_core/web/core/widgets/_group-box.scss","../../themesource/atlas_core/web/core/helpers/_group-box.scss","../../themesource/atlas_core/web/core/base/mixins/_groupbox.scss","../../themesource/atlas_core/web/core/helpers/_image.scss","../../themesource/atlas_core/web/core/widgets/_list-view.scss","../../themesource/atlas_core/web/core/helpers/_list-view.scss","../../themesource/atlas_core/web/core/widgets/_modal.scss","../../themesource/atlas_core/web/core/widgets/_navigation-bar.scss","../../themesource/atlas_core/web/core/helpers/_navigation-bar.scss","../../themesource/atlas_core/web/core/widgets/_navigation-list.scss","../../themesource/atlas_core/web/core/widgets/_navigation-tree.scss","../../themesource/atlas_core/web/core/helpers/_navigation-tree.scss","../../themesource/atlas_core/web/core/widgets/_pop-up-menu.scss","../../themesource/atlas_core/web/core/widgets/_simple-menu-bar.scss","../../themesource/atlas_core/web/core/helpers/_simple-menu-bar.scss","../../themesource/atlas_core/web/core/widgets/_radio-button.scss","../../themesource/atlas_core/web/core/widgets/_scroll-container-dojo.scss","../../themesource/atlas_core/web/core/widgets/_tab-container.scss","../../themesource/atlas_core/web/core/helpers/_tab-container.scss","../../themesource/atlas_core/web/core/widgets/_table.scss","../../themesource/atlas_core/web/core/helpers/_table.scss","../../themesource/atlas_core/web/core/widgets/_template-grid.scss","../../themesource/atlas_core/web/core/helpers/_template-grid.scss","../../themesource/atlas_core/web/core/widgets/_typography.scss","../../themesource/atlas_core/web/core/helpers/_typography.scss","../../themesource/atlas_core/web/core/widgets/_layout-grid.scss","../../themesource/atlas_core/web/core/widgets/_pagination.scss","../../themesource/atlas_core/web/core/widgets/_progress.scss","../../themesource/atlas_core/web/core/widgets/_progress-bar.scss","../../themesource/atlas_core/web/core/helpers/_progress-bar.scss","../../themesource/atlas_core/web/core/widgets/_progress-circle.scss","../../themesource/atlas_core/web/core/helpers/_progress-circle.scss","../../themesource/atlas_core/web/core/widgets/_rating.scss","../../themesource/atlas_core/web/core/helpers/_rating.scss","../../themesource/atlas_core/web/core/widgets/_range-slider.scss","../../themesource/atlas_core/web/core/helpers/_slider-color-variant.scss","../../themesource/atlas_core/web/core/helpers/_range-slider.scss","../../themesource/atlas_core/web/core/widgets/_slider.scss","../../themesource/atlas_core/web/core/helpers/_slider.scss","../../themesource/atlas_core/web/core/widgets/_timeline.scss","../../themesource/atlas_core/web/core/widgets/_tooltip.scss","../../themesource/atlas_core/web/core/helpers/_helper-classes.scss","../../themesource/atlas_core/web/core/widgets/_barcode-scanner.scss","../../themesource/atlas_core/web/core/widgets/_accordion.scss","../../themesource/atlas_core/web/core/helpers/_accordion.scss","../../themesource/atlas_core/web/core/widgetscustom/_dijit-widget.scss","../../themesource/atlas_core/web/core/widgets/_switch.scss","../../themesource/atlas_core/web/layouts/_layout-atlas.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-phone.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-responsive.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-tablet.scss","../../themesource/feedbackmodule/web/main.scss","../../themesource/feedbackmodule/web/_lightbox.scss","../../themesource/feedbackmodule/web/includes/_variables.scss","../../themesource/feedbackmodule/web/includes/_helpers.scss","../../themesource/feedbackmodule/web/_startButton.scss","../../themesource/feedbackmodule/web/annotation/_annotation-canvas.scss","../../themesource/feedbackmodule/web/annotation/_annotation-frame.scss","../../themesource/feedbackmodule/web/_failed.scss","../../themesource/feedbackmodule/web/_result.scss","../../themesource/feedbackmodule/web/_feedbackForm.scss","../../themesource/feedbackmodule/web/dialog/_dialog.scss","../../themesource/feedbackmodule/web/dialog/_underlay.scss","../../themesource/feedbackmodule/web/dialog/_closeButton.scss","../../themesource/feedbackmodule/web/input/_input.scss","../../themesource/feedbackmodule/web/toolbar/_toolbar.scss","../../themesource/feedbackmodule/web/toolbar/_toolButton.scss","../../themesource/feedbackmodule/web/_labelGroup.scss","../../themesource/feedbackmodule/web/button/_buttonGroup.scss","../../themesource/feedbackmodule/web/button/_button.scss","../../themesource/feedbackmodule/web/_screenshotPreview.scss","../../themesource/feedbackmodule/web/_tooltip.scss","../../theme/web/main.scss"],"names":[],"mappings":";AAUY;ACVZ;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACnlCF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACjlCE;EACI;;AAYJ;EACI;;AAGJ;EACI;EACA;EACA;;;ACtBR;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;;;AAEJ;EACI;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EAC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EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAKR;EACI;EACA;;AACA;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAOR;AAII;AAMA;;AATA;EACI;;AAGJ;EACI;EACA;;AAIJ;EACI;EACA;;AAMZ;EACI;AAEA;;AACA;EACI;EACA;AACA;AAiBA;;AAhBA;AAEI;EAGA;EACA;EAEA;EACA;;AAEA;EACI,QAXU;;AAgBlB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAQpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;AAAA;EAEI;;AAKZ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA,OAlU0B;;AAoU1B;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGR;EACI;EACA;EACA;EACA;EACA;;;AAIR;AACA;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;;AAOJ;EACI,kBAnYK;;;AAwYjB;EACI;;;AAGJ;EACI;;;AC7ZJ;AAAA;AAAA;AAUA;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAGJ;AAAA;EAEI,OArDW;EAsDX;;AAEA;AAAA;EACI;EACA;EACA;;;AAIR;EACI;EACA;;;AAGJ;EACI,OAlEqB;;;AAqEzB;AAAA;EAEI;EACA;;;AAGJ;AAAA;AAAA;AAAA;EAII;;;AAGJ;AAAA;AAAA;AAAA;EAII;EACA;;AAEA;AAAA;AAAA;AAAA;EACI;EACA;EACA;;;AAIR;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI,kBAzGsB;EA0GtB,OA3GiB;;AA6GjB;AAAA;AAAA;AAAA;AAAA;AAAA;EACI;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;AAAA;AAAA;AAGA;EACI;EACA;;;AC7IJ;EACI;EACA;EACA;EAGA;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AACA;EACI;EACA;;;AAKZ;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;AAAmB;;AAI3B;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EAEI;;;AAOpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EAEI;;;AAKZ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EAEI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAKZ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EAEI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAMhB;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAGJ;AAAA;AAAA;AAMY;EACI;;AAKJ;EACI;;;AC7VZ;EACI;;AAEA;EACI;;AAMA;EACI;;AAEJ;EACI;;AAKZ;EACI;;AAGJ;EACI;;AAGJ;AACI;;AACA;EACI;;;AAMR;EACI;;;AAKJ;EACI;;;AAKJ;AAAA;EAEI;EACA;;AAGA;AAAA;EACI;;AAGJ;AAAA;AAAA;EAEI;EACA;;AAGR;EACI;EACA;;AAGJ;EACI;EACA;;AAEA;EACI;;;AAMR;EACI;EACA;;AAEA;EACI;;;AAMR;AAAA;EAEI;EACA;EACA;;AAGA;AAAA;EACI;EACA;EACA;EACA;;AAGJ;AAAA;EACI;;;AAMR;AAAA;EAEI;;AAEA;AAAA;EACI;;AAGJ;AAAA;EACI;;;ACtHA;EACI;AAA0B;EAC1B;EACA;;;AAMhB;EACI;EACA;;;AAKI;EACI;;;ACrBZ;AAAA;;AAAA;AAAA;AAKA;EACI;EACA;EACA;EAKA;EACA;;AAGJ;EACI;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;;;AC5CZ;AAAA;;AAAA;AAAA;AAwBA;AAwDI;AAAA;AAAA;;AAvDA;EACI;EACA;AAEA;AAAA;AAAA;AAOA;AAAA;AAAA;AAOA;AAAA;AAAA;;AAXA;EAtBA;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;;AA4BJ;EA7BA;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;;AAmCJ;EApCA;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;EADJ;IACI;;;AAwCR;EACI;;AAEA;EACI;;AAGJ;EACI;EACA;;AAKJ;EACI,YNlDK;;AMsDb;EACI;;AAGJ;AAAA;AAAA;EAGI;;AA3DA;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;AADJ;EACI;;;AAoEZ;EACI;;;ACxFJ;AAAA;;AAAA;AAAA;AAAA;AAQI;EACI;;;AAMJ;EACI;EACA;EACA;EACA;EACA;;;AAMJ;EACI;EACA;EACA;EACA;EACA;;;AAOA;EACI;;;AAOR;EACI;;AAEJ;EACI;;;AAMJ;EACI;;;AAMJ;EACI;;;AAMJ;EACI;;;AAMJ;EACI;;;AAOA;EACI;;;AAQJ;EACI;;;AC/FZ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI;EACA;EACA;;AAGJ;EAEI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EAEI;EACA;;AAGJ;EAEI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAGJ;EAEI;;AAGJ;EACI;;;ACrFR;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EACI;;AACA;EACI;EACA;;AAKZ;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGI;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;IACI;;EAEJ;IACI;;;AAKZ;EACI;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;;AAMR;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AC9GZ;AAAA;;AAAA;AAAA;AAAA;AAUI;EACI;;;AAKJ;EACI;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;;;AAIR;EACI;;AACA;EACI;;;AC7CN;EACE;;AAGF;EACE;EACA;;;AAIJ;EACE;;;AAGF;EACE,a5BiiBgB;;;A4B9hBlB;EACE;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AC3BE;EACI;;AAGI;EACI;EACA;EACA;;AAGI;EACI,O7BqBH;E6BpBG;;AAIR;EACI;EACA;EACA,M7BaC;;A6BPT;EACI;EACA;;;AC5BhB;EACI;;;ACDJ;EACI;EACA;EACA,S/BijBY;;A+B/iBZ;EACI;EACA,kB/B0Ba;E+BzBb;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAIR;EACI;IAAK;;EACL;IAAM;;EACN;IAAO;;;;AAIf;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI,WC7CK;ED8CL;EACA;;;AAKR;EACI;;AAEA;EACI;EACA;EACA;;AAEA;EACI;EACA,YC5DY;ED6DZ;;AAIR;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OC/EQ;EDgFR,QChFQ;;ADkFR;EACI;EACA;EACA;;;AAKZ;EACI,Y/BwdY;;A+BvdZ;EACI,Y/B2MgB;E+B1MhB;EACA;EACA;EACA,S/BkdQ;;A+B/cZ;EACI,Y/B8LgB;E+B7LhB;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;;;AE/GJ;EACI,ejCgjBY;EiC/iBZ,SjC+iBY;EiC9iBZ;EACA;EAYA;EACA;EACA;;AAZA;EACI,kBjCuUQ;;AiCpUZ;EACI,OjCMQ;EiCLR,ejCqiBQ;EiCpiBR,YjCoiBQ;;;AiC3hBhB;EACI;;;AAGJ;EACI;;AAEA;EACI;;AAEI;EACI;EACA;EACA;;AAMZ;EACI;;AACA;EACI;EACA;;AAIR;EACI;;AAGJ;EACI;;;ACzDR;EACI;;AAEA;EACI;;;ACJR;EACI;;AACA;EACI;;AACA;EACI;;;ACJR;EACI;EACA;;AACA;EACI;;AACA;EACI;;;AAMZ;EACI;;;ACXR;EACI;EACA,OLCyB;EKAzB,QLD0B;EKE1B;EACA;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAEJ;EACI,YrCfQ;EqCgBR;;AACA;EACI,OrCsOQ;;AqCnOhB;EACI;;AACA;EACI;EACA,OrC+NQ;;AqC3NhB;EACI;EACA;EACA,SrCmgBS;;AqClgBT;EACI;;;ACtDZ;EACI;EACA;EACA;EACA;EACA;EACA,ONCgB;;AMAhB;EACI;EACA;;AACA;EACI,YtCSI;EsCRJ;EACA;;AACA;EACI,OtC6PI;;AsC3PR;EACI,OtC0PI;;AsCvPZ;EACI;EACA,StCgiBK;EsC/hBL;;AACA;EACI;;;AC1BhB;EACI;;;ACDJ;AACI;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;AAA0C;AAE1C;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;AACA;;AAAA;EAGA;EACA;EAEA;EACA;EACA;AAAoD;EAEpD;EACA;EACA;EAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAAoD;EAEpD;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAAkC;EAClC;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;AAEA;AACA;AAEA;EACA;AAEA;AACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EAEA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;AACA;AACA;EACA;EACA;EACA;AAEA;AAEA;EACA;EACA;AAEA;AACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;AAEA;AACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AACA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AACA;AACA;AAEA;EACA;AAEA;EACA;;;AC/vBJ;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADOI;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAaI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAMJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AACA;EACI;AAAA;AAAA;IAGI;IACA;IACA;IACA;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;IAEA;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EAC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;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;IACI;IACA;;;EAEJ;IACI;;;AAGR;EACI;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;IACI;IACA;;;EAEJ;AAAA;AAAA;IAGI;;;AAGR;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;IACI;IACA;;;EAEJ;IACI;;;AAGR;EACI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;IACI;IACA;;;EAEJ;AAAA;AAAA;IAGI;;;AAGR;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;IACI;;;AAGR;EACI;IACI;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;IACI;IACA;IACA;IACA;;;EAEJ;IACI;IACA;IACA;IACA;;;EAEJ;IACI;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;AAGR;AAAA;EAEI;;;AAEJ;EACI;AAAA;IAEI;;;AAGR;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;EACI;AAAA;AAAA;AAAA;IAII;IACA;;;AAGR;EACI;EACA;;;AAEJ;EACI;IACI;;;AAGR;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;AAAA;IAEI;;;AAGR;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;AAAA;IAEI;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;IACI;;;AAGR;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;AAGR;EACI;IACI;IACA;;;EAEJ;IACI;;;EAEJ;IACI;IACA;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;AAAA;AAAA;AAAA;AAAA;IACI;;;EAEJ;IACI;IACA;;;EAEJ;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;IACA;;;EAEJ;AAAA;IAEI;IACA;IACA;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;IACA;;;EAEJ;IACI;;;AAGR;EACI;IACI;;;EAEJ;IACI;;;AAGR;EACI;IACI;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;AAGR;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;IACI;IACA;IACA;;;AAGR;EACI;IACI;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;AAGR;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;IACI;;;EAEJ;AAAA;IAEI;IACA;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;AAGR;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;EAII;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;IACA;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;AAGR;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;EAII;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;IACI;;;EAEJ;AAAA;IAEI;IACA;;;EAEJ;AAAA;IAEI;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAuOJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EASI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;EAKI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;AAAA;AAAA;AAAA;EAII;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAYI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAYI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAMJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;AAGR;EACI;IACI;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;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A;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAYI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;;AAGR;EACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAYI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;;AAGR;EACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAYI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;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APJ;ED6JR;IC5JY;;;AAEJ;ED0JR;ICzJY;;;AAEJ;EDuJR;ICtJY;;;;AAPJ;EDqKR;ICpKY;;;AAEJ;EDkKR;ICjKY;;;AAEJ;ED+JR;IC9JY;;;AAPJ;EDqKR;ICpKY;;;AAEJ;EDkKR;ICjKY;;;AAEJ;ED+JR;IC9JY;;;;AAPJ;EDkLR;ICjLY;;;AAEJ;ED+KR;IC9KY;;;AAEJ;ED4KR;IC3KY;;;AAPJ;EDkLR;ICjLY;;;AAEJ;ED+KR;IC9KY;;;AAEJ;ED4KR;IC3KY;;;;AAjDJ;ED0OR;ICzOY;;;AAEJ;EDuOR;ICtOY;;;AAEJ;EDoOR;ICnOY;;;;AAGJ;EDwOR;ICvOY;;;AAEJ;EDqOR;ICpOY;;;AAEJ;EDkOR;ICjOY;;;;AAPJ;EDgPR;IC/OY;;;AAEJ;ED6OR;IC5OY;;;AAEJ;ED0OR;ICzOY;;;;AAPJ;EDwPR;ICvPY;;;AAEJ;EDqPR;ICpPY;;;AAEJ;EDkPR;ICjPY;;;;AAPJ;EDgQR;IC/PY;;;AAEJ;ED6PR;IC5PY;;;AAEJ;ED0PR;ICzPY;;;;AAPJ;EDwQR;ICvQY;;;AAEJ;EDqQR;ICpQY;;;AAEJ;EDkQR;ICjQY;;;AAPJ;EDwQR;ICvQY;;;AAEJ;EDqQR;ICpQY;;;AAEJ;EDkQR;ICjQY;;;;AAPJ;EDqRR;ICpRY;;;AAEJ;EDkRR;ICjRY;;;AAEJ;ED+QR;IC9QY;;;AAPJ;EDqRR;ICpRY;;;AAEJ;EDkRR;ICjRY;;;AAEJ;ED+QR;IC9QY;;;;AAjBJ;ED4SR;IC3SY;;;AAEJ;EDySR;ICxSY;;;AAEJ;EDsSR;ICrSY;;;;AAGJ;ED0SR;ICzSY;;;AAEJ;EDuSR;ICtSY;;;AAEJ;EDoSR;ICnSY;;;;AAPJ;EDkTR;ICjTY;;;AAEJ;ED+SR;IC9SY;;;AAEJ;ED4SR;IC3SY;;;;AAPJ;ED0TR;ICzTY;;;AAEJ;EDuTR;ICtTY;;;AAEJ;EDoTR;ICnTY;;;;AAPJ;EDkUR;ICjUY;;;AAEJ;ED+TR;IC9TY;;;AAEJ;ED4TR;IC3TY;;;;AAPJ;ED0UR;ICzUY;;;AAEJ;EDuUR;ICtUY;;;AAEJ;EDoUR;ICnUY;;;AAPJ;ED0UR;ICzUY;;;AAEJ;EDuUR;ICtUY;;;AAEJ;EDoUR;ICnUY;;;;AAPJ;EDuVR;ICtVY;;;AAEJ;EDoVR;ICnVY;;;AAEJ;EDiVR;IChVY;;;AAPJ;EDuVR;ICtVY;;;AAEJ;EDoVR;ICnVY;;;AAEJ;EDiVR;IChVY;;;;AClBA;EFgXZ;IE/WgB;;;AAEJ;EF6WZ;IE5WgB;;;AAEJ;EF0WZ;IEzWgB;;;;AAGJ;EF+WZ;IE9WgB;;;AAEJ;EF4WZ;IE3WgB;;;AAEJ;EFyWZ;IExWgB;;;;AAGJ;EF8WZ;IE7WgB;;;AAEJ;EF2WZ;IE1WgB;;;AAEJ;EFwWZ;IEvWgB;;;;AAGJ;EF6WZ;IE5WgB;;;AAEJ;EF0WZ;IEzWgB;;;AAEJ;EFuWZ;IEtWgB;;;;AAGJ;EF4WZ;IE3WgB;;;AAEJ;EFyWZ;IExWgB;;;AAEJ;EFsWZ;IErWgB;;;;AArCJ;EFmZZ;IElZgB;;;AAEJ;EFgZZ;IE/YgB;;;AAEJ;EF6YZ;IE5YgB;;;AAaJ;EF+XZ;IE9XgB;;;AAEJ;EF4XZ;IE3XgB;;;AAEJ;EFyXZ;IExXgB;;;;AAGJ;EFmYZ;IElYgB;;;AAEJ;EFgYZ;IE/XgB;;;AAEJ;EF6XZ;IE5XgB;;;AA3BJ;EFuZZ;IEtZgB;;;AAEJ;EFoZZ;IEnZgB;;;AAEJ;EFiZZ;IEhZgB;;;;AA3BJ;EF0bZ;IEzbgB;;;AAEJ;EFubZ;IEtbgB;;;AAEJ;EFobZ;IEnbgB;;;;AAGJ;EFybZ;IExbgB;;;AAEJ;EFsbZ;IErbgB;;;AAEJ;EFmbZ;IElbgB;;;;AAGJ;EFwbZ;IEvbgB;;;AAEJ;EFqbZ;IEpbgB;;;AAEJ;EFkbZ;IEjbgB;;;;AAGJ;EFubZ;IEtbgB;;;AAEJ;EFobZ;IEnbgB;;;AAEJ;EFibZ;IEhbgB;;;;AAGJ;EFsbZ;IErbgB;;;AAEJ;EFmbZ;IElbgB;;;AAEJ;EFgbZ;IE/agB;;;;AArCJ;EF6dZ;IE5dgB;;;AAEJ;EF0dZ;IEzdgB;;;AAEJ;EFudZ;IEtdgB;;;AAaJ;EFycZ;IExcgB;;;AAEJ;EFscZ;IErcgB;;;AAEJ;EFmcZ;IElcgB;;;;AAGJ;EF6cZ;IE5cgB;;;AAEJ;EF0cZ;IEzcgB;;;AAEJ;EFucZ;IEtcgB;;;AA3BJ;EFieZ;IEhegB;;;AAEJ;EF8dZ;I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EACI,c5DnDD;E4DoDC,kB5DpDD;;;A2DIX;ECXI,O5D6OY;E4D5OZ,c5DUQ;E4DTR,kB5DSQ;;A4DPR;EAKI,O5DoOQ;E4DnOR,c5D6OW;E4D5OX,kB5D4OW;;A4D1Of;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c5DhBA;E4DiBA,kB5DjBA;;A4DqBR;EACI;EAEI,O5DxBA;;A4D2BJ;EAKI,O5DkMI;E4DjMJ,c5DjCA;E4DkCA,kB5DlCA;;A4DsCR;EACI;EACA;EACA;EAEI,O5D3CA;;A4D8CJ;EACI,c5DnDD;E4DoDC,kB5DpDD;;;A2DQX;ECfI,O5DuoBY;E4DtoBZ,c5DqnBQ;E4DpnBR,kB5DonBQ;;A4DlnBR;EAKI,O5D8nBQ;E4D7nBR,c5DioBW;E4DhoBX,kB5DgoBW;;A4D9nBf;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c5D2lBA;E4D1lBA,kB5D0lBA;;A4DtlBR;EACI;EAEI,O5DmlBA;;A4DhlBJ;EAKI,O5D4lBI;E4D3lBJ,c5D0kBA;E4DzkBA,kB5DykBA;;A4DrkBR;EACI;EACA;EACA;EAEI,O5DgkBA;;A4D7jBJ;EACI,c5DnDD;E4DoDC,kB5DpDD;;;A2DYX;ECnBI,O5D8OY;E4D7OZ,c5DWQ;E4DVR,kB5DUQ;;A4DRR;EAKI,O5DqOQ;E4DpOR,c5D8OW;E4D7OX,kB5D6OW;;A4D3Of;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c5DfA;E4DgBA,kB5DhBA;;A4DoBR;EACI;EAEI,O5DvBA;;A4D0BJ;EAKI,O5DmMI;E4DlMJ,c5DhCA;E4DiCA,kB5DjCA;;A4DqCR;EACI;EACA;EACA;EAEI,O5D1CA;;A4D6CJ;EACI,c5DnDD;E4DoDC,kB5DpDD;;;A2DgBX;ECvBI,O5DwoBS;E4DvoBT,c5DsnBK;E4DrnBL,kB5DqnBK;;A4DnnBL;EAKI,O5D+nBK;E4D9nBL,c5DkoBQ;E4DjoBR,kB5DioBQ;;A4D/nBZ;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c5D4lBH;E4D3lBG,kB5D2lBH;;A4DvlBL;EACI;EAEI,O5DolB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jHR;AAAA;;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;EACA,arEoES;EqEnET;EACA;EACA;EACA;;;ACjBR;AAAA;;AAAA;AAAA;AAMA;EACI;;AAEA;EACI;EACA,OtEcS;EsEbT;EACA;EACA,ctEPG;EsEQH,YtERG;EsESH,WtEQQ;EsEPR;EACA;;AAEA;EACI;;AAKR;EACI,WtE2DG;;AsExDP;EACI,WtEwDG;;AsErDP;EACI,WtEqDG;;AsElDP;EACI,WtEkDG;;AsE/CP;EACI,WtEnBQ;;AsEsBZ;EACI,WtE4CG;;AsEzCP;EACI;EACA;EACA;EACA,ctE/CG;EsEgDH;EACA,etE3BY;;AsE8BhB;EACI;;AAQR;EACI;;;ACrEJ;AAAA;;AAAA;AAAA;AAAA;ACCI;AAAA;EACI,OxEuBS;EwEtBT,cxEIG;EwEHH,YxEGG;;AwEDP;AAAA;EACI;;;AANJ;EACI,OxEoda;EwEndb,cxESI;EwERJ,YxEQI;;AwENR;EACI,cxEKI;;;AwEXR;EACI,OxEqda;EwEpdb,cxEUI;EwETJ,YxESI;;AwEPR;EACI,cxEMI;;;AwEZR;EACI,OxEsda;EwErdb,cxEWI;EwEVJ,YxEUI;;AwERR;EACI,cxEOI;;;AwEbR;EACI,OxEudY;EwEtdZ,cxEYG;EwEXH,YxEWG;;AwETP;EACI,cxEQG;;;AuEiBP;EACI;EACA,OvE/BE;EuEgCF;EACA;EACA,avE6CW;;AuE1Cf;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI,OvErCI;;;AuE2CR;AAAA;EAEI;EACA,kBtEoOY;;AsEjOhB;EACI,OtE5CI;;AsE+CR;EACI;;;AAKJ;AAAA;EAEI,kBvEwNY;;AuErNhB;EACI,OvEhEI;;;AuEqER;AAAA;EAEI,kBvEkNY;;AuE/MhB;EACI,OvE1EI;;;AuE+ER;AAAA;EAEI,kBvE4MW;;AuEzMf;EACI,OvEpFG;;;AwEdP;EACI,OxE+rBU;EwE9rBV,cxEqnBC;EwEpnBD,YxEonBC;;AwElnBL;EACI,cxEinBC;;;AwEvnBL;EACI,OxE8rBa;EwE7rBb,cxEonBI;EwEnnBJ,YxEmnBI;;AwEjnBR;EACI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E6E1DL,e7EMQ;A6EJR;AAyBA;;AAxBA;EACI,kB7E0FD;E6EzFC,qB7EyFD;;A6EtFH;EAGI;EACA,O7EmFK;E6ElFL,kB5E0mBE;;A4ExmBF;EACI,kB7EgFE;E6E/EF,qB7E+EE;;A6E3EV;EACI,O7E0EM;E6EzEN,kB5EimBG;E4EhmBH;;AAIJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACI;EACA;EACA;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA,W7EsCI;;A6ElCZ;EACI,O7EqCU;;A6EjCd;EAKI;EACA,O7E0BS;E6EzBT,kB5EijBM;;A4E/iBN;EACI,kB7EsBK;E6ErBL,qB7EqBK;;A6EjBb;EACI,O7EqBc;E6EpBd,kB5E0iBI;;A4ExiBJ;EACI,kB7EiBU;E6EhBV,qB7EgBU;;A6EZtB;EACI;IACI;;EAEJ;IACI;IACA;IACA,kB5E2hBI;;E4EzhBJ;IACI;IACA,O7EDG;I6EEH;IACA,W7E/CF;I6EgDE,a7E5CC;;E6E8CD;IAEI,O7EPK;I6EQL,kB5E+gBJ;;E4E5gBA;IACI,O7EXM;I6EYN,kB5E0gBJ;;;A4EngBZ;EACI;;;AC/IR;AAAA;;AAAA;AAAA;AAAA;AAQI;EACI,kB9EuBA;E8EtBA;;AACA;AAII;AAsCA;;AAzCA;EACI,a9E+hBJ;;A8E5hBA;EACI,O9E8IF;E8E7IE,W9EMA;E8ELA;AACA;AAoBA;;AAnBA;EACI,kB9EyIN;E8ExIM,qB9EwIN;;A8EtIE;EAGI,O9EmIN;E8ElIM,kB9EgIH;;A8E/HG;EACI,kB9EgIV;E8E/HU,qB9E+HV;;A8E5HE;EACI,O9E2HN;E8E1HM,kB9EyHF;;A8ErHF;EACI;;AAIJ;AAAA;AAAA;EAGI,W9EyGD;;A8EpGP;EAMI,O9EmGF;E8ElGE,kB9EgGC;;A8E/FD;EACI,kB9EgGN;E8E/FM,qB9E+FN;;A8E3FF;EACI,e9ExCI;E8EyCJ,kB9EtCR;E8EuCQ;EACA;EACA;EACA;;AACA;EACI,S9EgeR;E8E/dQ,O9EkFN;E8EjFM,e9EjDA;E8EkDA,e9E6dR;E8E5dQ;;AACA;EAEI,O9E4EV;E8E3EU,kB9EyEP;;A8ErEL;EACI,O9E+ES;E8E9ET,kB9EmEC;;A8ElED;EACI,kB9E4EK;E8E3EL,qB9E2EK;;A8EvEjB;EAGI;IACI,kB9ErER;;E8EsEQ;IACI,O9E+DF;I8E9DE,W9E3BN;;E8E4BM;IAEI,O9E4DA;I8E3DA,kB9EiDP;;E8E/CG;IACI,O9EyDC;I8ExDD,kB9E6CP;;;;A8EnCb;EACI,kB9EtFC;;A8EuFD;AACI;AAsCA;;AArCA;EACI,O9EaD;E8EZC,W9ExGA;A8E0GA;AAoBA;;AAnBA;EACI,kB9EQL;E8EPK,qB9EOL;;A8ELC;EAGI,O9EGC;E8EFD,kB9EZF;;A8EaE;EACI,kB9ECF;E8EAE;;AAGR;EACI,O9EJE;E8EKF,kB9EnBD;;A8EuBH;EACI;;AAIJ;AAAA;AAAA;EAGI,W9ErBA;;A8E0BR;EAMI,O9E7BK;E8E8BL,kB9E5CE;;A8E6CF;EACI,kB9EhCC;E8EiCD,qB9EjCC;;A8EoCT;EACI,O9EhCU;E8EiCV,kB9E9IP;;A8E+IO;EACI,kB9EnCM;E8EoCN,qB9EpCM;;A8EwClB;EAGI;IACI,kB9E9JR;;E8E+JQ;IACI,O9EhDD;I8EiDC,W9EpHN;;E8EqHM;IAEI,O9EnDC;I8EoDD,kB9EhKf;;E8EkKW;IACI,O9EtDE;I8EuDF,kB9EpKf;;;;A8E6KL;AAAA;AAAA;EAGI;;;ACrNR;AAAA;;AAAA;AAAA;AAKA;EACI;EACA;EACA;;AAEA;EfHA;EACA,iBARI;EeYA,S/EmiBK;E+EliBL;EACA;EACA,c/EaW;E+EZX;EACA,kB/EsTF;;A+EpTE;EAEI;EACA,kB/EmTA;;A+EhTJ;EACI;EACA,kB/E+SG;;;AgF1Uf;AAAA;;AAAA;AAAA;AAKA;EACI,kB/E4nBQ;A+E1nBR;AAgEA;AA6CA;;AA5GA;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA,QhF0FK;EgFzFL,ShF0FM;EgFzFN,OhF+FD;EgF5FC,kB/EymBJ;E+ExmBI;EACA,WhFsFG;EgFrFH,ahFqDC;;AgFnDD;EACI,kBhFsFL;EgFrFK,qBhFqFL;;AgFlFC;EACI;EACA;EACA;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA,WhFoEA;;AgFhER;AAAA;AAAA;EAGI;EACA,OhF+DK;EgF9DL,kB/EslBE;;A+EplBF;AAAA;AAAA;EACI,kBhF4DE;EgF3DF,qBhF2DE;;AgFvDV;EACI,OhFsDM;EgFrDN,mBhFqDM;EgFpDN,kB/E4kBG;;A+ErkBX;EACI;EACA;EACA,kB/EokBI;;A+ElkBJ;EACI;EACA;EACA;;AAEA;EACI,ShF0dP;EgFzdO;EACA,OhFkCD;EgFjCC;EACA,kB/EwjBJ;E+EvjBI;EACA,WhFdN;EgFeM,ahFXH;;AgFYG;AAAA;AAAA;EAGI,chF4cZ;;AgFzcQ;EAGI,OhFoBC;EgFnBD;EACA,kB/EyiBR;;A+EtiBI;EACI,OhFeE;EgFdF;EACA,kB/EmiBR;;A+E3hBZ;EACI;;;ACvHR;AAAA;;AAAA;AAAA;AAAA;AAQI;EACI,kBjFuBA;AiFcA;;AAlCQ;EACI,OjFkJN;EiFjJM,cjFcD;EiFbC,kBjFiBZ;EiFhBY,WjFQJ;;AiFPI;EACI,kBjF6IV;EiF5IU,qBjF4IV;;AiFzIM;AAAA;AAAA;EAGI,WjFiIL;;AiF9HH;AAAA;AAAA;EAGI,OjFgIN;EiF/HM,kBjF6HH;;AiF5HG;AAAA;AAAA;EACI,kBjF6HV;EiF5HU,qBjF4HV;;AiFzHE;EACI,OjFwHN;EiFvHM,mBjFuHN;EiFtHM,kBjFqHF;;AiF9GN;EACI,kBjFjBR;;AiFmBY;EACI,OjFkHN;EiFjHM,kBjFrBhB;EiFsBgB,WjFuBV;;AiFtBU;EAGI,OjF6GJ;EiF5GI,kBjFkGX;;AiFhGO;EACI,OjF0GH;EiFzGG,kBjF8FX;;;AiFnFb;EACI,kBjFtCC;AiF2ED;;AAlCQ;EACI,OjF6DL;EiF5DK,cjF+CF;EiF9CE,kBjF5CX;EiF6CW,WjF1DJ;;AiF2DI;EACI,kBjFwDT;EiFvDS,qBjFuDT;;AiFpDK;AAAA;AAAA;EAGI,WjF+CJ;;AiF5CJ;AAAA;AAAA;EAGI,OjF4CC;EiF3CD,kBjF6BF;;AiF5BE;AAAA;AAAA;EACI,kBjF0CF;EiFzCE,qBjFyCF;;AiFtCN;EACI,OjFqCE;EiFpCF,mBjFoCE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CI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAIR;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAIR;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IAC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;AyGER;EACI,czGHI;EyGIJ;;;ACdR;AAAA;;AAAA;AAAA;AAAA;ADRI;EACI,kBzGiBI;;AyGdR;EACI,czGaI;EyGZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGCI;;AyGER;EACI,czGHI;EyGIJ;;;AAtBJ;EACI,kBzGkBI;;AyGfR;EACI,czGcI;EyGbJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGEI;;AyGCR;EACI,czGFI;EyGGJ;;;AAtBJ;EACI,kBzGmBI;;AyGhBR;EACI,czGeI;EyGdJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGGI;;AyGAR;EACI,czGDI;EyGEJ;;;AAtBJ;EACI,kBzGoBG;;AyGjBP;EACI,czGgBG;EyGfH;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGIG;;AyGDP;EACI;EACA;;;AEdR;AAAA;;AAAA;AAAA;AAMA;EACI;EACA;;AAEA;EACI,c3GNG;;A2GSP;EACI;;AFvBJ;EACI,kBzGiBI;;AyGdR;EACI,czGaI;EyGZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGCI;;AyGER;EACI,czGHI;EyGIJ;;;AGfR;AAAA;;AAAA;AAAA;AAAA;AHPI;EACI,kBzGiBI;;AyGdR;EACI,czGaI;EyGZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGCI;;AyGER;EACI,czGHI;EyGIJ;;;AAtBJ;EACI,kBzGkBI;;AyGfR;EACI,czGcI;EyGbJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGEI;;AyGCR;EACI,czGFI;EyGGJ;;;AAtBJ;EACI,kBzGmBI;;AyGhBR;EACI,czGeI;EyGdJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGGI;;AyGAR;EACI,czGDI;EyGEJ;;;AAtBJ;EACI,kBzGoBG;;AyGjBP;EACI,czGgBG;EyGfH;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,czGIG;;AyGDP;EACI;EACA;;;AIhBR;AAAA;;AAAA;AAAA;AAOA;EACI;EACA;EACA,O7G6eiB;E6G5ejB;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fa;EiHgBb,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjH6BQ;;AiH1BZ;EACI,MjHyBQ;;AiHrBR;EAGI,kBjHpCL;;AiHsCK;EACI,OjH7EJ;;AiHgFA;EACI,MjHjFJ;;AiHuFZ;EACI,cjHxEe;EiHyEf;;AAMA;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjHTQ;;;AkHxGhB;AAAA;;AAAA;AAAA;AAAA;AASQ;EDiBR,cjHdY;EiHeZ,kBjHwBiB;;AiHtBjB;EACI,wBjHDgB;EiHEhB,yBjHFgB;;AiHIhB;EACI;EACA;;AAIR;EACI,2BjHXgB;EiHYhB,4BjHZgB;;AiHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBjHtDQ;EiHuDR,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjHmKQ;;AiHhKZ;EACI,MjH+JQ;;AiH3JR;EAGI,kBjHkKO;;AiHhKP;EACI,OjHqJA;;AiHlJJ;EACI,MjHiJA;;AiH3IhB;EACI,cjHxFQ;EiHyFR;;AClFI;EDOR,cjHnBW;EiHoBX,kBjHwBiB;;AiHtBjB;EACI,wBjHDgB;EiHEhB,yBjHFgB;;AiHIhB;EACI;EACA;;AAIR;EACI,2BjHXgB;EiHYhB,4BjHZgB;;AiHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBjH6JS;EiH5JT,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjH/DI;;AiHkER;EACI,MjHnEI;;AiHuEJ;EAGI,kBjH/ED;;AiHiFC;EACI,OjH7EJ;;AiHgFA;EACI,MjHjFJ;;AiHuFZ;EACI,cjH7FO;EiH8FP;;ACxEI;EDHR,cjHbY;EiHcZ,kBjHwBiB;;AiHtBjB;EACI,wBjHDgB;EiHEhB,yBjHFgB;;AiHIhB;EACI;EACA;;AAIR;EACI,2BjHXgB;EiHYhB,4BjHZgB;;AiHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBjHrDQ;EiHsDR,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjHoKQ;;AiHjKZ;EACI,MjHgKQ;;AiH5JR;EAGI,kBjHmKO;;AiHjKP;EACI,OjHsJA;;AiHnJJ;EACI,MjHkJA;;AiH5IhB;EACI,cjHvFQ;EiHwFR;;AC9DI;EDbR,cjHZY;EiHaZ,kBjHwBiB;;AiHtBjB;EACI,wBjHDgB;EiHEhB,yBjHFgB;;AiHIhB;EACI;EACA;;AAIR;EACI,2BjHXgB;EiHYhB,4BjHZgB;;AiHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBjHpDQ;EiHqDR,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjHqKQ;;AiHlKZ;EACI,MjHiKQ;;AiH7JR;EAGI,kBjHoKO;;AiHlKP;EACI,OjHuJA;;AiHpJJ;EACI,MjHmJA;;AiH7IhB;EACI,cjHtFQ;EiHuFR;;ACpDI;EDvBR,cjHXW;EiHYX,kBjHwBiB;;AiHtBjB;EACI,wBjHDgB;EiHEhB,yBjHFgB;;AiHIhB;EACI;EACA;;AAIR;EACI,2BjHXgB;EiHYhB,4BjHZgB;;AiHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBjHnDO;EiHoDP,SjH4eS;;AiH1eT;EACI,WjH9CQ;EiH+CR,ajHWW;;AiHRf;EACI,OjHsKO;;AiHnKX;EACI,MjHkKO;;AiH9JP;EAGI,kBjHqKM;;AiHnKN;EACI,OjHwJD;;AiHrJH;EACI,MjHoJD;;AiH9If;EACI,cjHrFO;EiHsFP;;AAMA;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjH6HQ;;AiHnIZ;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjHrGI;;AiH+FR;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjH8HQ;;AiHpIZ;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjH+HQ;;AiHrIZ;EACI,WjHpFQ;EiHqFR,ajH3BW;;AiH8Bf;EACI,OjHgIO;;AkH5JP;EAKI;EACA;;AALA;EACI;;AAUJ;EACI;;AAMR;EACI;;AAOA;EACI,k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ijBY;EmIhjBZ,ORJsB;EQKtB;EACA;EACA,kBnI4CiB;EmI3CjB;EACA,enIoBoB;EmInBpB;EACA;EACA,SRlB0B;;AQoB1B;EACI,WnI6DU;EmI5DV,anIkEe;EmIjEf;EACA;EACA,OnIMa;EmILb;;;AC1BR;EACI;EACA,STF0B;;;AUC9B;EACI,OrImjBa;EqIljBb;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA,OrImBa;EqIlBb,QrIkBa;;AqIfjB;EACI,MrImOY;;;AsInPpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA,OXFsB;EWGtB;EACA;EACA,kBtI8CiB;EsI7CjB,etIuBoB;EsItBpB;EACA;EACA,SXf0B;;AWiB1B;EACI;EACA;EACA;EACA;;AAEA;EACI,WtI0DM;EsIzDN,atI+DW;EsI9DX;EACA,OtIIS;EsIHT;;;AC5BZ;EACI;EACA;EACA;EACA,KvIslBU;EuIrlBV,KvI0jBa;EuIzjBb;EACA;EACA;EACA,kBvIgDiB;EuI/CjB;EACA,evIwBoB;EuIvBpB,WvIuEc;EuItEd;EACA,SZXuB;;AYavB;EACI;;AAGJ;EACI;;;ACrBR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI,OxIQQ;;AwILZ;EACI,OxIgPe;;AwI7OnB;EACI;EACA;EACA;;AAGJ;EACI,ObCkB;EaAlB;EACA;;AAGJ;EACI,YxIihBU;EwIhhBV;;AAGJ;EACI,MxI1BM;EwI2BN;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA,KxIwiBM;EwIviBN;EACA;EACA;EACA;EACA,SxI2fQ;EwI1fR,YxICa;EwIAb;EACA,exIvBgB;EwIwBhB,ObnDU;EaoDV;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAIA;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;AayDR;EACI,kBb1DI;;Aa8DZ;EACI;EACA;EACA,QxIsJQ;;AwIlJhB;EACI;EACA;EACA,exIlEgB;EwImEhB;;AAEA;EACI,kBxI7FC;;AwIgGL;EACI;EACA;;AAGJ;EACI,kBxIvGL;;AwI0GC;EACI;EACA;EACA;EACA;EACA;;AAKI;EACI,QbvFG;;AasFP;EACI,QbvFG;;AasFP;EACI,QbvFG;;AasFP;EACI,QbvFG;;AasFP;EACI,QbvFG;;AasFP;EACI,QbvFG;;;AczCvB;EACI;EACA;EACA;EACA,ezI2iBc;;AyIziBd;EACI;;;ACNR;EACI;EACA;EACA,K1IslBU;;A0IplBV;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;Ad1BH;EcyBD;IAIQ;;;;AC7BZ;EACI;EACA;EACA;EACA,K3IqlBU;;A2InlBV;EACI,OhBekB;EgBdlB,QhBckB;EgBblB;;;ACVR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA,e5IsBoB;;A4IpBpB;EACE,kB5IFS;E4IGT;EACA,e5IiBkB;E4IhBlB;;AAIJ;EACE;EACA,QjBDsB;EiBEtB,M5IZW;;A4Ieb;EACE;EACA;EACA;EACA;EACA;EACA,O5IjBY;E4IkBZ;EACA;EACA;EACA;EACA;;;ACvCJ;EAEI;EACA;;AAEA;EACI,OlBgBkB;EkBflB,QlBekB;;AkBblB;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA,OlBbmB;EkBcnB;EACA;EACA;EACA;EACA,kB7IhBM;E6IiBN,O7Igbc;E6I/ad,W7IwDU;E6IvDV;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA,MAlCE;EAmCF;EACA;EACA;EACA;EACA;EACA;;;ACzCZ;EACI;;;AAKA;EACI","file":"theme.compiled.css","sourcesContent":["// Default variables\n@import \"exclusion-variables-defaults\";\n@import \"../../../theme/web/exclusion-variables\";\n@import \"generated-exclusion-variables\";\n@import \"variables\";\n@import \"variables-css-mappings\";\n@import \"../../../theme/web/custom-variables\";\n\n// Font Family Import\n@if $font-family-import != false {\n @import url($font-family-import);\n}\n\n//=============================== Bootstrap ================================\\\\\n\n// Utilities\n@import \"core/_legacy/bootstrap/bootstrap\";\n@import \"core/_legacy/bootstrap/bootstrap-rtl\";\n@if not $exclude-bootstrap {\n @include bootstrap();\n @include bootstrap-rtl();\n}\n@import \"core/_legacy/mxui\";\n@if not $exclude-mxui {\n @include mxui();\n}\n\n//================================== CORE ==================================\\\\\n\n// Base\n@import \"core/base/mixins/animations\";\n@import \"core/base/mixins/spacing\";\n@import \"core/base/mixins/layout-spacing\";\n@import \"core/base/mixins/buttons\";\n@import \"core/base/mixins/groupbox\";\n\n@import \"core/base/animation\";\n@if not $exclude-animations {\n @include animations();\n}\n@import \"core/base/flex\";\n@if not $exclude-flex {\n @include flex();\n}\n@import \"core/base/spacing\";\n@if not $exclude-spacing {\n @include spacing();\n}\n@import \"core/base/base\";\n@if not $exclude-base {\n @include base();\n}\n@import \"core/base/login\";\n@if not $exclude-login {\n @include login();\n}\n\n// Widgets\n@import \"core/widgets/input\";\n@if not $exclude-input {\n @include input();\n}\n\n@import \"core/helpers/background\";\n@if not $exclude-background-helpers {\n @include background-helpers();\n}\n\n@import \"core/widgets/label\";\n@if not $exclude-label {\n @include label();\n}\n\n@import \"core/widgets/badge\";\n@if not $exclude-badge {\n @include badge();\n}\n\n@import \"core/helpers/label\";\n@if not $exclude-label and not $exclude-label-helpers {\n @include label-helpers();\n}\n\n@import \"core/widgets/badge-button\";\n@if not $exclude-badge-button {\n @include badge-button();\n}\n\n@import \"core/helpers/badge-button\";\n@if not $exclude-badge-button and not $exclude-badge-button-helpers {\n @include badge-button-helpers();\n}\n\n@import \"core/widgets/button\";\n@if not $exclude-button {\n @include button();\n}\n\n@import \"core/helpers/button\";\n@if not $exclude-button and not $exclude-button-helpers {\n @include button-helpers();\n}\n\n@import \"core/widgets/check-box\";\n@if not $exclude-check-box {\n @include check-box();\n}\n\n@import \"core/widgets/grid\";\n@if not $exclude-grid {\n @include grid();\n}\n\n@import \"core/widgets/data-grid\";\n@if not $exclude-data-grid {\n @include data-grid();\n}\n\n@import \"core/helpers/data-grid\";\n@if not $exclude-data-grid and not $exclude-data-grid-helpers {\n @include data-grid-helpers();\n}\n\n@import \"core/widgets/data-view\";\n@if not $exclude-data-view {\n @include data-view();\n}\n\n@import \"core/widgets/date-picker\";\n@if not $exclude-data-picker {\n @include date-picker();\n}\n\n@import \"core/widgets/header\";\n@if not $exclude-header {\n @include header();\n}\n\n@import \"core/widgets/glyphicon\";\n@if not $exclude-glyphicon {\n @include glyphicon();\n}\n\n@import \"core/widgets/group-box\";\n@if not $exclude-group-box {\n @include group-box();\n}\n\n@import \"core/helpers/group-box\";\n@if not $exclude-group-box and not $exclude-group-box-helpers {\n @include group-box-helpers();\n}\n\n@import \"core/helpers/image\";\n@if not $exclude-image-helpers {\n @include image-helpers();\n}\n\n@import \"core/widgets/list-view\";\n@if not $exclude-list-view {\n @include list-view();\n}\n\n@import \"core/helpers/list-view\";\n@if not $exclude-list-view and not $exclude-list-view-helpers {\n @include list-view-helpers();\n}\n\n@import \"core/widgets/modal\";\n@if not $exclude-modal {\n @include modal();\n}\n\n@import \"core/widgets/navigation-bar\";\n@if not $exclude-navigation-bar {\n @include navigation-bar();\n}\n\n@import \"core/helpers/navigation-bar\";\n@if not $exclude-navigation-bar and not $exclude-navigation-bar-helpers {\n @include navigation-bar-helpers();\n}\n\n@import \"core/widgets/navigation-list\";\n@if not $exclude-navigation-list {\n @include navigation-list();\n}\n\n@import \"core/widgets/navigation-tree\";\n@if not $exclude-navigation-tree {\n @include navigation-tree();\n}\n\n@import \"core/helpers/navigation-tree\";\n@if not $exclude-navigation-tree and not $exclude-navigation-tree-helpers {\n @include navigation-tree-helpers();\n}\n\n@import \"core/widgets/pop-up-menu\";\n@if not $exclude-pop-up-menu {\n @include pop-up-menu();\n}\n\n@import \"core/widgets/simple-menu-bar\";\n@if not $exclude-simple-menu-bar {\n @include simple-menu-bar();\n}\n\n@import \"core/helpers/simple-menu-bar\";\n@if not $exclude-simple-menu-bar and not $exclude-simple-menu-bar-helpers {\n @include simple-menu-bar-helpers();\n}\n\n@import \"core/widgets/radio-button\";\n@if not $exclude-radio-button {\n @include radio-button();\n}\n\n@import \"core/widgets/scroll-container-react\";\n@import \"core/widgets/scroll-container-dojo\";\n@if not $exclude-scroll-container {\n @if $use-modern-client {\n @include scroll-container-react();\n } @else {\n @include scroll-container-dojo();\n }\n}\n\n@import \"core/widgets/tab-container\";\n@if not $exclude-tab-container {\n @include tab-container();\n}\n\n@import \"core/helpers/tab-container\";\n@if not $exclude-tab-container and not $exclude-tab-container-helpers {\n @include tab-container-helpers();\n}\n\n@import \"core/widgets/table\";\n@if not $exclude-table {\n @include table();\n}\n\n@import \"core/helpers/table\";\n@if not $exclude-table and not $exclude-table-helpers {\n @include table-helpers();\n}\n\n@import \"core/widgets/template-grid\";\n@if not $exclude-template-grid {\n @include template-grid();\n}\n\n@import \"core/helpers/template-grid\";\n@if not $exclude-template-grid and not $exclude-template-grid-helpers {\n @include template-grid-helpers();\n}\n\n@import \"core/widgets/typography\";\n@if not $exclude-typography {\n @include typography();\n}\n\n@import \"core/helpers/typography\";\n@if not $exclude-typography and not $exclude-typography-helpers {\n @include typography-helpers();\n}\n\n@import \"core/widgets/layout-grid\";\n@if not $exclude-layout-grid {\n @include layout-grid();\n}\n\n@import \"core/widgets/pagination\";\n@if not $exclude-pagination {\n @include pagination();\n}\n\n@import \"core/widgets/progress\";\n@if not $exclude-progress {\n @include progress();\n}\n\n@import \"core/widgets/progress-bar\";\n@if not $exclude-progress-bar {\n @include progress-bar();\n}\n\n@import \"core/helpers/progress-bar\";\n@if not $exclude-progress-bar and not $exclude-progress-bar-helpers {\n @include progress-bar-helpers();\n}\n\n@import \"core/widgets/progress-circle\";\n@if not $exclude-progress-circle {\n @include progress-circle();\n}\n\n@import \"core/helpers/progress-circle\";\n@if not $exclude-progress-circle and not $exclude-progress-circle-helpers {\n @include progress-circle-helpers();\n}\n\n@import \"core/widgets/rating\";\n@if not $exclude-rating {\n @include rating();\n}\n\n@import \"core/helpers/rating\";\n@if not $exclude-rating and not $exclude-rating-helpers {\n @include rating-helpers();\n}\n\n@import \"core/widgets/range-slider\";\n@if not $exclude-range-slider {\n @include range-slider();\n}\n\n@import \"core/helpers/range-slider\";\n@if not $exclude-range-slider and not $exclude-range-slider-helpers {\n @include range-slider-helpers();\n}\n\n@import \"core/widgets/slider\";\n@if not $exclude-slider {\n @include slider();\n}\n\n@import \"core/helpers/slider\";\n@if not $exclude-slider and not $exclude-slider-helpers {\n @include slider-helpers();\n}\n\n@import \"core/widgets/timeline\";\n@if not $exclude-timeline {\n @include timeline();\n}\n\n@import \"core/widgets/tooltip\";\n@if not $exclude-tooltip {\n @include tooltip();\n}\n\n@import \"core/helpers/helper-classes\";\n@if not $exclude-helper-classes {\n @include helper-classes();\n}\n\n@import \"core/widgets/barcode-scanner\";\n@if not $exclude-barcode-scanner {\n @include barcode-scanner();\n}\n\n@import \"core/widgets/accordion\";\n@if not $exclude-accordion {\n @include accordion();\n}\n\n@import \"core/helpers/accordion\";\n@if not $exclude-accordion and not $exclude-accordion-helpers {\n @include accordion-helpers();\n}\n\n// Custom widgets\n@import \"core/widgetscustom/dijit-widget\";\n@if not $exclude-custom-dijit-widget {\n @include dijit-widget();\n}\n\n@import \"core/widgets/switch\";\n@if not $exclude-custom-switch {\n @include switch();\n}\n\n//================================= CUSTOM =================================\\\\\n\n// Layouts\n@import \"layouts/layout-atlas\";\n@if not $exclude-layout-atlas {\n @include layout-atlas();\n}\n@import \"layouts/layout-atlas-phone\";\n@if not $exclude-layout-atlas-phone {\n @include layout-atlas-phone();\n}\n@import \"layouts/layout-atlas-responsive\";\n@if not $exclude-layout-atlas-responsive {\n @include layout-atlas-responsive();\n}\n@import \"layouts/layout-atlas-tablet\";\n@if not $exclude-layout-atlas-tablet {\n @include layout-atlas-tablet();\n}\n","@font-face {\n font-family: \"Atlas_Core$Atlas_Filled\";\n src: url(\"./fonts/Atlas_Core$Atlas_Filled.ttf\") format(\"truetype\");\n}\n.mx-icon-filled {\n display: inline-block;\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n font-family: \"Atlas_Core$Atlas_Filled\";\n}\n.mx-icon-filled.mx-icon-add::before {\n content: \"\\e900\";\n}\n.mx-icon-filled.mx-icon-add-circle::before {\n content: \"\\e901\";\n}\n.mx-icon-filled.mx-icon-airplane::before {\n content: \"\\e902\";\n}\n.mx-icon-filled.mx-icon-alarm-bell::before {\n content: \"\\e903\";\n}\n.mx-icon-filled.mx-icon-alarm-bell-off::before {\n content: \"\\e904\";\n}\n.mx-icon-filled.mx-icon-alert-circle::before {\n content: \"\\e905\";\n}\n.mx-icon-filled.mx-icon-alert-triangle::before {\n content: \"\\e906\";\n}\n.mx-icon-filled.mx-icon-align-bottom::before {\n content: \"\\e907\";\n}\n.mx-icon-filled.mx-icon-align-center::before {\n content: \"\\e908\";\n}\n.mx-icon-filled.mx-icon-align-left::before {\n content: \"\\e909\";\n}\n.mx-icon-filled.mx-icon-align-middle::before {\n content: \"\\e90a\";\n}\n.mx-icon-filled.mx-icon-align-right::before {\n content: \"\\e90b\";\n}\n.mx-icon-filled.mx-icon-align-top::before {\n content: \"\\e90c\";\n}\n.mx-icon-filled.mx-icon-analytics-bars::before {\n content: \"\\e90d\";\n}\n.mx-icon-filled.mx-icon-analytics-graph-bar::before {\n content: \"\\e90e\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-down::before {\n content: \"\\e90f\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-left::before {\n content: \"\\e910\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-right::before {\n content: \"\\e911\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-up::before {\n content: \"\\e912\";\n}\n.mx-icon-filled.mx-icon-arrow-down::before {\n content: \"\\e913\";\n}\n.mx-icon-filled.mx-icon-arrow-left::before {\n content: \"\\e914\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-down::before {\n content: \"\\e915\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-left::before {\n content: \"\\e916\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-right::before {\n content: \"\\e917\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-up::before {\n content: \"\\e918\";\n}\n.mx-icon-filled.mx-icon-arrow-right::before {\n content: \"\\e919\";\n}\n.mx-icon-filled.mx-icon-arrow-square-down::before {\n content: \"\\e91a\";\n}\n.mx-icon-filled.mx-icon-arrow-square-left::before {\n content: \"\\e91b\";\n}\n.mx-icon-filled.mx-icon-arrow-square-right::before {\n content: \"\\e91c\";\n}\n.mx-icon-filled.mx-icon-arrow-square-up::before {\n content: \"\\e91d\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-down::before {\n content: \"\\e91e\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-left::before {\n content: \"\\e91f\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-right::before {\n content: \"\\e920\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-up::before {\n content: \"\\e921\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-down::before {\n content: \"\\e922\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-left::before {\n content: \"\\e923\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-right::before {\n content: \"\\e924\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-up::before {\n content: \"\\e925\";\n}\n.mx-icon-filled.mx-icon-arrow-up::before {\n content: \"\\e926\";\n}\n.mx-icon-filled.mx-icon-arrows-retweet::before {\n content: \"\\e927\";\n}\n.mx-icon-filled.mx-icon-asterisk::before {\n content: \"\\e928\";\n}\n.mx-icon-filled.mx-icon-badge::before {\n content: \"\\e929\";\n}\n.mx-icon-filled.mx-icon-barcode::before {\n content: \"\\e92a\";\n}\n.mx-icon-filled.mx-icon-binoculars::before {\n content: \"\\e92b\";\n}\n.mx-icon-filled.mx-icon-bitcoin::before {\n content: \"\\e92c\";\n}\n.mx-icon-filled.mx-icon-blocks::before {\n content: \"\\e92d\";\n}\n.mx-icon-filled.mx-icon-book-closed::before {\n content: \"\\e92e\";\n}\n.mx-icon-filled.mx-icon-book-open::before {\n content: \"\\e92f\";\n}\n.mx-icon-filled.mx-icon-bookmark::before {\n content: \"\\e930\";\n}\n.mx-icon-filled.mx-icon-briefcase::before {\n content: \"\\e931\";\n}\n.mx-icon-filled.mx-icon-browser::before {\n content: \"\\e932\";\n}\n.mx-icon-filled.mx-icon-browser-code::before {\n content: \"\\e933\";\n}\n.mx-icon-filled.mx-icon-browser-page-text::before {\n content: \"\\e934\";\n}\n.mx-icon-filled.mx-icon-browser-search::before {\n content: \"\\e935\";\n}\n.mx-icon-filled.mx-icon-browser-trophy::before {\n content: \"\\e936\";\n}\n.mx-icon-filled.mx-icon-calendar::before {\n content: \"\\e937\";\n}\n.mx-icon-filled.mx-icon-calendar-1::before {\n content: \"\\e938\";\n}\n.mx-icon-filled.mx-icon-camera::before {\n content: \"\\e939\";\n}\n.mx-icon-filled.mx-icon-camping-tent::before {\n content: \"\\e93a\";\n}\n.mx-icon-filled.mx-icon-cash-payment-bill::before {\n content: \"\\e93b\";\n}\n.mx-icon-filled.mx-icon-cash-payment-bill-2::before {\n content: \"\\e93c\";\n}\n.mx-icon-filled.mx-icon-cd::before {\n content: \"\\e93d\";\n}\n.mx-icon-filled.mx-icon-charger::before {\n content: \"\\e93e\";\n}\n.mx-icon-filled.mx-icon-checkmark::before {\n content: \"\\e93f\";\n}\n.mx-icon-filled.mx-icon-checkmark-circle::before {\n content: \"\\e940\";\n}\n.mx-icon-filled.mx-icon-checkmark-shield::before {\n content: \"\\e941\";\n}\n.mx-icon-filled.mx-icon-checkmark-square::before {\n content: \"\\e942\";\n}\n.mx-icon-filled.mx-icon-chevron-down::before {\n content: \"\\e943\";\n}\n.mx-icon-filled.mx-icon-chevron-left::before {\n content: \"\\e944\";\n}\n.mx-icon-filled.mx-icon-chevron-right::before {\n content: \"\\e945\";\n}\n.mx-icon-filled.mx-icon-chevron-up::before {\n content: \"\\e946\";\n}\n.mx-icon-filled.mx-icon-cloud::before {\n content: \"\\e947\";\n}\n.mx-icon-filled.mx-icon-cloud-check::before {\n content: \"\\e948\";\n}\n.mx-icon-filled.mx-icon-cloud-data-transfer::before {\n content: \"\\e949\";\n}\n.mx-icon-filled.mx-icon-cloud-disable::before {\n content: \"\\e94a\";\n}\n.mx-icon-filled.mx-icon-cloud-download::before {\n content: \"\\e94b\";\n}\n.mx-icon-filled.mx-icon-cloud-lock::before {\n content: \"\\e94c\";\n}\n.mx-icon-filled.mx-icon-cloud-off::before {\n content: \"\\e94d\";\n}\n.mx-icon-filled.mx-icon-cloud-refresh::before {\n content: \"\\e94e\";\n}\n.mx-icon-filled.mx-icon-cloud-remove::before {\n content: \"\\e94f\";\n}\n.mx-icon-filled.mx-icon-cloud-search::before {\n content: \"\\e950\";\n}\n.mx-icon-filled.mx-icon-cloud-settings::before {\n content: \"\\e951\";\n}\n.mx-icon-filled.mx-icon-cloud-subtract::before {\n content: \"\\e952\";\n}\n.mx-icon-filled.mx-icon-cloud-sync::before {\n content: \"\\e953\";\n}\n.mx-icon-filled.mx-icon-cloud-upload::before {\n content: \"\\e954\";\n}\n.mx-icon-filled.mx-icon-cloud-warning::before {\n content: \"\\e955\";\n}\n.mx-icon-filled.mx-icon-cog::before {\n content: \"\\e956\";\n}\n.mx-icon-filled.mx-icon-cog-hand-give::before {\n content: \"\\e957\";\n}\n.mx-icon-filled.mx-icon-cog-play::before {\n content: \"\\e958\";\n}\n.mx-icon-filled.mx-icon-cog-shield::before {\n content: \"\\e959\";\n}\n.mx-icon-filled.mx-icon-color-bucket-brush::before {\n content: \"\\e95a\";\n}\n.mx-icon-filled.mx-icon-color-painting-palette::before {\n content: \"\\e95b\";\n}\n.mx-icon-filled.mx-icon-compass-directions::before {\n content: \"\\e95c\";\n}\n.mx-icon-filled.mx-icon-compressed::before {\n content: \"\\e95d\";\n}\n.mx-icon-filled.mx-icon-computer-chip::before {\n content: \"\\e95e\";\n}\n.mx-icon-filled.mx-icon-connect::before {\n content: \"\\e95f\";\n}\n.mx-icon-filled.mx-icon-connect-1::before {\n content: \"\\e960\";\n}\n.mx-icon-filled.mx-icon-console-terminal::before {\n content: \"\\e961\";\n}\n.mx-icon-filled.mx-icon-contacts::before {\n content: \"\\e962\";\n}\n.mx-icon-filled.mx-icon-contrast::before {\n content: \"\\e963\";\n}\n.mx-icon-filled.mx-icon-controls-backward::before {\n content: \"\\e964\";\n}\n.mx-icon-filled.mx-icon-controls-eject::before {\n content: \"\\e965\";\n}\n.mx-icon-filled.mx-icon-controls-fast-backward::before {\n content: \"\\e966\";\n}\n.mx-icon-filled.mx-icon-controls-fast-forward::before {\n content: \"\\e967\";\n}\n.mx-icon-filled.mx-icon-controls-forward::before {\n content: \"\\e968\";\n}\n.mx-icon-filled.mx-icon-controls-pause::before {\n content: \"\\e969\";\n}\n.mx-icon-filled.mx-icon-controls-play::before {\n content: \"\\e96a\";\n}\n.mx-icon-filled.mx-icon-controls-record::before {\n content: \"\\e96b\";\n}\n.mx-icon-filled.mx-icon-controls-shuffle::before {\n content: \"\\e96c\";\n}\n.mx-icon-filled.mx-icon-controls-step-backward::before {\n content: \"\\e96d\";\n}\n.mx-icon-filled.mx-icon-controls-step-forward::before {\n content: \"\\e96e\";\n}\n.mx-icon-filled.mx-icon-controls-stop::before {\n content: \"\\e96f\";\n}\n.mx-icon-filled.mx-icon-controls-volume-full::before {\n content: \"\\e970\";\n}\n.mx-icon-filled.mx-icon-controls-volume-low::before {\n content: \"\\e971\";\n}\n.mx-icon-filled.mx-icon-controls-volume-off::before {\n content: \"\\e972\";\n}\n.mx-icon-filled.mx-icon-conversation-question-warning::before {\n content: \"\\e973\";\n}\n.mx-icon-filled.mx-icon-copy::before {\n content: \"\\e974\";\n}\n.mx-icon-filled.mx-icon-credit-card::before {\n content: \"\\e975\";\n}\n.mx-icon-filled.mx-icon-crossroad-sign::before {\n content: \"\\e976\";\n}\n.mx-icon-filled.mx-icon-cube::before {\n content: \"\\e977\";\n}\n.mx-icon-filled.mx-icon-cutlery::before {\n content: \"\\e978\";\n}\n.mx-icon-filled.mx-icon-dashboard::before {\n content: \"\\e979\";\n}\n.mx-icon-filled.mx-icon-data-transfer::before {\n content: \"\\e97a\";\n}\n.mx-icon-filled.mx-icon-desktop::before {\n content: \"\\e97b\";\n}\n.mx-icon-filled.mx-icon-diamond::before {\n content: \"\\e97c\";\n}\n.mx-icon-filled.mx-icon-direction-buttons::before {\n content: \"\\e97d\";\n}\n.mx-icon-filled.mx-icon-direction-buttons-arrows::before {\n content: \"\\e97e\";\n}\n.mx-icon-filled.mx-icon-disable::before {\n content: \"\\e97f\";\n}\n.mx-icon-filled.mx-icon-document::before {\n content: \"\\e980\";\n}\n.mx-icon-filled.mx-icon-document-open::before {\n content: \"\\e981\";\n}\n.mx-icon-filled.mx-icon-document-save::before {\n content: \"\\e982\";\n}\n.mx-icon-filled.mx-icon-dollar::before {\n content: \"\\e983\";\n}\n.mx-icon-filled.mx-icon-double-bed::before {\n content: \"\\e984\";\n}\n.mx-icon-filled.mx-icon-double-chevron-left::before {\n content: \"\\e985\";\n}\n.mx-icon-filled.mx-icon-double-chevron-right::before {\n content: \"\\e986\";\n}\n.mx-icon-filled.mx-icon-download-bottom::before {\n content: \"\\e987\";\n}\n.mx-icon-filled.mx-icon-download-button::before {\n content: \"\\e988\";\n}\n.mx-icon-filled.mx-icon-duplicate::before {\n content: \"\\e989\";\n}\n.mx-icon-filled.mx-icon-email::before {\n content: \"\\e98a\";\n}\n.mx-icon-filled.mx-icon-equalizer::before {\n content: \"\\e98b\";\n}\n.mx-icon-filled.mx-icon-eraser::before {\n content: \"\\e98c\";\n}\n.mx-icon-filled.mx-icon-euro::before {\n content: \"\\e98d\";\n}\n.mx-icon-filled.mx-icon-expand-horizontal::before {\n content: \"\\e98e\";\n}\n.mx-icon-filled.mx-icon-expand-vertical::before {\n content: \"\\e98f\";\n}\n.mx-icon-filled.mx-icon-external::before {\n content: \"\\e990\";\n}\n.mx-icon-filled.mx-icon-file-pdf::before {\n content: \"\\e991\";\n}\n.mx-icon-filled.mx-icon-file-zip::before {\n content: \"\\e992\";\n}\n.mx-icon-filled.mx-icon-film::before {\n content: \"\\e993\";\n}\n.mx-icon-filled.mx-icon-filter::before {\n content: \"\\e994\";\n}\n.mx-icon-filled.mx-icon-fire::before {\n content: \"\\e995\";\n}\n.mx-icon-filled.mx-icon-flag::before {\n content: \"\\e996\";\n}\n.mx-icon-filled.mx-icon-flash::before {\n content: \"\\e997\";\n}\n.mx-icon-filled.mx-icon-floppy-disk::before {\n content: \"\\e998\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-arrow-down::before {\n content: \"\\e999\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-arrow-up::before {\n content: \"\\e99a\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-checkmark::before {\n content: \"\\e99b\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-group::before {\n content: \"\\e99c\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-remove::before {\n content: \"\\e99d\";\n}\n.mx-icon-filled.mx-icon-folder-closed::before {\n content: \"\\e99e\";\n}\n.mx-icon-filled.mx-icon-folder-open::before {\n content: \"\\e99f\";\n}\n.mx-icon-filled.mx-icon-folder-upload::before {\n content: \"\\e9a0\";\n}\n.mx-icon-filled.mx-icon-fruit-apple::before {\n content: \"\\e9a1\";\n}\n.mx-icon-filled.mx-icon-fullscreen::before {\n content: \"\\e9a2\";\n}\n.mx-icon-filled.mx-icon-gift::before {\n content: \"\\e9a3\";\n}\n.mx-icon-filled.mx-icon-github::before {\n content: \"\\e9a4\";\n}\n.mx-icon-filled.mx-icon-globe::before {\n content: \"\\e9a5\";\n}\n.mx-icon-filled.mx-icon-globe-1::before {\n content: \"\\e9a6\";\n}\n.mx-icon-filled.mx-icon-graduation-hat::before {\n content: \"\\e9a7\";\n}\n.mx-icon-filled.mx-icon-hammer::before {\n content: \"\\e9a8\";\n}\n.mx-icon-filled.mx-icon-hammer-wench::before {\n content: \"\\e9a9\";\n}\n.mx-icon-filled.mx-icon-hand-down::before {\n content: \"\\e9aa\";\n}\n.mx-icon-filled.mx-icon-hand-left::before {\n content: \"\\e9ab\";\n}\n.mx-icon-filled.mx-icon-hand-right::before {\n content: \"\\e9ac\";\n}\n.mx-icon-filled.mx-icon-hand-up::before {\n content: \"\\e9ad\";\n}\n.mx-icon-filled.mx-icon-handshake-business::before {\n content: \"\\e9ae\";\n}\n.mx-icon-filled.mx-icon-hard-drive::before {\n content: \"\\e9af\";\n}\n.mx-icon-filled.mx-icon-headphones::before {\n content: \"\\e9b0\";\n}\n.mx-icon-filled.mx-icon-headphones-mic::before {\n content: \"\\e9b1\";\n}\n.mx-icon-filled.mx-icon-heart::before {\n content: \"\\e9b2\";\n}\n.mx-icon-filled.mx-icon-hierarchy-files::before {\n content: \"\\e9b3\";\n}\n.mx-icon-filled.mx-icon-home::before {\n content: \"\\e9b4\";\n}\n.mx-icon-filled.mx-icon-hourglass::before {\n content: \"\\e9b5\";\n}\n.mx-icon-filled.mx-icon-hyperlink::before {\n content: \"\\e9b6\";\n}\n.mx-icon-filled.mx-icon-image::before {\n content: \"\\e9b7\";\n}\n.mx-icon-filled.mx-icon-image-collection::before {\n content: \"\\e9b8\";\n}\n.mx-icon-filled.mx-icon-images::before {\n content: \"\\e9b9\";\n}\n.mx-icon-filled.mx-icon-info-circle::before {\n content: \"\\e9ba\";\n}\n.mx-icon-filled.mx-icon-laptop::before {\n content: \"\\e9bb\";\n}\n.mx-icon-filled.mx-icon-layout::before {\n content: \"\\e9bc\";\n}\n.mx-icon-filled.mx-icon-layout-1::before {\n content: \"\\e9bd\";\n}\n.mx-icon-filled.mx-icon-layout-2::before {\n content: \"\\e9be\";\n}\n.mx-icon-filled.mx-icon-layout-column::before {\n content: \"\\e9bf\";\n}\n.mx-icon-filled.mx-icon-layout-horizontal::before {\n content: \"\\e9c0\";\n}\n.mx-icon-filled.mx-icon-layout-list::before {\n content: \"\\e9c1\";\n}\n.mx-icon-filled.mx-icon-layout-rounded::before {\n content: \"\\e9c2\";\n}\n.mx-icon-filled.mx-icon-layout-rounded-1::before {\n content: \"\\e9c3\";\n}\n.mx-icon-filled.mx-icon-leaf::before {\n content: \"\\e9c4\";\n}\n.mx-icon-filled.mx-icon-legal-certificate::before {\n content: \"\\e9c5\";\n}\n.mx-icon-filled.mx-icon-lego-block-stack::before {\n content: \"\\e9c6\";\n}\n.mx-icon-filled.mx-icon-light-bulb-shine::before {\n content: \"\\e9c7\";\n}\n.mx-icon-filled.mx-icon-list-bullets::before {\n content: \"\\e9c8\";\n}\n.mx-icon-filled.mx-icon-location-pin::before {\n content: \"\\e9c9\";\n}\n.mx-icon-filled.mx-icon-lock::before {\n content: \"\\e9ca\";\n}\n.mx-icon-filled.mx-icon-lock-key::before {\n content: \"\\e9cb\";\n}\n.mx-icon-filled.mx-icon-login::before {\n content: \"\\e9cc\";\n}\n.mx-icon-filled.mx-icon-login-1::before {\n content: \"\\e9cd\";\n}\n.mx-icon-filled.mx-icon-login-2::before {\n content: \"\\e9ce\";\n}\n.mx-icon-filled.mx-icon-logout::before {\n content: \"\\e9cf\";\n}\n.mx-icon-filled.mx-icon-logout-1::before {\n content: \"\\e9d0\";\n}\n.mx-icon-filled.mx-icon-luggage-travel::before {\n content: \"\\e9d1\";\n}\n.mx-icon-filled.mx-icon-magnet::before {\n content: \"\\e9d2\";\n}\n.mx-icon-filled.mx-icon-map-location-pin::before {\n content: \"\\e9d3\";\n}\n.mx-icon-filled.mx-icon-martini::before {\n content: \"\\e9d4\";\n}\n.mx-icon-filled.mx-icon-megaphone::before {\n content: \"\\e9d5\";\n}\n.mx-icon-filled.mx-icon-message-bubble::before {\n content: \"\\e9d6\";\n}\n.mx-icon-filled.mx-icon-message-bubble-add::before {\n content: \"\\e9d7\";\n}\n.mx-icon-filled.mx-icon-message-bubble-check::before {\n content: \"\\e9d8\";\n}\n.mx-icon-filled.mx-icon-message-bubble-disable::before {\n content: \"\\e9d9\";\n}\n.mx-icon-filled.mx-icon-message-bubble-edit::before {\n content: \"\\e9da\";\n}\n.mx-icon-filled.mx-icon-message-bubble-information::before {\n content: \"\\e9db\";\n}\n.mx-icon-filled.mx-icon-message-bubble-quotation::before {\n content: \"\\e9dc\";\n}\n.mx-icon-filled.mx-icon-message-bubble-remove::before {\n content: \"\\e9dd\";\n}\n.mx-icon-filled.mx-icon-message-bubble-typing::before {\n content: \"\\e9de\";\n}\n.mx-icon-filled.mx-icon-mobile-phone::before {\n content: \"\\e9df\";\n}\n.mx-icon-filled.mx-icon-modal-window::before {\n content: \"\\e9e0\";\n}\n.mx-icon-filled.mx-icon-monitor::before {\n content: \"\\e9e1\";\n}\n.mx-icon-filled.mx-icon-monitor-camera::before {\n content: \"\\e9e2\";\n}\n.mx-icon-filled.mx-icon-monitor-cash::before {\n content: \"\\e9e3\";\n}\n.mx-icon-filled.mx-icon-monitor-e-learning::before {\n content: \"\\e9e4\";\n}\n.mx-icon-filled.mx-icon-monitor-pie-line-graph::before {\n content: \"\\e9e5\";\n}\n.mx-icon-filled.mx-icon-moon-new::before {\n content: \"\\e9e6\";\n}\n.mx-icon-filled.mx-icon-mountain-flag::before {\n content: \"\\e9e7\";\n}\n.mx-icon-filled.mx-icon-move-down::before {\n content: \"\\e9e8\";\n}\n.mx-icon-filled.mx-icon-move-left::before {\n content: \"\\e9e9\";\n}\n.mx-icon-filled.mx-icon-move-right::before {\n content: \"\\e9ea\";\n}\n.mx-icon-filled.mx-icon-move-up::before {\n content: \"\\e9eb\";\n}\n.mx-icon-filled.mx-icon-music-note::before {\n content: \"\\e9ec\";\n}\n.mx-icon-filled.mx-icon-navigation-menu::before {\n content: \"\\e9ed\";\n}\n.mx-icon-filled.mx-icon-navigation-next::before {\n content: \"\\e9ee\";\n}\n.mx-icon-filled.mx-icon-notes-checklist::before {\n content: \"\\e9ef\";\n}\n.mx-icon-filled.mx-icon-notes-checklist-flip::before {\n content: \"\\e9f0\";\n}\n.mx-icon-filled.mx-icon-notes-paper-edit::before {\n content: \"\\e9f1\";\n}\n.mx-icon-filled.mx-icon-notes-paper-text::before {\n content: \"\\e9f2\";\n}\n.mx-icon-filled.mx-icon-office-sheet::before {\n content: \"\\e9f3\";\n}\n.mx-icon-filled.mx-icon-org-chart::before {\n content: \"\\e9f4\";\n}\n.mx-icon-filled.mx-icon-paper-clipboard::before {\n content: \"\\e9f5\";\n}\n.mx-icon-filled.mx-icon-paper-holder::before {\n content: \"\\e9f6\";\n}\n.mx-icon-filled.mx-icon-paper-holder-full::before {\n content: \"\\e9f7\";\n}\n.mx-icon-filled.mx-icon-paper-list::before {\n content: \"\\e9f8\";\n}\n.mx-icon-filled.mx-icon-paper-plane::before {\n content: \"\\e9f9\";\n}\n.mx-icon-filled.mx-icon-paperclip::before {\n content: \"\\e9fa\";\n}\n.mx-icon-filled.mx-icon-password-lock::before {\n content: \"\\e9fb\";\n}\n.mx-icon-filled.mx-icon-password-type::before {\n content: \"\\e9fc\";\n}\n.mx-icon-filled.mx-icon-paste::before {\n content: \"\\e9fd\";\n}\n.mx-icon-filled.mx-icon-pen-write-paper::before {\n content: \"\\e9fe\";\n}\n.mx-icon-filled.mx-icon-pencil::before {\n content: \"\\e9ff\";\n}\n.mx-icon-filled.mx-icon-pencil-write-paper::before {\n content: \"\\ea00\";\n}\n.mx-icon-filled.mx-icon-performance-graph-calculator::before {\n content: \"\\ea01\";\n}\n.mx-icon-filled.mx-icon-phone::before {\n content: \"\\ea02\";\n}\n.mx-icon-filled.mx-icon-phone-handset::before {\n content: \"\\ea03\";\n}\n.mx-icon-filled.mx-icon-piggy-bank::before {\n content: \"\\ea04\";\n}\n.mx-icon-filled.mx-icon-pin::before {\n content: \"\\ea05\";\n}\n.mx-icon-filled.mx-icon-plane-ticket::before {\n content: \"\\ea06\";\n}\n.mx-icon-filled.mx-icon-play-circle::before {\n content: \"\\ea07\";\n}\n.mx-icon-filled.mx-icon-pound-sterling::before {\n content: \"\\ea08\";\n}\n.mx-icon-filled.mx-icon-power-button::before {\n content: \"\\ea09\";\n}\n.mx-icon-filled.mx-icon-print::before {\n content: \"\\ea0a\";\n}\n.mx-icon-filled.mx-icon-progress-bars::before {\n content: \"\\ea0b\";\n}\n.mx-icon-filled.mx-icon-qr-code::before {\n content: \"\\ea0c\";\n}\n.mx-icon-filled.mx-icon-question-circle::before {\n content: \"\\ea0d\";\n}\n.mx-icon-filled.mx-icon-redo::before {\n content: \"\\ea0e\";\n}\n.mx-icon-filled.mx-icon-refresh::before {\n content: \"\\ea0f\";\n}\n.mx-icon-filled.mx-icon-remove::before {\n content: \"\\ea10\";\n}\n.mx-icon-filled.mx-icon-remove-circle::before {\n content: \"\\ea11\";\n}\n.mx-icon-filled.mx-icon-remove-shield::before {\n content: \"\\ea12\";\n}\n.mx-icon-filled.mx-icon-repeat::before {\n content: \"\\ea13\";\n}\n.mx-icon-filled.mx-icon-resize-full::before {\n content: \"\\ea14\";\n}\n.mx-icon-filled.mx-icon-resize-small::before {\n content: \"\\ea15\";\n}\n.mx-icon-filled.mx-icon-road::before {\n content: \"\\ea16\";\n}\n.mx-icon-filled.mx-icon-robot-head::before {\n content: \"\\ea17\";\n}\n.mx-icon-filled.mx-icon-rss-feed::before {\n content: \"\\ea18\";\n}\n.mx-icon-filled.mx-icon-ruble::before {\n content: \"\\ea19\";\n}\n.mx-icon-filled.mx-icon-scissors::before {\n content: \"\\ea1a\";\n}\n.mx-icon-filled.mx-icon-search::before {\n content: \"\\ea1b\";\n}\n.mx-icon-filled.mx-icon-server::before {\n content: \"\\ea1c\";\n}\n.mx-icon-filled.mx-icon-settings-slider::before {\n content: \"\\ea1d\";\n}\n.mx-icon-filled.mx-icon-settings-slider-1::before {\n content: \"\\ea1e\";\n}\n.mx-icon-filled.mx-icon-share::before {\n content: \"\\ea1f\";\n}\n.mx-icon-filled.mx-icon-share-1::before {\n content: \"\\ea20\";\n}\n.mx-icon-filled.mx-icon-share-arrow::before {\n content: \"\\ea21\";\n}\n.mx-icon-filled.mx-icon-shipment-box::before {\n content: \"\\ea22\";\n}\n.mx-icon-filled.mx-icon-shopping-cart::before {\n content: \"\\ea23\";\n}\n.mx-icon-filled.mx-icon-shopping-cart-full::before {\n content: \"\\ea24\";\n}\n.mx-icon-filled.mx-icon-signal-full::before {\n content: \"\\ea25\";\n}\n.mx-icon-filled.mx-icon-smart-house-garage::before {\n content: \"\\ea26\";\n}\n.mx-icon-filled.mx-icon-smart-watch-circle::before {\n content: \"\\ea27\";\n}\n.mx-icon-filled.mx-icon-smart-watch-square::before {\n content: \"\\ea28\";\n}\n.mx-icon-filled.mx-icon-sort::before {\n content: \"\\ea29\";\n}\n.mx-icon-filled.mx-icon-sort-alphabet-ascending::before {\n content: \"\\ea2a\";\n}\n.mx-icon-filled.mx-icon-sort-alphabet-descending::before {\n content: \"\\ea2b\";\n}\n.mx-icon-filled.mx-icon-sort-ascending::before {\n content: \"\\ea2c\";\n}\n.mx-icon-filled.mx-icon-sort-descending::before {\n content: \"\\ea2d\";\n}\n.mx-icon-filled.mx-icon-sort-numerical-ascending::before {\n content: \"\\ea2e\";\n}\n.mx-icon-filled.mx-icon-sort-numerical-descending::before {\n content: \"\\ea2f\";\n}\n.mx-icon-filled.mx-icon-star::before {\n content: \"\\ea30\";\n}\n.mx-icon-filled.mx-icon-stopwatch::before {\n content: \"\\ea31\";\n}\n.mx-icon-filled.mx-icon-substract::before {\n content: \"\\ea32\";\n}\n.mx-icon-filled.mx-icon-subtract-circle::before {\n content: \"\\ea33\";\n}\n.mx-icon-filled.mx-icon-sun::before {\n content: \"\\ea34\";\n}\n.mx-icon-filled.mx-icon-swap::before {\n content: \"\\ea35\";\n}\n.mx-icon-filled.mx-icon-synchronize-arrow-clock::before {\n content: \"\\ea36\";\n}\n.mx-icon-filled.mx-icon-table-lamp::before {\n content: \"\\ea37\";\n}\n.mx-icon-filled.mx-icon-tablet::before {\n content: \"\\ea38\";\n}\n.mx-icon-filled.mx-icon-tag::before {\n content: \"\\ea39\";\n}\n.mx-icon-filled.mx-icon-tag-group::before {\n content: \"\\ea3a\";\n}\n.mx-icon-filled.mx-icon-task-list-multiple::before {\n content: \"\\ea3b\";\n}\n.mx-icon-filled.mx-icon-text-align-center::before {\n content: \"\\ea3c\";\n}\n.mx-icon-filled.mx-icon-text-align-justify::before {\n content: \"\\ea3d\";\n}\n.mx-icon-filled.mx-icon-text-align-left::before {\n content: \"\\ea3e\";\n}\n.mx-icon-filled.mx-icon-text-align-right::before {\n content: \"\\ea3f\";\n}\n.mx-icon-filled.mx-icon-text-background::before {\n content: \"\\ea40\";\n}\n.mx-icon-filled.mx-icon-text-bold::before {\n content: \"\\ea41\";\n}\n.mx-icon-filled.mx-icon-text-color::before {\n content: \"\\ea42\";\n}\n.mx-icon-filled.mx-icon-text-font::before {\n content: \"\\ea43\";\n}\n.mx-icon-filled.mx-icon-text-header::before {\n content: \"\\ea44\";\n}\n.mx-icon-filled.mx-icon-text-height::before {\n content: \"\\ea45\";\n}\n.mx-icon-filled.mx-icon-text-indent-left::before {\n content: \"\\ea46\";\n}\n.mx-icon-filled.mx-icon-text-indent-right::before {\n content: \"\\ea47\";\n}\n.mx-icon-filled.mx-icon-text-italic::before {\n content: \"\\ea48\";\n}\n.mx-icon-filled.mx-icon-text-size::before {\n content: \"\\ea49\";\n}\n.mx-icon-filled.mx-icon-text-subscript::before {\n content: \"\\ea4a\";\n}\n.mx-icon-filled.mx-icon-text-superscript::before {\n content: \"\\ea4b\";\n}\n.mx-icon-filled.mx-icon-text-width::before {\n content: \"\\ea4c\";\n}\n.mx-icon-filled.mx-icon-three-dots-menu-horizontal::before {\n content: \"\\ea4d\";\n}\n.mx-icon-filled.mx-icon-three-dots-menu-vertical::before {\n content: \"\\ea4e\";\n}\n.mx-icon-filled.mx-icon-thumbs-down::before {\n content: \"\\ea4f\";\n}\n.mx-icon-filled.mx-icon-thumbs-up::before {\n content: \"\\ea50\";\n}\n.mx-icon-filled.mx-icon-time-clock::before {\n content: \"\\ea51\";\n}\n.mx-icon-filled.mx-icon-tint::before {\n content: \"\\ea52\";\n}\n.mx-icon-filled.mx-icon-trash-can::before {\n content: \"\\ea53\";\n}\n.mx-icon-filled.mx-icon-tree::before {\n content: \"\\ea54\";\n}\n.mx-icon-filled.mx-icon-trophy::before {\n content: \"\\ea55\";\n}\n.mx-icon-filled.mx-icon-ui-webpage-slider::before {\n content: \"\\ea56\";\n}\n.mx-icon-filled.mx-icon-unchecked::before {\n content: \"\\ea57\";\n}\n.mx-icon-filled.mx-icon-undo::before {\n content: \"\\ea58\";\n}\n.mx-icon-filled.mx-icon-unlock::before {\n content: \"\\ea59\";\n}\n.mx-icon-filled.mx-icon-upload-bottom::before {\n content: \"\\ea5a\";\n}\n.mx-icon-filled.mx-icon-upload-button::before {\n content: \"\\ea5b\";\n}\n.mx-icon-filled.mx-icon-user::before {\n content: \"\\ea5c\";\n}\n.mx-icon-filled.mx-icon-user-3d-box::before {\n content: \"\\ea5d\";\n}\n.mx-icon-filled.mx-icon-user-man::before {\n content: \"\\ea5e\";\n}\n.mx-icon-filled.mx-icon-user-neutral-group::before {\n content: \"\\ea5f\";\n}\n.mx-icon-filled.mx-icon-user-neutral-pair::before {\n content: \"\\ea60\";\n}\n.mx-icon-filled.mx-icon-user-neutral-shield::before {\n content: \"\\ea61\";\n}\n.mx-icon-filled.mx-icon-user-neutral-sync::before {\n content: \"\\ea62\";\n}\n.mx-icon-filled.mx-icon-user-pair::before {\n content: \"\\ea63\";\n}\n.mx-icon-filled.mx-icon-user-woman::before {\n content: \"\\ea64\";\n}\n.mx-icon-filled.mx-icon-video-camera::before {\n content: \"\\ea65\";\n}\n.mx-icon-filled.mx-icon-view::before {\n content: \"\\ea66\";\n}\n.mx-icon-filled.mx-icon-view-off::before {\n content: \"\\ea67\";\n}\n.mx-icon-filled.mx-icon-wheat::before {\n content: \"\\ea68\";\n}\n.mx-icon-filled.mx-icon-whiteboard::before {\n content: \"\\ea69\";\n}\n.mx-icon-filled.mx-icon-wrench::before {\n content: \"\\ea6a\";\n}\n.mx-icon-filled.mx-icon-yen::before {\n content: \"\\ea6b\";\n}\n.mx-icon-filled.mx-icon-zoom-in::before {\n content: \"\\ea6c\";\n}\n.mx-icon-filled.mx-icon-zoom-out::before {\n content: \"\\ea6d\";\n}\n","@font-face {\n font-family: \"Atlas_Core$Atlas\";\n src: url(\"./fonts/Atlas_Core$Atlas.ttf\") format(\"truetype\");\n}\n.mx-icon-lined {\n display: inline-block;\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n font-family: \"Atlas_Core$Atlas\";\n}\n.mx-icon-lined.mx-icon-add::before {\n content: \"\\e900\";\n}\n.mx-icon-lined.mx-icon-add-circle::before {\n content: \"\\e901\";\n}\n.mx-icon-lined.mx-icon-airplane::before {\n content: \"\\e902\";\n}\n.mx-icon-lined.mx-icon-alarm-bell::before {\n content: \"\\e903\";\n}\n.mx-icon-lined.mx-icon-alarm-bell-off::before {\n content: \"\\e904\";\n}\n.mx-icon-lined.mx-icon-alert-circle::before {\n content: \"\\e905\";\n}\n.mx-icon-lined.mx-icon-alert-triangle::before {\n content: \"\\e906\";\n}\n.mx-icon-lined.mx-icon-align-bottom::before {\n content: \"\\e907\";\n}\n.mx-icon-lined.mx-icon-align-center::before {\n content: \"\\e908\";\n}\n.mx-icon-lined.mx-icon-align-left::before {\n content: \"\\e909\";\n}\n.mx-icon-lined.mx-icon-align-middle::before {\n content: \"\\e90a\";\n}\n.mx-icon-lined.mx-icon-align-right::before {\n content: \"\\e90b\";\n}\n.mx-icon-lined.mx-icon-align-top::before {\n content: \"\\e90c\";\n}\n.mx-icon-lined.mx-icon-analytics-bars::before {\n content: \"\\e90d\";\n}\n.mx-icon-lined.mx-icon-analytics-graph-bar::before {\n content: \"\\e90e\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-down::before {\n content: \"\\e90f\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-left::before {\n content: \"\\e910\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-right::before {\n content: \"\\e911\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-up::before {\n content: \"\\e912\";\n}\n.mx-icon-lined.mx-icon-arrow-down::before {\n content: \"\\e913\";\n}\n.mx-icon-lined.mx-icon-arrow-left::before {\n content: \"\\e914\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-down::before {\n content: \"\\e915\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-left::before {\n content: \"\\e916\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-right::before {\n content: \"\\e917\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-up::before {\n content: \"\\e918\";\n}\n.mx-icon-lined.mx-icon-arrow-right::before {\n content: \"\\e919\";\n}\n.mx-icon-lined.mx-icon-arrow-square-down::before {\n content: \"\\e91a\";\n}\n.mx-icon-lined.mx-icon-arrow-square-left::before {\n content: \"\\e91b\";\n}\n.mx-icon-lined.mx-icon-arrow-square-right::before {\n content: \"\\e91c\";\n}\n.mx-icon-lined.mx-icon-arrow-square-up::before {\n content: \"\\e91d\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-down::before {\n content: \"\\e91e\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-left::before {\n content: \"\\e91f\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-right::before {\n content: \"\\e920\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-up::before {\n content: \"\\e921\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-down::before {\n content: \"\\e922\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-left::before {\n content: \"\\e923\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-right::before {\n content: \"\\e924\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-up::before {\n content: \"\\e925\";\n}\n.mx-icon-lined.mx-icon-arrow-up::before {\n content: \"\\e926\";\n}\n.mx-icon-lined.mx-icon-arrows-retweet::before {\n content: \"\\e927\";\n}\n.mx-icon-lined.mx-icon-asterisk::before {\n content: \"\\e928\";\n}\n.mx-icon-lined.mx-icon-badge::before {\n content: \"\\e929\";\n}\n.mx-icon-lined.mx-icon-barcode::before {\n content: \"\\e92a\";\n}\n.mx-icon-lined.mx-icon-binoculars::before {\n content: \"\\e92b\";\n}\n.mx-icon-lined.mx-icon-bitcoin::before {\n content: \"\\e92c\";\n}\n.mx-icon-lined.mx-icon-blocks::before {\n content: \"\\e92d\";\n}\n.mx-icon-lined.mx-icon-book-closed::before {\n content: \"\\e92e\";\n}\n.mx-icon-lined.mx-icon-book-open::before {\n content: \"\\e92f\";\n}\n.mx-icon-lined.mx-icon-bookmark::before {\n content: \"\\e930\";\n}\n.mx-icon-lined.mx-icon-briefcase::before {\n content: \"\\e931\";\n}\n.mx-icon-lined.mx-icon-browser::before {\n content: \"\\e932\";\n}\n.mx-icon-lined.mx-icon-browser-code::before {\n content: \"\\e933\";\n}\n.mx-icon-lined.mx-icon-browser-page-text::before {\n content: \"\\e934\";\n}\n.mx-icon-lined.mx-icon-browser-search::before {\n content: \"\\e935\";\n}\n.mx-icon-lined.mx-icon-browser-trophy::before {\n content: \"\\e936\";\n}\n.mx-icon-lined.mx-icon-calendar::before {\n content: \"\\e937\";\n}\n.mx-icon-lined.mx-icon-calendar-1::before {\n content: \"\\e938\";\n}\n.mx-icon-lined.mx-icon-camera::before {\n content: \"\\e939\";\n}\n.mx-icon-lined.mx-icon-camping-tent::before {\n content: \"\\e93a\";\n}\n.mx-icon-lined.mx-icon-cash-payment-bill::before {\n content: \"\\e93b\";\n}\n.mx-icon-lined.mx-icon-cash-payment-bill-2::before {\n content: \"\\e93c\";\n}\n.mx-icon-lined.mx-icon-cd::before {\n content: \"\\e93d\";\n}\n.mx-icon-lined.mx-icon-charger::before {\n content: \"\\e93e\";\n}\n.mx-icon-lined.mx-icon-checkmark::before {\n content: \"\\e93f\";\n}\n.mx-icon-lined.mx-icon-checkmark-circle::before {\n content: \"\\e940\";\n}\n.mx-icon-lined.mx-icon-checkmark-shield::before {\n content: \"\\e941\";\n}\n.mx-icon-lined.mx-icon-checkmark-square::before {\n content: \"\\e942\";\n}\n.mx-icon-lined.mx-icon-chevron-down::before {\n content: \"\\e943\";\n}\n.mx-icon-lined.mx-icon-chevron-left::before {\n content: \"\\e944\";\n}\n.mx-icon-lined.mx-icon-chevron-right::before {\n content: \"\\e945\";\n}\n.mx-icon-lined.mx-icon-chevron-up::before {\n content: \"\\e946\";\n}\n.mx-icon-lined.mx-icon-cloud::before {\n content: \"\\e947\";\n}\n.mx-icon-lined.mx-icon-cloud-check::before {\n content: \"\\e948\";\n}\n.mx-icon-lined.mx-icon-cloud-data-transfer::before {\n content: \"\\e949\";\n}\n.mx-icon-lined.mx-icon-cloud-disable::before {\n content: \"\\e94a\";\n}\n.mx-icon-lined.mx-icon-cloud-download::before {\n content: \"\\e94b\";\n}\n.mx-icon-lined.mx-icon-cloud-lock::before {\n content: \"\\e94c\";\n}\n.mx-icon-lined.mx-icon-cloud-off::before {\n content: \"\\e94d\";\n}\n.mx-icon-lined.mx-icon-cloud-refresh::before {\n content: \"\\e94e\";\n}\n.mx-icon-lined.mx-icon-cloud-remove::before {\n content: \"\\e94f\";\n}\n.mx-icon-lined.mx-icon-cloud-search::before {\n content: \"\\e950\";\n}\n.mx-icon-lined.mx-icon-cloud-settings::before {\n content: \"\\e951\";\n}\n.mx-icon-lined.mx-icon-cloud-subtract::before {\n content: \"\\e952\";\n}\n.mx-icon-lined.mx-icon-cloud-sync::before {\n content: \"\\e953\";\n}\n.mx-icon-lined.mx-icon-cloud-upload::before {\n content: \"\\e954\";\n}\n.mx-icon-lined.mx-icon-cloud-warning::before {\n content: \"\\e955\";\n}\n.mx-icon-lined.mx-icon-cog::before {\n content: \"\\e956\";\n}\n.mx-icon-lined.mx-icon-cog-hand-give::before {\n content: \"\\e957\";\n}\n.mx-icon-lined.mx-icon-cog-play::before {\n content: \"\\e958\";\n}\n.mx-icon-lined.mx-icon-cog-shield::before {\n content: \"\\e959\";\n}\n.mx-icon-lined.mx-icon-color-bucket-brush::before {\n content: \"\\e95a\";\n}\n.mx-icon-lined.mx-icon-color-painting-palette::before {\n content: \"\\e95b\";\n}\n.mx-icon-lined.mx-icon-compass-directions::before {\n content: \"\\e95c\";\n}\n.mx-icon-lined.mx-icon-compressed::before {\n content: \"\\e95d\";\n}\n.mx-icon-lined.mx-icon-computer-chip::before {\n content: \"\\e95e\";\n}\n.mx-icon-lined.mx-icon-connect::before {\n content: \"\\e95f\";\n}\n.mx-icon-lined.mx-icon-connect-1::before {\n content: \"\\e960\";\n}\n.mx-icon-lined.mx-icon-console-terminal::before {\n content: \"\\e961\";\n}\n.mx-icon-lined.mx-icon-contacts::before {\n content: \"\\e962\";\n}\n.mx-icon-lined.mx-icon-contrast::before {\n content: \"\\e963\";\n}\n.mx-icon-lined.mx-icon-controls-backward::before {\n content: \"\\e964\";\n}\n.mx-icon-lined.mx-icon-controls-eject::before {\n content: \"\\e965\";\n}\n.mx-icon-lined.mx-icon-controls-fast-backward::before {\n content: \"\\e966\";\n}\n.mx-icon-lined.mx-icon-controls-fast-forward::before {\n content: \"\\e967\";\n}\n.mx-icon-lined.mx-icon-controls-forward::before {\n content: \"\\e968\";\n}\n.mx-icon-lined.mx-icon-controls-pause::before {\n content: \"\\e969\";\n}\n.mx-icon-lined.mx-icon-controls-play::before {\n content: \"\\e96a\";\n}\n.mx-icon-lined.mx-icon-controls-record::before {\n content: \"\\e96b\";\n}\n.mx-icon-lined.mx-icon-controls-shuffle::before {\n content: \"\\e96c\";\n}\n.mx-icon-lined.mx-icon-controls-step-backward::before {\n content: \"\\e96d\";\n}\n.mx-icon-lined.mx-icon-controls-step-forward::before {\n content: \"\\e96e\";\n}\n.mx-icon-lined.mx-icon-controls-stop::before {\n content: \"\\e96f\";\n}\n.mx-icon-lined.mx-icon-controls-volume-full::before {\n content: \"\\e970\";\n}\n.mx-icon-lined.mx-icon-controls-volume-low::before {\n content: \"\\e971\";\n}\n.mx-icon-lined.mx-icon-controls-volume-off::before {\n content: \"\\e972\";\n}\n.mx-icon-lined.mx-icon-conversation-question-warning::before {\n content: \"\\e973\";\n}\n.mx-icon-lined.mx-icon-copy::before {\n content: \"\\e974\";\n}\n.mx-icon-lined.mx-icon-credit-card::before {\n content: \"\\e975\";\n}\n.mx-icon-lined.mx-icon-crossroad-sign::before {\n content: \"\\e976\";\n}\n.mx-icon-lined.mx-icon-cube::before {\n content: \"\\e977\";\n}\n.mx-icon-lined.mx-icon-cutlery::before {\n content: \"\\e978\";\n}\n.mx-icon-lined.mx-icon-dashboard::before {\n content: \"\\e979\";\n}\n.mx-icon-lined.mx-icon-data-transfer::before {\n content: \"\\e97a\";\n}\n.mx-icon-lined.mx-icon-desktop::before {\n content: \"\\e97b\";\n}\n.mx-icon-lined.mx-icon-diamond::before {\n content: \"\\e97c\";\n}\n.mx-icon-lined.mx-icon-direction-buttons::before {\n content: \"\\e97d\";\n}\n.mx-icon-lined.mx-icon-direction-buttons-arrows::before {\n content: \"\\e97e\";\n}\n.mx-icon-lined.mx-icon-disable::before {\n content: \"\\e97f\";\n}\n.mx-icon-lined.mx-icon-document::before {\n content: \"\\e980\";\n}\n.mx-icon-lined.mx-icon-document-open::before {\n content: \"\\e981\";\n}\n.mx-icon-lined.mx-icon-document-save::before {\n content: \"\\e982\";\n}\n.mx-icon-lined.mx-icon-dollar::before {\n content: \"\\e983\";\n}\n.mx-icon-lined.mx-icon-double-bed::before {\n content: \"\\e984\";\n}\n.mx-icon-lined.mx-icon-double-chevron-left::before {\n content: \"\\e985\";\n}\n.mx-icon-lined.mx-icon-double-chevron-right::before {\n content: \"\\e986\";\n}\n.mx-icon-lined.mx-icon-download-bottom::before {\n content: \"\\e987\";\n}\n.mx-icon-lined.mx-icon-download-button::before {\n content: \"\\e988\";\n}\n.mx-icon-lined.mx-icon-duplicate::before {\n content: \"\\e989\";\n}\n.mx-icon-lined.mx-icon-email::before {\n content: \"\\e98a\";\n}\n.mx-icon-lined.mx-icon-equalizer::before {\n content: \"\\e98b\";\n}\n.mx-icon-lined.mx-icon-eraser::before {\n content: \"\\e98c\";\n}\n.mx-icon-lined.mx-icon-euro::before {\n content: \"\\e98d\";\n}\n.mx-icon-lined.mx-icon-expand-horizontal::before {\n content: \"\\e98e\";\n}\n.mx-icon-lined.mx-icon-expand-vertical::before {\n content: \"\\e98f\";\n}\n.mx-icon-lined.mx-icon-external::before {\n content: \"\\e990\";\n}\n.mx-icon-lined.mx-icon-file-pdf::before {\n content: \"\\e991\";\n}\n.mx-icon-lined.mx-icon-file-zip::before {\n content: \"\\e992\";\n}\n.mx-icon-lined.mx-icon-film::before {\n content: \"\\e993\";\n}\n.mx-icon-lined.mx-icon-filter::before {\n content: \"\\e994\";\n}\n.mx-icon-lined.mx-icon-fire::before {\n content: \"\\e995\";\n}\n.mx-icon-lined.mx-icon-flag::before {\n content: \"\\e996\";\n}\n.mx-icon-lined.mx-icon-flash::before {\n content: \"\\e997\";\n}\n.mx-icon-lined.mx-icon-floppy-disk::before {\n content: \"\\e998\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-arrow-down::before {\n content: \"\\e999\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-arrow-up::before {\n content: \"\\e99a\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-checkmark::before {\n content: \"\\e99b\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-group::before {\n content: \"\\e99c\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-remove::before {\n content: \"\\e99d\";\n}\n.mx-icon-lined.mx-icon-folder-closed::before {\n content: \"\\e99e\";\n}\n.mx-icon-lined.mx-icon-folder-open::before {\n content: \"\\e99f\";\n}\n.mx-icon-lined.mx-icon-folder-upload::before {\n content: \"\\e9a0\";\n}\n.mx-icon-lined.mx-icon-fruit-apple::before {\n content: \"\\e9a1\";\n}\n.mx-icon-lined.mx-icon-fullscreen::before {\n content: \"\\e9a2\";\n}\n.mx-icon-lined.mx-icon-gift::before {\n content: \"\\e9a3\";\n}\n.mx-icon-lined.mx-icon-github::before {\n content: \"\\e9a4\";\n}\n.mx-icon-lined.mx-icon-globe::before {\n content: \"\\e9a5\";\n}\n.mx-icon-lined.mx-icon-globe-1::before {\n content: \"\\e9a6\";\n}\n.mx-icon-lined.mx-icon-graduation-hat::before {\n content: \"\\e9a7\";\n}\n.mx-icon-lined.mx-icon-hammer::before {\n content: \"\\e9a8\";\n}\n.mx-icon-lined.mx-icon-hammer-wench::before {\n content: \"\\e9a9\";\n}\n.mx-icon-lined.mx-icon-hand-down::before {\n content: \"\\e9aa\";\n}\n.mx-icon-lined.mx-icon-hand-left::before {\n content: \"\\e9ab\";\n}\n.mx-icon-lined.mx-icon-hand-right::before {\n content: \"\\e9ac\";\n}\n.mx-icon-lined.mx-icon-hand-up::before {\n content: \"\\e9ad\";\n}\n.mx-icon-lined.mx-icon-handshake-business::before {\n content: \"\\e9ae\";\n}\n.mx-icon-lined.mx-icon-hard-drive::before {\n content: \"\\e9af\";\n}\n.mx-icon-lined.mx-icon-headphones::before {\n content: \"\\e9b0\";\n}\n.mx-icon-lined.mx-icon-headphones-mic::before {\n content: \"\\e9b1\";\n}\n.mx-icon-lined.mx-icon-heart::before {\n content: \"\\e9b2\";\n}\n.mx-icon-lined.mx-icon-hierarchy-files::before {\n content: \"\\e9b3\";\n}\n.mx-icon-lined.mx-icon-home::before {\n content: \"\\e9b4\";\n}\n.mx-icon-lined.mx-icon-hourglass::before {\n content: \"\\e9b5\";\n}\n.mx-icon-lined.mx-icon-hyperlink::before {\n content: \"\\e9b6\";\n}\n.mx-icon-lined.mx-icon-image::before {\n content: \"\\e9b7\";\n}\n.mx-icon-lined.mx-icon-image-collection::before {\n content: \"\\e9b8\";\n}\n.mx-icon-lined.mx-icon-images::before {\n content: \"\\e9b9\";\n}\n.mx-icon-lined.mx-icon-info-circle::before {\n content: \"\\e9ba\";\n}\n.mx-icon-lined.mx-icon-laptop::before {\n content: \"\\e9bb\";\n}\n.mx-icon-lined.mx-icon-layout::before {\n content: \"\\e9bc\";\n}\n.mx-icon-lined.mx-icon-layout-1::before {\n content: \"\\e9bd\";\n}\n.mx-icon-lined.mx-icon-layout-2::before {\n content: \"\\e9be\";\n}\n.mx-icon-lined.mx-icon-layout-column::before {\n content: \"\\e9bf\";\n}\n.mx-icon-lined.mx-icon-layout-horizontal::before {\n content: \"\\e9c0\";\n}\n.mx-icon-lined.mx-icon-layout-list::before {\n content: \"\\e9c1\";\n}\n.mx-icon-lined.mx-icon-layout-rounded::before {\n content: \"\\e9c2\";\n}\n.mx-icon-lined.mx-icon-layout-rounded-1::before {\n content: \"\\e9c3\";\n}\n.mx-icon-lined.mx-icon-leaf::before {\n content: \"\\e9c4\";\n}\n.mx-icon-lined.mx-icon-legal-certificate::before {\n content: \"\\e9c5\";\n}\n.mx-icon-lined.mx-icon-lego-block-stack::before {\n content: \"\\e9c6\";\n}\n.mx-icon-lined.mx-icon-light-bulb-shine::before {\n content: \"\\e9c7\";\n}\n.mx-icon-lined.mx-icon-list-bullets::before {\n content: \"\\e9c8\";\n}\n.mx-icon-lined.mx-icon-location-pin::before {\n content: \"\\e9c9\";\n}\n.mx-icon-lined.mx-icon-lock::before {\n content: \"\\e9ca\";\n}\n.mx-icon-lined.mx-icon-lock-key::before {\n content: \"\\e9cb\";\n}\n.mx-icon-lined.mx-icon-login::before {\n content: \"\\e9cc\";\n}\n.mx-icon-lined.mx-icon-login-1::before {\n content: \"\\e9cd\";\n}\n.mx-icon-lined.mx-icon-login-2::before {\n content: \"\\e9ce\";\n}\n.mx-icon-lined.mx-icon-logout::before {\n content: \"\\e9cf\";\n}\n.mx-icon-lined.mx-icon-logout-1::before {\n content: \"\\e9d0\";\n}\n.mx-icon-lined.mx-icon-luggage-travel::before {\n content: \"\\e9d1\";\n}\n.mx-icon-lined.mx-icon-magnet::before {\n content: \"\\e9d2\";\n}\n.mx-icon-lined.mx-icon-map-location-pin::before {\n content: \"\\e9d3\";\n}\n.mx-icon-lined.mx-icon-martini::before {\n content: \"\\e9d4\";\n}\n.mx-icon-lined.mx-icon-megaphone::before {\n content: \"\\e9d5\";\n}\n.mx-icon-lined.mx-icon-message-bubble::before {\n content: \"\\e9d6\";\n}\n.mx-icon-lined.mx-icon-message-bubble-add::before {\n content: \"\\e9d7\";\n}\n.mx-icon-lined.mx-icon-message-bubble-check::before {\n content: \"\\e9d8\";\n}\n.mx-icon-lined.mx-icon-message-bubble-disable::before {\n content: \"\\e9d9\";\n}\n.mx-icon-lined.mx-icon-message-bubble-edit::before {\n content: \"\\e9da\";\n}\n.mx-icon-lined.mx-icon-message-bubble-information::before {\n content: \"\\e9db\";\n}\n.mx-icon-lined.mx-icon-message-bubble-quotation::before {\n content: \"\\e9dc\";\n}\n.mx-icon-lined.mx-icon-message-bubble-remove::before {\n content: \"\\e9dd\";\n}\n.mx-icon-lined.mx-icon-message-bubble-typing::before {\n content: \"\\e9de\";\n}\n.mx-icon-lined.mx-icon-mobile-phone::before {\n content: \"\\e9df\";\n}\n.mx-icon-lined.mx-icon-modal-window::before {\n content: \"\\e9e0\";\n}\n.mx-icon-lined.mx-icon-monitor::before {\n content: \"\\e9e1\";\n}\n.mx-icon-lined.mx-icon-monitor-camera::before {\n content: \"\\e9e2\";\n}\n.mx-icon-lined.mx-icon-monitor-cash::before {\n content: \"\\e9e3\";\n}\n.mx-icon-lined.mx-icon-monitor-e-learning::before {\n content: \"\\e9e4\";\n}\n.mx-icon-lined.mx-icon-monitor-pie-line-graph::before {\n content: \"\\e9e5\";\n}\n.mx-icon-lined.mx-icon-moon-new::before {\n content: \"\\e9e6\";\n}\n.mx-icon-lined.mx-icon-mountain-flag::before {\n content: \"\\e9e7\";\n}\n.mx-icon-lined.mx-icon-move-down::before {\n content: \"\\e9e8\";\n}\n.mx-icon-lined.mx-icon-move-left::before {\n content: \"\\e9e9\";\n}\n.mx-icon-lined.mx-icon-move-right::before {\n content: \"\\e9ea\";\n}\n.mx-icon-lined.mx-icon-move-up::before {\n content: \"\\e9eb\";\n}\n.mx-icon-lined.mx-icon-music-note::before {\n content: \"\\e9ec\";\n}\n.mx-icon-lined.mx-icon-navigation-menu::before {\n content: \"\\e9ed\";\n}\n.mx-icon-lined.mx-icon-navigation-next::before {\n content: \"\\e9ee\";\n}\n.mx-icon-lined.mx-icon-notes-checklist::before {\n content: \"\\e9ef\";\n}\n.mx-icon-lined.mx-icon-notes-checklist-flip::before {\n content: \"\\e9f0\";\n}\n.mx-icon-lined.mx-icon-notes-paper-edit::before {\n content: \"\\e9f1\";\n}\n.mx-icon-lined.mx-icon-notes-paper-text::before {\n content: \"\\e9f2\";\n}\n.mx-icon-lined.mx-icon-office-sheet::before {\n content: \"\\e9f3\";\n}\n.mx-icon-lined.mx-icon-org-chart::before {\n content: \"\\e9f4\";\n}\n.mx-icon-lined.mx-icon-paper-clipboard::before {\n content: \"\\e9f5\";\n}\n.mx-icon-lined.mx-icon-paper-holder::before {\n content: \"\\e9f6\";\n}\n.mx-icon-lined.mx-icon-paper-holder-full::before {\n content: \"\\e9f7\";\n}\n.mx-icon-lined.mx-icon-paper-list::before {\n content: \"\\e9f8\";\n}\n.mx-icon-lined.mx-icon-paper-plane::before {\n content: \"\\e9f9\";\n}\n.mx-icon-lined.mx-icon-paperclip::before {\n content: \"\\e9fa\";\n}\n.mx-icon-lined.mx-icon-password-lock::before {\n content: \"\\e9fb\";\n}\n.mx-icon-lined.mx-icon-password-type::before {\n content: \"\\e9fc\";\n}\n.mx-icon-lined.mx-icon-paste::before {\n content: \"\\e9fd\";\n}\n.mx-icon-lined.mx-icon-pen-write-paper::before {\n content: \"\\e9fe\";\n}\n.mx-icon-lined.mx-icon-pencil::before {\n content: \"\\e9ff\";\n}\n.mx-icon-lined.mx-icon-pencil-write-paper::before {\n content: \"\\ea00\";\n}\n.mx-icon-lined.mx-icon-performance-graph-calculator::before {\n content: \"\\ea01\";\n}\n.mx-icon-lined.mx-icon-phone::before {\n content: \"\\ea02\";\n}\n.mx-icon-lined.mx-icon-phone-handset::before {\n content: \"\\ea03\";\n}\n.mx-icon-lined.mx-icon-piggy-bank::before {\n content: \"\\ea04\";\n}\n.mx-icon-lined.mx-icon-pin::before {\n content: \"\\ea05\";\n}\n.mx-icon-lined.mx-icon-plane-ticket::before {\n content: \"\\ea06\";\n}\n.mx-icon-lined.mx-icon-play-circle::before {\n content: \"\\ea07\";\n}\n.mx-icon-lined.mx-icon-pound-sterling::before {\n content: \"\\ea08\";\n}\n.mx-icon-lined.mx-icon-power-button::before {\n content: \"\\ea09\";\n}\n.mx-icon-lined.mx-icon-print::before {\n content: \"\\ea0a\";\n}\n.mx-icon-lined.mx-icon-progress-bars::before {\n content: \"\\ea0b\";\n}\n.mx-icon-lined.mx-icon-qr-code::before {\n content: \"\\ea0c\";\n}\n.mx-icon-lined.mx-icon-question-circle::before {\n content: \"\\ea0d\";\n}\n.mx-icon-lined.mx-icon-redo::before {\n content: \"\\ea0e\";\n}\n.mx-icon-lined.mx-icon-refresh::before {\n content: \"\\ea0f\";\n}\n.mx-icon-lined.mx-icon-remove::before {\n content: \"\\ea10\";\n}\n.mx-icon-lined.mx-icon-remove-circle::before {\n content: \"\\ea11\";\n}\n.mx-icon-lined.mx-icon-remove-shield::before {\n content: \"\\ea12\";\n}\n.mx-icon-lined.mx-icon-repeat::before {\n content: \"\\ea13\";\n}\n.mx-icon-lined.mx-icon-resize-full::before {\n content: \"\\ea14\";\n}\n.mx-icon-lined.mx-icon-resize-small::before {\n content: \"\\ea15\";\n}\n.mx-icon-lined.mx-icon-road::before {\n content: \"\\ea16\";\n}\n.mx-icon-lined.mx-icon-robot-head::before {\n content: \"\\ea17\";\n}\n.mx-icon-lined.mx-icon-rss-feed::before {\n content: \"\\ea18\";\n}\n.mx-icon-lined.mx-icon-ruble::before {\n content: \"\\ea19\";\n}\n.mx-icon-lined.mx-icon-scissors::before {\n content: \"\\ea1a\";\n}\n.mx-icon-lined.mx-icon-search::before {\n content: \"\\ea1b\";\n}\n.mx-icon-lined.mx-icon-server::before {\n content: \"\\ea1c\";\n}\n.mx-icon-lined.mx-icon-settings-slider::before {\n content: \"\\ea1d\";\n}\n.mx-icon-lined.mx-icon-settings-slider-1::before {\n content: \"\\ea1e\";\n}\n.mx-icon-lined.mx-icon-share::before {\n content: \"\\ea1f\";\n}\n.mx-icon-lined.mx-icon-share-1::before {\n content: \"\\ea20\";\n}\n.mx-icon-lined.mx-icon-share-arrow::before {\n content: \"\\ea21\";\n}\n.mx-icon-lined.mx-icon-shipment-box::before {\n content: \"\\ea22\";\n}\n.mx-icon-lined.mx-icon-shopping-cart::before {\n content: \"\\ea23\";\n}\n.mx-icon-lined.mx-icon-shopping-cart-full::before {\n content: \"\\ea24\";\n}\n.mx-icon-lined.mx-icon-signal-full::before {\n content: \"\\ea25\";\n}\n.mx-icon-lined.mx-icon-smart-house-garage::before {\n content: \"\\ea26\";\n}\n.mx-icon-lined.mx-icon-smart-watch-circle::before {\n content: \"\\ea27\";\n}\n.mx-icon-lined.mx-icon-smart-watch-square::before {\n content: \"\\ea28\";\n}\n.mx-icon-lined.mx-icon-sort::before {\n content: \"\\ea29\";\n}\n.mx-icon-lined.mx-icon-sort-alphabet-ascending::before {\n content: \"\\ea2a\";\n}\n.mx-icon-lined.mx-icon-sort-alphabet-descending::before {\n content: \"\\ea2b\";\n}\n.mx-icon-lined.mx-icon-sort-ascending::before {\n content: \"\\ea2c\";\n}\n.mx-icon-lined.mx-icon-sort-descending::before {\n content: \"\\ea2d\";\n}\n.mx-icon-lined.mx-icon-sort-numerical-ascending::before {\n content: \"\\ea2e\";\n}\n.mx-icon-lined.mx-icon-sort-numerical-descending::before {\n content: \"\\ea2f\";\n}\n.mx-icon-lined.mx-icon-star::before {\n content: \"\\ea30\";\n}\n.mx-icon-lined.mx-icon-stopwatch::before {\n content: \"\\ea31\";\n}\n.mx-icon-lined.mx-icon-substract::before {\n content: \"\\ea32\";\n}\n.mx-icon-lined.mx-icon-subtract-circle::before {\n content: \"\\ea33\";\n}\n.mx-icon-lined.mx-icon-sun::before {\n content: \"\\ea34\";\n}\n.mx-icon-lined.mx-icon-swap::before {\n content: \"\\ea35\";\n}\n.mx-icon-lined.mx-icon-synchronize-arrow-clock::before {\n content: \"\\ea36\";\n}\n.mx-icon-lined.mx-icon-table-lamp::before {\n content: \"\\ea37\";\n}\n.mx-icon-lined.mx-icon-tablet::before {\n content: \"\\ea38\";\n}\n.mx-icon-lined.mx-icon-tag::before {\n content: \"\\ea39\";\n}\n.mx-icon-lined.mx-icon-tag-group::before {\n content: \"\\ea3a\";\n}\n.mx-icon-lined.mx-icon-task-list-multiple::before {\n content: \"\\ea3b\";\n}\n.mx-icon-lined.mx-icon-text-align-center::before {\n content: \"\\ea3c\";\n}\n.mx-icon-lined.mx-icon-text-align-justify::before {\n content: \"\\ea3d\";\n}\n.mx-icon-lined.mx-icon-text-align-left::before {\n content: \"\\ea3e\";\n}\n.mx-icon-lined.mx-icon-text-align-right::before {\n content: \"\\ea3f\";\n}\n.mx-icon-lined.mx-icon-text-background::before {\n content: \"\\ea40\";\n}\n.mx-icon-lined.mx-icon-text-bold::before {\n content: \"\\ea41\";\n}\n.mx-icon-lined.mx-icon-text-color::before {\n content: \"\\ea42\";\n}\n.mx-icon-lined.mx-icon-text-font::before {\n content: \"\\ea43\";\n}\n.mx-icon-lined.mx-icon-text-header::before {\n content: \"\\ea44\";\n}\n.mx-icon-lined.mx-icon-text-height::before {\n content: \"\\ea45\";\n}\n.mx-icon-lined.mx-icon-text-indent-left::before {\n content: \"\\ea46\";\n}\n.mx-icon-lined.mx-icon-text-indent-right::before {\n content: \"\\ea47\";\n}\n.mx-icon-lined.mx-icon-text-italic::before {\n content: \"\\ea48\";\n}\n.mx-icon-lined.mx-icon-text-size::before {\n content: \"\\ea49\";\n}\n.mx-icon-lined.mx-icon-text-subscript::before {\n content: \"\\ea4a\";\n}\n.mx-icon-lined.mx-icon-text-superscript::before {\n content: \"\\ea4b\";\n}\n.mx-icon-lined.mx-icon-text-width::before {\n content: \"\\ea4c\";\n}\n.mx-icon-lined.mx-icon-three-dots-menu-horizontal::before {\n content: \"\\ea4d\";\n}\n.mx-icon-lined.mx-icon-three-dots-menu-vertical::before {\n content: \"\\ea4e\";\n}\n.mx-icon-lined.mx-icon-thumbs-down::before {\n content: \"\\ea4f\";\n}\n.mx-icon-lined.mx-icon-thumbs-up::before {\n content: \"\\ea50\";\n}\n.mx-icon-lined.mx-icon-time-clock::before {\n content: \"\\ea51\";\n}\n.mx-icon-lined.mx-icon-tint::before {\n content: \"\\ea52\";\n}\n.mx-icon-lined.mx-icon-trash-can::before {\n content: \"\\ea53\";\n}\n.mx-icon-lined.mx-icon-tree::before {\n content: \"\\ea54\";\n}\n.mx-icon-lined.mx-icon-trophy::before {\n content: \"\\ea55\";\n}\n.mx-icon-lined.mx-icon-ui-webpage-slider::before {\n content: \"\\ea56\";\n}\n.mx-icon-lined.mx-icon-unchecked::before {\n content: \"\\ea57\";\n}\n.mx-icon-lined.mx-icon-undo::before {\n content: \"\\ea58\";\n}\n.mx-icon-lined.mx-icon-unlock::before {\n content: \"\\ea59\";\n}\n.mx-icon-lined.mx-icon-upload-bottom::before {\n content: \"\\ea5a\";\n}\n.mx-icon-lined.mx-icon-upload-button::before {\n content: \"\\ea5b\";\n}\n.mx-icon-lined.mx-icon-user::before {\n content: \"\\ea5c\";\n}\n.mx-icon-lined.mx-icon-user-3d-box::before {\n content: \"\\ea5d\";\n}\n.mx-icon-lined.mx-icon-user-man::before {\n content: \"\\ea5e\";\n}\n.mx-icon-lined.mx-icon-user-neutral-group::before {\n content: \"\\ea5f\";\n}\n.mx-icon-lined.mx-icon-user-neutral-pair::before {\n content: \"\\ea60\";\n}\n.mx-icon-lined.mx-icon-user-neutral-shield::before {\n content: \"\\ea61\";\n}\n.mx-icon-lined.mx-icon-user-neutral-sync::before {\n content: \"\\ea62\";\n}\n.mx-icon-lined.mx-icon-user-pair::before {\n content: \"\\ea63\";\n}\n.mx-icon-lined.mx-icon-user-woman::before {\n content: \"\\ea64\";\n}\n.mx-icon-lined.mx-icon-video-camera::before {\n content: \"\\ea65\";\n}\n.mx-icon-lined.mx-icon-view::before {\n content: \"\\ea66\";\n}\n.mx-icon-lined.mx-icon-view-off::before {\n content: \"\\ea67\";\n}\n.mx-icon-lined.mx-icon-wheat::before {\n content: \"\\ea68\";\n}\n.mx-icon-lined.mx-icon-whiteboard::before {\n content: \"\\ea69\";\n}\n.mx-icon-lined.mx-icon-wrench::before {\n content: \"\\ea6a\";\n}\n.mx-icon-lined.mx-icon-yen::before {\n content: \"\\ea6b\";\n}\n.mx-icon-lined.mx-icon-zoom-in::before {\n content: \"\\ea6c\";\n}\n.mx-icon-lined.mx-icon-zoom-out::before {\n content: \"\\ea6d\";\n}\n","\n.mx-administration-lv-dg-list {\n &.mx-listview > ul {\n margin: 0;\n }\n\n // &.mx-listview > ul > li::after {\n // display: inline-block;\n // content: \", \";\n // }\n \n // &.mx-listview > ul > li {\n // display: inline-block;\n // }\n\n .mx-listview-empty {\n display: none;\n }\n\n .mx-button.mx-listview-loadMore {\n text-align: left;\n width: auto;\n margin: 8px 0 0 0;\n }\n \n}\n\n","/* ==========================================================================\n Take picture styles\n========================================================================== */\n\n.take-picture-wrapper {\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n flex-direction: column-reverse;\n justify-content: space-between;\n /* Should be higher than the the video. */\n z-index: 111;\n}\n.take-picture-video-element {\n position: absolute;\n /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */\n z-index: 110;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n object-fit: cover;\n width: 100%;\n height: 100%;\n background-color: black;\n}\n.take-picture-action-control-wrapper {\n display: flex;\n justify-content: center;\n flex-direction: row;\n align-items: center;\n /* should be higher than the video. */\n z-index: 111;\n margin-bottom: 74px;\n}\n.take-picture-action-switch-control-wrapper {\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n align-items: center;\n /* should be higher than the video. */\n z-index: 111;\n margin-bottom: 74px;\n}\n.take-picture-close-control-wrapper {\n display: flex;\n justify-content: flex-start;\n flex-direction: column;\n align-items: flex-start;\n /* should be higher than the video. */\n z-index: 111;\n}\n.take-picture-action-control {\n background-color: transparent;\n border-style: none;\n padding: 0;\n}\n.take-picture-action-spacing {\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.take-picture-switch-spacing {\n display: flex;\n flex: 1;\n justify-content: flex-end;\n align-items: center;\n}\n.take-picture-spacing-div {\n flex: 1;\n}\n.take-picture-action-control-inner {\n border-radius: 50%;\n background-color: white;\n border: 1px solid black;\n width: 58px;\n height: 58px;\n}\n.take-picture-button-wrapper {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n z-index: 111;\n}\n.take-picture-save-button {\n color: white;\n background-color: #264ae5;\n width: 100%;\n border-radius: 4px;\n height: 40px;\n font-size: 14px;\n line-height: 20px;\n text-align: center;\n border-style: none;\n}\n.take-picture-switch-control {\n background-color: transparent;\n border-style: none;\n padding: 0;\n margin-right: 22.33px;\n}\n.take-picture-close-control {\n margin: 30px 0 0 30px;\n border-style: none;\n padding: 0;\n background-color: transparent;\n}\n.take-picture-save-control {\n margin: 30px 30px 0 0;\n border-style: none;\n padding: 0;\n background-color: transparent;\n}\n.take-picture-confirm-wrapper {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: white;\n /* should be higher than the wrapper. */\n z-index: 112;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.take-picture-image {\n position: absolute;\n /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */\n z-index: 110;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n object-fit: cover;\n width: 100%;\n height: 100%;\n background-color: black;\n}\n/* Overwrite 'atlas_core/web/core/_legacy/_mxui.scss' for this particular widget because otherwise\n iOS Safari will in certain cases put the top and/or bottom bar on top of the overlay of this widget. */\n\n.mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested) {\n -webkit-overflow-scrolling: auto;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages\n========================================================================== */\n\n.alert {\n margin-top: 0;\n padding: $spacing-medium;\n border: 1px solid;\n border-radius: $border-radius-default;\n padding: $spacing-medium;\n}\n\n.alert-icon {\n font-size: $font-size-h3;\n}\n\n.alert-title {\n color: inherit;\n}\n\n.alert-description {\n color: inherit;\n}\n\n//Variations\n\n.alert-primary,\n.alert {\n color: $alert-primary-color;\n border-color: $alert-primary-border-color;\n background-color: $alert-primary-bg;\n}\n\n.alert-secondary {\n color: $alert-secondary-color;\n border-color: $alert-secondary-border-color;\n background-color: $alert-secondary-bg;\n}\n\n// Semantic variations\n.alert-success {\n color: $alert-success-color;\n border-color: $alert-success-border-color;\n background-color: $alert-success-bg;\n}\n\n.alert-warning {\n color: $alert-warning-color;\n border-color: $alert-warning-border-color;\n background-color: $alert-warning-bg;\n}\n\n.alert-danger {\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n}\n\n//== State\n//## Styling when component is in certain state\n//-------------------------------------------------------------------------------------------------------------------//\n.has-error .alert {\n margin-top: $spacing-small;\n margin-bottom: 0;\n}\n","//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #0a1325;\n$gray-dark: #474e5c;\n$gray: #787d87;\n$gray-light: #a9acb3;\n$gray-primary: #e7e7e9;\n$gray-lighter: #f8f8f8;\n\n//== Step 1: Brand Colors\n$brand-default: $gray-primary;\n$brand-primary: #264ae5;\n$brand-success: #3cb33d;\n$brand-warning: #eca51c;\n$brand-danger: #e33f4e;\n\n$brand-logo: false;\n$brand-logo-height: 32px;\n$brand-logo-width: 32px; // Only used for CSS brand logo\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px;\n$font-color-default: #0a1325;\n\n// Global Border Color\n$border-color-default: #ced0d3;\n$border-radius-default: 4px;\n\n// Topbar\n$topbar-bg: #020557;\n$topbar-minimalheight: 48px;\n$topbar-border-color: $border-color-default;\n\n// Sidebar\n$sidebar-bg: #24276c;\n\n// Topbar mobile\n$m-header-height: 45px;\n$m-header-bg: $topbar-bg;\n$m-header-color: #fff;\n$m-header-title-size: 16px;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: #fff;\n\n// Background Colors\n// Backgrounds\n$bg-color: #f8f8f8;\n$bg-color-secondary: #fff;\n\n// Default Link Color\n$link-color: $brand-primary;\n$link-hover-color: darken($link-color, 15%);\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater)\n$font-family-import: \"resources/fonts/open-sans/open-sans.css\";\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: \"Open Sans\", sans-serif;\n\n// Font Sizes\n$font-size-large: 18px;\n$font-size-small: 12px;\n\n// Font Weights\n$font-weight-light: 100;\n$font-weight-normal: normal;\n$font-weight-semibold: 600;\n$font-weight-bold: bold;\n\n// Font Size Headers\n$font-size-h1: 31px;\n$font-size-h2: 26px;\n$font-size-h3: 24px;\n$font-size-h4: 18px;\n$font-size-h5: $font-size-default;\n$font-size-h6: 12px;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-semibold;\n\n// Line Height\n$line-height-base: 1.428571429;\n\n// Spacing\n$font-header-margin: 0 0 8px 0;\n\n// Text Colors\n$font-color-detail: #6c717e;\n$font-color-header: #0a1325;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: unset;\n$navigation-item-padding: 8px;\n\n$navigation-font-size: 14px;\n$navigation-sub-font-size: $font-size-small;\n$navigation-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-color: #fff;\n$navigation-color-hover: #fff;\n$navigation-color-active: #fff;\n\n$navigation-sub-color: #fff;\n$navigation-sub-color-hover: #fff;\n$navigation-sub-color-active: #fff;\n\n// Navigation Sidebar\n$navsidebar-bg: $sidebar-bg;\n$navsidebar-bg-hover: darken($navsidebar-bg, 10%);\n$navsidebar-bg-active: darken($navsidebar-bg, 10%);\n\n$navsidebar-sub-bg: $navsidebar-bg-hover;\n$navsidebar-sub-bg-hover: $navsidebar-bg;\n$navsidebar-sub-bg-active: $navsidebar-bg;\n\n$navsidebar-border-color: $navsidebar-bg-hover;\n\n$navsidebar-font-size: $font-size-default;\n$navsidebar-sub-font-size: $font-size-small;\n$navsidebar-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-color: #fff;\n$navsidebar-color-hover: #fff;\n$navsidebar-color-active: #fff;\n\n$navsidebar-sub-color: #fff;\n$navsidebar-sub-color-hover: #fff;\n$navsidebar-sub-color-active: #fff;\n\n$navsidebar-width-closed: 52px;\n$navsidebar-width-open: 232px;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default;\n$navtopbar-sub-font-size: $font-size-small;\n$navtopbar-glyph-size: 1.2em; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg;\n$navtopbar-bg-hover: mix($topbar-bg, white, 85%);\n$navtopbar-bg-active: mix($topbar-bg, white, 85%);\n$navtopbar-color: #fff;\n$navtopbar-color-hover: $navtopbar-color;\n$navtopbar-color-active: $navtopbar-color;\n\n$navtopbar-sub-bg: $topbar-bg;\n$navtopbar-sub-bg-hover: $navtopbar-bg-hover;\n$navtopbar-sub-bg-active: $navtopbar-bg-hover;\n$navtopbar-sub-color: #fff;\n$navtopbar-sub-color-hover: #fff;\n$navtopbar-sub-color-active: #fff;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color;\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default;\n\n// Form Label\n$form-label-color: $font-color-default;\n$form-label-size: $font-size-default;\n$form-label-weight: $font-weight-semibold;\n$form-label-gutter: 8px;\n\n// Form Input dimensions\n$form-input-height: auto;\n$form-input-padding-y: 8px;\n$form-input-padding-x: 8px;\n$form-input-static-padding-y: 8px;\n$form-input-static-padding-x: 0;\n$form-input-font-size: $form-label-size;\n$form-input-line-height: $line-height-base;\n$form-input-border-radius: $border-radius-default;\n\n// Form Input styling\n$form-input-bg: #fff;\n$form-input-bg-focus: #fff;\n$form-input-bg-hover: $gray-primary;\n$form-input-bg-disabled: $bg-color;\n$form-input-color: $font-color-default;\n$form-input-focus-color: $form-input-color;\n$form-input-disabled-color: #9da1a8;\n$form-input-placeholder-color: #6c717c;\n$form-input-border-color: $gray-primary;\n$form-input-border-focus-color: $brand-primary;\n\n// Form Input Static styling\n$form-input-static-border-color: $gray-primary;\n\n// Form Group\n$form-group-margin-bottom: 16px;\n$form-group-gutter: 16px;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px;\n$btn-bordered: false; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default;\n\n// Button Background Color\n$btn-default-bg: #fff;\n$btn-primary-bg: $brand-primary;\n$btn-success-bg: $brand-success;\n$btn-warning-bg: $brand-warning;\n$btn-danger-bg: $brand-danger;\n\n// Button Border Color\n$btn-default-border-color: $gray-primary;\n$btn-primary-border-color: $brand-primary;\n$btn-success-border-color: $brand-success;\n$btn-warning-border-color: $brand-warning;\n$btn-danger-border-color: $brand-danger;\n\n// Button Text Color\n$btn-default-color: $brand-primary;\n$btn-primary-color: #fff;\n$btn-success-color: #fff;\n$btn-warning-color: #fff;\n$btn-danger-color: #fff;\n\n// Button Icon Color\n$btn-default-icon-color: $gray;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%);\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%);\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%);\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%);\n$btn-link-bg-hover: $gray-lighter;\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n\n$header-min-height: 240px;\n$header-bg-color: $brand-primary;\n$header-bgimage-filter: brightness(60%);\n$header-text-color: #fff;\n$header-text-color-detail: rgba(0, 0, 0, 0.2);\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%);\n$color-default-dark: mix($brand-default, black, 70%);\n$color-default-light: mix($brand-default, white, 40%);\n$color-default-lighter: mix($brand-default, white, 20%);\n\n$color-primary-darker: mix($brand-primary, black, 60%);\n$color-primary-dark: mix($brand-primary, black, 70%);\n$color-primary-light: mix($brand-primary, white, 40%);\n$color-primary-lighter: mix($brand-primary, white, 20%);\n\n$color-success-darker: mix($brand-success, black, 60%);\n$color-success-dark: mix($brand-success, black, 70%);\n$color-success-light: mix($brand-success, white, 40%);\n$color-success-lighter: mix($brand-success, white, 20%);\n\n$color-warning-darker: mix($brand-warning, black, 60%);\n$color-warning-dark: mix($brand-warning, black, 70%);\n$color-warning-light: mix($brand-warning, white, 40%);\n$color-warning-lighter: mix($brand-warning, white, 20%);\n\n$color-danger-darker: mix($brand-danger, black, 60%);\n$color-danger-dark: mix($brand-danger, black, 70%);\n$color-danger-light: mix($brand-danger, white, 40%);\n$color-danger-lighter: mix($brand-danger, white, 20%);\n\n$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c);\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default;\n\n// Spacing\n// Default\n$grid-padding-top: 16px;\n$grid-padding-right: 16px;\n$grid-padding-bottom: 16px;\n$grid-padding-left: 16px;\n\n// Listview\n$listview-padding-top: 16px;\n$listview-padding-right: 16px;\n$listview-padding-bottom: 16px;\n$listview-padding-left: 16px;\n\n// Dropdown\n$dropdown-outer-padding: 10px;\n$dropdown-border-radius: 7px;\n\n// Background Colors\n$grid-bg: transparent;\n$grid-bg-header: transparent; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #fff, 20%);\n$grid-bg-selected: mix($grid-border-color, #fff, 30%);\n$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%);\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #fff, 10%);\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary;\n\n// Text Color\n$grid-selected-color: $font-color-default;\n\n// Paging Colors\n$grid-paging-bg: transparent;\n$grid-paging-bg-hover: transparent;\n$grid-paging-border-color: transparent;\n$grid-paging-border-color-hover: transparent;\n$grid-paging-color: $gray-light;\n$grid-paging-color-hover: $brand-primary;\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail;\n$tabs-color-active: $font-color-default;\n$tabs-lined-color-active: $font-color-default;\n\n$tabs-lined-border-width: 3px;\n\n// Border Color\n$tabs-border-color: $border-color-default;\n$tabs-lined-border-color: $brand-primary;\n\n// Background Color\n$tabs-bg: transparent;\n$tabs-bg-pills: #e7e7e9;\n$tabs-bg-hover: lighten($tabs-border-color, 5);\n$tabs-bg-active: $brand-primary;\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent;\n\n// Border Color\n$modal-header-border-color: $border-color-default;\n\n// Text Color\n$modal-header-color: $font-color-default;\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent;\n$dataview-controls-border-color: $border-color-default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color;\n$dataview-emptymessage-color: $font-color-default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-success-bg: $color-success-lighter;\n$alert-warning-bg: $color-warning-lighter;\n$alert-danger-bg: $color-danger-lighter;\n\n// Text Color\n$alert-success-color: $color-success-darker;\n$alert-warning-color: $color-warning-darker;\n$alert-danger-color: $color-danger-darker;\n\n// Border Color\n$alert-success-border-color: $color-success-dark;\n$alert-warning-border-color: $color-warning-dark;\n$alert-danger-border-color: $color-danger-dark;\n\n//== Wizard\n\n$wizard-step-height: 48px;\n$wizard-step-number-size: 64px;\n$wizard-step-number-font-size: $font-size-h3;\n\n//Wizard step states\n$wizard-default-bg: #fff;\n$wizard-default-color: #fff;\n$wizard-default-step-color: $font-color-default;\n$wizard-default-border-color: $border-color-default;\n\n$wizard-active-bg: $color-primary-lighter;\n$wizard-active-color: $color-primary-dark;\n$wizard-active-step-color: $color-primary-dark;\n$wizard-active-border-color: $color-primary-dark;\n\n$wizard-visited-bg: $color-success-lighter;\n$wizard-visited-color: $color-success-dark;\n$wizard-visited-step-color: $color-success-dark;\n$wizard-visited-border-color: $color-success-dark;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default;\n$label-primary-bg: $brand-primary;\n$label-success-bg: $brand-success;\n$label-warning-bg: $brand-warning;\n$label-danger-bg: $brand-danger;\n\n// Border Color\n$label-default-border-color: $brand-default;\n$label-primary-border-color: $brand-primary;\n$label-success-border-color: $brand-success;\n$label-warning-border-color: $brand-warning;\n$label-danger-border-color: $brand-danger;\n\n// Text Color\n$label-default-color: $font-color-default;\n$label-primary-color: #fff;\n$label-success-color: #fff;\n$label-warning-color: #fff;\n$label-danger-color: #fff;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $gray-primary;\n$groupbox-primary-bg: $brand-primary;\n$groupbox-success-bg: $brand-success;\n$groupbox-warning-bg: $brand-warning;\n$groupbox-danger-bg: $brand-danger;\n$groupbox-white-bg: #fff;\n\n// Text Color\n$groupbox-default-color: $font-color-default;\n$groupbox-primary-color: #fff;\n$groupbox-success-color: #fff;\n$groupbox-warning-color: #fff;\n$groupbox-danger-color: #fff;\n$groupbox-white-color: $font-color-default;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default;\n$callout-success-color: $brand-success;\n$callout-warning-color: $brand-warning;\n$callout-danger-color: $brand-danger;\n\n// Background Color\n$callout-default-bg: $color-default-lighter;\n$callout-success-bg: $color-success-lighter;\n$callout-warning-bg: $color-warning-lighter;\n$callout-danger-bg: $color-danger-lighter;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary;\n$timeline-border-color: $border-color-default;\n$timeline-event-time-color: $brand-primary;\n\n// Sizes\n$timeline-icon-size: 18px;\n$timeline-image-size: 36px;\n\n//Timeline grouping\n$timeline-grouping-size: 120px;\n$timeline-grouping-border-radius: 30px;\n$timeline-grouping-border-color: $timeline-border-color;\n\n//== Accordions\n//## Extended variables for Accordion Widget\n\n// Default\n$accordion-header-default-bg: $bg-color-secondary;\n$accordion-header-default-bg-hover: $bg-color;\n$accordion-header-default-color: $font-color-header;\n$accordion-default-border-color: $border-color-default;\n\n$accordion-bg-striped: $grid-bg-striped;\n$accordion-bg-striped-hover: $grid-bg-selected;\n\n// Semantic background colors\n$accordion-header-primary-bg: $btn-primary-bg;\n$accordion-header-secondary-bg: $btn-default-bg;\n$accordion-header-success-bg: $btn-success-bg;\n$accordion-header-warning-bg: $btn-warning-bg;\n$accordion-header-danger-bg: $btn-danger-bg;\n\n$accordion-header-primary-bg-hover: $btn-primary-bg-hover;\n$accordion-header-secondary-bg-hover: $btn-default-bg-hover;\n$accordion-header-success-bg-hover: $btn-success-bg-hover;\n$accordion-header-warning-bg-hover: $btn-warning-bg-hover;\n$accordion-header-danger-bg-hover: $btn-danger-bg-hover;\n\n// Semantic text colors\n$accordion-header-primary-color: $btn-primary-color;\n$accordion-header-secondary-color: $btn-default-color;\n$accordion-header-success-color: $btn-success-color;\n$accordion-header-warning-color: $btn-warning-color;\n$accordion-header-danger-color: $btn-danger-color;\n\n// Semantic border colors\n$accordion-primary-border-color: $btn-primary-border-color;\n$accordion-secondary-border-color: $btn-default-border-color;\n$accordion-success-border-color: $btn-success-border-color;\n$accordion-warning-border-color: $btn-warning-border-color;\n$accordion-danger-border-color: $btn-danger-border-color;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Smallest spacing\n$spacing-smallest: 2px;\n\n// Smaller spacing\n$spacing-smaller: 4px;\n\n// Small spacing\n$spacing-small: 8px;\n\n// Medium spacing\n$spacing-medium: 16px;\n$t-spacing-medium: 16px;\n$m-spacing-medium: 16px;\n\n// Large spacing\n$spacing-large: 24px;\n$t-spacing-large: 24px;\n$m-spacing-large: 16px;\n\n// Larger spacing\n$spacing-larger: 32px;\n\n// Largest spacing\n$spacing-largest: 48px;\n\n// Layout spacing\n$layout-spacing-top: 24px;\n$layout-spacing-right: 24px;\n$layout-spacing-bottom: 24px;\n$layout-spacing-left: 24px;\n\n$t-layout-spacing-top: 24px;\n$t-layout-spacing-right: 24px;\n$t-layout-spacing-bottom: 24px;\n$t-layout-spacing-left: 24px;\n\n$m-layout-spacing-top: 16px;\n$m-layout-spacing-right: 16px;\n$m-layout-spacing-bottom: 16px;\n$m-layout-spacing-left: 16px;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left;\n\n// Gutter size\n$gutter-size: 8px;\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px;\n$padding-table-cell-bottom: 8px;\n$padding-table-cell-left: 8px;\n$padding-table-cell-right: 8px;\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px;\n$screen-sm: 576px;\n$screen-md: 768px;\n$screen-lg: 992px;\n$screen-xl: 1200px;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: calc(#{$screen-sm} - 1px);\n$screen-sm-max: calc(#{$screen-md} - 1px);\n$screen-md-max: calc(#{$screen-lg} - 1px);\n$screen-lg-max: calc(#{$screen-xl} - 1px);\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true; // ./base/flex.scss\n$important-spacing: true; // ./base/spacing.scss\n$important-helpers: true; // ./helpers/helperclasses.scss\n\n//===== Legacy variables =====\n\n//== Step 1: Brand Colors\n$brand-inverse: #24276c;\n$brand-info: #0086d9;\n\n//== Step 2: UI Customization\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Button Background Color\n$btn-inverse-bg: $brand-inverse;\n$btn-info-bg: $brand-info;\n\n// Button Border Color\n$btn-inverse-border-color: $brand-inverse;\n$btn-info-border-color: $brand-info;\n\n// Button Text Color\n$btn-inverse-color: #fff;\n$btn-info-color: #fff;\n\n// Button Background Color\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%);\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%);\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-inverse-darker: mix($brand-inverse, black, 60%);\n$color-inverse-dark: mix($brand-inverse, black, 70%);\n$color-inverse-light: mix($brand-inverse, white, 60%);\n$color-inverse-lighter: mix($brand-inverse, white, 20%);\n\n$color-info-darker: mix($brand-info, black, 60%);\n$color-info-dark: mix($brand-info, black, 70%);\n$color-info-light: mix($brand-info, white, 60%);\n$color-info-lighter: mix($brand-info, white, 20%);\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-primary-lighter;\n\n// Text Color\n$alert-info-color: $color-primary-darker;\n\n// Border Color\n$alert-info-border-color: $color-primary-dark;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-info-bg: $brand-info;\n$label-inverse-bg: $brand-inverse;\n\n// Border Color\n$label-info-border-color: $brand-info;\n$label-inverse-border-color: $brand-inverse;\n\n// Text Color\n$label-info-color: #fff;\n$label-inverse-color: #fff;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-inverse-bg: $brand-inverse;\n$groupbox-info-bg: $brand-info;\n\n// Text Color\n$groupbox-inverse-color: #fff;\n$groupbox-info-color: #fff;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-info-color: $brand-info;\n\n// Background Color\n$callout-info-bg: $color-info-lighter;\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #3b4251 !default;\n$gray-dark: #606671 !default;\n$gray: #787d87 !default;\n$gray-light: #6c7180 !default;\n$gray-primary: #ced0d3 !default;\n$gray-lighter: #f8f8f8 !default;\n\n//== Step 1: Brand Colors\n$brand-default: $gray-primary !default;\n$brand-primary: #264ae5 !default;\n$brand-success: #3cb33d !default;\n$brand-warning: #eca51c !default;\n$brand-danger: #e33f4e !default;\n\n$brand-logo: false !default;\n$brand-logo-height: 26px !default;\n$brand-logo-width: 26px !default; // Only used for CSS brand logo\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px !default;\n$font-color-default: #6c717e !default;\n\n// Global Border Color\n$border-color-default: #ced0d3 !default;\n$border-radius-default: 5px !default;\n\n// Topbar\n$topbar-bg: #fff !default;\n$topbar-minimalheight: 60px !default;\n$topbar-border-color: $border-color-default !default;\n\n// Topbar mobile\n$m-header-height: 45px !default;\n$m-header-bg: $brand-primary !default;\n$m-header-color: #fff !default;\n$m-header-title-size: 16px !default;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: $font-color-default !default;\n\n// Background Colors\n// Backgrounds\n$bg-color: #f8f8f8 !default;\n$bg-color-secondary: #fff !default;\n\n// Default Link Color\n$link-color: $brand-primary !default;\n$link-hover-color: darken($link-color, 15%) !default;\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater)\n$font-family-import: \"resources/fonts/open-sans/open-sans.css\" !default;\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: \"Open Sans\", sans-serif !default;\n\n// Font Sizes\n$font-size-large: 18px !default;\n$font-size-small: 12px !default;\n\n// Font Weights\n$font-weight-light: 100 !default;\n$font-weight-normal: normal !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: bold !default;\n\n// Font Size Headers\n$font-size-h1: 31px !default;\n$font-size-h2: 26px !default;\n$font-size-h3: 24px !default;\n$font-size-h4: 18px !default;\n$font-size-h5: $font-size-default !default;\n$font-size-h6: 12px !default;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-semibold !default;\n\n// Line Height\n$line-height-base: 1.428571429 !default;\n\n// Spacing\n$font-header-margin: 0 0 8px 0 !default;\n\n// Text Colors\n$font-color-detail: #6c717e !default;\n$font-color-header: #0a1326 !default;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: unset !default;\n$navigation-item-padding: 16px !default;\n\n$navigation-font-size: $font-size-default !default;\n$navigation-sub-font-size: $font-size-small !default;\n$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-color: #fff !default;\n$navigation-color-hover: #fff !default;\n$navigation-color-active: #fff !default;\n\n$navigation-sub-color: #aaa !default;\n$navigation-sub-color-hover: $brand-primary !default;\n$navigation-sub-color-active: $brand-primary !default;\n\n// Navigation Sidebar\n$navsidebar-font-size: $font-size-default !default;\n$navsidebar-sub-font-size: $font-size-small !default;\n$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-color: #fff !default;\n$navsidebar-color-hover: #fff !default;\n$navsidebar-color-active: #fff !default;\n\n$navsidebar-sub-color: #aaa !default;\n$navsidebar-sub-color-hover: $brand-primary !default;\n$navsidebar-sub-color-active: $brand-primary !default;\n\n$navsidebar-width-closed: 52px !default;\n$navsidebar-width-open: 232px !default;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default !default;\n$navtopbar-sub-font-size: $font-size-small !default;\n$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg !default;\n$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default;\n$navtopbar-bg-active: darken($navtopbar-bg, 8) !default;\n$navtopbar-color: $font-color-default !default;\n$navtopbar-color-hover: $navtopbar-color !default;\n$navtopbar-color-active: $navtopbar-color !default;\n\n$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default;\n$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default;\n$navtopbar-sub-bg-active: $navtopbar-sub-bg !default;\n$navtopbar-sub-color: #aaa !default;\n$navtopbar-sub-color-hover: $brand-primary !default;\n$navtopbar-sub-color-active: $brand-primary !default;\n\n//== Cards\n// Shadow color\n$shadow-color-border: rgba($gray-primary, 0.5);\n$shadow-color: rgba($gray-primary, 0.66);\n\n//Shadow size\n$shadow-small: 0 2px 4px 0;\n$shadow-medium: 0 5px 7px 0;\n$shadow-large: 0 8px 10px 0;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color !default;\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default !default;\n\n// Form Label\n$form-label-size: $font-size-default !default;\n$form-label-weight: $font-weight-semibold !default;\n$form-label-gutter: 8px !default;\n\n// Form Input dimensions\n$form-input-height: auto !default;\n$form-input-padding-y: 8px !default;\n$form-input-padding-x: 8px !default;\n$form-input-static-padding-y: 8px !default;\n$form-input-static-padding-x: 0 !default;\n$form-input-font-size: $form-label-size !default;\n$form-input-line-height: $line-height-base !default;\n$form-input-border-radius: $border-radius-default !default;\n\n// Form Input styling\n$form-input-bg: #fff !default;\n$form-input-bg-focus: #fff !default;\n$form-input-bg-hover: $gray-primary !default;\n$form-input-bg-disabled: $bg-color !default;\n$form-input-color: $font-color-default !default;\n$form-input-focus-color: $form-input-color !default;\n$form-input-disabled-color: #9da1a8 !default;\n$form-input-placeholder-color: #6c717c !default;\n$form-input-border-color: $gray-primary !default;\n$form-input-border-focus-color: $brand-primary !default;\n\n// Form Input Static styling\n$form-input-static-border-color: $gray-primary !default;\n\n// Form Group\n$form-group-margin-bottom: 16px !default;\n$form-group-gutter: 16px !default;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px !default;\n$btn-bordered: false !default; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default !default;\n\n// Button Background Color\n$btn-default-bg: #fff !default;\n$btn-primary-bg: $brand-primary !default;\n$btn-success-bg: $brand-success !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-danger-bg: $brand-danger !default;\n\n// Button Border Color\n$btn-default-border-color: $gray-primary !default;\n$btn-primary-border-color: $brand-primary !default;\n$btn-success-border-color: $brand-success !default;\n$btn-warning-border-color: $brand-warning !default;\n$btn-danger-border-color: $brand-danger !default;\n\n// Button Text Color\n$btn-default-color: $brand-primary !default;\n$btn-primary-color: #fff !default;\n$btn-success-color: #fff !default;\n$btn-warning-color: #fff !default;\n$btn-danger-color: #fff !default;\n\n// Button Icon Color\n$btn-default-icon-color: $gray !default;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color !default;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default;\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default;\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default;\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default;\n$btn-link-bg-hover: $gray-lighter !default;\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n\n$header-min-height: 240px !default;\n$header-bg-color: $brand-primary !default;\n$header-bgimage-filter: brightness(60%) !default;\n$header-text-color: #fff !default;\n$header-text-color-detail: rgba(0, 0, 0, 0.2) !default;\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%) !default;\n$color-default-dark: mix($brand-default, black, 70%) !default;\n$color-default-light: mix($brand-default, white, 20%) !default;\n$color-default-lighter: mix($brand-default, white, 10%) !default;\n\n$color-primary-darker: mix($brand-primary, black, 60%) !default;\n$color-primary-dark: mix($brand-primary, black, 70%) !default;\n$color-primary-light: mix($brand-primary, white, 20%) !default;\n$color-primary-lighter: mix($brand-primary, white, 10%) !default;\n\n$color-success-darker: mix($brand-success, black, 60%) !default;\n$color-success-dark: mix($brand-success, black, 70%) !default;\n$color-success-light: mix($brand-success, white, 20%) !default;\n$color-success-lighter: mix($brand-success, white, 10%) !default;\n\n$color-warning-darker: mix($brand-warning, black, 60%) !default;\n$color-warning-dark: mix($brand-warning, black, 70%) !default;\n$color-warning-light: mix($brand-warning, white, 20%) !default;\n$color-warning-lighter: mix($brand-warning, white, 10%) !default;\n\n$color-danger-darker: mix($brand-danger, black, 60%) !default;\n$color-danger-dark: mix($brand-danger, black, 70%) !default;\n$color-danger-light: mix($brand-danger, white, 20%) !default;\n$color-danger-lighter: mix($brand-danger, white, 10%) !default;\n\n$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c) !default;\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default !default;\n\n// Spacing\n// Default\n$grid-padding-top: 16px !default;\n$grid-padding-right: 16px !default;\n$grid-padding-bottom: 16px !default;\n$grid-padding-left: 16px !default;\n\n// Listview\n$listview-padding-top: 16px !default;\n$listview-padding-right: 16px !default;\n$listview-padding-bottom: 16px !default;\n$listview-padding-left: 16px !default;\n\n// Background Colors\n$grid-bg: transparent !default;\n$grid-bg-header: transparent !default; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #fff, 20%) !default;\n$grid-bg-selected: mix($grid-border-color, #fff, 30%) !default;\n$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%) !default;\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #fff, 10%) !default;\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary !default;\n\n// Text Color\n$grid-selected-color: $font-color-default !default;\n\n// Paging Colors\n$grid-paging-bg: transparent !default;\n$grid-paging-bg-hover: transparent !default;\n$grid-paging-border-color: transparent !default;\n$grid-paging-border-color-hover: transparent !default;\n$grid-paging-color: $gray-light !default;\n$grid-paging-color-hover: $brand-primary !default;\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail !default;\n$tabs-color-active: $font-color-default !default;\n$tabs-lined-color-active: $font-color-default !default;\n\n$tabs-lined-border-width: 3px !default;\n\n// Border Color\n$tabs-border-color: $border-color-default !default;\n$tabs-lined-border-color: $brand-primary !default;\n\n// Background Color\n$tabs-bg: transparent !default;\n$tabs-bg-pills: #e7e7e9 !default;\n$tabs-bg-hover: lighten($tabs-border-color, 5) !default;\n$tabs-bg-active: $brand-primary !default;\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent !default;\n\n// Border Color\n$modal-header-border-color: $border-color-default !default;\n\n// Text Color\n$modal-header-color: $font-color-default !default;\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent !default;\n$dataview-controls-border-color: $border-color-default !default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color !default;\n$dataview-emptymessage-color: $font-color-default !default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-primary-bg: $color-primary-lighter !default;\n$alert-secondary-bg: $color-primary-lighter !default;\n$alert-success-bg: $color-success-lighter !default;\n$alert-warning-bg: $color-warning-lighter !default;\n$alert-danger-bg: $color-danger-lighter !default;\n\n// Text Color\n$alert-primary-color: $color-primary-darker !default;\n$alert-secondary-color: $color-primary-darker !default;\n$alert-success-color: $color-success-darker !default;\n$alert-warning-color: $color-warning-darker !default;\n$alert-danger-color: $color-danger-darker !default;\n\n// Border Color\n$alert-primary-border-color: $color-primary-dark !default;\n$alert-secondary-border-color: $color-primary-dark !default;\n$alert-success-border-color: $color-success-dark !default;\n$alert-warning-border-color: $color-warning-dark !default;\n$alert-danger-border-color: $color-danger-dark !default;\n\n//== Wizard\n\n$wizard-step-height: 48px !default;\n$wizard-step-number-size: 64px !default;\n$wizard-step-number-font-size: $font-size-h3 !default;\n\n//Wizard states\n$wizard-default: #fff !default;\n$wizard-active: $brand-primary !default;\n$wizard-visited: $brand-success !default;\n\n//Wizard step states\n$wizard-default-bg: $wizard-default !default;\n$wizard-default-color: $wizard-default !default;\n$wizard-default-step-color: $font-color-default !default;\n$wizard-default-border-color: $border-color-default !default;\n\n$wizard-active-bg: $wizard-active !default;\n$wizard-active-color: $wizard-default !default;\n$wizard-active-step-color: $wizard-active !default;\n$wizard-active-border-color: $wizard-active !default;\n\n$wizard-visited-bg: $wizard-visited !default;\n$wizard-visited-color: $wizard-default !default;\n$wizard-visited-step-color: $wizard-visited !default;\n$wizard-visited-border-color: $wizard-visited !default;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default !default;\n$label-primary-bg: $brand-primary !default;\n$label-success-bg: $brand-success !default;\n$label-warning-bg: $brand-warning !default;\n$label-danger-bg: $brand-danger !default;\n\n// Border Color\n$label-default-border-color: $brand-default !default;\n$label-primary-border-color: $brand-primary !default;\n$label-success-border-color: $brand-success !default;\n$label-warning-border-color: $brand-warning !default;\n$label-danger-border-color: $brand-danger !default;\n\n// Text Color\n$label-default-color: $font-color-default !default;\n$label-primary-color: #fff !default;\n$label-success-color: #fff !default;\n$label-warning-color: #fff !default;\n$label-danger-color: #fff !default;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $gray-primary !default;\n$groupbox-primary-bg: $brand-primary !default;\n$groupbox-success-bg: $brand-success !default;\n$groupbox-warning-bg: $brand-warning !default;\n$groupbox-danger-bg: $brand-danger !default;\n$groupbox-white-bg: #fff !default;\n\n// Text Color\n$groupbox-default-color: $font-color-default !default;\n$groupbox-primary-color: #fff !default;\n$groupbox-success-color: #fff !default;\n$groupbox-warning-color: #fff !default;\n$groupbox-danger-color: #fff !default;\n$groupbox-white-color: $font-color-default !default;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default !default;\n$callout-primary-color: $brand-primary !default;\n$callout-success-color: $brand-success !default;\n$callout-warning-color: $brand-warning !default;\n$callout-danger-color: $brand-danger !default;\n\n// Background Color\n$callout-default-bg: $color-default-lighter !default;\n$callout-primary-bg: $color-primary-lighter !default;\n$callout-success-bg: $color-success-lighter !default;\n$callout-warning-bg: $color-warning-lighter !default;\n$callout-danger-bg: $color-danger-lighter !default;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary !default;\n$timeline-border-color: $border-color-default !default;\n$timeline-event-time-color: $brand-primary !default;\n\n// Sizes\n$timeline-icon-size: 18px !default;\n$timeline-image-size: 36px !default;\n\n//Timeline grouping\n$timeline-grouping-size: 120px !default;\n$timeline-grouping-border-radius: 30px !default;\n$timeline-grouping-border-color: $timeline-border-color !default;\n\n//== Accordions\n//## Extended variables for Accordion Widget\n\n// Default\n$accordion-header-default-bg: $bg-color-secondary !default;\n$accordion-header-default-bg-hover: $bg-color !default;\n$accordion-header-default-color: $font-color-header !default;\n$accordion-default-border-color: $border-color-default !default;\n\n$accordion-bg-striped: $grid-bg-striped !default;\n$accordion-bg-striped-hover: $grid-bg-selected !default;\n\n// Semantic background colors\n$accordion-header-primary-bg: $btn-primary-bg !default;\n$accordion-header-secondary-bg: $btn-default-bg !default;\n$accordion-header-success-bg: $btn-success-bg !default;\n$accordion-header-warning-bg: $btn-warning-bg !default;\n$accordion-header-danger-bg: $btn-danger-bg !default;\n\n$accordion-header-primary-bg-hover: $btn-primary-bg-hover !default;\n$accordion-header-secondary-bg-hover: $btn-default-bg-hover !default;\n$accordion-header-success-bg-hover: $btn-success-bg-hover !default;\n$accordion-header-warning-bg-hover: $btn-warning-bg-hover !default;\n$accordion-header-danger-bg-hover: $btn-danger-bg-hover !default;\n\n// Semantic text colors\n$accordion-header-primary-color: $btn-primary-color !default;\n$accordion-header-secondary-color: $btn-default-color !default;\n$accordion-header-success-color: $btn-success-color !default;\n$accordion-header-warning-color: $btn-warning-color !default;\n$accordion-header-danger-color: $btn-danger-color !default;\n\n// Semantic border colors\n$accordion-primary-border-color: $btn-primary-border-color !default;\n$accordion-secondary-border-color: $btn-default-border-color !default;\n$accordion-success-border-color: $btn-success-border-color !default;\n$accordion-warning-border-color: $btn-warning-border-color !default;\n$accordion-danger-border-color: $btn-danger-border-color !default;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Smallest spacing\n$spacing-smallest: 2px !default;\n\n// Smaller spacing\n$spacing-smaller: 4px !default;\n\n// Small spacing\n$spacing-small: 8px !default;\n\n// Medium spacing\n$spacing-medium: 16px !default;\n$t-spacing-medium: 16px !default;\n$m-spacing-medium: 16px !default;\n\n// Large spacing\n$spacing-large: 24px !default;\n$t-spacing-large: 24px !default;\n$m-spacing-large: 16px !default;\n\n// Larger spacing\n$spacing-larger: 32px !default;\n\n// Largest spacing\n$spacing-largest: 48px !default;\n\n// Layout spacing\n$layout-spacing-top: 24px !default;\n$layout-spacing-right: 24px !default;\n$layout-spacing-bottom: 24px !default;\n$layout-spacing-left: 24px !default;\n\n$t-layout-spacing-top: 24px !default;\n$t-layout-spacing-right: 24px !default;\n$t-layout-spacing-bottom: 24px !default;\n$t-layout-spacing-left: 24px !default;\n\n$m-layout-spacing-top: 16px !default;\n$m-layout-spacing-right: 16px !default;\n$m-layout-spacing-bottom: 16px !default;\n$m-layout-spacing-left: 16px !default;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default;\n\n// Gutter size\n$gutter-size: 8px !default;\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px !default;\n$padding-table-cell-bottom: 8px !default;\n$padding-table-cell-left: 8px !default;\n$padding-table-cell-right: 8px !default;\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px !default;\n$screen-sm: 576px !default;\n$screen-md: 768px !default;\n$screen-lg: 992px !default;\n$screen-xl: 1200px !default;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: calc(#{$screen-sm} - 1px) !default;\n$screen-sm-max: calc(#{$screen-md} - 1px) !default;\n$screen-md-max: calc(#{$screen-lg} - 1px) !default;\n$screen-lg-max: calc(#{$screen-xl} - 1px) !default;\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true !default; // ./base/flex.scss\n$important-spacing: true !default; // ./base/spacing.scss\n$important-helpers: true !default; // ./helpers/helperclasses.scss\n\n//===== Legacy variables =====\n\n//== Step 1: Brand Colors\n$brand-inverse: #24276c !default;\n$brand-info: #0086d9 !default;\n\n//== Step 2: UI Customization\n// Sidebar\n$sidebar-bg: $brand-inverse !default;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-bg: $brand-inverse !default;\n$navigation-bg-hover: lighten($navigation-bg, 4) !default;\n$navigation-bg-active: lighten($navigation-bg, 8) !default;\n\n$navigation-sub-bg: darken($navigation-bg, 4) !default;\n$navigation-sub-bg-hover: $navigation-sub-bg !default;\n$navigation-sub-bg-active: $navigation-sub-bg !default;\n\n$navigation-border-color: $navigation-bg-hover !default;\n\n// Navigation Sidebar\n$navsidebar-bg: $sidebar-bg !default;\n$navsidebar-bg-hover: darken($navsidebar-bg, 4) !default;\n$navsidebar-bg-active: darken($navsidebar-bg, 8) !default;\n\n$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default;\n$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default;\n$navsidebar-sub-bg-active: $navsidebar-sub-bg !default;\n\n$navsidebar-border-color: $navsidebar-bg-hover !default;\n\n//== Form\n//## Used in components/inputs\n\n// Form Label\n$form-label-color: $brand-inverse !default;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Button Background Color\n$btn-inverse-bg: $brand-inverse !default;\n$btn-info-bg: $brand-info !default;\n\n// Button Border Color\n$btn-inverse-border-color: $brand-inverse !default;\n$btn-info-border-color: $brand-info !default;\n\n// Button Text Color\n$btn-inverse-color: #fff !default;\n$btn-info-color: #fff !default;\n\n// Button Background Color\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default;\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default;\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-inverse-darker: mix($brand-inverse, black, 60%) !default;\n$color-inverse-dark: mix($brand-inverse, black, 70%) !default;\n$color-inverse-light: mix($brand-inverse, white, 40%) !default;\n$color-inverse-lighter: mix($brand-inverse, white, 20%) !default;\n\n$color-info-darker: mix($brand-info, black, 60%) !default;\n$color-info-dark: mix($brand-info, black, 70%) !default;\n$color-info-light: mix($brand-info, white, 60%) !default;\n$color-info-lighter: mix($brand-info, white, 20%) !default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-primary-lighter !default;\n\n// Text Color\n$alert-info-color: $color-primary-darker !default;\n\n// Border Color\n$alert-info-border-color: $color-primary-dark !default;\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-info-bg: $brand-info !default;\n$label-inverse-bg: $brand-inverse !default;\n\n// Border Color\n$label-info-border-color: $brand-info !default;\n$label-inverse-border-color: $brand-inverse !default;\n\n// Text Color\n$label-info-color: #fff !default;\n$label-inverse-color: #fff !default;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-inverse-bg: $brand-inverse !default;\n$groupbox-info-bg: $brand-info !default;\n\n// Text Color\n$groupbox-inverse-color: #fff !default;\n$groupbox-info-color: #fff !default;\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-info-color: $brand-info !default;\n\n// Background Color\n$callout-info-bg: $color-info-lighter !default;\n","/* ==========================================================================\n Breadcrumbs\n\n========================================================================== */\n.breadcrumb {\n //reset\n margin: 0;\n padding: 0;\n border-radius: 0;\n background-color: transparent;\n font-size: $font-size-default;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-item {\n display: inline-block;\n margin: 0;\n &:last-child {\n color: $font-color-default;\n a {\n text-decoration: none;\n }\n }\n}\n.breadcrumb-item + .breadcrumb-item {\n &::before {\n display: inline-block;\n padding-right: $spacing-small;\n padding-left: $spacing-small;\n content: \"/\";\n color: $gray-light;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-large {\n font-size: $font-size-h3;\n}\n.breadcrumb-underline {\n padding-bottom: $spacing-medium;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Cards\n\n========================================================================== */\n.card {\n border: 0;\n border-radius: $border-radius-default;\n background-color: #ffffff;\n overflow: hidden;\n position: relative;\n padding: $spacing-large;\n margin-bottom: $spacing-large;\n}\n\n//== Card components\n//-------------------------------------------------------------------------------------------------------------------//\n.card-body {\n padding: $spacing-large;\n}\n\n.card-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n background: linear-gradient(\n to bottom,\n rgba(255, 255, 255, 0) 0%,\n rgba(250, 250, 250, 0) 8%,\n rgba(0, 0, 0, 0.99) 121%,\n #000 100%\n );\n padding: $spacing-large;\n}\n\n.card-title {\n}\n\n.card-image {\n width: 100%;\n height: auto;\n}\n\n.card-supportingtext {\n}\n\n.card-action {\n}\n\n.card-icon {\n font-size: $font-size-h1;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.card-with-image {\n overflow: hidden;\n}\n\n.card-with-background {\n position: relative;\n}\n","/* ==========================================================================\n Chats\n\n========================================================================== */\n.chat {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: $bg-color-secondary;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-content {\n display: flex;\n overflow: auto;\n flex: 1;\n flex-direction: column;\n justify-content: flex-end;\n\n .chat-list {\n position: relative;\n overflow: auto;\n\n ul {\n display: flex;\n flex-direction: column-reverse;\n margin-bottom: $m-spacing-large;\n }\n\n li {\n padding: 15px 30px;\n animation: fadeIn 0.2s;\n background-color: transparent;\n animation-fill-mode: both;\n\n &,\n &:last-child {\n border: 0;\n }\n }\n\n .mx-listview-loadMore {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n display: block;\n width: 50%;\n margin: 15px auto;\n color: #ffffff;\n background-color: $brand-primary;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n }\n }\n}\n\n.chat-message {\n display: flex;\n}\n\n.chat-avatar {\n margin: 0 20px 0 0;\n border-radius: 50%;\n}\n\n.chat-message-content {\n display: inline-flex;\n flex-direction: column;\n}\n\n.chat-message-balloon {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 10px 15px;\n border-radius: 5px;\n background-color: $bg-color;\n\n &::after {\n position: absolute;\n top: 10px;\n right: 100%;\n width: 0;\n height: 0;\n content: \"\";\n border: 10px solid transparent;\n border-top: 0;\n border-right-color: $bg-color;\n border-left: 0;\n }\n}\n\n.chat-message-time {\n padding-top: 2px;\n\n .form-control-static {\n border: 0;\n }\n}\n\n.chat-footer {\n z-index: 1;\n padding: $m-spacing-large;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n}\n\n.chat-input {\n display: flex;\n\n .chat-textbox {\n flex: 1;\n margin-right: $spacing-large;\n margin-bottom: 0;\n\n .form-control {\n border: 0;\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-message-self {\n justify-content: flex-end;\n\n .chat-avatar {\n margin: 0 0 0 20px;\n }\n\n .chat-message-balloon {\n background-color: $color-primary-lighter;\n\n &::after {\n left: 100%;\n border: 10px solid transparent;\n border-top: 0;\n border-right: 0;\n border-left-color: $color-primary-lighter;\n }\n }\n\n .chat-message-time {\n text-align: right;\n }\n}\n","/* ==========================================================================\n Control Group\n \n A group of buttons next to eachother\n========================================================================== */\n.controlgroup {\n .btn,\n .btn-group {\n margin-right: $spacing-small;\n margin-bottom: $spacing-small;\n\n &:last-child {\n margin-right: 0;\n }\n .btn {\n margin-right: 0;\n margin-bottom: 0;\n }\n }\n .btn-group {\n .btn + .btn {\n margin-left: -1px;\n }\n }\n}\n","/* ==========================================================================\n Full page blocks\n\n Blocks that take up the full width and height\n========================================================================== */\n\n.fullpageblock {\n position: relative;\n height: 100%;\n min-height: 100%;\n\n // Helper to make it fullheight\n .fullheight {\n height: 100% !important;\n\n & > .mx-dataview-content {\n height: inherit !important;\n }\n }\n\n .fullpage-overlay {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 0;\n width: 100%;\n }\n}\n","/* ==========================================================================\n Pageheader\n========================================================================== */\n\n//== Default\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader {\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader-title {\n}\n\n.pageheader-subtitle {\n}\n\n.pageheader-image {\n}\n","/* ==========================================================================\n Hero header\n\n========================================================================== */\n\n.headerhero {\n width: 100%;\n min-height: $header-min-height;\n background-color: $header-bg-color;\n position: relative;\n overflow: hidden;\n padding: $spacing-large;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.headerhero-title {\n color: $header-text-color;\n}\n\n.headerhero-subtitle {\n color: $header-text-color;\n}\n\n.headerhero-backgroundimage {\n position: absolute;\n z-index: 0;\n top: 0;\n height: 100%;\n width: 100%;\n filter: $header-bgimage-filter;\n}\n\n.btn.headerhero-action {\n color: $header-text-color;\n}\n\n.heroheader-overlay {\n z-index: 1;\n}\n","/* ==========================================================================\n Form Block\n\n Used in default forms\n========================================================================== */\n.formblock {\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.form-title {\n}\n","/* ==========================================================================\n Master Detail\n\n A list with a listening dataview\n========================================================================== */\n.masterdetail {\n background: #fff;\n .masterdetail-master {\n border-right: 1px solid $border-color-default;\n }\n .masterdetail-detail {\n padding: $spacing-large;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.masterdetail-vertical {\n background: #fff;\n .masterdetail-master {\n border-bottom: 1px solid $border-color-default;\n }\n .masterdetail-detail {\n padding: $spacing-large;\n }\n}\n","/* ==========================================================================\n User profile blocks\n -\n========================================================================== */\n.userprofile {\n .userprofile-img {\n }\n .userprofile-title {\n }\n .userprofile-subtitle {\n }\n}\n","//Wizard\n.wizard {\n display: flex;\n justify-content: space-between;\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//Wizard step\n.wizard-step {\n position: relative;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n//Wizard step number\n.wizard-step-number {\n position: relative;\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n width: $wizard-step-number-size;\n height: $wizard-step-number-size;\n color: $wizard-default-step-color;\n font-size: $wizard-step-number-font-size;\n border-radius: 50%;\n background-color: $wizard-default-bg;\n border-color: $wizard-default-border-color;\n}\n\n//Wizard step text\n.wizard-step-text {\n overflow: hidden;\n white-space: nowrap;\n text-decoration: none;\n text-overflow: ellipsis;\n color: $wizard-default-step-color;\n}\n\n//Wizard circle\n.wizard-circle .wizard-step {\n flex-direction: column;\n &::before {\n position: absolute;\n z-index: 0;\n top: $wizard-step-number-size / 2;\n display: block;\n width: 100%;\n height: 2px;\n content: \"\";\n background-color: $wizard-default-border-color;\n }\n}\n\n//Wizard arrow\n.wizard-arrow .wizard-step {\n height: $wizard-step-height;\n margin-left: calc(0px - (#{$wizard-step-height} / 2));\n padding-left: ($wizard-step-height / 2);\n background-color: $wizard-default-bg;\n justify-content: flex-start;\n border: 1px solid $wizard-default-border-color;\n &::before,\n &::after {\n position: absolute;\n z-index: 1;\n left: 100%;\n margin-left: calc(0px - ((#{$wizard-step-height} / 2) - 1px));\n content: \" \";\n border-style: solid;\n border-color: transparent;\n }\n &::after {\n top: 0;\n border-width: calc((#{$wizard-step-height} / 2) - 1px);\n border-left-color: $wizard-default-bg;\n }\n &::before {\n top: -1px;\n border-width: $wizard-step-height / 2;\n border-left-color: $wizard-default-border-color;\n }\n\n &:first-child {\n margin-left: 0;\n padding-left: 0;\n border-top-left-radius: $border-radius-default;\n border-bottom-left-radius: $border-radius-default;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-default;\n border-bottom-right-radius: $border-radius-default;\n &::before,\n &::after {\n display: none;\n }\n }\n}\n\n//Wizard states\n.wizard-circle .wizard-step-active {\n .wizard-step-number {\n color: $wizard-active-color;\n border-color: $wizard-active-border-color;\n background-color: $wizard-active-bg;\n }\n .wizard-step-text {\n color: $wizard-active-step-color;\n }\n}\n.wizard-circle .wizard-step-visited {\n .wizard-step-number {\n color: $wizard-visited-color;\n border-color: $wizard-visited-border-color;\n background-color: $wizard-visited-bg;\n }\n .wizard-step-text {\n color: $wizard-visited-step-color;\n }\n}\n\n.wizard-arrow .wizard-step-active {\n background-color: $wizard-active-bg;\n .wizard-step-text {\n color: $wizard-active-color;\n }\n &::after {\n border-left-color: $wizard-active-bg;\n }\n}\n\n.wizard-arrow .wizard-step-visited {\n .wizard-step-text {\n color: $link-color;\n }\n}\n",".login-formblock {\n display: flex;\n flex-direction: column;\n}\n\n.login-form {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n",".listtab-tabs.mx-tabcontainer {\n background: $bg-color-secondary;\n .mx-tabcontainer-tabs {\n background: $brand-primary;\n margin-bottom: 0;\n li {\n > a {\n color: #fff;\n opacity: 0.6;\n &:hover,\n &:focus {\n color: #fff;\n }\n }\n &.active {\n > a {\n opacity: 1;\n color: #fff;\n border-color: #fff;\n &:hover,\n &:focus {\n color: #fff;\n border-color: #fff;\n }\n }\n }\n }\n }\n}\n",".springboard-grid {\n display: flex;\n flex-direction: column;\n .row {\n flex: 1;\n .col {\n display: flex;\n }\n }\n}\n\n.springboard-header {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.springboard-card {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n",".statuspage-section {\n display: flex;\n flex-direction: column;\n}\n\n.statuspage-content {\n flex: 1;\n}\n\n.statuspage-icon {\n color: #fff;\n}\n\n.statuspage-subtitle {\n opacity: 0.6;\n}\n\n.statuspage-buttons {\n}\n","$dg-background-color: #fff;\n$dg-icon-color: #606671;\n$dg-icon-size: 14px;\n$dg-pagination-button-color: #3b4251;\n$dg-pagination-caption-color: #0a1325;\n$dragging-color-effect: rgba(10, 19, 37, 0.8);\n$dg-dragging-effect-size: 4px;\n\n$dg-grid-bg-striped: #fafafb;\n$dg-grid-bg-hover: #f5f6f6;\n$dg-spacing-small: 8px;\n$dg-spacing-medium: 16px;\n$dg-spacing-large: 24px;\n$dg-grid-border-color: #ced0d3;\n\n$dg-brand-primary: #264ae5;\n$dg-brand-light: #e6eaff;\n$dg-grid-selected-row-background: $dg-brand-light;\n\n.table {\n position: relative;\n border-width: 0;\n background-color: var(--bg-color-secondary, $dg-background-color);\n\n /* Table Content */\n .table-content {\n display: grid;\n position: relative;\n }\n\n /* Pseudo Row, to target this object please use .tr > .td or .tr > div */\n .tr {\n display: contents;\n }\n\n /* Column Header */\n .th {\n display: flex;\n align-items: flex-start;\n font-weight: 600;\n background-color: var(--bg-color-secondary, $dg-background-color);\n border-width: 0;\n border-color: var(--grid-border-color, $dg-grid-border-color);\n padding: var(--spacing-medium, $dg-spacing-medium);\n top: 0;\n min-width: 0;\n position: relative;\n\n &.dragging {\n opacity: 0.5;\n &.dragging-over-self {\n opacity: 0.8;\n }\n }\n\n &.drop-after:after,\n &.drop-before:after {\n content: \"\";\n position: absolute;\n top: 0;\n height: 100%;\n width: var(--spacing-smaller, $dg-dragging-effect-size);\n background-color: $dragging-color-effect;\n\n z-index: 1;\n }\n\n &.drop-before {\n &:after {\n left: 0;\n }\n &:not(:first-child):after {\n transform: translateX(-50%);\n }\n }\n\n &.drop-after {\n &:after {\n right: 0;\n }\n &:not(:last-child):after {\n transform: translateX(50%);\n }\n }\n\n /* Clickable column header (Sortable) */\n .clickable {\n cursor: pointer;\n }\n\n /* Column resizer when column is resizable */\n .column-resizer {\n padding: 0 4px;\n align-self: stretch;\n cursor: col-resize;\n\n &:hover .column-resizer-bar {\n background-color: var(--brand-primary, $dg-brand-primary);\n }\n &:active .column-resizer-bar {\n background-color: var(--brand-primary, $dg-brand-primary);\n }\n\n .column-resizer-bar {\n height: 100%;\n width: 4px;\n }\n }\n\n /* Content of the column header */\n .column-container {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n align-self: stretch;\n min-width: 0;\n\n &:not(:has(.filter)) {\n .column-header {\n height: 100%;\n }\n }\n }\n\n /* Header text */\n .column-header {\n margin: 1px 1px calc((-1 * var(--spacing-smaller, $dg-dragging-effect-size)) + 2px);\n display: flex;\n align-items: baseline;\n\n span {\n min-width: 0;\n flex-grow: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n text-wrap: nowrap;\n align-self: center;\n }\n\n svg {\n margin-left: 8px;\n flex: 0 0 var(--btn-font-size, $dg-icon-size);\n color: var(--gray-dark, $dg-icon-color);\n height: var(--btn-font-size, $dg-icon-size);\n align-self: center;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n }\n }\n\n /* Header filter */\n .filter {\n display: flex;\n margin-top: 4px;\n input:not([type=\"checkbox\"]) {\n font-weight: normal;\n flex-grow: 1;\n width: 100%;\n }\n > .form-group {\n margin-bottom: 0;\n }\n > .form-control {\n flex: unset;\n min-width: unset;\n }\n }\n }\n\n /* If Column Header has filter */\n &:has(.th .column-container .filter:not(:empty)) {\n .th {\n &.column-selector {\n padding: var(--spacing-medium, $dg-spacing-medium) 0;\n }\n /*adjust filter-selector icon to be mid-bottom aligned */\n .column-selector-content {\n align-self: flex-end;\n margin-bottom: 3px;\n }\n\n /*adjust checkbox toggle to be mid-bottom aligned */\n &.widget-datagrid-col-select {\n align-items: flex-end;\n padding-bottom: calc(var(--spacing-medium, $dg-spacing-medium) + 11px);\n }\n }\n }\n\n /* Column selector for hidable columns */\n .column-selector {\n padding: 0;\n\n /* Column content */\n .column-selector-content {\n align-self: center;\n padding-right: var(--spacing-medium, $dg-spacing-medium);\n /* Button containing the eye icon */\n .column-selector-button {\n $icon-margin: 7px;\n /* 2px as path of icon's path is a bit bigger than outer svg */\n $icon-slack-size: 2px;\n\n padding: 0;\n margin: 0;\n\n height: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size);\n width: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size);\n\n svg {\n margin: $icon-margin;\n }\n }\n\n /* List of columns to select */\n .column-selectors {\n position: absolute;\n right: 0;\n margin: 8px;\n padding: 0 16px;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 3px;\n border: 1px solid transparent;\n list-style-type: none;\n -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n\n li {\n display: flex;\n align-items: center;\n\n label {\n margin: 8px;\n font-weight: normal;\n white-space: nowrap;\n }\n }\n }\n }\n }\n\n /* Column content */\n .td {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--spacing-medium, $dg-spacing-medium);\n border-style: solid;\n border-width: 0;\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-bottom-width: 1px;\n min-width: 0;\n\n &.td-borders {\n border-top-width: 1px;\n border-top-style: solid;\n }\n\n &:focus-visible {\n outline-width: 1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--brand-primary, $dg-brand-primary);\n }\n\n &.clickable {\n cursor: pointer;\n }\n\n > .td-text {\n white-space: nowrap;\n word-break: break-word;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n > .td-custom-content {\n flex-grow: 1;\n }\n\n > .empty-placeholder {\n width: 100%;\n }\n\n &.wrap-text {\n min-height: 0;\n min-width: 0;\n\n > .td-text,\n > .mx-text {\n white-space: normal;\n }\n }\n }\n\n & *:focus {\n outline: 0;\n }\n\n .align-column-left {\n justify-content: flex-start;\n }\n\n .align-column-center {\n justify-content: center;\n }\n\n .align-column-right {\n justify-content: flex-end;\n }\n}\n\n.pagination-bar {\n display: flex;\n justify-content: flex-end;\n white-space: nowrap;\n align-items: baseline;\n margin: 16px;\n color: $dg-pagination-caption-color;\n\n .paging-status {\n padding: 0 8px 8px;\n }\n\n .pagination-button {\n padding: 6px;\n color: var(--gray-darker, $dg-pagination-button-color);\n border-color: transparent;\n background-color: transparent;\n\n &:hover {\n color: var(--brand-primary, $dg-brand-primary);\n border-color: transparent;\n background-color: transparent;\n }\n\n &:disabled {\n border-color: transparent;\n background-color: transparent;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n }\n }\n .pagination-icon {\n position: relative;\n top: 4px;\n display: inline-block;\n width: 20px;\n height: 20px;\n }\n}\n\n/* Column selector for hidable columns outside DG context */\n/* List of columns to select */\n.column-selectors {\n position: absolute;\n right: 0;\n margin: 8px 0;\n padding: 0 16px;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 3px;\n border: 1px solid transparent;\n list-style-type: none;\n -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n\n &.overflow {\n height: 250px;\n overflow-y: scroll;\n }\n\n li {\n display: flex;\n align-items: center;\n cursor: pointer;\n\n label {\n margin: 8px;\n font-weight: normal;\n white-space: nowrap;\n }\n }\n}\n\n.widget-datagrid {\n &.widget-datagrid-selection-method-click {\n .tr.tr-selected .td {\n background-color: $dg-grid-selected-row-background;\n }\n }\n}\n\n.widget-datagrid-col-select input:focus-visible {\n outline-offset: 0;\n}\n\n.widget-datagrid-content {\n overflow-y: auto;\n}\n","/**\n Classes for React Date-Picker font-unit and color adjustments\n*/\n$dg-day-color: #555;\n$dg-day-range-color: #000;\n$dg-day-range-background: #eaeaea;\n$dg-outside-month-color: #c8c8c8;\n$dg-text-color: #fff;\n$dg-border-color: #d7d7d7;\n\n.react-datepicker {\n font-size: 1em;\n border: 1px solid $dg-border-color;\n}\n\n.react-datepicker-wrapper {\n display: flex;\n flex: 1;\n}\n\n.react-datepicker__input-container {\n display: flex;\n flex: 1;\n}\n\n.react-datepicker__header {\n padding-top: 0.8em;\n background-color: var(--bg-color, $dg-background-color);\n border-color: transparent;\n}\n\n.react-datepicker__header__dropdown {\n margin: 8px 0 4px 0; //4px due to the header contains 4px already\n}\n\n.react-datepicker__year-dropdown-container {\n margin-left: 8px;\n}\n\n.react-datepicker__month {\n margin: 4px 4px 8px 4px; //4px due to the rows already contains 4px each day\n}\n\n.react-datepicker__month-container {\n font-weight: normal;\n}\n\n.react-datepicker__day-name,\n.react-datepicker__day {\n width: 2em;\n line-height: 2em;\n margin: 4px;\n}\n\n.react-datepicker__day,\n.react-datepicker__day--in-range {\n color: $dg-day-color;\n border-radius: 50%;\n\n &:hover {\n border-radius: 50%;\n color: var(--brand-primary, $dg-brand-primary);\n background-color: var(--gray-ligter, $dg-hover-color);\n }\n}\n\n.react-datepicker__day-name {\n color: var(--brand-primary, $dg-brand-primary);\n font-weight: bold;\n}\n\n.react-datepicker__day--outside-month {\n color: $dg-outside-month-color;\n}\n\n.react-datepicker__day--today:not(.react-datepicker__day--in-range),\n.react-datepicker__day--keyboard-selected {\n color: var(--brand-primary, $dg-brand-primary);\n background-color: var(--gray-ligter, $dg-hover-color);\n}\n\n.react-datepicker__month-select:focus-visible,\n.react-datepicker__year-select:focus-visible,\n.react-datepicker__navigation:focus-visible,\n.react-datepicker__day.react-datepicker__day--keyboard-selected {\n outline: 1px solid var(--form-input-border-focus-color);\n}\n\n.react-datepicker__day--selected,\n.react-datepicker__day--range-start,\n.react-datepicker__day--range-end,\n.react-datepicker__day--in-selecting-range.react-datepicker__day--selecting-range-start {\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n\n &:hover {\n border-radius: 50%;\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n }\n}\n\n.react-datepicker__day--in-range:not(.react-datepicker__day--range-start, .react-datepicker__day--range-end),\n.react-datepicker__day--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: $dg-day-range-background;\n color: $dg-day-range-color;\n\n &:hover {\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n }\n}\n\nbutton.react-datepicker__close-icon::after {\n background-color: var(--brand-primary, $dg-brand-primary);\n}\n\n.react-datepicker__current-month {\n font-size: 1em;\n font-weight: normal;\n}\n\n.react-datepicker__navigation {\n top: 1em;\n line-height: 1.7em;\n border: 0.45em solid transparent;\n}\n\n.react-datepicker__navigation--previous {\n border-right-color: #ccc;\n left: 8px;\n border: none;\n}\n\n.react-datepicker__navigation--next {\n border-left-color: #ccc;\n right: 8px;\n border: none;\n}\n\n/**\nSpace between the fields and the popup\n */\n.react-datepicker-popper[data-placement^=\"bottom\"] {\n margin-top: unset;\n padding-top: 0;\n}\n","$dg-hover-color: #f8f8f8;\n$dg-background-color: #fff;\n$dg-selected-color: #dadcde;\n$dg-border-color: #ced0d3;\n$dg-spacing-small: 8px;\n$arrow: \"resources/dropdown-arrow.svg\";\n$dg-item-min-height: 32px;\n\n@import \"date-picker\";\n\n@font-face {\n font-family: \"datagrid-filters\";\n src: url(\"./fonts/datagrid-filters.eot\");\n src: url(\"./fonts/datagrid-filters.eot\") format(\"embedded-opentype\"),\n url(\"./fonts/datagrid-filters.woff2\") format(\"woff2\"), url(\"./fonts/datagrid-filters.woff\") format(\"woff\"),\n url(\"./fonts/datagrid-filters.ttf\") format(\"truetype\"), url(\"./fonts/datagrid-filters.svg\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n.filter-container {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n\n .filter-input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .btn-calendar {\n margin-left: 5px; //Review in atlas, the current date picker is also 5px\n .button-icon {\n width: 18px;\n height: 18px;\n }\n }\n}\n\n.filter-selector {\n padding-left: 0;\n padding-right: 0;\n\n .filter-selector-content {\n height: 100%;\n align-self: flex-end;\n\n .filter-selector-button {\n padding: 8px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n height: 100%;\n\n &:before {\n justify-content: center;\n width: 20px;\n height: 20px;\n padding-left: 4px; /* The font has spaces in the right side, so to align in the middle we need this */\n }\n }\n\n .filter-selectors {\n position: absolute;\n width: max-content;\n left: 0;\n margin: 0 var(--spacing-small, $dg-spacing-small);\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow: hidden;\n z-index: 102;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n line-height: 32px;\n cursor: pointer;\n\n .filter-label {\n padding-right: 8px;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n }\n }\n }\n}\n\n.filter-selectors {\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow: hidden;\n z-index: 102;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n line-height: 32px;\n cursor: pointer;\n\n .filter-label {\n padding-right: 8px;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n }\n}\n\n.dropdown-list {\n list-style-type: none;\n padding: 0;\n margin-bottom: 0;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n min-height: var(--spacing-larger, $dg-item-min-height);\n cursor: pointer;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n\n .filter-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n\n label {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n margin: 8px;\n font-weight: normal;\n width: calc(100% - 32px);\n }\n }\n}\n\n:not(.dropdown-content) > .dropdown-list {\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n max-height: 40vh;\n z-index: 102;\n}\n\n.dropdown-content {\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n max-height: 40vh;\n z-index: 140;\n}\n\n.dropdown-footer {\n position: sticky;\n bottom: 0;\n background: inherit;\n z-index: 50;\n}\n\n.dropdown-footer-item {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n min-height: 40px;\n}\n\n.dropdown-loading {\n flex-grow: 1;\n text-align: center;\n}\n\n.dropdown-container {\n flex: 1;\n position: relative;\n\n .dropdown-triggerer {\n caret-color: transparent;\n cursor: pointer;\n\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: center;\n background-position-x: right;\n background-position-y: center;\n background-origin: content-box;\n text-overflow: ellipsis;\n width: 100%;\n }\n\n .dropdown-list {\n left: 0;\n margin: 0 var(--spacing-small, $dg-spacing-small);\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow-x: hidden;\n max-height: 40vh;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n min-height: var(--spacing-larger, $dg-item-min-height);\n cursor: pointer;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n\n .filter-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n\n label {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n margin: 8px;\n font-weight: normal;\n width: calc(100% - 32px);\n }\n }\n }\n}\n\n/**\nIcons\n */\n\n.filter-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n width: 20px;\n margin: 6px 8px;\n font-family: \"datagrid-filters\";\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.button-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: \"datagrid-filters\";\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.contains:before {\n content: \"\\e808\";\n}\n.endsWith:before {\n content: \"\\e806\";\n}\n.equal:before {\n content: \"\\e809\";\n}\n.greater:before {\n content: \"\\e80a\";\n}\n.greaterEqual:before {\n content: \"\\e80b\";\n}\n.notEqual:before {\n content: \"\\e80c\";\n}\n.smaller:before {\n content: \"\\e80d\";\n}\n.smallerEqual:before {\n content: \"\\e80e\";\n}\n.startsWith:before {\n content: \"\\e807\";\n}\n.between:before {\n content: \"\\e900\";\n}\n.empty:before {\n content: \"\\e901\";\n}\n.notEmpty:before {\n content: \"\\e903\";\n}\n\n/**\n* Specific styles for filters inside Data Grid 2\n**/\ndiv:not(.table-compact) > .table {\n .th {\n .filter-selector {\n .filter-selectors {\n margin: 0;\n }\n }\n\n .dropdown-container {\n .dropdown-list {\n margin: 0;\n }\n }\n }\n}\n",".table-compact {\n .th {\n padding: var(--spacing-small, $dg-spacing-small);\n\n .filter-selectors {\n margin: 0 var(--spacing-small, $dg-spacing-small);\n }\n }\n\n &:has(.th .column-container .filter:not(:empty)) {\n .th {\n &.column-selector {\n padding: var(--spacing-small, $dg-spacing-small) 0;\n }\n &.widget-datagrid-col-select {\n padding-bottom: calc(var(--spacing-small, $dg-spacing-small) + 11px);\n }\n }\n }\n\n .td {\n padding: var(--spacing-small, $dg-spacing-small);\n }\n\n .dropdown-container .dropdown-list {\n margin: 0 var(--spacing-small, $dg-spacing-small);\n }\n\n .column-selector {\n /* Column content */\n .column-selector-content {\n padding-right: var(--spacing-small, $dg-spacing-small);\n }\n }\n}\n\n.table-striped {\n .tr:nth-child(odd) > .td {\n background-color: var(--grid-bg-striped, $dg-grid-bg-striped);\n }\n}\n\n.table-hover {\n .tr:hover > .td {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n}\n\n.table-bordered-all {\n .th,\n .td {\n border-left-width: 1px;\n border-left-style: solid;\n\n // Column for the visibility when a column can be hidden\n &.column-selector {\n border-left-width: 0;\n }\n\n &:last-child,\n &.column-selector {\n border-right-width: 1px;\n border-right-style: solid;\n }\n }\n .th {\n border-top-width: 1px;\n border-top-style: solid;\n }\n\n .td {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n\n &.td-borders {\n border-top-width: 1px;\n }\n }\n}\n\n.table-bordered-horizontal {\n .td {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n\n &.td-borders {\n border-top-width: 1px;\n }\n }\n}\n\n.table-bordered-vertical {\n .th,\n .td {\n border-left-width: 1px;\n border-left-style: solid;\n border-bottom-width: 0;\n\n // Column for the visibility when a column can be hidden\n &.column-selector {\n border-left-width: 0;\n border-bottom-width: 0;\n border-right-width: 1px;\n border-right-style: solid;\n }\n\n &.td-borders {\n border-top-width: 0;\n }\n }\n}\n\n.table-bordered-none {\n .td,\n .th {\n border: 0;\n\n &.column-selector {\n border: 0;\n }\n\n &.td-borders {\n border: 0;\n }\n }\n}\n",".sticky-sentinel {\n &.container-stuck {\n & + .widget-datagrid-grid,\n & + .table {\n .th {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n z-index: 50;\n }\n }\n }\n}\n\n.widget-datagrid-content.infinite-loading {\n overflow-y: auto;\n margin-bottom: 20px;\n}\n\n.table {\n .table-content {\n &.infinite-loading {\n overflow-y: scroll;\n }\n }\n}\n","/* ==========================================================================\n Drop-down sort\n\n Override styles of Drop-down sort widget\n========================================================================== */\n@font-face {\n font-family: \"dropdown-sort\";\n src: url(\"./fonts/dropdown-sort.eot?46260688\");\n src: url(\"./fonts/dropdown-sort.eot?46260688#iefix\") format(\"embedded-opentype\"),\n url(\"./fonts/dropdown-sort.woff2?46260688\") format(\"woff2\"),\n url(\"./fonts/dropdown-sort.woff?46260688\") format(\"woff\"),\n url(\"./fonts/dropdown-sort.ttf?46260688\") format(\"truetype\"),\n url(\"./fonts/dropdown-sort.svg?46260688#dropdown-sort\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n.dropdown-triggerer-wrapper {\n display: flex;\n\n .dropdown-triggerer {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n border-right-width: 0;\n }\n\n .btn-sort {\n padding: var(--spacing-small, $dg-spacing-small);\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n\n font-family: \"dropdown-sort\";\n font-style: normal;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n &.icon-asc:before {\n content: \"\\e802\";\n margin: 2px;\n }\n\n &.icon-desc:before {\n content: \"\\e803\";\n margin: 2px;\n }\n }\n}\n","/* ==========================================================================\n Gallery\n\n Override styles of Gallery widget\n========================================================================== */\n$gallery-screen-lg: 992px;\n$gallery-screen-md: 768px;\n\n@mixin grid-items($number, $suffix) {\n @for $i from 1 through $number {\n &.widget-gallery-#{$suffix}-#{$i} {\n grid-template-columns: repeat($i, minmax(0, 1fr));\n }\n }\n}\n\n@mixin grid-span($number, $type) {\n @for $i from 1 through $number {\n .widget-gallery-#{$type}-span-#{$i} {\n grid-#{$type}: span $i;\n }\n }\n}\n\n.widget-gallery {\n .widget-gallery-items {\n display: grid;\n grid-gap: var(--spacing-small, $dg-spacing-small);\n\n /*\n Desktop widths\n */\n @media screen and (min-width: $gallery-screen-lg) {\n @include grid-items(12, \"lg\");\n }\n\n /*\n Tablet widths\n */\n @media screen and (min-width: $gallery-screen-md) and (max-width: ($gallery-screen-lg - 1px)) {\n @include grid-items(12, \"md\");\n }\n\n /*\n Phone widths\n */\n @media screen and (max-width: ($gallery-screen-md - 1)) {\n @include grid-items(12, \"sm\");\n }\n }\n\n .widget-gallery-clickable {\n cursor: pointer;\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n outline-offset: -1px;\n }\n }\n\n &:not(.widget-gallery-disable-selected-items-highlight) {\n .widget-gallery-item.widget-gallery-clickable.widget-gallery-selected {\n background: $dg-brand-light;\n }\n }\n\n .infinite-loading {\n overflow: auto;\n }\n\n .widget-gallery-filter,\n .widget-gallery-empty,\n .widget-gallery-pagination {\n flex: 1;\n }\n\n /**\n Helper classes\n */\n @include grid-span(12, \"column\");\n @include grid-span(12, \"row\");\n}\n\n.widget-gallery-item-button {\n width: inherit;\n}\n","/* ==========================================================================\n Gallery default\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// All borders\n.widget-gallery-bordered-all {\n .widget-gallery-item {\n border: 1px solid var(--grid-border-color, $dg-grid-border-color);\n }\n}\n\n// Vertical borders\n.widget-gallery-bordered-vertical {\n .widget-gallery-item {\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-style: solid;\n border-width: 0;\n border-left-width: 1px;\n border-right-width: 1px;\n }\n}\n\n// Horizontal orders\n.widget-gallery-bordered-horizontal {\n .widget-gallery-item {\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-style: solid;\n border-width: 0;\n border-top-width: 1px;\n border-bottom-width: 1px;\n }\n}\n\n// Hover styles\n.widget-gallery-hover {\n .widget-gallery-items {\n .widget-gallery-item:hover {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n }\n}\n\n// Striped styles\n.widget-gallery-striped {\n .widget-gallery-item:nth-child(odd) {\n background-color: var(--grid-bg-striped, $dg-grid-bg-striped);\n }\n .widget-gallery-item:nth-child(even) {\n background-color: #fff;\n }\n}\n\n// Grid spacing none\n.widget-gallery.widget-gallery-gridgap-none {\n .widget-gallery-items {\n gap: 0;\n }\n}\n\n// Grid spacing small\n.widget-gallery.widget-gallery-gridgap-small {\n .widget-gallery-items {\n gap: var(--spacing-small, $dg-spacing-small);\n }\n}\n\n// Grid spacing medium\n.widget-gallery.widget-gallery-gridgap-medium {\n .widget-gallery-items {\n gap: var(--spacing-medium, $dg-spacing-medium);\n }\n}\n\n// Grid spacing large\n.widget-gallery.widget-gallery-gridgap-large {\n .widget-gallery-items {\n gap: var(--spacing-large, $dg-spacing-large);\n }\n}\n\n// Pagination left\n.widget-gallery-pagination-left {\n .widget-gallery-pagination {\n .pagination-bar {\n justify-content: flex-start;\n }\n }\n}\n\n// Pagination center\n.widget-gallery-pagination-center {\n .widget-gallery-pagination {\n .pagination-bar {\n justify-content: center;\n }\n }\n}\n\n.widget-gallery-disable-selected-items-highlight {\n // placeholder\n // this class in needed to disable standard styles of highlighted items\n}\n","input[type=\"checkbox\"].three-state-checkbox {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n transform: translateZ(0);\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid #e7e7e9;\n border-radius: 4px;\n background-color: transparent;\n }\n\n &:not(:indeterminate):after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #ffffff;\n border-top: 0;\n border-right: 0;\n }\n\n &:indeterminate:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(0deg);\n pointer-events: none;\n border: 0 solid #ffffff;\n border-bottom-width: 2px;\n transition: border 0s;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n border-color: #e7e7e9; // color of checkmark on hover\n }\n\n &:indeterminate:before,\n &:checked:before {\n border-color: #264ae5;\n background-color: #264ae5;\n }\n\n &:indeterminate:after,\n &:checked:after {\n content: \"\";\n }\n\n &:disabled:before {\n background-color: #f8f8f8;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba(#264ae5, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: #f8f8f8;\n }\n\n & + .control-label {\n margin-left: 8px;\n }\n}\n",".widget-tree-node {\n width: 100%;\n padding: 0;\n display: flex;\n flex-direction: column;\n\n .widget-tree-node-branch {\n display: block;\n\n &:focus-visible {\n outline: none;\n & > .widget-tree-node-branch-header {\n outline: -webkit-focus-ring-color auto 1px;\n outline: -moz-mac-focusring auto 1px;\n }\n }\n }\n\n .widget-tree-node-branch-header-clickable {\n cursor: pointer;\n }\n\n .widget-tree-node-branch-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin: 0;\n padding: 8px 0;\n\n svg {\n &.widget-tree-node-branch-header-icon-animated {\n transition: transform 0.2s ease-in-out 50ms;\n }\n &.widget-tree-node-branch-header-icon-collapsed-left {\n transform: rotate(-90deg);\n }\n &.widget-tree-node-branch-header-icon-collapsed-right {\n transform: rotate(90deg);\n }\n }\n\n .widget-tree-node-loading-spinner {\n width: 16px;\n height: 16px;\n animation: spin 2s linear infinite;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n }\n\n .widget-tree-node-branch-header-reversed {\n flex-direction: row-reverse;\n }\n\n .widget-tree-node-branch-header-value {\n flex: 1;\n font-size: 16px;\n margin: 0 8px;\n }\n\n .widget-tree-node-branch-header-icon-container {\n display: flex;\n align-items: center;\n }\n\n .widget-tree-node-body {\n padding-left: 24px;\n transition: height 0.2s ease 50ms;\n overflow: hidden;\n\n &.widget-tree-node-branch-hidden {\n display: none;\n }\n }\n}\n\n.widget-tree-node-lined-styling {\n .widget-tree-node .widget-tree-node-body {\n position: relative;\n\n &::before {\n content: \"\";\n width: 0px;\n height: 100%;\n position: absolute;\n top: 0;\n left: 7px;\n border: 1px solid #b6b8be;\n }\n }\n\n .widget-tree-node[role=\"group\"] > .widget-tree-node-branch > .widget-tree-node-branch-header {\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 0;\n border: 1px solid #b6b8be;\n top: 50%;\n left: -16px;\n transform: translate(0, -50%);\n }\n }\n}\n","/* ==========================================================================\n Tree Node\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n$dg-grid-border-color: #ced0d3;\n$dg-grid-bg-hover: #f5f6f6;\n\n.widget-tree-node-hover {\n .widget-tree-node-branch:hover > .widget-tree-node-branch-header {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n}\n\n.widget-tree-node-bordered-horizontal {\n .widget-tree-node-branch > .widget-tree-node-branch-header {\n border-width: 0;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--grid-border-color, $dg-grid-border-color);\n }\n}\n\n.widget-tree-node-bordered-all {\n border: 1px solid var(--grid-border-color, $dg-grid-border-color);\n border-radius: 8px;\n overflow: hidden;\n\n .widget-tree-node-body:not(.widget-tree-node-branch-loading) {\n border-width: 0;\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: #ced0d3;\n }\n .widget-tree-node-branch:not(:first-of-type) > .widget-tree-node-branch-header {\n border-width: 0;\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: #ced0d3;\n }\n}\n\n.widget-tree-node-bordered-none {\n border-width: 0;\n .widget-tree-node-branch > .widget-tree-node-branch-header {\n border-width: 0;\n }\n}\n",".hover-trigger {\n .show-on-hover {\n visibility: hidden; // Initially hide the hover content\n }\n\n &:hover .show-on-hover {\n display: inline;\n visibility: visible; // Show hover content, when hovering over the hover trigger\n }\n}\n\n.text-break-word {\n word-break: break-word;\n}\n\n.spacing-inner-top-smaller {\n padding-top: $spacing-smaller;\n}\n\n.text-clamp--2-lines {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.line-height--1 {\n line-height: 1;\n}\n",".accordion-chat-sources {\n .widget-accordion-group{\n background: transparent;\n\n .widget-accordion-group-header{\n .widget-accordion-group-header-button {\n display: inline-flex;\n background: transparent;\n padding: 0;\n\n &.widget-accordion-group-header-button-clickable{\n &:hover, &:focus {\n color: $font-color-default;\n background: transparent;\n }\n }\n\n .widget-accordion-group-header-button-icon {\n align-self: left;\n display: inline-flex;\n fill: $font-color-default;\n }\n } \n }\n\n .widget-accordion-group-content-wrapper{\n .widget-accordion-group-content {\n padding-left: 0;\n padding-bottom: 0;\n }\n }\n }\n}",".chat-card--full-height {\n height: 100%;\n}",".chat-loading-wrapper {\n display: flex;\n justify-content: left;\n padding: $spacing-small;\n\n .loading-dot {\n border-radius: 100%;\n background-color: $font-color-default;\n width: $font-size-default / 3;\n height: $font-size-default / 3;\n\n &:nth-child(1) {\n animation: preloader 0.9s ease-in-out alternate infinite;\n }\n\n &:nth-child(2) {\n margin: 0 14px;\n animation: preloader 0.9s ease-in-out alternate 0.2s infinite;\n }\n\n &:nth-child(3) {\n animation: preloader 0.9s ease-in-out alternate 0.4s infinite;\n }\n }\n\n @keyframes preloader {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.5); }\n 100% { transform: scale(1); }\n }\n}\n\n.chat-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n\n .messages-container {\n flex: 1 1 auto;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n &--center {\n max-width: $chat-width;\n margin: 0 auto;\n height: 100%\n }\n}\n\n\n.chat-input-wrapper {\n position: relative;\n\n .form-group {\n width: 100%;\n padding-left: 0px !important;\n padding-right: 0px !important;\n\n .form-control {\n padding-right: $send-btn-size + 36px;\n max-height: $chat-input-max-height;\n overflow: auto;\n }\n }\n\n .has-error .alert {\n display: none !important;\n }\n\n .send-btn {\n position: absolute;\n right: 58px / 2 - $send-btn-size / 2;\n bottom: 58px / 2 - $send-btn-size / 2;\n display: flex;\n align-items: center;\n justify-content: center;\n text-decoration-line: none;\n border-radius: 50%;\n width: $send-btn-size;\n height: $send-btn-size;\n\n .glyphicon {\n top: 0;\n font-size: $send-btn-size / 2;\n left: -2px;\n }\n }\n}\n\n.chat-bubble-wrapper {\n margin-top: $spacing-small;\n .chat-message-card {\n background: $chat-bubble-assistant-background;\n border-radius: 8px 8px 8px 0;\n margin: 0 10% 0 0;\n text-align: left;\n padding: $spacing-small;\n }\n\n &--user .chat-message-card {\n background: $chat-bubble-user-background;\n border-radius: 8px 8px 0 8px;\n margin: 0 0 0 10%;\n }\n}\n\n.chat-history-sidebar{\n overflow-y: auto;\n}\n\n.chat-history-active {\n border-left: 3px solid $brand-primary;\n font-weight: bold;\n}","$chat-width: 900px !default;\n$send-btn-size: $form-input-font-size * 2 !default;\n$chat-input-max-height: 400px !default;\n\n//pop-up chat\n$pop-up-chat-bottom-position: 5vh !default;\n$pop-up-chat-right-position: 3vw !default;\n$pop-up-chat-width: 500px !default;\n$pop-up-chat-height: 65vh !default;\n\n//chat bubbles\n$chat-bubble-user-background: $color-primary-lighter !default;\n$chat-bubble-assistant-background: $color-success-lighter !default;\n$chat-bubble-margin: 10% !default;\n","@import '../../../../theme/web/custom-variables';\n\n//Cards for ConversationStarters\n.conversationstarter.card {\n margin-bottom: $spacing-small;\n padding: $spacing-small;\n border: 1px solid $brand-default;\n position: relative;\n\n &:hover {\n background-color: $grid-bg-hover\n }\n\n .mx-link {\n color: $brand-primary;\n margin-bottom: $spacing-small;\n margin-top: $spacing-small;\n }\n\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n} \n\n//Card containers for ConversationStarters\n.conversationstarter-container--vertical {\n margin-top: 20%;\n}\n\n.conversationstarter-container--horizontal {\n margin-top: 20%;\n \n .mx-layoutgrid {\n height: 100%;\n &>.row {\n .col>.card{\n height: 100%;\n display: flex;\n flex-direction: column;\n\n }\n }\n }\n\n .conversationstarter.card {\n height: 100%;\n div {\n display: flex;\n flex-direction: column;\n }\n }\n\n .widget-gallery-item-button{\n height: 100%;\n }\n\n .conversationstarter-arrow {\n display: none;\n }\n} ",".chat-dataview--display-contents {\r\n display: contents;\r\n\r\n &>div {\r\n display: contents;\r\n }\r\n}",".layoutgrid--full-height {\r\n height: 100%;\r\n .row {\r\n height: 100%;\r\n > [class*=\"col\"] {\r\n height: 100%;\r\n }\r\n }\r\n}",".chat-listview-horizontal.mx-listview {\n > ul {\n display: contents;\n margin-bottom: none;\n > li {\n display: inline-block;\n &:hover {\n background-color: transparent;}\n }\n }\n}\n\n.listview-hide-on-empty.mx-listview {\n > ul > li.mx-listview-empty {\n display: none;\n }\n}","@import \"../../../atlas_core/web/_variables.scss\";\r\n//this file contains styling for a pop-up chatbox\r\n\r\n.btn-chat-popup {\r\n position: fixed;\r\n right: $pop-up-chat-right-position;\r\n bottom: $pop-up-chat-bottom-position;\r\n z-index: 10;\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 50%;\r\n .glyphicon {\r\n font-size: 24px;\r\n }\r\n img {\r\n height: 32px;\r\n width: 32px;\r\n margin: 0;\r\n }\r\n}\r\n\r\n.layout-chat-popup.mx-window {\r\n position: fixed;\r\n right: $pop-up-chat-right-position !important;\r\n bottom: $pop-up-chat-bottom-position !important;\r\n left: unset !important;\r\n top: unset !important;\r\n width: $pop-up-chat-width !important;\r\n height: $pop-up-chat-height !important;\r\n z-index: 100;\r\n\r\n .mx-resizer-n, .mx-resizer-s, .mx-resizer-e, .mx-resizer-w, .mx-resizer-nw, .mx-resizer-ne, .mx-resizer-sw, .mx-resizer-se{\r\n cursor: auto;\r\n }\r\n .mx-window-header {\r\n background: $brand-primary;\r\n cursor: auto;\r\n h4 {\r\n color: $header-text-color;\r\n }\r\n }\r\n .mx-window-header button.close {\r\n color: transparent;\r\n &::after {\r\n content: \"-\";\r\n color: $header-text-color;\r\n }\r\n \r\n }\r\n .modal-body {\r\n height: calc(100% - 50px);\r\n overflow: hidden;\r\n padding: $spacing-medium;\r\n .mx-placeholder {\r\n height: 100%;\r\n }\r\n }\r\n}\r\n\r\n\r\n",".layout-chat-sidebar {\r\n right: 0 !important;\r\n top: 0 !important;\r\n bottom: 0 !important;\r\n left: unset !important;\r\n height: unset !important;\r\n width: $pop-up-chat-width;\r\n .mx-window-content {\r\n border-radius: 0;\r\n border: none;\r\n .mx-window-header {\r\n background: $brand-primary;\r\n cursor: auto;\r\n border: none;\r\n h4 {\r\n color: $header-text-color;\r\n }\r\n .close {\r\n color: $header-text-color;\r\n }\r\n }\r\n .mx-window-body {\r\n overflow: hidden;\r\n padding: $spacing-medium;\r\n height: calc(100% - 50px);\r\n .mx-placeholder {\r\n height: 100%;\r\n }\r\n }\r\n }\r\n}",".text-italic {\n font-style: italic;\n}",":root {\n /*\n DISCLAIMER:\n This is a mapping file which will be used to help moving towards CSS variables over time.\n Do not change this file because it is core styling.\n Customizing core files will make updating Atlas much more difficult in the future.\n To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n \n \n ██████╗ █████╗ ███████╗██╗ ██████╗\n ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n ██████╔╝███████║███████╗██║██║\n ██╔══██╗██╔══██║╚════██║██║██║\n ██████╔╝██║ ██║███████║██║╚██████╗\n ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n */\n\n /*== Gray Shades*/\n /*## Different gray shades to be used for our variables and components */\n --gray-darker: #{$gray-darker};\n --gray-dark: #{$gray-dark};\n --gray: #{$gray};\n --gray-light: #{$gray-light};\n --gray-primary: #{$gray-primary};\n --gray-lighter: #{$gray-lighter};\n\n /*== Step 1: Brand Colors */\n --brand-default: #{$brand-default};\n --brand-primary: #{$brand-primary};\n --brand-success: #{$brand-success};\n --brand-warning: #{$brand-warning};\n --brand-danger: #{$brand-danger};\n\n --brand-logo: #{$brand-logo};\n --brand-logo-height: #{$brand-logo-height};\n --brand-logo-width: #{$brand-logo-width}; /* Only used for CSS brand logo */\n\n /*== Step 2: UI Customization */\n\n /* Default Font Size & Color */\n --font-size-default: #{$font-size-default};\n --font-color-default: #{$font-color-default};\n\n /* Global Border Color */\n --border-color-default: #{$border-color-default};\n --border-radius-default: #{$border-radius-default};\n\n /* Topbar */\n --topbar-bg: #{$topbar-bg};\n --topbar-minimalheight: #{$topbar-minimalheight};\n --topbar-border-color: #{$topbar-border-color};\n\n /* Topbar mobile */\n --m-header-height: #{$m-header-height};\n --m-header-bg: #{$m-header-bg};\n --m-header-color: #{$m-header-color};\n --m-header-title-size: #{$m-header-title-size};\n\n /* Navbar Brand Name / For your company, product, or project name (used in layouts/base/) */\n --navbar-brand-name: #{$navbar-brand-name};\n\n /* Background Colors */\n /* Backgrounds */\n --bg-color: #{$bg-color};\n --bg-color: #f8f8f8;\n --bg-color-secondary: #{$bg-color-secondary};\n\n /* Default Link Color */\n --link-color: #{$link-color};\n --link-hover-color: #{$link-hover-color};\n\n /*\n █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n */\n\n /*== Typography */\n /*## Change your font family, weight, line-height, headings and more (used in components/typography) */\n\n /* Font Family Import (Used for google font plugin in theme creater) */\n --font-family-import: #{$font-family-import};\n\n /* Font Family / False = fallback from Bootstrap (Helvetica Neue) */\n --font-family-base: #{$font-family-base};\n\n /* Font Sizes */\n --font-size-large: #{$font-size-large};\n --font-size-small: #{$font-size-small};\n\n /* Font Weights */\n --font-weight-light: #{$font-weight-light};\n --font-weight-normal: #{$font-weight-normal};\n --font-weight-semibold: #{$font-weight-semibold};\n --font-weight-bold: #{$font-weight-bold};\n\n /* Font Size Headers */\n --font-size-h1: #{$font-size-h1};\n --font-size-h2: #{$font-size-h2};\n --font-size-h3: #{$font-size-h3};\n --font-size-h4: #{$font-size-h4};\n --font-size-h5: #{$font-size-h5};\n --font-size-h6: #{$font-size-h6};\n\n /* Font Weight Headers */\n --font-weight-header: #{$font-weight-header};\n\n /* Line Height */\n --line-height-base: #{$line-height-base};\n\n /* Spacing */\n --font-header-margin: #{$font-header-margin};\n\n /* Text Colors */\n --font-color-detail: #{$font-color-detail};\n --font-color-header: #{$font-color-header};\n\n /*== Navigation */\n /*## Used in components/navigation\n \n /* Default Navigation styling */\n --navigation-item-height: #{$navigation-item-height};\n --navigation-item-padding: #{$navigation-item-padding};\n\n --navigation-font-size: #{$navigation-font-size};\n --navigation-sub-font-size: #{$navigation-sub-font-size};\n --navigation-glyph-size: #{$navigation-glyph-size}; /* For glyphicons that you can select in the Mendix Modeler */\n\n --navigation-color: #{$navigation-color};\n --navigation-color-hover: #{$navigation-color-hover};\n --navigation-color-active: #{$navigation-color-active};\n\n --navigation-sub-color: #{$navigation-sub-color};\n --navigation-sub-color-hover: #{$navigation-sub-color-hover};\n --navigation-sub-color-active: #{$navigation-sub-color-active};\n\n /* Navigation Sidebar */\n --navsidebar-font-size: #{$navsidebar-font-size};\n --navsidebar-sub-font-size: #{$navsidebar-sub-font-size};\n --navsidebar-glyph-size: #{$navsidebar-glyph-size}; /* For glyphicons that you can select in the Mendix Modeler */\n\n --navsidebar-color: #{$navsidebar-color};\n --navsidebar-color-hover: #{$navsidebar-color-hover};\n --navsidebar-color-active: #{$navsidebar-color-active};\n\n --navsidebar-sub-color: #{$navsidebar-sub-color};\n --navsidebar-sub-color-hover: #{$navsidebar-sub-color-hover};\n --navsidebar-sub-color-active: #{$navsidebar-sub-color-active};\n\n --navsidebar-width-closed: #{$navsidebar-width-closed};\n --navsidebar-width-open: #{$navsidebar-width-open};\n\n /* Navigation topbar */\n --navtopbar-font-size: #{$navtopbar-font-size};\n --navtopbar-sub-font-size: #{$navtopbar-sub-font-size};\n --navtopbar-glyph-size: #{$navtopbar-glyph-size};\n\n --navtopbar-bg: #{$navtopbar-bg};\n --navtopbar-bg-hover: #{$navtopbar-bg-hover};\n --navtopbar-bg-active: #{$navtopbar-bg-active};\n --navtopbar-color: #{$navtopbar-color};\n --navtopbar-color-hover: #{$navtopbar-color-hover};\n --navtopbar-color-active: #{$navtopbar-color-active};\n\n --navtopbar-sub-bg: #{$navtopbar-sub-bg};\n --navtopbar-sub-bg-hover: #{$navtopbar-sub-bg-hover};\n --navtopbar-sub-bg-active: #{$navtopbar-sub-bg-active};\n --navtopbar-sub-color: #{$navtopbar-sub-color};\n --navtopbar-sub-color-hover: #{$navtopbar-sub-color-hover};\n --navtopbar-sub-color-active: #{$navtopbar-sub-color-active};\n\n /*== Cards */\n /* Shadow color */\n --shadow-color-border: #{$shadow-color-border};\n --shadow-color: #{$shadow-color};\n\n /*Shadow size */\n --shadow-small: #{$shadow-small};\n --shadow-medium: #{$shadow-medium};\n --shadow-large: #{$shadow-large};\n\n /*## Used in layouts/base */\n --navtopbar-border-color: #{$navtopbar-border-color};\n\n /*== Form */\n /*## Used in components/inputs */\n\n /* Values that can be used default | lined */\n --form-input-style: #{$form-input-style};\n\n /* Form Label */\n --form-label-size: #{$form-label-size};\n --form-label-weight: #{$form-label-weight};\n --form-label-gutter: #{$form-label-gutter};\n\n /* Form Input dimensions */\n --form-input-height: #{$form-input-height};\n --form-input-padding-y: #{$form-input-padding-y};\n --form-input-padding-x: #{$form-input-padding-x};\n --form-input-static-padding-y: #{$form-input-static-padding-y};\n --form-input-static-padding-x: #{$form-input-static-padding-x};\n --form-input-font-size: #{$form-input-font-size};\n --form-input-line-height: #{$form-input-line-height};\n --form-input-border-radius: #{$form-input-border-radius};\n\n /* Form Input styling */\n --form-input-bg: #{$form-input-bg};\n --form-input-bg-focus: #{$form-input-bg-focus};\n --form-input-bg-hover: #{$form-input-bg-hover};\n --form-input-bg-disabled: #{$form-input-bg-disabled};\n --form-input-color: #{$form-input-color};\n --form-input-focus-color: #{$form-input-focus-color};\n --form-input-disabled-color: #{$form-input-disabled-color};\n --form-input-placeholder-color: #{$form-input-placeholder-color};\n --form-input-border-color: #{$form-input-border-color};\n --form-input-border-focus-color: #{$form-input-border-focus-color};\n\n /* Form Input Static styling */\n --form-input-static-border-color: #{$form-input-static-border-color};\n\n /* Form Group */\n --form-group-margin-bottom: #{$form-group-margin-bottom};\n --form-group-gutter: #{$form-group-gutter};\n\n /*== Buttons */\n /*## Define background-color, border-color and text. Used in components/buttons */\n\n /* Default button style */\n --btn-font-size: #{$btn-font-size};\n --btn-bordered: #{$btn-bordered}; /* Default value false, set to true if you want this effect */\n --btn-border-radius: #{$btn-border-radius};\n\n /* Button Background Color */\n --btn-default-bg: #{$btn-default-bg};\n --btn-primary-bg: #{$btn-primary-bg};\n --btn-success-bg: #{$btn-success-bg};\n --btn-warning-bg: #{$btn-warning-bg};\n --btn-danger-bg: #{$btn-danger-bg};\n\n /* Button Border Color */\n --btn-default-border-color: #{$btn-default-border-color};\n --btn-primary-border-color: #{$btn-primary-border-color};\n --btn-success-border-color: #{$btn-success-border-color};\n --btn-warning-border-color: #{$btn-warning-border-color};\n --btn-danger-border-color: #{$btn-danger-border-color};\n\n /* Button Text Color */\n --btn-default-color: #{$btn-default-color};\n --btn-primary-color: #{$btn-primary-color};\n --btn-success-color: #{$btn-success-color};\n --btn-warning-color: #{$btn-warning-color};\n --btn-danger-color: #{$btn-danger-color};\n\n /* Button Icon Color */\n --btn-default-icon-color: #{$btn-default-icon-color};\n\n /* Button Background Color */\n --btn-default-bg-hover: #{$btn-default-bg-hover};\n --btn-primary-bg-hover: #{$btn-primary-bg-hover};\n --btn-success-bg-hover: #{$btn-success-bg-hover};\n --btn-warning-bg-hover: #{$btn-warning-bg-hover};\n --btn-danger-bg-hover: #{$btn-danger-bg-hover};\n --btn-link-bg-hover: #{$btn-link-bg-hover};\n\n /*== Header blocks */\n /*## Define look and feel over multible building blocks that serve as header */\n\n --header-min-height: #{$header-min-height};\n --header-bg-color: #{$header-bg-color};\n --header-bgimage-filter: #{$header-bgimage-filter};\n --header-text-color: #{$header-text-color};\n --header-text-color-detail: #{$header-text-color-detail};\n\n /*\n ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n */\n\n /*== Color variations */\n /*## These variations are used to support several other variables and components */\n\n /* Color variations */\n --color-default-darker: #{$color-default-darker};\n --color-default-dark: #{$color-default-dark};\n --color-default-light: #{$color-default-light};\n --color-default-lighter: #{$color-default-lighter};\n\n --color-primary-darker: #{$color-primary-darker};\n --color-primary-dark: #{$color-primary-dark};\n --color-primary-light: #{$color-primary-light};\n --color-primary-lighter: #{$color-primary-lighter};\n\n --color-success-darker: #{$color-success-darker};\n --color-success-dark: #{$color-success-dark};\n --color-success-light: #{$color-success-light};\n --color-success-lighter: #{$color-success-lighter};\n\n --color-warning-darker: #{$color-warning-darker};\n --color-warning-dark: #{$color-warning-dark};\n --color-warning-light: #{$color-warning-light};\n --color-warning-lighter: #{$color-warning-lighter};\n\n --color-danger-darker: #{$color-danger-darker};\n --color-danger-dark: #{$color-danger-dark};\n --color-danger-light: #{$color-danger-light};\n --color-danger-lighter: #{$color-danger-lighter};\n\n --brand-gradient: #{$brand-gradient};\n\n /*== Grids */\n /*## Used for Datagrid, Templategrid, Listview & Tables (see components folder) */\n\n /* Default Border Colors */\n --grid-border-color: #{$grid-border-color};\n\n /* Spacing */\n /* Default */\n --grid-padding-top: #{$grid-padding-top};\n --grid-padding-right: #{$grid-padding-right};\n --grid-padding-bottom: #{$grid-padding-bottom};\n --grid-padding-left: #{$grid-padding-left};\n\n /* Listview */\n --listview-padding-top: #{$listview-padding-top};\n --listview-padding-right: #{$listview-padding-right};\n --listview-padding-bottom: #{$listview-padding-bottom};\n --listview-padding-left: #{$listview-padding-left};\n\n /* Background Colors */\n --grid-bg: #{$grid-bg};\n --grid-bg-header: #{$grid-bg-header}; //Grid Headers\n --grid-bg-hover: #{$grid-bg-hover};\n --grid-bg-selected: #{$grid-bg-selected};\n --grid-bg-selected-hover: #{$grid-bg-selected-hover};\n\n /* Striped Background Color */\n --grid-bg-striped: #{$grid-bg-striped};\n\n /* Background Footer Color */\n --grid-footer-bg: #{$grid-footer-bg};\n\n /* Text Color */\n --grid-selected-color: #{$grid-selected-color};\n\n /* Paging Colors */\n --grid-paging-bg: #{$grid-paging-bg};\n --grid-paging-bg-hover: #{$grid-paging-bg-hover};\n --grid-paging-border-color: #{$grid-paging-border-color};\n --grid-paging-border-color-hover: #{$grid-paging-border-color-hover};\n --grid-paging-color: #{$grid-paging-color};\n --grid-paging-color-hover: #{$grid-paging-color-hover};\n\n /*== Tabs */\n /*## Default variables for Tab Container Widget (used in components/tabcontainer) */\n\n /* Text Color */\n --tabs-color: #{$tabs-color};\n --tabs-color-active: #{$tabs-color-active};\n --tabs-lined-color-active: #{$tabs-lined-color-active};\n\n --tabs-lined-border-width: #{$tabs-lined-border-width};\n\n /* Border Color */\n --tabs-border-color: #{$tabs-border-color};\n --tabs-lined-border-color: #{$tabs-lined-border-color};\n\n /* Background Color */\n --tabs-bg: #{$tabs-bg};\n --tabs-bg-pills: #{$tabs-bg-pills};\n --tabs-bg-hover: #{$tabs-bg-hover};\n --tabs-bg-active: #{$tabs-bg-active};\n\n /*== Modals */\n /*## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) */\n\n /* Background Color */\n --modal-header-bg: #{$modal-header-bg};\n\n /* Border Color */\n --modal-header-border-color: #{$modal-header-border-color};\n\n /* Text Color */\n --modal-header-color: #{$modal-header-color};\n\n /*== Dataview */\n /*## Default variables for Dataview Widget (used in components/dataview) */\n\n /* Controls */\n --dataview-controls-bg: #{$dataview-controls-bg};\n --dataview-controls-border-color: #{$dataview-controls-border-color};\n\n /* Empty Message */\n --dataview-emptymessage-bg: #{$dataview-emptymessage-bg};\n --dataview-emptymessage-color: #{$dataview-emptymessage-color};\n\n /*== Alerts */\n /*## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) */\n\n /* Background Color */\n --alert-primary-bg: #{$alert-primary-bg};\n --alert-secondary-bg: #{$alert-secondary-bg};\n --alert-success-bg: #{$alert-success-bg};\n --alert-warning-bg: #{$alert-warning-bg};\n --alert-danger-bg: #{$alert-danger-bg};\n\n /* Text Color */\n --alert-primary-color: #{$alert-primary-color};\n --alert-secondary-color: #{$alert-secondary-color};\n --alert-success-color: #{$alert-success-color};\n --alert-warning-color: #{$alert-warning-color};\n --alert-danger-color: #{$alert-danger-color};\n\n /* Border Color */\n --alert-primary-border-color: #{$alert-primary-border-color};\n --alert-secondary-border-color: #{$alert-secondary-border-color};\n --alert-success-border-color: #{$alert-success-border-color};\n --alert-warning-border-color: #{$alert-warning-border-color};\n --alert-danger-border-color: #{$alert-danger-border-color};\n\n /*== Wizard */\n\n --wizard-step-height: #{$wizard-step-height};\n --wizard-step-number-size: #{$wizard-step-number-size};\n --wizard-step-number-font-size: #{$wizard-step-number-font-size};\n\n /*Wizard states */\n --wizard-default: #{$wizard-default};\n --wizard-active: #{$wizard-active};\n --wizard-visited: #{$wizard-visited};\n\n /*Wizard step states */\n --wizard-default-bg: #{$wizard-default-bg};\n --wizard-default-color: #{$wizard-default-color};\n --wizard-default-step-color: #{$wizard-default-step-color};\n --wizard-default-border-color: #{$wizard-default-border-color};\n\n --wizard-active-bg: #{$wizard-active-bg};\n --wizard-active-color: #{$wizard-active-color};\n --wizard-active-step-color: #{$wizard-active-step-color};\n --wizard-active-border-color: #{$wizard-active-border-color};\n\n --wizard-visited-bg: #{$wizard-visited-bg};\n --wizard-visited-color: #{$wizard-visited-color};\n --wizard-visited-step-color: #{$wizard-visited-step-color};\n --wizard-visited-border-color: #{$wizard-visited-border-color};\n\n /*== Labels */\n /*## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) */\n\n /* Background Color */\n --label-default-bg: #{$label-default-bg};\n --label-primary-bg: #{$label-primary-bg};\n --label-success-bg: #{$label-success-bg};\n --label-warning-bg: #{$label-warning-bg};\n --label-danger-bg: #{$label-danger-bg};\n\n /* Border Color */\n --label-default-border-color: #{$label-default-border-color};\n --label-primary-border-color: #{$label-primary-border-color};\n --label-success-border-color: #{$label-success-border-color};\n --label-warning-border-color: #{$label-warning-border-color};\n --label-danger-border-color: #{$label-danger-border-color};\n\n /* Text Color */\n --label-default-color: #{$label-default-color};\n --label-primary-color: #{$label-primary-color};\n --label-success-color: #{$label-success-color};\n --label-warning-color: #{$label-warning-color};\n --label-danger-color: #{$label-danger-color};\n\n /*== Groupbox */\n /*## Default variables for Groupbox Widget (used in components/groupbox) */\n\n /* Background Color */\n --groupbox-default-bg: #{$groupbox-default-bg};\n --groupbox-primary-bg: #{$groupbox-primary-bg};\n --groupbox-success-bg: #{$groupbox-success-bg};\n --groupbox-warning-bg: #{$groupbox-warning-bg};\n --groupbox-danger-bg: #{$groupbox-danger-bg};\n --groupbox-white-bg: #{$groupbox-white-bg};\n\n /* Text Color */\n --groupbox-default-color: #{$groupbox-default-color};\n --groupbox-primary-color: #{$groupbox-primary-color};\n --groupbox-success-color: #{$groupbox-success-color};\n --groupbox-warning-color: #{$groupbox-warning-color};\n --groupbox-danger-color: #{$groupbox-danger-color};\n --groupbox-white-color: #{$groupbox-white-color};\n\n /*== Callout (groupbox) Colors */\n /*## Extended variables for Groupbox Widget (used in components/groupbox) */\n\n /* Text and Border Color */\n --callout-default-color: #{$callout-default-color};\n --callout-primary-color: #{$callout-primary-color};\n --callout-success-color: #{$callout-success-color};\n --callout-warning-color: #{$callout-warning-color};\n --callout-danger-color: #{$callout-danger-color};\n\n /* Background Color */\n --callout-default-bg: #{$callout-default-bg};\n --callout-primary-bg: #{$callout-primary-bg};\n --callout-success-bg: #{$callout-success-bg};\n --callout-warning-bg: #{$callout-warning-bg};\n --callout-danger-bg: #{$callout-danger-bg};\n\n /*== Timeline */\n /*## Extended variables for Timeline Widget */\n /* Colors */\n --timeline-icon-color: #{$timeline-icon-color};\n --timeline-border-color: #{$timeline-border-color};\n --timeline-event-time-color: #{$timeline-event-time-color};\n\n /* Sizes */\n --timeline-icon-size: #{$timeline-icon-size};\n --timeline-image-size: #{$timeline-image-size};\n\n /*Timeline grouping */\n --timeline-grouping-size: #{$timeline-grouping-size};\n --timeline-grouping-border-radius: #{$timeline-grouping-border-radius};\n --timeline-grouping-border-color: #{$timeline-grouping-border-color};\n\n /*== Accordions */\n /*## Extended variables for Accordion Widget */\n\n /* Default */\n --accordion-header-default-bg: #{$accordion-header-default-bg};\n --accordion-header-default-bg-hover: #{$accordion-header-default-bg-hover};\n --accordion-header-default-color: #{$accordion-header-default-color};\n --accordion-default-border-color: #{$accordion-default-border-color};\n\n --accordion-bg-striped: #{$accordion-bg-striped};\n --accordion-bg-striped-hover: #{$accordion-bg-striped-hover};\n\n /* Semantic background colors */\n --accordion-header-primary-bg: #{$accordion-header-primary-bg};\n --accordion-header-secondary-bg: #{$accordion-header-secondary-bg};\n --accordion-header-success-bg: #{$accordion-header-success-bg};\n --accordion-header-warning-bg: #{$accordion-header-warning-bg};\n --accordion-header-danger-bg: #{$accordion-header-danger-bg};\n\n --accordion-header-primary-bg-hover: #{$accordion-header-primary-bg-hover};\n --accordion-header-secondary-bg-hover: #{$accordion-header-secondary-bg-hover};\n --accordion-header-success-bg-hover: #{$accordion-header-success-bg-hover};\n --accordion-header-warning-bg-hover: #{$accordion-header-warning-bg-hover};\n --accordion-header-danger-bg-hover: #{$accordion-header-danger-bg-hover};\n\n /* Semantic text colors */\n --accordion-header-primary-color: #{$accordion-header-primary-color};\n --accordion-header-secondary-color: #{$accordion-header-secondary-color};\n --accordion-header-success-color: #{$accordion-header-success-color};\n --accordion-header-warning-color: #{$accordion-header-warning-color};\n --accordion-header-danger-color: #{$accordion-header-danger-color};\n\n /* Semantic border colors */\n --accordion-primary-border-color: #{$accordion-primary-border-color};\n --accordion-secondary-border-color: #{$accordion-secondary-border-color};\n --accordion-success-border-color: #{$accordion-success-border-color};\n --accordion-warning-border-color: #{$accordion-warning-border-color};\n --accordion-danger-border-color: #{$accordion-danger-border-color};\n\n /*== Spacing */\n /*## Advanced layout options (used in base/mixins/default-spacing) */\n\n /* Smallest spacing */\n --spacing-smallest: #{$spacing-smallest};\n\n /* Smaller spacing */\n --spacing-smaller: #{$spacing-smaller};\n\n /* Small spacing */\n --spacing-small: #{$spacing-small};\n\n /* Medium spacing */\n --spacing-medium: #{$spacing-medium};\n --t-spacing-medium: #{$t-spacing-medium};\n --m-spacing-medium: #{$m-spacing-medium};\n\n /* Large spacing */\n --spacing-large: #{$spacing-large};\n --t-spacing-large: #{$t-spacing-large};\n --m-spacing-large: #{$m-spacing-large};\n\n /* Larger spacing */\n --spacing-larger: #{$spacing-larger};\n\n /* Largest spacing */\n --spacing-largest: #{$spacing-largest};\n\n /* Layout spacing */\n --layout-spacing-top: #{$layout-spacing-top};\n --layout-spacing-right: #{$layout-spacing-right};\n --layout-spacing-bottom: #{$layout-spacing-bottom};\n --layout-spacing-left: #{$layout-spacing-left};\n\n --t-layout-spacing-top: #{$t-layout-spacing-top};\n --t-layout-spacing-right: #{$t-layout-spacing-right};\n --t-layout-spacing-bottom: #{$t-layout-spacing-bottom};\n --t-layout-spacing-left: #{$t-layout-spacing-left};\n\n --m-layout-spacing-top: #{$m-layout-spacing-top};\n --m-layout-spacing-right: #{$m-layout-spacing-right};\n --m-layout-spacing-bottom: #{$m-layout-spacing-bottom};\n --m-layout-spacing-left: #{$m-layout-spacing-left};\n\n /* Combined layout spacing */\n --layout-spacing: #{$layout-spacing};\n --m-layout-spacing: #{$m-layout-spacing};\n --t-layout-spacing: #{$t-layout-spacing};\n\n /* Gutter size */\n --gutter-size: #{$gutter-size};\n\n /*== Tables */\n /*## Table spacing options (used in components/tables) */\n\n --padding-table-cell-top: #{$padding-table-cell-top};\n --padding-table-cell-bottom: #{$padding-table-cell-bottom};\n --padding-table-cell-left: #{$padding-table-cell-left};\n --padding-table-cell-right: #{$padding-table-cell-right};\n\n /*== Media queries breakpoints */\n /*## Define the breakpoints at which your layout will change, adapting to different screen sizes. */\n\n --screen-xs: #{$screen-xs};\n --screen-sm: #{$screen-sm};\n --screen-md: #{$screen-md};\n --screen-lg: #{$screen-lg};\n --screen-xl: #{$screen-xl};\n\n /* So media queries don't overlap when required, provide a maximum (used for max-width) */\n --screen-xs-max: #{$screen-xs-max};\n --screen-sm-max: #{$screen-sm-max};\n --screen-md-max: #{$screen-md-max};\n --screen-lg-max: #{$screen-lg-max};\n\n /*== Settings */\n /*## Enable or disable your desired framework features */\n /* Use of !important */\n --important-flex: #{$important-flex}; // ./base/flex.scss\n --important-spacing: #{$important-spacing}; // ./base/spacing.scss\n --important-helpers: #{$important-helpers}; // ./helpers/helperclasses.scss\n\n /*===== Legacy variables ===== */\n\n /*== Step 1: Brand Colors */\n --brand-inverse: #{$brand-inverse};\n --brand-info: #{$brand-info};\n\n /*== Step 2: UI Customization */\n /* Sidebar */\n --sidebar-bg: #{$sidebar-bg};\n\n /*== Navigation */\n /*## Used in components/navigation */\n\n /* Default Navigation styling */\n --navigation-bg: #{$navigation-bg};\n --navigation-bg-hover: #{$navigation-bg-hover};\n --navigation-bg-active: #{$navigation-bg-active};\n\n --navigation-sub-bg: #{$navigation-sub-bg};\n --navigation-sub-bg-hover: #{$navigation-sub-bg-hover};\n --navigation-sub-bg-active: #{$navigation-sub-bg-active};\n\n --navigation-border-color: #{$navigation-border-color};\n\n /* Navigation Sidebar */\n --navsidebar-bg: #{$navsidebar-bg};\n --navsidebar-bg-hover: #{$navsidebar-bg-hover};\n --navsidebar-bg-active: #{$navsidebar-bg-active};\n\n --navsidebar-sub-bg: #{$navsidebar-sub-bg};\n --navsidebar-sub-bg-hover: #{$navsidebar-sub-bg-hover};\n --navsidebar-sub-bg-active: #{$navsidebar-sub-bg-active};\n\n --navsidebar-border-color: #{$navsidebar-border-color};\n\n /*== Form */\n /*## Used in components/inputs */\n\n /* Form Label */\n --form-label-color: #{$form-label-color};\n\n /*== Buttons */\n /*## Define background-color, border-color and text. Used in components/buttons */\n\n /* Button Background Color */\n --btn-inverse-bg: #{$btn-inverse-bg};\n --btn-info-bg: #{$btn-info-bg};\n\n /* Button Border Color */\n --btn-inverse-border-color: #{$btn-inverse-border-color};\n --btn-info-border-color: #{$btn-info-border-color};\n\n /* Button Text Color */\n --btn-inverse-color: #{$btn-inverse-color};\n --btn-info-color: #{$btn-info-color};\n\n /* Button Background Color */\n --btn-inverse-bg-hover: #{$btn-inverse-bg-hover};\n --btn-info-bg-hover: #{$btn-info-bg-hover};\n\n /*== Color variations */\n /*## These variations are used to support several other variables and components */\n\n /* Color variations */\n --color-inverse-darker: #{$color-inverse-darker};\n --color-inverse-dark: #{$color-inverse-dark};\n --color-inverse-light: #{$color-inverse-light};\n --color-inverse-lighter: #{$color-inverse-lighter};\n\n --color-info-darker: #{$color-info-darker};\n --color-info-dark: #{$color-info-dark};\n --color-info-light: #{$color-info-light};\n --color-info-lighter: #{$color-info-lighter};\n\n /*== Alerts */\n /*## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) */\n\n /* Background Color */\n --alert-info-bg: #{$alert-info-bg};\n\n /* Text Color */\n --alert-info-color: #{$alert-info-color};\n\n /* Border Color */\n --alert-info-border-color: #{$alert-info-border-color};\n /*== Labels */\n /*## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) */\n\n /* Background Color */\n --label-info-bg: #{$label-info-bg};\n --label-inverse-bg: #{$label-inverse-bg};\n\n /* Border Color */\n --label-info-border-color: #{$label-info-border-color};\n --label-inverse-border-color: #{$label-inverse-border-color};\n\n /* Text Color */\n --label-info-color: #{$label-info-color};\n --label-inverse-color: #{$label-inverse-color};\n\n /*== Groupbox */\n /*## Default variables for Groupbox Widget (used in components/groupbox) */\n\n /* Background Color */\n --groupbox-inverse-bg: #{$groupbox-inverse-bg};\n --groupbox-info-bg: #{$groupbox-info-bg};\n\n /* Text Color */\n --groupbox-inverse-color: #{$groupbox-inverse-color};\n --groupbox-info-color: #{$groupbox-info-color};\n /*== Callout (groupbox) Colors */\n /*## Extended variables for Groupbox Widget (used in components/groupbox) */\n\n /* Text and Border Color */\n --callout-info-color: #{$callout-info-color};\n\n /* Background Color */\n --callout-info-bg: #{$callout-info-bg};\n}\n","/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@mixin bootstrap() {\n /*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n html {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n }\n body {\n margin: 0;\n }\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n section,\n summary {\n display: block;\n }\n audio,\n canvas,\n progress,\n video {\n display: inline-block;\n vertical-align: baseline;\n }\n audio:not([controls]) {\n display: none;\n height: 0;\n }\n [hidden],\n template {\n display: none;\n }\n a {\n background-color: transparent;\n }\n a:active,\n a:hover {\n outline: 0;\n }\n abbr[title] {\n border-bottom: 1px dotted;\n }\n b,\n strong {\n font-weight: bold;\n }\n dfn {\n font-style: italic;\n }\n h1 {\n margin: 0.67em 0;\n font-size: 2em;\n }\n mark {\n color: #000;\n background: #ff0;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n sup {\n top: -0.5em;\n }\n sub {\n bottom: -0.25em;\n }\n img {\n border: 0;\n }\n svg:not(:root) {\n overflow: hidden;\n }\n figure {\n margin: 1em 40px;\n }\n hr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n }\n pre {\n overflow: auto;\n }\n code,\n kbd,\n pre,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n margin: 0;\n font: inherit;\n color: inherit;\n }\n button {\n overflow: visible;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n html input[type=\"button\"],\n input[type=\"reset\"],\n input[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n }\n //button[disabled],\n //html input[disabled] {\n // cursor: default;\n //}\n button::-moz-focus-inner,\n input::-moz-focus-inner {\n padding: 0;\n border: 0;\n }\n input {\n line-height: normal;\n }\n input[type=\"checkbox\"],\n input[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n }\n input[type=\"number\"]::-webkit-inner-spin-button,\n input[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n input[type=\"search\"] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n }\n input[type=\"search\"]::-webkit-search-cancel-button,\n input[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n fieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n }\n legend {\n padding: 0;\n border: 0;\n }\n textarea {\n overflow: auto;\n }\n optgroup {\n font-weight: bold;\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n }\n td,\n th {\n padding: 0;\n }\n /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n @media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n }\n @font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(\"./resources/glyphicons-halflings-regular.woff2\") format(\"woff2\");\n }\n .glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .glyphicon-asterisk:before {\n content: \"\\2a\";\n }\n .glyphicon-plus:before {\n content: \"\\2b\";\n }\n .glyphicon-euro:before,\n .glyphicon-eur:before {\n content: \"\\20ac\";\n }\n .glyphicon-minus:before {\n content: \"\\2212\";\n }\n .glyphicon-cloud:before {\n content: \"\\2601\";\n }\n .glyphicon-envelope:before {\n content: \"\\2709\";\n }\n .glyphicon-pencil:before {\n content: \"\\270f\";\n }\n .glyphicon-glass:before {\n content: \"\\e001\";\n }\n .glyphicon-music:before {\n content: \"\\e002\";\n }\n .glyphicon-search:before {\n content: \"\\e003\";\n }\n .glyphicon-heart:before {\n content: \"\\e005\";\n }\n .glyphicon-star:before {\n content: \"\\e006\";\n }\n .glyphicon-star-empty:before {\n content: \"\\e007\";\n }\n .glyphicon-user:before {\n content: \"\\e008\";\n }\n .glyphicon-film:before {\n content: \"\\e009\";\n }\n .glyphicon-th-large:before {\n content: \"\\e010\";\n }\n .glyphicon-th:before {\n content: \"\\e011\";\n }\n .glyphicon-th-list:before {\n content: \"\\e012\";\n }\n .glyphicon-ok:before {\n content: \"\\e013\";\n }\n .glyphicon-remove:before {\n content: \"\\e014\";\n }\n .glyphicon-zoom-in:before {\n content: \"\\e015\";\n }\n .glyphicon-zoom-out:before {\n content: \"\\e016\";\n }\n .glyphicon-off:before {\n content: \"\\e017\";\n }\n .glyphicon-signal:before {\n content: \"\\e018\";\n }\n .glyphicon-cog:before {\n content: \"\\e019\";\n }\n .glyphicon-trash:before {\n content: \"\\e020\";\n }\n .glyphicon-home:before {\n content: \"\\e021\";\n }\n .glyphicon-file:before {\n content: \"\\e022\";\n }\n .glyphicon-time:before {\n content: \"\\e023\";\n }\n .glyphicon-road:before {\n content: \"\\e024\";\n }\n .glyphicon-download-alt:before {\n content: \"\\e025\";\n }\n .glyphicon-download:before {\n content: \"\\e026\";\n }\n .glyphicon-upload:before {\n content: \"\\e027\";\n }\n .glyphicon-inbox:before {\n content: \"\\e028\";\n }\n .glyphicon-play-circle:before {\n content: \"\\e029\";\n }\n .glyphicon-repeat:before {\n content: \"\\e030\";\n }\n .glyphicon-refresh:before {\n content: \"\\e031\";\n }\n .glyphicon-list-alt:before {\n content: \"\\e032\";\n }\n .glyphicon-lock:before {\n content: \"\\e033\";\n }\n .glyphicon-flag:before {\n content: \"\\e034\";\n }\n .glyphicon-headphones:before {\n content: \"\\e035\";\n }\n .glyphicon-volume-off:before {\n content: \"\\e036\";\n }\n .glyphicon-volume-down:before {\n content: \"\\e037\";\n }\n .glyphicon-volume-up:before {\n content: \"\\e038\";\n }\n .glyphicon-qrcode:before {\n content: \"\\e039\";\n }\n .glyphicon-barcode:before {\n content: \"\\e040\";\n }\n .glyphicon-tag:before {\n content: \"\\e041\";\n }\n .glyphicon-tags:before {\n content: \"\\e042\";\n }\n .glyphicon-book:before {\n content: \"\\e043\";\n }\n .glyphicon-bookmark:before {\n content: \"\\e044\";\n }\n .glyphicon-print:before {\n content: \"\\e045\";\n }\n .glyphicon-camera:before {\n content: \"\\e046\";\n }\n .glyphicon-font:before {\n content: \"\\e047\";\n }\n .glyphicon-bold:before {\n content: \"\\e048\";\n }\n .glyphicon-italic:before {\n content: \"\\e049\";\n }\n .glyphicon-text-height:before {\n content: \"\\e050\";\n }\n .glyphicon-text-width:before {\n content: \"\\e051\";\n }\n .glyphicon-align-left:before {\n content: \"\\e052\";\n }\n .glyphicon-align-center:before {\n content: \"\\e053\";\n }\n .glyphicon-align-right:before {\n content: \"\\e054\";\n }\n .glyphicon-align-justify:before {\n content: \"\\e055\";\n }\n .glyphicon-list:before {\n content: \"\\e056\";\n }\n .glyphicon-indent-left:before {\n content: \"\\e057\";\n }\n .glyphicon-indent-right:before {\n content: \"\\e058\";\n }\n .glyphicon-facetime-video:before {\n content: \"\\e059\";\n }\n .glyphicon-picture:before {\n content: \"\\e060\";\n }\n .glyphicon-map-marker:before {\n content: \"\\e062\";\n }\n .glyphicon-adjust:before {\n content: \"\\e063\";\n }\n .glyphicon-tint:before {\n content: \"\\e064\";\n }\n .glyphicon-edit:before {\n content: \"\\e065\";\n }\n .glyphicon-share:before {\n content: \"\\e066\";\n }\n .glyphicon-check:before {\n content: \"\\e067\";\n }\n .glyphicon-move:before {\n content: \"\\e068\";\n }\n .glyphicon-step-backward:before {\n content: \"\\e069\";\n }\n .glyphicon-fast-backward:before {\n content: \"\\e070\";\n }\n .glyphicon-backward:before {\n content: \"\\e071\";\n }\n .glyphicon-play:before {\n content: \"\\e072\";\n }\n .glyphicon-pause:before {\n content: \"\\e073\";\n }\n .glyphicon-stop:before {\n content: \"\\e074\";\n }\n .glyphicon-forward:before {\n content: \"\\e075\";\n }\n .glyphicon-fast-forward:before {\n content: \"\\e076\";\n }\n .glyphicon-step-forward:before {\n content: \"\\e077\";\n }\n .glyphicon-eject:before {\n content: \"\\e078\";\n }\n .glyphicon-chevron-left:before {\n content: \"\\e079\";\n }\n .glyphicon-chevron-right:before {\n content: \"\\e080\";\n }\n .glyphicon-plus-sign:before {\n content: \"\\e081\";\n }\n .glyphicon-minus-sign:before {\n content: \"\\e082\";\n }\n .glyphicon-remove-sign:before {\n content: \"\\e083\";\n }\n .glyphicon-ok-sign:before {\n content: \"\\e084\";\n }\n .glyphicon-question-sign:before {\n content: \"\\e085\";\n }\n .glyphicon-info-sign:before {\n content: \"\\e086\";\n }\n .glyphicon-screenshot:before {\n content: \"\\e087\";\n }\n .glyphicon-remove-circle:before {\n content: \"\\e088\";\n }\n .glyphicon-ok-circle:before {\n content: \"\\e089\";\n }\n .glyphicon-ban-circle:before {\n content: \"\\e090\";\n }\n .glyphicon-arrow-left:before {\n content: \"\\e091\";\n }\n .glyphicon-arrow-right:before {\n content: \"\\e092\";\n }\n .glyphicon-arrow-up:before {\n content: \"\\e093\";\n }\n .glyphicon-arrow-down:before {\n content: \"\\e094\";\n }\n .glyphicon-share-alt:before {\n content: \"\\e095\";\n }\n .glyphicon-resize-full:before {\n content: \"\\e096\";\n }\n .glyphicon-resize-small:before {\n content: \"\\e097\";\n }\n .glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n }\n .glyphicon-gift:before {\n content: \"\\e102\";\n }\n .glyphicon-leaf:before {\n content: \"\\e103\";\n }\n .glyphicon-fire:before {\n content: \"\\e104\";\n }\n .glyphicon-eye-open:before {\n content: \"\\e105\";\n }\n .glyphicon-eye-close:before {\n content: \"\\e106\";\n }\n .glyphicon-warning-sign:before {\n content: \"\\e107\";\n }\n .glyphicon-plane:before {\n content: \"\\e108\";\n }\n .glyphicon-calendar:before {\n content: \"\\e109\";\n }\n .glyphicon-random:before {\n content: \"\\e110\";\n }\n .glyphicon-comment:before {\n content: \"\\e111\";\n }\n .glyphicon-magnet:before {\n content: \"\\e112\";\n }\n .glyphicon-chevron-up:before {\n content: \"\\e113\";\n }\n .glyphicon-chevron-down:before {\n content: \"\\e114\";\n }\n .glyphicon-retweet:before {\n content: \"\\e115\";\n }\n .glyphicon-shopping-cart:before {\n content: \"\\e116\";\n }\n .glyphicon-folder-close:before {\n content: \"\\e117\";\n }\n .glyphicon-folder-open:before {\n content: \"\\e118\";\n }\n .glyphicon-resize-vertical:before {\n content: \"\\e119\";\n }\n .glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n }\n .glyphicon-hdd:before {\n content: \"\\e121\";\n }\n .glyphicon-bullhorn:before {\n content: \"\\e122\";\n }\n .glyphicon-bell:before {\n content: \"\\e123\";\n }\n .glyphicon-certificate:before {\n content: \"\\e124\";\n }\n .glyphicon-thumbs-up:before {\n content: \"\\e125\";\n }\n .glyphicon-thumbs-down:before {\n content: \"\\e126\";\n }\n .glyphicon-hand-right:before {\n content: \"\\e127\";\n }\n .glyphicon-hand-left:before {\n content: \"\\e128\";\n }\n .glyphicon-hand-up:before {\n content: \"\\e129\";\n }\n .glyphicon-hand-down:before {\n content: \"\\e130\";\n }\n .glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n }\n .glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n }\n .glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n }\n .glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n }\n .glyphicon-globe:before {\n content: \"\\e135\";\n }\n .glyphicon-wrench:before {\n content: \"\\e136\";\n }\n .glyphicon-tasks:before {\n content: \"\\e137\";\n }\n .glyphicon-filter:before {\n content: \"\\e138\";\n }\n .glyphicon-briefcase:before {\n content: \"\\e139\";\n }\n .glyphicon-fullscreen:before {\n content: \"\\e140\";\n }\n .glyphicon-dashboard:before {\n content: \"\\e141\";\n }\n .glyphicon-paperclip:before {\n content: \"\\e142\";\n }\n .glyphicon-heart-empty:before {\n content: \"\\e143\";\n }\n .glyphicon-link:before {\n content: \"\\e144\";\n }\n .glyphicon-phone:before {\n content: \"\\e145\";\n }\n .glyphicon-pushpin:before {\n content: \"\\e146\";\n }\n .glyphicon-usd:before {\n content: \"\\e148\";\n }\n .glyphicon-gbp:before {\n content: \"\\e149\";\n }\n .glyphicon-sort:before {\n content: \"\\e150\";\n }\n .glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n }\n .glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n }\n .glyphicon-sort-by-order:before {\n content: \"\\e153\";\n }\n .glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n }\n .glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n }\n .glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n }\n .glyphicon-unchecked:before {\n content: \"\\e157\";\n }\n .glyphicon-expand:before {\n content: \"\\e158\";\n }\n .glyphicon-collapse-down:before {\n content: \"\\e159\";\n }\n .glyphicon-collapse-up:before {\n content: \"\\e160\";\n }\n .glyphicon-log-in:before {\n content: \"\\e161\";\n }\n .glyphicon-flash:before {\n content: \"\\e162\";\n }\n .glyphicon-log-out:before {\n content: \"\\e163\";\n }\n .glyphicon-new-window:before {\n content: \"\\e164\";\n }\n .glyphicon-record:before {\n content: \"\\e165\";\n }\n .glyphicon-save:before {\n content: \"\\e166\";\n }\n .glyphicon-open:before {\n content: \"\\e167\";\n }\n .glyphicon-saved:before {\n content: \"\\e168\";\n }\n .glyphicon-import:before {\n content: \"\\e169\";\n }\n .glyphicon-export:before {\n content: \"\\e170\";\n }\n .glyphicon-send:before {\n content: \"\\e171\";\n }\n .glyphicon-floppy-disk:before {\n content: \"\\e172\";\n }\n .glyphicon-floppy-saved:before {\n content: \"\\e173\";\n }\n .glyphicon-floppy-remove:before {\n content: \"\\e174\";\n }\n .glyphicon-floppy-save:before {\n content: \"\\e175\";\n }\n .glyphicon-floppy-open:before {\n content: \"\\e176\";\n }\n .glyphicon-credit-card:before {\n content: \"\\e177\";\n }\n .glyphicon-transfer:before {\n content: \"\\e178\";\n }\n .glyphicon-cutlery:before {\n content: \"\\e179\";\n }\n .glyphicon-header:before {\n content: \"\\e180\";\n }\n .glyphicon-compressed:before {\n content: \"\\e181\";\n }\n .glyphicon-earphone:before {\n content: \"\\e182\";\n }\n .glyphicon-phone-alt:before {\n content: \"\\e183\";\n }\n .glyphicon-tower:before {\n content: \"\\e184\";\n }\n .glyphicon-stats:before {\n content: \"\\e185\";\n }\n .glyphicon-sd-video:before {\n content: \"\\e186\";\n }\n .glyphicon-hd-video:before {\n content: \"\\e187\";\n }\n .glyphicon-subtitles:before {\n content: \"\\e188\";\n }\n .glyphicon-sound-stereo:before {\n content: \"\\e189\";\n }\n .glyphicon-sound-dolby:before {\n content: \"\\e190\";\n }\n .glyphicon-sound-5-1:before {\n content: \"\\e191\";\n }\n .glyphicon-sound-6-1:before {\n content: \"\\e192\";\n }\n .glyphicon-sound-7-1:before {\n content: \"\\e193\";\n }\n .glyphicon-copyright-mark:before {\n content: \"\\e194\";\n }\n .glyphicon-registration-mark:before {\n content: \"\\e195\";\n }\n .glyphicon-cloud-download:before {\n content: \"\\e197\";\n }\n .glyphicon-cloud-upload:before {\n content: \"\\e198\";\n }\n .glyphicon-tree-conifer:before {\n content: \"\\e199\";\n }\n .glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n }\n .glyphicon-cd:before {\n content: \"\\e201\";\n }\n .glyphicon-save-file:before {\n content: \"\\e202\";\n }\n .glyphicon-open-file:before {\n content: \"\\e203\";\n }\n .glyphicon-level-up:before {\n content: \"\\e204\";\n }\n .glyphicon-copy:before {\n content: \"\\e205\";\n }\n .glyphicon-paste:before {\n content: \"\\e206\";\n }\n .glyphicon-alert:before {\n content: \"\\e209\";\n }\n .glyphicon-equalizer:before {\n content: \"\\e210\";\n }\n .glyphicon-king:before {\n content: \"\\e211\";\n }\n .glyphicon-queen:before {\n content: \"\\e212\";\n }\n .glyphicon-pawn:before {\n content: \"\\e213\";\n }\n .glyphicon-bishop:before {\n content: \"\\e214\";\n }\n .glyphicon-knight:before {\n content: \"\\e215\";\n }\n .glyphicon-baby-formula:before {\n content: \"\\e216\";\n }\n .glyphicon-tent:before {\n content: \"\\26fa\";\n }\n .glyphicon-blackboard:before {\n content: \"\\e218\";\n }\n .glyphicon-bed:before {\n content: \"\\e219\";\n }\n .glyphicon-apple:before {\n content: \"\\f8ff\";\n }\n .glyphicon-erase:before {\n content: \"\\e221\";\n }\n .glyphicon-hourglass:before {\n content: \"\\231b\";\n }\n .glyphicon-lamp:before {\n content: \"\\e223\";\n }\n .glyphicon-duplicate:before {\n content: \"\\e224\";\n }\n .glyphicon-piggy-bank:before {\n content: \"\\e225\";\n }\n .glyphicon-scissors:before {\n content: \"\\e226\";\n }\n .glyphicon-bitcoin:before {\n content: \"\\e227\";\n }\n .glyphicon-btc:before {\n content: \"\\e227\";\n }\n .glyphicon-xbt:before {\n content: \"\\e227\";\n }\n .glyphicon-yen:before {\n content: \"\\00a5\";\n }\n .glyphicon-jpy:before {\n content: \"\\00a5\";\n }\n .glyphicon-ruble:before {\n content: \"\\20bd\";\n }\n .glyphicon-rub:before {\n content: \"\\20bd\";\n }\n .glyphicon-scale:before {\n content: \"\\e230\";\n }\n .glyphicon-ice-lolly:before {\n content: \"\\e231\";\n }\n .glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n }\n .glyphicon-education:before {\n content: \"\\e233\";\n }\n .glyphicon-option-horizontal:before {\n content: \"\\e234\";\n }\n .glyphicon-option-vertical:before {\n content: \"\\e235\";\n }\n .glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n }\n .glyphicon-modal-window:before {\n content: \"\\e237\";\n }\n .glyphicon-oil:before {\n content: \"\\e238\";\n }\n .glyphicon-grain:before {\n content: \"\\e239\";\n }\n .glyphicon-sunglasses:before {\n content: \"\\e240\";\n }\n .glyphicon-text-size:before {\n content: \"\\e241\";\n }\n .glyphicon-text-color:before {\n content: \"\\e242\";\n }\n .glyphicon-text-background:before {\n content: \"\\e243\";\n }\n .glyphicon-object-align-top:before {\n content: \"\\e244\";\n }\n .glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n }\n .glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n }\n .glyphicon-object-align-left:before {\n content: \"\\e247\";\n }\n .glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n }\n .glyphicon-object-align-right:before {\n content: \"\\e249\";\n }\n .glyphicon-triangle-right:before {\n content: \"\\e250\";\n }\n .glyphicon-triangle-left:before {\n content: \"\\e251\";\n }\n .glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n }\n .glyphicon-triangle-top:before {\n content: \"\\e253\";\n }\n .glyphicon-console:before {\n content: \"\\e254\";\n }\n .glyphicon-superscript:before {\n content: \"\\e255\";\n }\n .glyphicon-subscript:before {\n content: \"\\e256\";\n }\n .glyphicon-menu-left:before {\n content: \"\\e257\";\n }\n .glyphicon-menu-right:before {\n content: \"\\e258\";\n }\n .glyphicon-menu-down:before {\n content: \"\\e259\";\n }\n .glyphicon-menu-up:before {\n content: \"\\e260\";\n }\n * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n *:before,\n *:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n html {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n body {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n }\n input,\n button,\n select,\n textarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n a {\n color: #337ab7;\n text-decoration: none;\n }\n a:hover,\n a:focus {\n color: #23527c;\n text-decoration: underline;\n }\n a:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n figure {\n margin: 0;\n }\n img {\n vertical-align: middle;\n }\n .img-responsive,\n .thumbnail > img,\n .thumbnail a > img,\n .carousel-inner > .item > img,\n .carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n }\n .img-rounded {\n border-radius: 6px;\n }\n .img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n }\n .img-circle {\n border-radius: 50%;\n }\n hr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n }\n .sr-only-focusable:active,\n .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n [role=\"button\"] {\n cursor: pointer;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n }\n h1 small,\n h2 small,\n h3 small,\n h4 small,\n h5 small,\n h6 small,\n .h1 small,\n .h2 small,\n .h3 small,\n .h4 small,\n .h5 small,\n .h6 small,\n h1 .small,\n h2 .small,\n h3 .small,\n h4 .small,\n h5 .small,\n h6 .small,\n .h1 .small,\n .h2 .small,\n .h3 .small,\n .h4 .small,\n .h5 .small,\n .h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n }\n h1,\n .h1,\n h2,\n .h2,\n h3,\n .h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n }\n h1 small,\n .h1 small,\n h2 small,\n .h2 small,\n h3 small,\n .h3 small,\n h1 .small,\n .h1 .small,\n h2 .small,\n .h2 .small,\n h3 .small,\n .h3 .small {\n font-size: 65%;\n }\n h4,\n .h4,\n h5,\n .h5,\n h6,\n .h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n h4 small,\n .h4 small,\n h5 small,\n .h5 small,\n h6 small,\n .h6 small,\n h4 .small,\n .h4 .small,\n h5 .small,\n .h5 .small,\n h6 .small,\n .h6 .small {\n font-size: 75%;\n }\n h1,\n .h1 {\n font-size: 36px;\n }\n h2,\n .h2 {\n font-size: 30px;\n }\n h3,\n .h3 {\n font-size: 24px;\n }\n h4,\n .h4 {\n font-size: 18px;\n }\n h5,\n .h5 {\n font-size: 14px;\n }\n h6,\n .h6 {\n font-size: 12px;\n }\n p {\n margin: 0 0 10px;\n }\n .lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n }\n @media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n }\n small,\n .small {\n font-size: 85%;\n }\n mark,\n .mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .text-center {\n text-align: center;\n }\n .text-justify {\n text-align: justify;\n }\n .text-nowrap {\n white-space: nowrap;\n }\n .text-lowercase {\n text-transform: lowercase;\n }\n .text-uppercase {\n text-transform: uppercase;\n }\n .text-capitalize {\n text-transform: capitalize;\n }\n .text-muted {\n color: #777;\n }\n .text-primary {\n color: #337ab7;\n }\n a.text-primary:hover {\n color: #286090;\n }\n .text-success {\n color: #3c763d;\n }\n a.text-success:hover {\n color: #2b542c;\n }\n .text-info {\n color: #31708f;\n }\n a.text-info:hover {\n color: #245269;\n }\n .text-warning {\n color: #8a6d3b;\n }\n a.text-warning:hover {\n color: #66512c;\n }\n .text-danger {\n color: #a94442;\n }\n a.text-danger:hover {\n color: #843534;\n }\n .bg-primary {\n color: #fff;\n background-color: #337ab7;\n }\n a.bg-primary:hover {\n background-color: #286090;\n }\n .bg-success {\n background-color: #dff0d8;\n }\n a.bg-success:hover {\n background-color: #c1e2b3;\n }\n .bg-info {\n background-color: #d9edf7;\n }\n a.bg-info:hover {\n background-color: #afd9ee;\n }\n .bg-warning {\n background-color: #fcf8e3;\n }\n a.bg-warning:hover {\n background-color: #f7ecb5;\n }\n .bg-danger {\n background-color: #f2dede;\n }\n a.bg-danger:hover {\n background-color: #e4b9b9;\n }\n .page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n }\n ul,\n ol {\n margin-top: 0;\n margin-bottom: 10px;\n }\n ul ul,\n ol ul,\n ul ol,\n ol ol {\n margin-bottom: 0;\n }\n .list-unstyled {\n padding-left: 0;\n list-style: none;\n }\n .list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n }\n .list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n dl {\n margin-top: 0;\n margin-bottom: 20px;\n }\n dt,\n dd {\n line-height: 1.42857143;\n }\n dt {\n font-weight: bold;\n }\n dd {\n margin-left: 0;\n }\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n }\n abbr[title],\n abbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n }\n .initialism {\n font-size: 90%;\n text-transform: uppercase;\n }\n blockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n }\n blockquote p:last-child,\n blockquote ul:last-child,\n blockquote ol:last-child {\n margin-bottom: 0;\n }\n blockquote footer,\n blockquote small,\n blockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n }\n blockquote footer:before,\n blockquote small:before,\n blockquote .small:before {\n content: \"\\2014 \\00A0\";\n }\n .blockquote-reverse,\n blockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n }\n .blockquote-reverse footer:before,\n blockquote.pull-right footer:before,\n .blockquote-reverse small:before,\n blockquote.pull-right small:before,\n .blockquote-reverse .small:before,\n blockquote.pull-right .small:before {\n content: \"\";\n }\n .blockquote-reverse footer:after,\n blockquote.pull-right footer:after,\n .blockquote-reverse small:after,\n blockquote.pull-right small:after,\n .blockquote-reverse .small:after,\n blockquote.pull-right .small:after {\n content: \"\\00A0 \\2014\";\n }\n address {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n }\n code,\n kbd,\n pre,\n samp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n }\n code {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n }\n kbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n }\n kbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n pre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n }\n pre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n .pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n }\n .container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n @media (min-width: 768px) {\n .container {\n width: 750px;\n }\n }\n @media (min-width: 992px) {\n .container {\n width: 970px;\n }\n }\n @media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n }\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n //.col-xs-1,\n //.col-sm-1,\n //.col-md-1,\n //.col-lg-1,\n //.col-xs-2,\n //.col-sm-2,\n //.col-md-2,\n //.col-lg-2,\n //.col-xs-3,\n //.col-sm-3,\n //.col-md-3,\n //.col-lg-3,\n //.col-xs-4,\n //.col-sm-4,\n //.col-md-4,\n //.col-lg-4,\n //.col-xs-5,\n //.col-sm-5,\n //.col-md-5,\n //.col-lg-5,\n //.col-xs-6,\n //.col-sm-6,\n //.col-md-6,\n //.col-lg-6,\n //.col-xs-7,\n //.col-sm-7,\n //.col-md-7,\n //.col-lg-7,\n //.col-xs-8,\n //.col-sm-8,\n //.col-md-8,\n //.col-lg-8,\n //.col-xs-9,\n //.col-sm-9,\n //.col-md-9,\n //.col-lg-9,\n //.col-xs-10,\n //.col-sm-10,\n //.col-md-10,\n //.col-lg-10,\n //.col-xs-11,\n //.col-sm-11,\n //.col-md-11,\n //.col-lg-11,\n //.col-xs-12,\n //.col-sm-12,\n //.col-md-12,\n //.col-lg-12 {\n // position: relative;\n // min-height: 1px;\n // padding-right: 15px;\n // padding-left: 15px;\n //}\n //.col-xs-1,\n //.col-xs-2,\n //.col-xs-3,\n //.col-xs-4,\n //.col-xs-5,\n //.col-xs-6,\n //.col-xs-7,\n //.col-xs-8,\n //.col-xs-9,\n //.col-xs-10,\n //.col-xs-11,\n //.col-xs-12 {\n // float: left;\n //}\n //.col-xs-12 {\n // width: 100%;\n //}\n //.col-xs-11 {\n // width: 91.66666667%;\n //}\n //.col-xs-10 {\n // width: 83.33333333%;\n //}\n //.col-xs-9 {\n // width: 75%;\n //}\n //.col-xs-8 {\n // width: 66.66666667%;\n //}\n //.col-xs-7 {\n // width: 58.33333333%;\n //}\n //.col-xs-6 {\n // width: 50%;\n //}\n //.col-xs-5 {\n // width: 41.66666667%;\n //}\n //.col-xs-4 {\n // width: 33.33333333%;\n //}\n //.col-xs-3 {\n // width: 25%;\n //}\n //.col-xs-2 {\n // width: 16.66666667%;\n //}\n //.col-xs-1 {\n // width: 8.33333333%;\n //}\n //.col-xs-pull-12 {\n // right: 100%;\n //}\n //.col-xs-pull-11 {\n // right: 91.66666667%;\n //}\n //.col-xs-pull-10 {\n // right: 83.33333333%;\n //}\n //.col-xs-pull-9 {\n // right: 75%;\n //}\n //.col-xs-pull-8 {\n // right: 66.66666667%;\n //}\n //.col-xs-pull-7 {\n // right: 58.33333333%;\n //}\n //.col-xs-pull-6 {\n // right: 50%;\n //}\n //.col-xs-pull-5 {\n // right: 41.66666667%;\n //}\n //.col-xs-pull-4 {\n // right: 33.33333333%;\n //}\n //.col-xs-pull-3 {\n // right: 25%;\n //}\n //.col-xs-pull-2 {\n // right: 16.66666667%;\n //}\n //.col-xs-pull-1 {\n // right: 8.33333333%;\n //}\n //.col-xs-pull-0 {\n // right: auto;\n //}\n //.col-xs-push-12 {\n // left: 100%;\n //}\n //.col-xs-push-11 {\n // left: 91.66666667%;\n //}\n //.col-xs-push-10 {\n // left: 83.33333333%;\n //}\n //.col-xs-push-9 {\n // left: 75%;\n //}\n //.col-xs-push-8 {\n // left: 66.66666667%;\n //}\n //.col-xs-push-7 {\n // left: 58.33333333%;\n //}\n //.col-xs-push-6 {\n // left: 50%;\n //}\n //.col-xs-push-5 {\n // left: 41.66666667%;\n //}\n //.col-xs-push-4 {\n // left: 33.33333333%;\n //}\n //.col-xs-push-3 {\n // left: 25%;\n //}\n //.col-xs-push-2 {\n // left: 16.66666667%;\n //}\n //.col-xs-push-1 {\n // left: 8.33333333%;\n //}\n //.col-xs-push-0 {\n // left: auto;\n //}\n //.col-xs-offset-12 {\n // margin-left: 100%;\n //}\n //.col-xs-offset-11 {\n // margin-left: 91.66666667%;\n //}\n //.col-xs-offset-10 {\n // margin-left: 83.33333333%;\n //}\n //.col-xs-offset-9 {\n // margin-left: 75%;\n //}\n //.col-xs-offset-8 {\n // margin-left: 66.66666667%;\n //}\n //.col-xs-offset-7 {\n // margin-left: 58.33333333%;\n //}\n //.col-xs-offset-6 {\n // margin-left: 50%;\n //}\n //.col-xs-offset-5 {\n // margin-left: 41.66666667%;\n //}\n //.col-xs-offset-4 {\n // margin-left: 33.33333333%;\n //}\n //.col-xs-offset-3 {\n // margin-left: 25%;\n //}\n //.col-xs-offset-2 {\n // margin-left: 16.66666667%;\n //}\n //.col-xs-offset-1 {\n // margin-left: 8.33333333%;\n //}\n //.col-xs-offset-0 {\n // margin-left: 0;\n //}\n //@media (min-width: 768px) {\n // .col-sm-1,\n // .col-sm-2,\n // .col-sm-3,\n // .col-sm-4,\n // .col-sm-5,\n // .col-sm-6,\n // .col-sm-7,\n // .col-sm-8,\n // .col-sm-9,\n // .col-sm-10,\n // .col-sm-11,\n // .col-sm-12 {\n // float: left;\n // }\n // .col-sm-12 {\n // width: 100%;\n // }\n // .col-sm-11 {\n // width: 91.66666667%;\n // }\n // .col-sm-10 {\n // width: 83.33333333%;\n // }\n // .col-sm-9 {\n // width: 75%;\n // }\n // .col-sm-8 {\n // width: 66.66666667%;\n // }\n // .col-sm-7 {\n // width: 58.33333333%;\n // }\n // .col-sm-6 {\n // width: 50%;\n // }\n // .col-sm-5 {\n // width: 41.66666667%;\n // }\n // .col-sm-4 {\n // width: 33.33333333%;\n // }\n // .col-sm-3 {\n // width: 25%;\n // }\n // .col-sm-2 {\n // width: 16.66666667%;\n // }\n // .col-sm-1 {\n // width: 8.33333333%;\n // }\n // .col-sm-pull-12 {\n // right: 100%;\n // }\n // .col-sm-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-sm-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-sm-pull-9 {\n // right: 75%;\n // }\n // .col-sm-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-sm-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-sm-pull-6 {\n // right: 50%;\n // }\n // .col-sm-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-sm-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-sm-pull-3 {\n // right: 25%;\n // }\n // .col-sm-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-sm-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-sm-pull-0 {\n // right: auto;\n // }\n // .col-sm-push-12 {\n // left: 100%;\n // }\n // .col-sm-push-11 {\n // left: 91.66666667%;\n // }\n // .col-sm-push-10 {\n // left: 83.33333333%;\n // }\n // .col-sm-push-9 {\n // left: 75%;\n // }\n // .col-sm-push-8 {\n // left: 66.66666667%;\n // }\n // .col-sm-push-7 {\n // left: 58.33333333%;\n // }\n // .col-sm-push-6 {\n // left: 50%;\n // }\n // .col-sm-push-5 {\n // left: 41.66666667%;\n // }\n // .col-sm-push-4 {\n // left: 33.33333333%;\n // }\n // .col-sm-push-3 {\n // left: 25%;\n // }\n // .col-sm-push-2 {\n // left: 16.66666667%;\n // }\n // .col-sm-push-1 {\n // left: 8.33333333%;\n // }\n // .col-sm-push-0 {\n // left: auto;\n // }\n // .col-sm-offset-12 {\n // margin-left: 100%;\n // }\n // .col-sm-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-sm-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-sm-offset-9 {\n // margin-left: 75%;\n // }\n // .col-sm-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-sm-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-sm-offset-6 {\n // margin-left: 50%;\n // }\n // .col-sm-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-sm-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-sm-offset-3 {\n // margin-left: 25%;\n // }\n // .col-sm-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-sm-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-sm-offset-0 {\n // margin-left: 0;\n // }\n //}\n //@media (min-width: 992px) {\n // .col-md-1,\n // .col-md-2,\n // .col-md-3,\n // .col-md-4,\n // .col-md-5,\n // .col-md-6,\n // .col-md-7,\n // .col-md-8,\n // .col-md-9,\n // .col-md-10,\n // .col-md-11,\n // .col-md-12 {\n // float: left;\n // }\n // .col-md-12 {\n // width: 100%;\n // }\n // .col-md-11 {\n // width: 91.66666667%;\n // }\n // .col-md-10 {\n // width: 83.33333333%;\n // }\n // .col-md-9 {\n // width: 75%;\n // }\n // .col-md-8 {\n // width: 66.66666667%;\n // }\n // .col-md-7 {\n // width: 58.33333333%;\n // }\n // .col-md-6 {\n // width: 50%;\n // }\n // .col-md-5 {\n // width: 41.66666667%;\n // }\n // .col-md-4 {\n // width: 33.33333333%;\n // }\n // .col-md-3 {\n // width: 25%;\n // }\n // .col-md-2 {\n // width: 16.66666667%;\n // }\n // .col-md-1 {\n // width: 8.33333333%;\n // }\n // .col-md-pull-12 {\n // right: 100%;\n // }\n // .col-md-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-md-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-md-pull-9 {\n // right: 75%;\n // }\n // .col-md-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-md-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-md-pull-6 {\n // right: 50%;\n // }\n // .col-md-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-md-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-md-pull-3 {\n // right: 25%;\n // }\n // .col-md-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-md-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-md-pull-0 {\n // right: auto;\n // }\n // .col-md-push-12 {\n // left: 100%;\n // }\n // .col-md-push-11 {\n // left: 91.66666667%;\n // }\n // .col-md-push-10 {\n // left: 83.33333333%;\n // }\n // .col-md-push-9 {\n // left: 75%;\n // }\n // .col-md-push-8 {\n // left: 66.66666667%;\n // }\n // .col-md-push-7 {\n // left: 58.33333333%;\n // }\n // .col-md-push-6 {\n // left: 50%;\n // }\n // .col-md-push-5 {\n // left: 41.66666667%;\n // }\n // .col-md-push-4 {\n // left: 33.33333333%;\n // }\n // .col-md-push-3 {\n // left: 25%;\n // }\n // .col-md-push-2 {\n // left: 16.66666667%;\n // }\n // .col-md-push-1 {\n // left: 8.33333333%;\n // }\n // .col-md-push-0 {\n // left: auto;\n // }\n // .col-md-offset-12 {\n // margin-left: 100%;\n // }\n // .col-md-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-md-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-md-offset-9 {\n // margin-left: 75%;\n // }\n // .col-md-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-md-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-md-offset-6 {\n // margin-left: 50%;\n // }\n // .col-md-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-md-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-md-offset-3 {\n // margin-left: 25%;\n // }\n // .col-md-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-md-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-md-offset-0 {\n // margin-left: 0;\n // }\n //}\n //@media (min-width: 1200px) {\n // .col-lg-1,\n // .col-lg-2,\n // .col-lg-3,\n // .col-lg-4,\n // .col-lg-5,\n // .col-lg-6,\n // .col-lg-7,\n // .col-lg-8,\n // .col-lg-9,\n // .col-lg-10,\n // .col-lg-11,\n // .col-lg-12 {\n // float: left;\n // }\n // .col-lg-12 {\n // width: 100%;\n // }\n // .col-lg-11 {\n // width: 91.66666667%;\n // }\n // .col-lg-10 {\n // width: 83.33333333%;\n // }\n // .col-lg-9 {\n // width: 75%;\n // }\n // .col-lg-8 {\n // width: 66.66666667%;\n // }\n // .col-lg-7 {\n // width: 58.33333333%;\n // }\n // .col-lg-6 {\n // width: 50%;\n // }\n // .col-lg-5 {\n // width: 41.66666667%;\n // }\n // .col-lg-4 {\n // width: 33.33333333%;\n // }\n // .col-lg-3 {\n // width: 25%;\n // }\n // .col-lg-2 {\n // width: 16.66666667%;\n // }\n // .col-lg-1 {\n // width: 8.33333333%;\n // }\n // .col-lg-pull-12 {\n // right: 100%;\n // }\n // .col-lg-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-lg-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-lg-pull-9 {\n // right: 75%;\n // }\n // .col-lg-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-lg-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-lg-pull-6 {\n // right: 50%;\n // }\n // .col-lg-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-lg-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-lg-pull-3 {\n // right: 25%;\n // }\n // .col-lg-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-lg-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-lg-pull-0 {\n // right: auto;\n // }\n // .col-lg-push-12 {\n // left: 100%;\n // }\n // .col-lg-push-11 {\n // left: 91.66666667%;\n // }\n // .col-lg-push-10 {\n // left: 83.33333333%;\n // }\n // .col-lg-push-9 {\n // left: 75%;\n // }\n // .col-lg-push-8 {\n // left: 66.66666667%;\n // }\n // .col-lg-push-7 {\n // left: 58.33333333%;\n // }\n // .col-lg-push-6 {\n // left: 50%;\n // }\n // .col-lg-push-5 {\n // left: 41.66666667%;\n // }\n // .col-lg-push-4 {\n // left: 33.33333333%;\n // }\n // .col-lg-push-3 {\n // left: 25%;\n // }\n // .col-lg-push-2 {\n // left: 16.66666667%;\n // }\n // .col-lg-push-1 {\n // left: 8.33333333%;\n // }\n // .col-lg-push-0 {\n // left: auto;\n // }\n // .col-lg-offset-12 {\n // margin-left: 100%;\n // }\n // .col-lg-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-lg-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-lg-offset-9 {\n // margin-left: 75%;\n // }\n // .col-lg-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-lg-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-lg-offset-6 {\n // margin-left: 50%;\n // }\n // .col-lg-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-lg-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-lg-offset-3 {\n // margin-left: 25%;\n // }\n // .col-lg-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-lg-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-lg-offset-0 {\n // margin-left: 0;\n // }\n //}\n table {\n background-color: transparent;\n }\n caption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n }\n th {\n text-align: left;\n }\n .table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n }\n .table > thead > tr > th,\n .table > tbody > tr > th,\n .table > tfoot > tr > th,\n .table > thead > tr > td,\n .table > tbody > tr > td,\n .table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n }\n .table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n }\n .table > caption + thead > tr:first-child > th,\n .table > colgroup + thead > tr:first-child > th,\n .table > thead:first-child > tr:first-child > th,\n .table > caption + thead > tr:first-child > td,\n .table > colgroup + thead > tr:first-child > td,\n .table > thead:first-child > tr:first-child > td {\n border-top: 0;\n }\n .table > tbody + tbody {\n border-top: 2px solid #ddd;\n }\n .table .table {\n background-color: #fff;\n }\n .table-condensed > thead > tr > th,\n .table-condensed > tbody > tr > th,\n .table-condensed > tfoot > tr > th,\n .table-condensed > thead > tr > td,\n .table-condensed > tbody > tr > td,\n .table-condensed > tfoot > tr > td {\n padding: 5px;\n }\n .table-bordered {\n border: 1px solid #ddd;\n }\n .table-bordered > thead > tr > th,\n .table-bordered > tbody > tr > th,\n .table-bordered > tfoot > tr > th,\n .table-bordered > thead > tr > td,\n .table-bordered > tbody > tr > td,\n .table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n }\n .table-bordered > thead > tr > th,\n .table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n }\n .table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n }\n .table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n }\n table col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n }\n table td[class*=\"col-\"],\n table th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n }\n .table > thead > tr > td.active,\n .table > tbody > tr > td.active,\n .table > tfoot > tr > td.active,\n .table > thead > tr > th.active,\n .table > tbody > tr > th.active,\n .table > tfoot > tr > th.active,\n .table > thead > tr.active > td,\n .table > tbody > tr.active > td,\n .table > tfoot > tr.active > td,\n .table > thead > tr.active > th,\n .table > tbody > tr.active > th,\n .table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n }\n .table-hover > tbody > tr > td.active:hover,\n .table-hover > tbody > tr > th.active:hover,\n .table-hover > tbody > tr.active:hover > td,\n .table-hover > tbody > tr:hover > .active,\n .table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n }\n .table > thead > tr > td.success,\n .table > tbody > tr > td.success,\n .table > tfoot > tr > td.success,\n .table > thead > tr > th.success,\n .table > tbody > tr > th.success,\n .table > tfoot > tr > th.success,\n .table > thead > tr.success > td,\n .table > tbody > tr.success > td,\n .table > tfoot > tr.success > td,\n .table > thead > tr.success > th,\n .table > tbody > tr.success > th,\n .table > tfoot > tr.success > th {\n background-color: #dff0d8;\n }\n .table-hover > tbody > tr > td.success:hover,\n .table-hover > tbody > tr > th.success:hover,\n .table-hover > tbody > tr.success:hover > td,\n .table-hover > tbody > tr:hover > .success,\n .table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n }\n .table > thead > tr > td.info,\n .table > tbody > tr > td.info,\n .table > tfoot > tr > td.info,\n .table > thead > tr > th.info,\n .table > tbody > tr > th.info,\n .table > tfoot > tr > th.info,\n .table > thead > tr.info > td,\n .table > tbody > tr.info > td,\n .table > tfoot > tr.info > td,\n .table > thead > tr.info > th,\n .table > tbody > tr.info > th,\n .table > tfoot > tr.info > th {\n background-color: #d9edf7;\n }\n .table-hover > tbody > tr > td.info:hover,\n .table-hover > tbody > tr > th.info:hover,\n .table-hover > tbody > tr.info:hover > td,\n .table-hover > tbody > tr:hover > .info,\n .table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n }\n .table > thead > tr > td.warning,\n .table > tbody > tr > td.warning,\n .table > tfoot > tr > td.warning,\n .table > thead > tr > th.warning,\n .table > tbody > tr > th.warning,\n .table > tfoot > tr > th.warning,\n .table > thead > tr.warning > td,\n .table > tbody > tr.warning > td,\n .table > tfoot > tr.warning > td,\n .table > thead > tr.warning > th,\n .table > tbody > tr.warning > th,\n .table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n }\n .table-hover > tbody > tr > td.warning:hover,\n .table-hover > tbody > tr > th.warning:hover,\n .table-hover > tbody > tr.warning:hover > td,\n .table-hover > tbody > tr:hover > .warning,\n .table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n }\n .table > thead > tr > td.danger,\n .table > tbody > tr > td.danger,\n .table > tfoot > tr > td.danger,\n .table > thead > tr > th.danger,\n .table > tbody > tr > th.danger,\n .table > tfoot > tr > th.danger,\n .table > thead > tr.danger > td,\n .table > tbody > tr.danger > td,\n .table > tfoot > tr.danger > td,\n .table > thead > tr.danger > th,\n .table > tbody > tr.danger > th,\n .table > tfoot > tr.danger > th {\n background-color: #f2dede;\n }\n .table-hover > tbody > tr > td.danger:hover,\n .table-hover > tbody > tr > th.danger:hover,\n .table-hover > tbody > tr.danger:hover > td,\n .table-hover > tbody > tr:hover > .danger,\n .table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n }\n .table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n }\n @media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n }\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n legend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n }\n label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n }\n input[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n }\n input[type=\"file\"] {\n display: block;\n }\n input[type=\"range\"] {\n display: block;\n width: 100%;\n }\n select[multiple],\n select[size] {\n height: auto;\n }\n input[type=\"file\"]:focus,\n input[type=\"radio\"]:focus,\n input[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n output {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n }\n //.form-control {\n // display: block;\n // width: 100%;\n // height: 34px;\n // padding: 6px 12px;\n // font-size: 14px;\n // line-height: 1.42857143;\n // color: #555;\n // background-color: #fff;\n // background-image: none;\n // border: 1px solid #ccc;\n // border-radius: 4px;\n // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n // -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n // -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n // transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n //}\n //.form-control:focus {\n // border-color: #66afe9;\n // outline: 0;\n // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n //}\n //.form-control::-moz-placeholder {\n // color: #999;\n // opacity: 1;\n //}\n //.form-control:-ms-input-placeholder {\n // color: #999;\n //}\n //.form-control::-webkit-input-placeholder {\n // color: #999;\n //}\n //.form-control[disabled],\n //.form-control[readonly],\n //fieldset[disabled] .form-control {\n // background-color: #eee;\n // opacity: 1;\n //}\n //.form-control[disabled],\n //fieldset[disabled] .form-control {\n // cursor: not-allowed;\n //}\n //textarea.form-control {\n // height: auto;\n //}\n //input[type='search'] {\n // -webkit-appearance: none;\n //}\n // @media screen and (-webkit-min-device-pixel-ratio: 0) {\n // input[type='date'],\n // input[type='time'],\n // input[type='datetime-local'],\n // input[type='month'] {\n // line-height: 34px;\n // }\n // input[type='date'].input-sm,\n // input[type='time'].input-sm,\n // input[type='datetime-local'].input-sm,\n // input[type='month'].input-sm,\n // .input-group-sm input[type='date'],\n // .input-group-sm input[type='time'],\n // .input-group-sm input[type='datetime-local'],\n // .input-group-sm input[type='month'] {\n // line-height: 30px;\n // }\n // input[type='date'].input-lg,\n // input[type='time'].input-lg,\n // input[type='datetime-local'].input-lg,\n // input[type='month'].input-lg,\n // .input-group-lg input[type='date'],\n // .input-group-lg input[type='time'],\n // .input-group-lg input[type='datetime-local'],\n // .input-group-lg input[type='month'] {\n // line-height: 46px;\n // }\n // }\n //.form-group {\n // margin-bottom: 15px;\n //}\n .radio,\n .checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .radio label,\n .checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n .radio input[type=\"radio\"],\n .radio-inline input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"],\n .checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n }\n .radio + .radio,\n .checkbox + .checkbox {\n margin-top: -5px;\n }\n .radio-inline,\n .checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n }\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n }\n input[type=\"radio\"][disabled],\n input[type=\"checkbox\"][disabled],\n input[type=\"radio\"].disabled,\n input[type=\"checkbox\"].disabled,\n fieldset[disabled] input[type=\"radio\"],\n fieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n }\n .radio-inline.disabled,\n .checkbox-inline.disabled,\n fieldset[disabled] .radio-inline,\n fieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n }\n .radio.disabled label,\n .checkbox.disabled label,\n fieldset[disabled] .radio label,\n fieldset[disabled] .checkbox label {\n cursor: not-allowed;\n }\n .form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n }\n .form-control-static.input-lg,\n .form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n }\n .input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.input-sm {\n height: 30px;\n line-height: 30px;\n }\n textarea.input-sm,\n select[multiple].input-sm {\n height: auto;\n }\n .form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n }\n textarea.form-group-sm .form-control,\n select[multiple].form-group-sm .form-control {\n height: auto;\n }\n .form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n }\n .input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.input-lg {\n height: 46px;\n line-height: 46px;\n }\n textarea.input-lg,\n select[multiple].input-lg {\n height: auto;\n }\n .form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n }\n textarea.form-group-lg .form-control,\n select[multiple].form-group-lg .form-control {\n height: auto;\n }\n .form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n }\n .has-feedback {\n position: relative;\n }\n .has-feedback .form-control {\n padding-right: 42.5px;\n }\n .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n }\n .input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n }\n .input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n }\n .has-success .help-block,\n .has-success .control-label,\n .has-success .radio,\n .has-success .checkbox,\n .has-success .radio-inline,\n .has-success .checkbox-inline,\n .has-success.radio label,\n .has-success.checkbox label,\n .has-success.radio-inline label,\n .has-success.checkbox-inline label {\n color: #3c763d;\n }\n .has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n }\n .has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n }\n .has-success .form-control-feedback {\n color: #3c763d;\n }\n .has-warning .help-block,\n .has-warning .control-label,\n .has-warning .radio,\n .has-warning .checkbox,\n .has-warning .radio-inline,\n .has-warning .checkbox-inline,\n .has-warning.radio label,\n .has-warning.checkbox label,\n .has-warning.radio-inline label,\n .has-warning.checkbox-inline label {\n color: #8a6d3b;\n }\n .has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n }\n .has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n }\n .has-warning .form-control-feedback {\n color: #8a6d3b;\n }\n .has-error .help-block,\n .has-error .control-label,\n .has-error .radio,\n .has-error .checkbox,\n .has-error .radio-inline,\n .has-error .checkbox-inline,\n .has-error.radio label,\n .has-error.checkbox label,\n .has-error.radio-inline label,\n .has-error.checkbox-inline label {\n color: #a94442;\n }\n .has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n }\n .has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n }\n .has-error .form-control-feedback {\n color: #a94442;\n }\n .has-feedback label ~ .form-control-feedback {\n top: 25px;\n }\n .has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n }\n .help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n }\n @media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n .form-horizontal .radio,\n .form-horizontal .checkbox,\n .form-horizontal .radio-inline,\n .form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-horizontal .radio,\n .form-horizontal .checkbox {\n min-height: 27px;\n }\n .form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n }\n .form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n }\n @media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n }\n .btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .btn:focus,\n .btn:active:focus,\n .btn.active:focus,\n .btn.focus,\n .btn:active.focus,\n .btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n .btn:hover,\n .btn:focus,\n .btn.focus {\n color: #333;\n text-decoration: none;\n }\n .btn:active,\n .btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n }\n .btn.disabled,\n .btn[disabled],\n fieldset[disabled] .btn {\n pointer-events: none;\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: 0.65;\n }\n .btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n }\n .btn-default:hover,\n .btn-default:focus,\n .btn-default.focus,\n .btn-default:active,\n .btn-default.active,\n .open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n }\n .btn-default:active,\n .btn-default.active,\n .open > .dropdown-toggle.btn-default {\n background-image: none;\n }\n .btn-default.disabled,\n .btn-default[disabled],\n fieldset[disabled] .btn-default,\n .btn-default.disabled:hover,\n .btn-default[disabled]:hover,\n fieldset[disabled] .btn-default:hover,\n .btn-default.disabled:focus,\n .btn-default[disabled]:focus,\n fieldset[disabled] .btn-default:focus,\n .btn-default.disabled.focus,\n .btn-default[disabled].focus,\n fieldset[disabled] .btn-default.focus,\n .btn-default.disabled:active,\n .btn-default[disabled]:active,\n fieldset[disabled] .btn-default:active,\n .btn-default.disabled.active,\n .btn-default[disabled].active,\n fieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n }\n .btn-default .badge {\n color: #fff;\n background-color: #333;\n }\n .btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n }\n .btn-primary:hover,\n .btn-primary:focus,\n .btn-primary.focus,\n .btn-primary:active,\n .btn-primary.active,\n .open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n }\n .btn-primary:active,\n .btn-primary.active,\n .open > .dropdown-toggle.btn-primary {\n background-image: none;\n }\n .btn-primary.disabled,\n .btn-primary[disabled],\n fieldset[disabled] .btn-primary,\n .btn-primary.disabled:hover,\n .btn-primary[disabled]:hover,\n fieldset[disabled] .btn-primary:hover,\n .btn-primary.disabled:focus,\n .btn-primary[disabled]:focus,\n fieldset[disabled] .btn-primary:focus,\n .btn-primary.disabled.focus,\n .btn-primary[disabled].focus,\n fieldset[disabled] .btn-primary.focus,\n .btn-primary.disabled:active,\n .btn-primary[disabled]:active,\n fieldset[disabled] .btn-primary:active,\n .btn-primary.disabled.active,\n .btn-primary[disabled].active,\n fieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n }\n .btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n }\n .btn-success:hover,\n .btn-success:focus,\n .btn-success.focus,\n .btn-success:active,\n .btn-success.active,\n .open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n }\n .btn-success:active,\n .btn-success.active,\n .open > .dropdown-toggle.btn-success {\n background-image: none;\n }\n .btn-success.disabled,\n .btn-success[disabled],\n fieldset[disabled] .btn-success,\n .btn-success.disabled:hover,\n .btn-success[disabled]:hover,\n fieldset[disabled] .btn-success:hover,\n .btn-success.disabled:focus,\n .btn-success[disabled]:focus,\n fieldset[disabled] .btn-success:focus,\n .btn-success.disabled.focus,\n .btn-success[disabled].focus,\n fieldset[disabled] .btn-success.focus,\n .btn-success.disabled:active,\n .btn-success[disabled]:active,\n fieldset[disabled] .btn-success:active,\n .btn-success.disabled.active,\n .btn-success[disabled].active,\n fieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n }\n .btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n }\n .btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n }\n .btn-info:hover,\n .btn-info:focus,\n .btn-info.focus,\n .btn-info:active,\n .btn-info.active,\n .open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n }\n .btn-info:active,\n .btn-info.active,\n .open > .dropdown-toggle.btn-info {\n background-image: none;\n }\n .btn-info.disabled,\n .btn-info[disabled],\n fieldset[disabled] .btn-info,\n .btn-info.disabled:hover,\n .btn-info[disabled]:hover,\n fieldset[disabled] .btn-info:hover,\n .btn-info.disabled:focus,\n .btn-info[disabled]:focus,\n fieldset[disabled] .btn-info:focus,\n .btn-info.disabled.focus,\n .btn-info[disabled].focus,\n fieldset[disabled] .btn-info.focus,\n .btn-info.disabled:active,\n .btn-info[disabled]:active,\n fieldset[disabled] .btn-info:active,\n .btn-info.disabled.active,\n .btn-info[disabled].active,\n fieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n }\n .btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n }\n .btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n }\n .btn-warning:hover,\n .btn-warning:focus,\n .btn-warning.focus,\n .btn-warning:active,\n .btn-warning.active,\n .open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n }\n .btn-warning:active,\n .btn-warning.active,\n .open > .dropdown-toggle.btn-warning {\n background-image: none;\n }\n .btn-warning.disabled,\n .btn-warning[disabled],\n fieldset[disabled] .btn-warning,\n .btn-warning.disabled:hover,\n .btn-warning[disabled]:hover,\n fieldset[disabled] .btn-warning:hover,\n .btn-warning.disabled:focus,\n .btn-warning[disabled]:focus,\n fieldset[disabled] .btn-warning:focus,\n .btn-warning.disabled.focus,\n .btn-warning[disabled].focus,\n fieldset[disabled] .btn-warning.focus,\n .btn-warning.disabled:active,\n .btn-warning[disabled]:active,\n fieldset[disabled] .btn-warning:active,\n .btn-warning.disabled.active,\n .btn-warning[disabled].active,\n fieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n }\n .btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n }\n .btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n }\n .btn-danger:hover,\n .btn-danger:focus,\n .btn-danger.focus,\n .btn-danger:active,\n .btn-danger.active,\n .open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n }\n .btn-danger:active,\n .btn-danger.active,\n .open > .dropdown-toggle.btn-danger {\n background-image: none;\n }\n .btn-danger.disabled,\n .btn-danger[disabled],\n fieldset[disabled] .btn-danger,\n .btn-danger.disabled:hover,\n .btn-danger[disabled]:hover,\n fieldset[disabled] .btn-danger:hover,\n .btn-danger.disabled:focus,\n .btn-danger[disabled]:focus,\n fieldset[disabled] .btn-danger:focus,\n .btn-danger.disabled.focus,\n .btn-danger[disabled].focus,\n fieldset[disabled] .btn-danger.focus,\n .btn-danger.disabled:active,\n .btn-danger[disabled]:active,\n fieldset[disabled] .btn-danger:active,\n .btn-danger.disabled.active,\n .btn-danger[disabled].active,\n fieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n }\n .btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n }\n .btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n }\n .btn-link,\n .btn-link:active,\n .btn-link.active,\n .btn-link[disabled],\n fieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .btn-link,\n .btn-link:hover,\n .btn-link:focus,\n .btn-link:active {\n border-color: transparent;\n }\n .btn-link:hover,\n .btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n }\n .btn-link[disabled]:hover,\n fieldset[disabled] .btn-link:hover,\n .btn-link[disabled]:focus,\n fieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n }\n .btn-lg,\n .btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n .btn-sm,\n .btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n .btn-xs,\n .btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n //.btn-block {\n // display: block;\n // width: 100%;\n //}\n //.btn-block + .btn-block {\n // margin-top: 5px;\n //}\n //input[type='submit'].btn-block,\n //input[type='reset'].btn-block,\n //input[type='button'].btn-block {\n // width: 100%;\n //}\n .fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n }\n .fade.in {\n opacity: 1;\n }\n .collapse {\n display: none;\n }\n .collapse.in {\n display: block;\n }\n tr.collapse.in {\n display: table-row;\n }\n tbody.collapse.in {\n display: table-row-group;\n }\n .collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: 0.35s;\n -o-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n }\n .caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n }\n .dropup,\n .dropdown {\n position: relative;\n }\n .dropdown-toggle:focus {\n outline: 0;\n }\n .dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px solid;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group,\n .btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n }\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n position: relative;\n float: left;\n }\n .btn-group > .btn:hover,\n .btn-group-vertical > .btn:hover,\n .btn-group > .btn:focus,\n .btn-group-vertical > .btn:focus,\n .btn-group > .btn:active,\n .btn-group-vertical > .btn:active,\n .btn-group > .btn.active,\n .btn-group-vertical > .btn.active {\n z-index: 2;\n }\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-left: -1px;\n }\n .btn-toolbar {\n margin-left: -5px;\n }\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: left;\n }\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-left: 5px;\n }\n .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n }\n .btn-group > .btn:first-child {\n margin-left: 0;\n }\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group > .btn-group {\n float: left;\n }\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group .dropdown-toggle:active,\n .btn-group.open .dropdown-toggle {\n outline: 0;\n }\n .btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n }\n .btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n }\n .btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n }\n .btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .btn .caret {\n margin-left: 0;\n }\n .btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n }\n .dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n }\n .btn-group-vertical > .btn,\n .btn-group-vertical > .btn-group,\n .btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n .btn-group-vertical > .btn-group > .btn {\n float: none;\n }\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 4px;\n }\n .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n }\n .btn-group-justified > .btn,\n .btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n }\n .btn-group-justified > .btn-group .btn {\n width: 100%;\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n [data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n [data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n .input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n }\n .input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n }\n .input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n }\n .input-group-lg > .form-control,\n .input-group-lg > .input-group-addon,\n .input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.input-group-lg > .form-control,\n select.input-group-lg > .input-group-addon,\n select.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n }\n textarea.input-group-lg > .form-control,\n textarea.input-group-lg > .input-group-addon,\n textarea.input-group-lg > .input-group-btn > .btn,\n select[multiple].input-group-lg > .form-control,\n select[multiple].input-group-lg > .input-group-addon,\n select[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n }\n .input-group-sm > .form-control,\n .input-group-sm > .input-group-addon,\n .input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.input-group-sm > .form-control,\n select.input-group-sm > .input-group-addon,\n select.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n }\n textarea.input-group-sm > .form-control,\n textarea.input-group-sm > .input-group-addon,\n textarea.input-group-sm > .input-group-btn > .btn,\n select[multiple].input-group-sm > .form-control,\n select[multiple].input-group-sm > .input-group-addon,\n select[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n }\n .input-group-addon,\n .input-group-btn,\n .input-group .form-control {\n display: table-cell;\n }\n .input-group-addon:not(:first-child):not(:last-child),\n .input-group-btn:not(:first-child):not(:last-child),\n .input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .input-group-addon,\n .input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n }\n .input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n }\n .input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n }\n .input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n }\n .input-group-addon input[type=\"radio\"],\n .input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n }\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .input-group-addon:first-child {\n border-right: 0;\n }\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .input-group-addon:last-child {\n border-left: 0;\n }\n .input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n }\n .input-group-btn > .btn {\n position: relative;\n }\n .input-group-btn > .btn + .btn {\n margin-left: -1px;\n }\n .input-group-btn > .btn:hover,\n .input-group-btn > .btn:focus,\n .input-group-btn > .btn:active {\n z-index: 2;\n }\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n }\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n }\n .nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n .nav > li {\n position: relative;\n display: block;\n }\n .nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n }\n .nav > li > a:hover,\n .nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n }\n .nav > li.disabled > a {\n color: #777;\n }\n .nav > li.disabled > a:hover,\n .nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n }\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n }\n .nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .nav > li > a > img {\n max-width: none;\n }\n .nav-tabs {\n border-bottom: 1px solid #ddd;\n }\n .nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n }\n .nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n }\n .nav-tabs > li.active > a,\n .nav-tabs > li.active > a:hover,\n .nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n }\n .nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n }\n .nav-tabs.nav-justified > li {\n float: none;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n @media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n }\n .nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n }\n @media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n }\n .nav-pills > li {\n float: left;\n }\n .nav-pills > li > a {\n border-radius: 4px;\n }\n .nav-pills > li + li {\n margin-left: 2px;\n }\n .nav-pills > li.active > a,\n .nav-pills > li.active > a:hover,\n .nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n }\n .nav-stacked > li {\n float: none;\n }\n .nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n }\n .nav-justified {\n width: 100%;\n }\n .nav-justified > li {\n float: none;\n }\n .nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n @media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n }\n .nav-tabs-justified {\n border-bottom: 0;\n }\n .nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n }\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n }\n .tab-content > .tab-pane {\n display: none;\n }\n .tab-content > .active {\n display: block;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n }\n @media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n }\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n }\n .navbar-collapse.in {\n overflow-y: auto;\n }\n @media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n }\n @media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n }\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n }\n @media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n }\n .navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n }\n @media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n }\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n }\n @media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n }\n .navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n }\n .navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n }\n .navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n }\n .navbar-brand:hover,\n .navbar-brand:focus {\n text-decoration: none;\n }\n .navbar-brand > img {\n display: block;\n }\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n }\n .navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .navbar-toggle:focus {\n outline: 0;\n }\n .navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n @media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n }\n .navbar-nav {\n margin: 7.5px -15px;\n }\n .navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n }\n .navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n }\n @media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n @media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n }\n .navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n }\n .navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n }\n .navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n }\n .navbar-default .navbar-brand {\n color: #777;\n }\n .navbar-default .navbar-brand:hover,\n .navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n }\n .navbar-default .navbar-text {\n color: #777;\n }\n .navbar-default .navbar-nav > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav > li > a:hover,\n .navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav > .active > a,\n .navbar-default .navbar-nav > .active > a:hover,\n .navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav > .disabled > a,\n .navbar-default .navbar-nav > .disabled > a:hover,\n .navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n .navbar-default .navbar-toggle {\n border-color: #ddd;\n }\n .navbar-default .navbar-toggle:hover,\n .navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n }\n .navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n }\n .navbar-default .navbar-collapse,\n .navbar-default .navbar-form {\n border-color: #e7e7e7;\n }\n .navbar-default .navbar-nav > .open > a,\n .navbar-default .navbar-nav > .open > a:hover,\n .navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n .navbar-default .navbar-link {\n color: #777;\n }\n .navbar-default .navbar-link:hover {\n color: #333;\n }\n .navbar-default .btn-link {\n color: #777;\n }\n .navbar-default .btn-link:hover,\n .navbar-default .btn-link:focus {\n color: #333;\n }\n .navbar-default .btn-link[disabled]:hover,\n fieldset[disabled] .navbar-default .btn-link:hover,\n .navbar-default .btn-link[disabled]:focus,\n fieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n }\n .navbar-inverse {\n background-color: #222;\n border-color: #080808;\n }\n .navbar-inverse .navbar-brand {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-brand:hover,\n .navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-text {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav > li > a:hover,\n .navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav > .active > a,\n .navbar-inverse .navbar-nav > .active > a:hover,\n .navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav > .disabled > a,\n .navbar-inverse .navbar-nav > .disabled > a:hover,\n .navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n .navbar-inverse .navbar-toggle {\n border-color: #333;\n }\n .navbar-inverse .navbar-toggle:hover,\n .navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n }\n .navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n }\n .navbar-inverse .navbar-collapse,\n .navbar-inverse .navbar-form {\n border-color: #101010;\n }\n .navbar-inverse .navbar-nav > .open > a,\n .navbar-inverse .navbar-nav > .open > a:hover,\n .navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n .navbar-inverse .navbar-link {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-link:hover {\n color: #fff;\n }\n .navbar-inverse .btn-link {\n color: #9d9d9d;\n }\n .navbar-inverse .btn-link:hover,\n .navbar-inverse .btn-link:focus {\n color: #fff;\n }\n .navbar-inverse .btn-link[disabled]:hover,\n fieldset[disabled] .navbar-inverse .btn-link:hover,\n .navbar-inverse .btn-link[disabled]:focus,\n fieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n }\n .breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n }\n .breadcrumb > li {\n display: inline-block;\n }\n .breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n }\n .breadcrumb > .active {\n color: #777;\n }\n .pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n }\n .pagination > li {\n display: inline;\n }\n .pagination > li > a,\n .pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n }\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n .pagination > li > a:hover,\n .pagination > li > span:hover,\n .pagination > li > a:focus,\n .pagination > li > span:focus {\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n }\n .pagination > .active > a,\n .pagination > .active > span,\n .pagination > .active > a:hover,\n .pagination > .active > span:hover,\n .pagination > .active > a:focus,\n .pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .pagination > .disabled > span,\n .pagination > .disabled > span:hover,\n .pagination > .disabled > span:focus,\n .pagination > .disabled > a,\n .pagination > .disabled > a:hover,\n .pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n }\n .pagination-lg > li > a,\n .pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n }\n .pagination-lg > li:first-child > a,\n .pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n }\n .pagination-lg > li:last-child > a,\n .pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n }\n .pagination-sm > li > a,\n .pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n }\n .pagination-sm > li:first-child > a,\n .pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .pagination-sm > li:last-child > a,\n .pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n .pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n }\n .pager li {\n display: inline;\n }\n .pager li > a,\n .pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n }\n .pager li > a:hover,\n .pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n }\n .pager .next > a,\n .pager .next > span {\n float: right;\n }\n .pager .previous > a,\n .pager .previous > span {\n float: left;\n }\n .pager .disabled > a,\n .pager .disabled > a:hover,\n .pager .disabled > a:focus,\n .pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n }\n .label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n }\n a.label:hover,\n a.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n }\n .label:empty {\n display: none;\n }\n .btn .label {\n position: relative;\n top: -1px;\n }\n .label-default {\n background-color: #777;\n }\n .label-default[href]:hover,\n .label-default[href]:focus {\n background-color: #5e5e5e;\n }\n .label-primary {\n background-color: #337ab7;\n }\n .label-primary[href]:hover,\n .label-primary[href]:focus {\n background-color: #286090;\n }\n .label-success {\n background-color: #5cb85c;\n }\n .label-success[href]:hover,\n .label-success[href]:focus {\n background-color: #449d44;\n }\n .label-info {\n background-color: #5bc0de;\n }\n .label-info[href]:hover,\n .label-info[href]:focus {\n background-color: #31b0d5;\n }\n .label-warning {\n background-color: #f0ad4e;\n }\n .label-warning[href]:hover,\n .label-warning[href]:focus {\n background-color: #ec971f;\n }\n .label-danger {\n background-color: #d9534f;\n }\n .label-danger[href]:hover,\n .label-danger[href]:focus {\n background-color: #c9302c;\n }\n .badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n background-color: #777;\n border-radius: 10px;\n }\n .badge:empty {\n display: none;\n }\n .btn .badge {\n position: relative;\n top: -1px;\n }\n .btn-xs .badge,\n .btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n }\n a.badge:hover,\n a.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n }\n .list-group-item.active > .badge,\n .nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .list-group-item > .badge {\n float: right;\n }\n .list-group-item > .badge + .badge {\n margin-right: 5px;\n }\n .nav-pills > li > a > .badge {\n margin-left: 3px;\n }\n .jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n color: inherit;\n }\n .jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n }\n .jumbotron > hr {\n border-top-color: #d5d5d5;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n border-radius: 6px;\n }\n .jumbotron .container {\n max-width: 100%;\n }\n @media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n }\n .thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n }\n .thumbnail > img,\n .thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n }\n a.thumbnail:hover,\n a.thumbnail:focus,\n a.thumbnail.active {\n border-color: #337ab7;\n }\n .thumbnail .caption {\n padding: 9px;\n color: #333;\n }\n .alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .alert h4 {\n margin-top: 0;\n color: inherit;\n }\n .alert .alert-link {\n font-weight: bold;\n }\n .alert > p,\n .alert > ul {\n margin-bottom: 0;\n }\n .alert > p + p {\n margin-top: 5px;\n }\n .alert-dismissable,\n .alert-dismissible {\n padding-right: 35px;\n }\n .alert-dismissable .close,\n .alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n .alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n }\n .alert-success hr {\n border-top-color: #c9e2b3;\n }\n .alert-success .alert-link {\n color: #2b542c;\n }\n .alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n }\n .alert-info hr {\n border-top-color: #a6e1ec;\n }\n .alert-info .alert-link {\n color: #245269;\n }\n .alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n }\n .alert-warning hr {\n border-top-color: #f7e1b5;\n }\n .alert-warning .alert-link {\n color: #66512c;\n }\n .alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n }\n .alert-danger hr {\n border-top-color: #e4b9c0;\n }\n .alert-danger .alert-link {\n color: #843534;\n }\n //@-webkit-keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //@-o-keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //@keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //.progress {\n // height: 20px;\n // margin-bottom: 20px;\n // overflow: hidden;\n // background-color: #f5f5f5;\n // border-radius: 4px;\n // -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n // box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n //}\n //.progress-bar {\n // float: left;\n // width: 0;\n // height: 100%;\n // font-size: 12px;\n // line-height: 20px;\n // color: #fff;\n // text-align: center;\n // background-color: #337ab7;\n // -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n // box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n // -webkit-transition: width 0.6s ease;\n // -o-transition: width 0.6s ease;\n // transition: width 0.6s ease;\n //}\n //.progress-striped .progress-bar,\n //.progress-bar-striped {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // -webkit-background-size: 40px 40px;\n // background-size: 40px 40px;\n //}\n //.progress.active .progress-bar,\n //.progress-bar.active {\n // -webkit-animation: progress-bar-stripes 2s linear infinite;\n // -o-animation: progress-bar-stripes 2s linear infinite;\n // animation: progress-bar-stripes 2s linear infinite;\n //}\n //.progress-bar-success {\n // background-color: #5cb85c;\n //}\n //.progress-striped .progress-bar-success {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-info {\n // background-color: #5bc0de;\n //}\n //.progress-striped .progress-bar-info {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-warning {\n // background-color: #f0ad4e;\n //}\n //.progress-striped .progress-bar-warning {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-danger {\n // background-color: #d9534f;\n //}\n //.progress-striped .progress-bar-danger {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n .media {\n margin-top: 15px;\n }\n .media:first-child {\n margin-top: 0;\n }\n .media,\n .media-body {\n overflow: hidden;\n zoom: 1;\n }\n .media-body {\n width: 10000px;\n }\n .media-object {\n display: block;\n }\n .media-right,\n .media > .pull-right {\n padding-left: 10px;\n }\n .media-left,\n .media > .pull-left {\n padding-right: 10px;\n }\n .media-left,\n .media-right,\n .media-body {\n display: table-cell;\n vertical-align: top;\n }\n .media-middle {\n vertical-align: middle;\n }\n .media-bottom {\n vertical-align: bottom;\n }\n .media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n }\n .media-list {\n padding-left: 0;\n list-style: none;\n }\n .list-group {\n padding-left: 0;\n margin-bottom: 20px;\n }\n .list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n }\n .list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n a.list-group-item {\n color: #555;\n }\n a.list-group-item .list-group-item-heading {\n color: #333;\n }\n a.list-group-item:hover,\n a.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .list-group-item.disabled,\n .list-group-item.disabled:hover,\n .list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n }\n .list-group-item.disabled .list-group-item-heading,\n .list-group-item.disabled:hover .list-group-item-heading,\n .list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n }\n .list-group-item.disabled .list-group-item-text,\n .list-group-item.disabled:hover .list-group-item-text,\n .list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n }\n .list-group-item.active,\n .list-group-item.active:hover,\n .list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .list-group-item.active .list-group-item-heading,\n .list-group-item.active:hover .list-group-item-heading,\n .list-group-item.active:focus .list-group-item-heading,\n .list-group-item.active .list-group-item-heading > small,\n .list-group-item.active:hover .list-group-item-heading > small,\n .list-group-item.active:focus .list-group-item-heading > small,\n .list-group-item.active .list-group-item-heading > .small,\n .list-group-item.active:hover .list-group-item-heading > .small,\n .list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item.active .list-group-item-text,\n .list-group-item.active:hover .list-group-item-text,\n .list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n }\n .list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n }\n a.list-group-item-success {\n color: #3c763d;\n }\n a.list-group-item-success .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-success:hover,\n a.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n }\n a.list-group-item-success.active,\n a.list-group-item-success.active:hover,\n a.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n }\n .list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n }\n a.list-group-item-info {\n color: #31708f;\n }\n a.list-group-item-info .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-info:hover,\n a.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n }\n a.list-group-item-info.active,\n a.list-group-item-info.active:hover,\n a.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n }\n .list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n }\n a.list-group-item-warning {\n color: #8a6d3b;\n }\n a.list-group-item-warning .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-warning:hover,\n a.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n }\n a.list-group-item-warning.active,\n a.list-group-item-warning.active:hover,\n a.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n }\n .list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n }\n a.list-group-item-danger {\n color: #a94442;\n }\n a.list-group-item-danger .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-danger:hover,\n a.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n }\n a.list-group-item-danger.active,\n a.list-group-item-danger.active:hover,\n a.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n }\n .list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n }\n .list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n }\n .panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n }\n .panel-body {\n padding: 15px;\n }\n .panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n }\n .panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n }\n .panel-title > a,\n .panel-title > small,\n .panel-title > .small,\n .panel-title > small > a,\n .panel-title > .small > a {\n color: inherit;\n }\n .panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .list-group,\n .panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n }\n .panel > .list-group .list-group-item,\n .panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n .panel > .list-group:first-child .list-group-item:first-child,\n .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .list-group:last-child .list-group-item:last-child,\n .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n }\n .list-group + .panel-footer {\n border-top-width: 0;\n }\n .panel > .table,\n .panel > .table-responsive > .table,\n .panel > .panel-collapse > .table {\n margin-bottom: 0;\n }\n .panel > .table caption,\n .panel > .table-responsive > .table caption,\n .panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n }\n .panel > .table:first-child,\n .panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n }\n .panel > .table:last-child,\n .panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n }\n .panel > .panel-body + .table,\n .panel > .panel-body + .table-responsive,\n .panel > .table + .panel-body,\n .panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n }\n .panel > .table > tbody:first-child > tr:first-child th,\n .panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n .panel > .table-bordered,\n .panel > .table-responsive > .table-bordered {\n border: 0;\n }\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .panel > .table-bordered > thead > tr:first-child > td,\n .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n .panel > .table-bordered > tbody > tr:first-child > td,\n .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n .panel > .table-bordered > thead > tr:first-child > th,\n .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n .panel > .table-bordered > tbody > tr:first-child > th,\n .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n }\n .panel > .table-bordered > tbody > tr:last-child > td,\n .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .panel > .table-bordered > tfoot > tr:last-child > td,\n .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n .panel > .table-bordered > tbody > tr:last-child > th,\n .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .panel > .table-bordered > tfoot > tr:last-child > th,\n .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n }\n .panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n }\n .panel-group {\n margin-bottom: 20px;\n }\n .panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n }\n .panel-group .panel + .panel {\n margin-top: 5px;\n }\n .panel-group .panel-heading {\n border-bottom: 0;\n }\n .panel-group .panel-heading + .panel-collapse > .panel-body,\n .panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n }\n .panel-group .panel-footer {\n border-top: 0;\n }\n .panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n }\n .panel-default {\n border-color: #ddd;\n }\n .panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n }\n .panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n }\n .panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n }\n .panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n }\n .panel-primary {\n border-color: #337ab7;\n }\n .panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n }\n .panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n }\n .panel-success {\n border-color: #d6e9c6;\n }\n .panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n }\n .panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n }\n .panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n }\n .panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n }\n .panel-info {\n border-color: #bce8f1;\n }\n .panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n }\n .panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n }\n .panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n }\n .panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n }\n .panel-warning {\n border-color: #faebcc;\n }\n .panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n }\n .panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n }\n .panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n }\n .panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n }\n .panel-danger {\n border-color: #ebccd1;\n }\n .panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n }\n .panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n }\n .panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n }\n .panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n }\n .embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n }\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object,\n .embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n .embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n .embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n .well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n }\n .well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n }\n .well-lg {\n padding: 24px;\n border-radius: 6px;\n }\n .well-sm {\n padding: 9px;\n border-radius: 3px;\n }\n .close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n }\n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n button.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n }\n .modal-open {\n overflow: hidden;\n }\n .modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n }\n .modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n }\n .modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n }\n .modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n }\n .modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n }\n .modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n }\n .modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n }\n .modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n }\n .modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n .modal-header {\n min-height: 16.42857143px;\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n }\n .modal-header .close {\n margin-top: -2px;\n }\n .modal-title {\n margin: 0;\n line-height: 1.42857143;\n }\n //.modal-body {\n // position: relative;\n // padding: 15px;\n //}\n .modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n }\n .modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n }\n .modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n }\n .modal-footer .btn-block + .btn-block {\n margin-left: 0;\n }\n .modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n }\n @media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n }\n @media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n filter: alpha(opacity=0);\n opacity: 0;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n text-decoration: none;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n }\n .popover.top {\n margin-top: -10px;\n }\n .popover.right {\n margin-left: 10px;\n }\n .popover.bottom {\n margin-top: 10px;\n }\n .popover.left {\n margin-left: -10px;\n }\n .popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n }\n .popover-content {\n padding: 9px 14px;\n }\n .popover > .arrow,\n .popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .popover > .arrow {\n border-width: 11px;\n }\n .popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n }\n .popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n }\n .popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n }\n .popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n }\n .popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n }\n .popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n }\n .popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n }\n .popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, 0.25);\n }\n .popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n }\n .carousel {\n position: relative;\n }\n .carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n }\n .carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n }\n .carousel-inner > .item > img,\n .carousel-inner > .item > a > img {\n line-height: 1;\n }\n @media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n }\n .carousel-inner > .active,\n .carousel-inner > .next,\n .carousel-inner > .prev {\n display: block;\n }\n .carousel-inner > .active {\n left: 0;\n }\n .carousel-inner > .next,\n .carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n .carousel-inner > .next {\n left: 100%;\n }\n .carousel-inner > .prev {\n left: -100%;\n }\n .carousel-inner > .next.left,\n .carousel-inner > .prev.right {\n left: 0;\n }\n .carousel-inner > .active.left {\n left: -100%;\n }\n .carousel-inner > .active.right {\n left: 100%;\n }\n .carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n .carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.5)),\n to(rgba(0, 0, 0, 0.0001))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n }\n .carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.0001)),\n to(rgba(0, 0, 0, 0.5))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n }\n .carousel-control:hover,\n .carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: 0.9;\n }\n .carousel-control .icon-prev,\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n line-height: 1;\n }\n .carousel-control .icon-prev:before {\n content: \"\\2039\";\n }\n .carousel-control .icon-next:before {\n content: \"\\203a\";\n }\n .carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n }\n .carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n }\n .carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n }\n .carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n }\n .carousel-caption .btn {\n text-shadow: none;\n }\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n }\n .clearfix:before,\n .clearfix:after,\n .dl-horizontal dd:before,\n .dl-horizontal dd:after,\n .container:before,\n .container:after,\n .container-fluid:before,\n .container-fluid:after,\n .row:before,\n .row:after,\n .form-horizontal .form-group:before,\n .form-horizontal .form-group:after,\n .btn-toolbar:before,\n .btn-toolbar:after,\n .btn-group-vertical > .btn-group:before,\n .btn-group-vertical > .btn-group:after,\n .nav:before,\n .nav:after,\n .navbar:before,\n .navbar:after,\n .navbar-header:before,\n .navbar-header:after,\n .navbar-collapse:before,\n .navbar-collapse:after,\n .pager:before,\n .pager:after,\n .panel-body:before,\n .panel-body:after,\n .modal-footer:before,\n .modal-footer:after {\n display: table;\n content: \" \";\n }\n .clearfix:after,\n .dl-horizontal dd:after,\n .container:after,\n .container-fluid:after,\n .row:after,\n .form-horizontal .form-group:after,\n .btn-toolbar:after,\n .btn-group-vertical > .btn-group:after,\n .nav:after,\n .navbar:after,\n .navbar-header:after,\n .navbar-collapse:after,\n .pager:after,\n .panel-body:after,\n .modal-footer:after {\n clear: both;\n }\n .center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n }\n .pull-right {\n float: right !important;\n }\n .pull-left {\n float: left !important;\n }\n .hide {\n display: none !important;\n }\n .show {\n display: block !important;\n }\n .invisible {\n visibility: hidden;\n }\n .text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n }\n .hidden {\n display: none !important;\n }\n .affix {\n position: fixed;\n }\n @-ms-viewport {\n width: device-width;\n }\n .visible-xs,\n .visible-sm,\n .visible-md,\n .visible-lg {\n display: none !important;\n }\n .visible-xs-block,\n .visible-xs-inline,\n .visible-xs-inline-block,\n .visible-sm-block,\n .visible-sm-inline,\n .visible-sm-inline-block,\n .visible-md-block,\n .visible-md-inline,\n .visible-md-inline-block,\n .visible-lg-block,\n .visible-lg-inline,\n .visible-lg-inline-block {\n display: none !important;\n }\n @media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n }\n @media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n }\n @media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n }\n .visible-print {\n display: none !important;\n }\n @media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n }\n .visible-print-block {\n display: none !important;\n }\n @media print {\n .visible-print-block {\n display: block !important;\n }\n }\n .visible-print-inline {\n display: none !important;\n }\n @media print {\n .visible-print-inline {\n display: inline !important;\n }\n }\n .visible-print-inline-block {\n display: none !important;\n }\n @media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n }\n @media print {\n .hidden-print {\n display: none !important;\n }\n }\n}\n","/*******************************************************************************\n * bootstrap-rtl (version 3.3.4)\n * Author: Morteza Ansarinia (http://github.com/morteza)\n * Created on: August 13,2015\n * Project: bootstrap-rtl\n * Copyright: Unlicensed Public Domain\n *******************************************************************************/\n@mixin bootstrap-rtl() {\n [dir=\"rtl\"] {\n .flip.text-left {\n text-align: right;\n }\n\n .flip.text-right {\n text-align: left;\n }\n\n .list-unstyled {\n padding-right: 0;\n padding-left: initial;\n }\n\n .list-inline {\n padding-right: 0;\n padding-left: initial;\n margin-right: -5px;\n margin-left: 0;\n }\n\n dd {\n margin-right: 0;\n margin-left: initial;\n }\n\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: right;\n clear: right;\n text-align: left;\n }\n .dl-horizontal dd {\n margin-right: 180px;\n margin-left: 0;\n }\n }\n\n blockquote {\n border-right: 5px solid #eeeeee;\n border-left: 0;\n }\n\n .blockquote-reverse,\n blockquote.pull-left {\n padding-left: 15px;\n padding-right: 0;\n border-left: 5px solid #eeeeee;\n border-right: 0;\n text-align: left;\n }\n\n .col-xs-1,\n .col-sm-1,\n .col-md-1,\n .col-lg-1,\n .col-xs-2,\n .col-sm-2,\n .col-md-2,\n .col-lg-2,\n .col-xs-3,\n .col-sm-3,\n .col-md-3,\n .col-lg-3,\n .col-xs-4,\n .col-sm-4,\n .col-md-4,\n .col-lg-4,\n .col-xs-5,\n .col-sm-5,\n .col-md-5,\n .col-lg-5,\n .col-xs-6,\n .col-sm-6,\n .col-md-6,\n .col-lg-6,\n .col-xs-7,\n .col-sm-7,\n .col-md-7,\n .col-lg-7,\n .col-xs-8,\n .col-sm-8,\n .col-md-8,\n .col-lg-8,\n .col-xs-9,\n .col-sm-9,\n .col-md-9,\n .col-lg-9,\n .col-xs-10,\n .col-sm-10,\n .col-md-10,\n .col-lg-10,\n .col-xs-11,\n .col-sm-11,\n .col-md-11,\n .col-lg-11,\n .col-xs-12,\n .col-sm-12,\n .col-md-12,\n .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .col-xs-1,\n .col-xs-2,\n .col-xs-3,\n .col-xs-4,\n .col-xs-5,\n .col-xs-6,\n .col-xs-7,\n .col-xs-8,\n .col-xs-9,\n .col-xs-10,\n .col-xs-11,\n .col-xs-12 {\n float: right;\n }\n\n .col-xs-12 {\n width: 100%;\n }\n\n .col-xs-11 {\n width: 91.66666667%;\n }\n\n .col-xs-10 {\n width: 83.33333333%;\n }\n\n .col-xs-9 {\n width: 75%;\n }\n\n .col-xs-8 {\n width: 66.66666667%;\n }\n\n .col-xs-7 {\n width: 58.33333333%;\n }\n\n .col-xs-6 {\n width: 50%;\n }\n\n .col-xs-5 {\n width: 41.66666667%;\n }\n\n .col-xs-4 {\n width: 33.33333333%;\n }\n\n .col-xs-3 {\n width: 25%;\n }\n\n .col-xs-2 {\n width: 16.66666667%;\n }\n\n .col-xs-1 {\n width: 8.33333333%;\n }\n\n .col-xs-pull-12 {\n left: 100%;\n right: auto;\n }\n\n .col-xs-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n\n .col-xs-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n\n .col-xs-pull-9 {\n left: 75%;\n right: auto;\n }\n\n .col-xs-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n\n .col-xs-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n\n .col-xs-pull-6 {\n left: 50%;\n right: auto;\n }\n\n .col-xs-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n\n .col-xs-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n\n .col-xs-pull-3 {\n left: 25%;\n right: auto;\n }\n\n .col-xs-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n\n .col-xs-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n\n .col-xs-pull-0 {\n left: auto;\n right: auto;\n }\n\n .col-xs-push-12 {\n right: 100%;\n left: 0;\n }\n\n .col-xs-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n\n .col-xs-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n\n .col-xs-push-9 {\n right: 75%;\n left: 0;\n }\n\n .col-xs-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n\n .col-xs-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n\n .col-xs-push-6 {\n right: 50%;\n left: 0;\n }\n\n .col-xs-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n\n .col-xs-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n\n .col-xs-push-3 {\n right: 25%;\n left: 0;\n }\n\n .col-xs-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n\n .col-xs-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n\n .col-xs-push-0 {\n right: auto;\n left: 0;\n }\n\n .col-xs-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n\n .col-xs-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n\n .col-xs-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n\n .col-xs-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n\n .col-xs-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n\n @media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: right;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-sm-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-sm-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-sm-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-sm-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-sm-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-sm-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-sm-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-sm-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-sm-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-sm-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-sm-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-sm-pull-0 {\n left: auto;\n right: auto;\n }\n .col-sm-push-12 {\n right: 100%;\n left: 0;\n }\n .col-sm-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-sm-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-sm-push-9 {\n right: 75%;\n left: 0;\n }\n .col-sm-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-sm-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-sm-push-6 {\n right: 50%;\n left: 0;\n }\n .col-sm-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-sm-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-sm-push-3 {\n right: 25%;\n left: 0;\n }\n .col-sm-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-sm-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-sm-push-0 {\n right: auto;\n left: 0;\n }\n .col-sm-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-sm-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-sm-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-sm-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-sm-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: right;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-md-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-md-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-md-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-md-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-md-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-md-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-md-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-md-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-md-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-md-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-md-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-md-pull-0 {\n left: auto;\n right: auto;\n }\n .col-md-push-12 {\n right: 100%;\n left: 0;\n }\n .col-md-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-md-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-md-push-9 {\n right: 75%;\n left: 0;\n }\n .col-md-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-md-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-md-push-6 {\n right: 50%;\n left: 0;\n }\n .col-md-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-md-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-md-push-3 {\n right: 25%;\n left: 0;\n }\n .col-md-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-md-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-md-push-0 {\n right: auto;\n left: 0;\n }\n .col-md-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-md-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-md-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-md-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-md-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-md-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-md-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-md-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-md-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-md-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-md-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-md-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-md-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: right;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-lg-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-lg-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-lg-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-lg-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-lg-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-lg-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-lg-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-lg-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-lg-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-lg-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-lg-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-lg-pull-0 {\n left: auto;\n right: auto;\n }\n .col-lg-push-12 {\n right: 100%;\n left: 0;\n }\n .col-lg-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-lg-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-lg-push-9 {\n right: 75%;\n left: 0;\n }\n .col-lg-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-lg-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-lg-push-6 {\n right: 50%;\n left: 0;\n }\n .col-lg-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-lg-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-lg-push-3 {\n right: 25%;\n left: 0;\n }\n .col-lg-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-lg-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-lg-push-0 {\n right: auto;\n left: 0;\n }\n .col-lg-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-lg-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-lg-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-lg-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-lg-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n\n caption {\n text-align: right;\n }\n\n th:not(.mx-left-aligned) {\n text-align: right;\n }\n\n @media screen and (max-width: 767px) {\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: initial;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-left: 0;\n border-right: initial;\n }\n }\n\n .radio label,\n .checkbox label {\n padding-right: 20px;\n padding-left: initial;\n }\n\n .radio input[type=\"radio\"],\n .radio-inline input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"],\n .checkbox-inline input[type=\"checkbox\"] {\n margin-right: -20px;\n margin-left: auto;\n }\n\n .radio-inline,\n .checkbox-inline {\n padding-right: 20px;\n padding-left: 0;\n }\n\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .has-feedback .form-control {\n padding-left: 42.5px;\n padding-right: 12px;\n }\n\n .form-control-feedback {\n left: 0;\n right: auto;\n }\n\n @media (min-width: 768px) {\n .form-inline label {\n padding-right: 0;\n padding-left: initial;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n margin-right: 0;\n margin-left: auto;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: left;\n }\n }\n\n .form-horizontal .has-feedback .form-control-feedback {\n left: 15px;\n right: auto;\n }\n\n .caret {\n margin-right: 2px;\n margin-left: 0;\n }\n\n .dropdown-menu {\n right: 0;\n left: auto;\n float: left;\n text-align: right;\n }\n\n .dropdown-menu.pull-right {\n left: 0;\n right: auto;\n float: right;\n }\n\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n\n .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n }\n\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n float: right;\n }\n\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-right: -1px;\n margin-left: 0px;\n }\n\n .btn-toolbar {\n margin-right: -5px;\n margin-left: 0px;\n }\n\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: right;\n }\n\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-right: 5px;\n margin-left: 0px;\n }\n\n .btn-group > .btn:first-child {\n margin-right: 0;\n }\n\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .btn-group > .btn-group {\n float: right;\n }\n\n .btn-group.btn-group-justified > .btn,\n .btn-group.btn-group-justified > .btn-group {\n float: none;\n }\n\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n\n .btn-group > .btn-group:first-child > .btn:last-child,\n .btn-group > .btn-group:first-child > .dropdown-toggle {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .btn-group > .btn-group:last-child > .btn:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .btn .caret {\n margin-right: 0;\n }\n\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-right: 0;\n }\n\n .input-group .form-control {\n float: right;\n }\n\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .input-group-addon:first-child {\n border-left: 0px;\n border-right: 1px solid;\n }\n\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .input-group-addon:last-child {\n border-left-width: 1px;\n border-left-style: solid;\n border-right: 0px;\n }\n\n .input-group-btn > .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-left: -1px;\n margin-right: auto;\n }\n\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .nav {\n padding-right: 0;\n padding-left: initial;\n }\n\n .nav-tabs > li {\n float: right;\n }\n\n .nav-tabs > li > a {\n margin-left: auto;\n margin-right: -2px;\n border-radius: 4px 4px 0 0;\n }\n\n .nav-pills > li {\n float: right;\n }\n\n .nav-pills > li > a {\n border-radius: 4px;\n }\n\n .nav-pills > li + li {\n margin-right: 2px;\n margin-left: auto;\n }\n\n .nav-stacked > li {\n float: none;\n }\n\n .nav-stacked > li + li {\n margin-right: 0;\n margin-left: auto;\n }\n\n .nav-justified > .dropdown .dropdown-menu {\n right: auto;\n }\n\n .nav-tabs-justified > li > a {\n margin-left: 0;\n margin-right: auto;\n }\n\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-radius: 4px 4px 0 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: right;\n }\n }\n\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n }\n\n .navbar-brand {\n float: right;\n }\n\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-right: -15px;\n margin-left: auto;\n }\n }\n\n .navbar-toggle {\n float: left;\n margin-left: 15px;\n margin-right: auto;\n }\n\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 25px 5px 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: right;\n }\n .navbar-nav > li {\n float: right;\n }\n }\n @media (min-width: 768px) {\n .navbar-left.flip {\n float: right !important;\n }\n .navbar-right:last-child {\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right.flip {\n float: left !important;\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right .dropdown-menu {\n left: 0;\n right: auto;\n }\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: right;\n }\n .navbar-text.navbar-right:last-child {\n margin-left: 0;\n margin-right: auto;\n }\n }\n\n .pagination {\n padding-right: 0;\n }\n\n .pagination > li > a,\n .pagination > li > span {\n float: right;\n margin-right: -1px;\n margin-left: 0px;\n }\n\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n margin-right: -1px;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .pager {\n padding-right: 0;\n padding-left: initial;\n }\n\n .pager .next > a,\n .pager .next > span {\n float: left;\n }\n\n .pager .previous > a,\n .pager .previous > span {\n float: right;\n }\n\n .nav-pills > li > a > .badge {\n margin-left: 0px;\n margin-right: 3px;\n }\n\n .list-group-item > .badge {\n float: left;\n }\n\n .list-group-item > .badge + .badge {\n margin-left: 5px;\n margin-right: auto;\n }\n\n .alert-dismissable,\n .alert-dismissible {\n padding-left: 35px;\n padding-right: 15px;\n }\n\n .alert-dismissable .close,\n .alert-dismissible .close {\n right: auto;\n left: -21px;\n }\n\n .progress-bar {\n float: right;\n }\n\n .media > .pull-left {\n margin-right: 10px;\n }\n\n .media > .pull-left.flip {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .media > .pull-right {\n margin-left: 10px;\n }\n\n .media > .pull-right.flip {\n margin-left: 0;\n margin-right: 10px;\n }\n\n .media-right,\n .media > .pull-right {\n padding-right: 10px;\n padding-left: initial;\n }\n\n .media-left,\n .media > .pull-left {\n padding-left: 10px;\n padding-right: initial;\n }\n\n .media-list {\n padding-right: 0;\n padding-left: initial;\n list-style: none;\n }\n\n .list-group {\n padding-right: 0;\n padding-left: initial;\n }\n\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel\n > .table-responsive:first-child\n > .table:first-child\n > tbody:first-child\n > tr:first-child\n th:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 0;\n }\n\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 0;\n }\n\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n border-top-right-radius: 0;\n }\n\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n border-top-left-radius: 0;\n }\n\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: none;\n }\n\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: none;\n border-left: 0;\n }\n\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object {\n right: 0;\n left: auto;\n }\n\n .close {\n float: left;\n }\n\n .modal-footer {\n text-align: left;\n }\n\n .modal-footer.flip {\n text-align: right;\n }\n\n .modal-footer .btn + .btn {\n margin-left: auto;\n margin-right: 5px;\n }\n\n .modal-footer .btn-group .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .modal-footer .btn-block + .btn-block {\n margin-right: 0;\n margin-left: auto;\n }\n\n .popover {\n left: auto;\n text-align: right;\n }\n\n .popover.top > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n\n .popover.top > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n\n .popover.bottom > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n\n .popover.bottom > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n\n .carousel-control {\n right: 0;\n bottom: 0;\n }\n\n .carousel-control.left {\n right: auto;\n left: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.5) 0%),\n color-stop(rgba(0, 0, 0, 0.0001) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n }\n\n .carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.0001) 0%),\n color-stop(rgba(0, 0, 0, 0.5) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n }\n\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n right: auto;\n margin-right: -10px;\n }\n\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n left: auto;\n margin-left: -10px;\n }\n\n .carousel-indicators {\n right: 50%;\n left: 0;\n margin-right: -30%;\n margin-left: 0;\n padding-left: 0;\n }\n\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n }\n\n .pull-right.flip {\n float: left !important;\n }\n\n .pull-left.flip {\n float: right !important;\n }\n }\n}\n","/* @preserve\n Copyright (c) 2005-2016, Mendix bv. All rights reserved.\n See mxclientsystem/licenses.txt for third party licenses that apply.\n*/\n\n/*\n\tEssential styles that themes can inherit.\n\tIn other words, works but doesn't look great.\n*/\n\n@mixin mxui() {\n /****\n\t\tGENERIC PIECES\n ****/\n\n .dijitReset {\n /* Use this style to null out padding, margin, border in your template elements\n\t\tso that page specific styles don't break them.\n\t\t- Use in all TABLE, TR and TD tags.\n\t*/\n margin: 0;\n border: 0;\n padding: 0;\n font: inherit;\n line-height: normal;\n color: inherit;\n }\n .dj_a11y .dijitReset {\n -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */\n }\n\n .dijitInline {\n /* To inline block elements.\n\t\tSimilar to InlineBox below, but this has fewer side-effects in Moz.\n\t\tAlso, apparently works on a DIV as well as a FIELDSET.\n\t*/\n display: inline-block; /* webkit and FF3 */\n border: 0;\n padding: 0;\n vertical-align: middle;\n }\n\n table.dijitInline {\n /* To inline tables with a given width set */\n display: inline-table;\n box-sizing: content-box;\n }\n\n .dijitHidden {\n /* To hide unselected panes in StackContainer etc. */\n position: absolute; /* remove from normal document flow to simulate display: none */\n visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */\n }\n .dijitHidden * {\n visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */\n }\n\n .dijitVisible {\n /* To show selected pane in StackContainer etc. */\n display: block !important; /* override user's display:none setting via style setting or indirectly via class */\n position: relative; /* to support setting width/height, see #2033 */\n visibility: visible;\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n /* for positioning of placeHolder */\n overflow: hidden;\n float: none !important; /* needed to squeeze the INPUT in */\n position: relative;\n }\n .dj_ie7 .dijitInputContainer {\n float: left !important; /* needed by IE to squeeze the INPUT in */\n clear: left;\n display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */\n }\n\n .dj_ie .dijitSelect input,\n .dj_ie input.dijitTextBox,\n .dj_ie .dijitTextBox input {\n font-size: 100%;\n }\n .dijitSelect .dijitButtonText {\n float: left;\n vertical-align: top;\n }\n table.dijitSelect {\n padding: 0 !important; /* messes up border alignment */\n border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */\n }\n .dijitTextBox .dijitSpinnerButtonContainer,\n .dijitTextBox .dijitArrowButtonContainer,\n .dijitValidationTextBox .dijitValidationContainer {\n float: right;\n text-align: center;\n }\n .dijitSelect input.dijitInputField,\n .dijitTextBox input.dijitInputField {\n /* override unreasonable user styling of buttons and icons */\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .dijitValidationTextBox .dijitValidationContainer {\n display: none;\n }\n\n .dijitTeeny {\n font-size: 1px;\n line-height: 1px;\n }\n\n .dijitOffScreen {\n /* these class attributes should supersede any inline positioning style */\n position: absolute !important;\n left: -10000px !important;\n top: -10000px !important;\n }\n\n /*\n * Popup items have a wrapper div (dijitPopup)\n * with the real popup inside, and maybe an iframe too\n */\n .dijitPopup {\n position: absolute;\n background-color: transparent;\n margin: 0;\n border: 0;\n padding: 0;\n -webkit-overflow-scrolling: touch;\n }\n\n .dijitPositionOnly {\n /* Null out all position-related properties */\n padding: 0 !important;\n border: 0 !important;\n background-color: transparent !important;\n background-image: none !important;\n height: auto !important;\n width: auto !important;\n }\n\n .dijitNonPositionOnly {\n /* Null position-related properties */\n float: none !important;\n position: static !important;\n margin: 0 0 0 0 !important;\n vertical-align: middle !important;\n }\n\n .dijitBackgroundIframe {\n /* iframe used to prevent problems with PDF or other applets overlaying menus etc */\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .dijitDisplayNone {\n /* hide something. Use this as a class rather than element.style so another class can override */\n display: none !important;\n }\n\n .dijitContainer {\n /* for all layout containers */\n overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */\n }\n\n /****\n\t\tA11Y\n ****/\n .dj_a11y .dijitIcon,\n .dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */\n .dj_a11y span.dijitArrowButtonInner,\n .dj_a11y img.dijitArrowButtonInner,\n .dj_a11y .dijitCalendarIncrementControl,\n .dj_a11y .dijitTreeExpando {\n /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents\n\t * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */\n display: none;\n }\n .dijitSpinner div.dijitArrowButtonInner {\n display: block; /* override previous rule */\n }\n\n .dj_a11y .dijitA11ySideArrow {\n display: inline !important; /* display text instead */\n cursor: pointer;\n }\n\n /*\n * Since we can't use shading in a11y mode, and since the underline indicates today's date,\n * use a border to show the selected date.\n * Avoid screen jitter when switching selected date by compensating for the selected node's\n * border w/padding on other nodes.\n */\n .dj_a11y .dijitCalendarDateLabel {\n padding: 1px;\n border: 0px !important;\n }\n .dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {\n border-style: solid !important;\n border-width: 1px !important;\n padding: 0;\n }\n .dj_a11y .dijitCalendarDateTemplate {\n padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */\n border: 0px !important;\n }\n .dj_a11y .dijitButtonNode {\n border: black outset medium !important;\n\n /* In claro, hovering a toolbar button reduces padding and adds a border.\n\t * Not needed in a11y mode since Toolbar buttons always have a border.\n\t */\n padding: 0 !important;\n }\n .dj_a11y .dijitArrowButton {\n padding: 0 !important;\n }\n\n .dj_a11y .dijitButtonContents {\n margin: 0.15em; /* Margin needed to make focus outline visible */\n }\n\n .dj_a11y .dijitTextBoxReadOnly .dijitInputField,\n .dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {\n border-style: outset !important;\n border-width: medium !important;\n border-color: #999 !important;\n color: #999 !important;\n }\n\n /* button inner contents - labels, icons etc. */\n .dijitButtonNode * {\n vertical-align: middle;\n }\n .dijitSelect .dijitArrowButtonInner,\n .dijitButtonNode .dijitArrowButtonInner {\n /* the arrow icon node */\n background: no-repeat center;\n width: 12px;\n height: 12px;\n direction: ltr; /* needed by IE/RTL */\n }\n\n /****\n\t3-element borders: ( dijitLeft + dijitStretch + dijitRight )\n\tThese were added for rounded corners on dijit.form.*Button but never actually used.\n ****/\n\n .dijitLeft {\n /* Left part of a 3-element border */\n background-position: left top;\n background-repeat: no-repeat;\n }\n\n .dijitStretch {\n /* Middle (stretchy) part of a 3-element border */\n white-space: nowrap; /* MOW: move somewhere else */\n background-repeat: repeat-x;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n background-position: right top;\n background-repeat: no-repeat;\n }\n\n /* Buttons */\n .dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {\n opacity: 0.5;\n }\n\n .dijitToggleButton,\n .dijitButton,\n .dijitDropDownButton,\n .dijitComboButton {\n /* outside of button */\n margin: 0.2em;\n vertical-align: middle;\n }\n\n .dijitButtonContents {\n display: block; /* to make focus border rectangular */\n }\n td.dijitButtonContents {\n display: table-cell; /* but don't affect Select, ComboButton */\n }\n\n .dijitButtonNode img {\n /* make text and images line up cleanly */\n vertical-align: middle;\n /*margin-bottom:.2em;*/\n }\n\n .dijitToolbar .dijitComboButton {\n /* because Toolbar only draws a border around the hovered thing */\n border-collapse: separate;\n }\n\n .dijitToolbar .dijitToggleButton,\n .dijitToolbar .dijitButton,\n .dijitToolbar .dijitDropDownButton,\n .dijitToolbar .dijitComboButton {\n margin: 0;\n }\n\n .dijitToolbar .dijitButtonContents {\n /* just because it used to be this way */\n padding: 1px 2px;\n }\n\n .dj_webkit .dijitToolbar .dijitDropDownButton {\n padding-left: 0.3em;\n }\n .dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {\n padding: 0;\n }\n\n .dijitSelect {\n border: 1px solid gray;\n }\n .dijitButtonNode {\n /* Node that is acting as a button -- may or may not be a BUTTON element */\n border: 1px solid gray;\n margin: 0;\n line-height: normal;\n vertical-align: middle;\n text-align: center;\n white-space: nowrap;\n }\n .dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {\n /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)\n\tcan be different than just a single line-height:normal, visible in InlineEditBox/Spinner */\n line-height: inherit;\n }\n .dijitTextBox .dijitButtonNode {\n border-width: 0;\n }\n\n .dijitSelect,\n .dijitSelect *,\n .dijitButtonNode,\n .dijitButtonNode * {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dj_ie .dijitButtonNode {\n /* ensure hasLayout */\n zoom: 1;\n }\n\n .dj_ie .dijitButtonNode button {\n /*\n\t\tdisgusting hack to get rid of spurious padding around button elements\n\t\ton IE. MSIE is truly the web's boat anchor.\n\t*/\n overflow: visible;\n }\n\n div.dijitArrowButton {\n float: right;\n }\n\n /******\n\tTextBox related.\n\tEverything that has an \n*******/\n\n .dijitTextBox {\n border: solid black 1px;\n width: 15em; /* need to set default size on outer node since inner nodes say and . user can override */\n vertical-align: middle;\n }\n\n .dijitTextBoxReadOnly,\n .dijitTextBoxDisabled {\n color: gray;\n }\n .dj_safari .dijitTextBoxDisabled input {\n color: #b0b0b0; /* because Safari lightens disabled input/textarea no matter what color you specify */\n }\n .dj_safari textarea.dijitTextAreaDisabled {\n color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */\n }\n .dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */\n .dj_gecko .dijitTextBoxDisabled input {\n -moz-user-input: none; /* prevent focus of disabled textbox buttons */\n }\n\n .dijitPlaceHolder {\n /* hint text that appears in a textbox until user starts typing */\n color: #aaaaaa;\n font-style: italic;\n position: absolute;\n top: 0;\n left: 0;\n white-space: nowrap;\n pointer-events: none; /* so cut/paste context menu shows up when right clicking */\n }\n\n .dijitTimeTextBox {\n width: 8em;\n }\n\n /* rules for webkit to deal with fuzzy blue focus border */\n .dijitTextBox input:focus {\n outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */\n }\n .dijitTextBoxFocused {\n outline: 5px -webkit-focus-ring-color;\n }\n\n .dijitSelect input,\n .dijitTextBox input {\n float: left; /* needed by IE to remove secret margin */\n }\n .dj_ie6 input.dijitTextBox,\n .dj_ie6 .dijitTextBox input {\n float: none;\n }\n .dijitInputInner {\n /* for when an is embedded inside an inline-block
with a size and border */\n border: 0 !important;\n background-color: transparent !important;\n width: 100% !important;\n /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */\n padding-left: 0 !important;\n padding-right: 0 !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .dj_a11y .dijitTextBox input {\n margin: 0 !important;\n }\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n /* used to display arrow icon/validation icon, or in arrow character in high contrast mode.\n\t * The css below is a trick to hide the character in non-high-contrast mode\n\t */\n text-indent: -2em !important;\n direction: ltr !important;\n text-align: left !important;\n height: auto !important;\n }\n .dj_ie .dijitSelect input,\n .dj_ie .dijitTextBox input,\n .dj_ie input.dijitTextBox {\n overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */\n line-height: normal; /* strict mode */\n }\n .dijitSelect .dijitSelectLabel span {\n line-height: 100%;\n }\n .dj_ie .dijitSelect .dijitSelectLabel {\n line-height: normal;\n }\n .dj_ie6 .dijitSelect .dijitSelectLabel,\n .dj_ie7 .dijitSelect .dijitSelectLabel,\n .dj_ie8 .dijitSelect .dijitSelectLabel,\n .dj_iequirks .dijitSelect .dijitSelectLabel,\n .dijitSelect td,\n .dj_ie6 .dijitSelect input,\n .dj_iequirks .dijitSelect input,\n .dj_ie6 .dijitSelect .dijitValidationContainer,\n .dj_ie6 .dijitTextBox input,\n .dj_ie6 input.dijitTextBox,\n .dj_iequirks .dijitTextBox input.dijitValidationInner,\n .dj_iequirks .dijitTextBox input.dijitArrowButtonInner,\n .dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,\n .dj_iequirks .dijitTextBox input.dijitInputInner,\n .dj_iequirks input.dijitTextBox {\n line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */\n }\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n /* (in high contrast mode) revert rules from above so character displays */\n text-indent: 0 !important;\n width: 1em !important;\n color: black !important;\n }\n .dijitValidationTextBoxError .dijitValidationContainer {\n display: inline;\n cursor: default;\n }\n\n /* ComboBox & Spinner */\n\n .dijitSpinner .dijitSpinnerButtonContainer,\n .dijitComboBox .dijitArrowButtonContainer {\n /* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n border-width: 0 0 0 1px !important; /* !important needed due to wayward \".theme .dijitButtonNode\" rules */\n }\n .dj_a11y .dijitSelect .dijitArrowButtonContainer,\n .dijitToolbar .dijitComboBox .dijitArrowButtonContainer {\n /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */\n border-width: 0 !important;\n }\n\n .dijitComboBoxMenu {\n /* Drop down menu is implemented as
  • ... but we don't want circles before each item */\n list-style-type: none;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n /* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n border-width: 0;\n }\n .dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n clear: both; /* IE workaround */\n }\n\n .dj_ie .dijitToolbar .dijitComboBox {\n /* make combobox buttons align properly with other buttons in a toolbar */\n vertical-align: middle;\n }\n\n /* Spinner */\n\n .dijitTextBox .dijitSpinnerButtonContainer {\n width: 1em;\n position: relative !important;\n overflow: hidden;\n }\n .dijitSpinner .dijitSpinnerButtonInner {\n width: 1em;\n visibility: hidden !important; /* just a sizing element */\n overflow-x: hidden;\n }\n .dijitComboBox .dijitButtonNode,\n .dijitSpinnerButtonContainer .dijitButtonNode {\n border-width: 0;\n }\n .dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {\n border-width: 0px !important;\n border-style: solid !important;\n }\n .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,\n .dj_a11y .dijitSpinner .dijitArrowButtonInner,\n .dj_a11y .dijitSpinnerButtonContainer input {\n width: 1em !important;\n }\n .dj_a11y .dijitSpinner .dijitArrowButtonInner {\n margin: 0 auto !important; /* should auto-center */\n }\n .dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n padding-left: 0.3em !important;\n padding-right: 0.3em !important;\n margin-left: 0.3em !important;\n margin-right: 0.3em !important;\n width: 1.4em !important;\n }\n .dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */\n padding-right: 0 !important;\n width: 1em !important;\n }\n .dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n margin-left: 0.1em !important;\n margin-right: 0.1em !important;\n width: 1em !important;\n }\n .dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n margin-left: 0 !important;\n margin-right: 0 !important;\n width: 2em !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings\n\t * for dijit.form.Button\n\t */\n padding: 0;\n position: absolute !important;\n right: 0;\n float: none;\n height: 50%;\n width: 100%;\n bottom: auto;\n left: 0;\n right: auto;\n }\n .dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: auto;\n }\n .dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {\n overflow: visible !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {\n top: 50%;\n border-top-width: 1px !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n top: 0;\n }\n .dijitSpinner .dijitArrowButtonInner {\n margin: auto;\n overflow-x: hidden;\n height: 100% !important;\n }\n .dj_iequirks .dijitSpinner .dijitArrowButtonInner {\n height: auto !important;\n }\n .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n transform: scale(0.5);\n transform-origin: left top;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 0 !important;\n padding-right: 0 !important;\n width: 100%;\n visibility: hidden;\n }\n .dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n zoom: 50%; /* emulate transform: scale(0.5) */\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {\n overflow: hidden;\n }\n\n .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: 100%;\n }\n .dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */\n }\n .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n vertical-align: top;\n visibility: visible;\n }\n .dj_a11y .dijitSpinnerButtonContainer {\n width: 1em;\n }\n\n /****\n\t\tdijit.form.CheckBox\n \t &\n \t\tdijit.form.RadioButton\n ****/\n\n .dijitCheckBox,\n .dijitRadio,\n .dijitCheckBoxInput {\n padding: 0;\n border: 0;\n width: 16px;\n height: 16px;\n background-position: center center;\n background-repeat: no-repeat;\n overflow: hidden;\n }\n\n .dijitCheckBox input,\n .dijitRadio input {\n margin: 0;\n padding: 0;\n display: block;\n }\n\n .dijitCheckBoxInput {\n /* place the actual input on top, but invisible */\n opacity: 0;\n }\n\n .dj_ie .dijitCheckBoxInput {\n filter: alpha(opacity=0);\n }\n\n .dj_a11y .dijitCheckBox,\n .dj_a11y .dijitRadio {\n /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */\n width: auto !important;\n height: auto !important;\n }\n .dj_a11y .dijitCheckBoxInput {\n opacity: 1;\n filter: none;\n width: auto;\n height: auto;\n }\n\n .dj_a11y .dijitFocusedLabel {\n /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/\n border: 1px dotted;\n outline: 0px !important;\n }\n\n /****\n\t\tdijit.ProgressBar\n ****/\n\n .dijitProgressBar {\n z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */\n }\n .dijitProgressBarEmpty {\n /* outer container and background of the bar that's not finished yet*/\n position: relative;\n overflow: hidden;\n border: 1px solid black; /* a11y: border necessary for high-contrast mode */\n z-index: 0; /* establish a stacking context for this progress bar */\n }\n\n .dijitProgressBarFull {\n /* outer container for background of bar that is finished */\n position: absolute;\n overflow: hidden;\n z-index: -1;\n top: 0;\n width: 100%;\n }\n .dj_ie6 .dijitProgressBarFull {\n height: 1.6em;\n }\n\n .dijitProgressBarTile {\n /* inner container for finished portion */\n position: absolute;\n overflow: hidden;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: 0;\n padding: 0;\n width: 100%; /* needed for IE/quirks */\n height: auto;\n background-color: #aaa;\n background-attachment: fixed;\n }\n\n .dj_a11y .dijitProgressBarTile {\n /* a11y: The border provides visibility in high-contrast mode */\n border-width: 2px;\n border-style: solid;\n background-color: transparent !important;\n }\n\n .dj_ie6 .dijitProgressBarTile {\n /* width:auto works in IE6 with position:static but not position:absolute */\n position: static;\n /* height:auto or 100% does not work in IE6 */\n height: 1.6em;\n }\n\n .dijitProgressBarIndeterminate .dijitProgressBarTile {\n /* animated gif for 'indeterminate' mode */\n }\n\n .dijitProgressBarIndeterminateHighContrastImage {\n display: none;\n }\n\n .dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n height: auto;\n }\n\n .dijitProgressBarLabel {\n display: block;\n position: static;\n width: 100%;\n text-align: center;\n background-color: transparent !important;\n }\n\n /****\n\t\tdijit.Tooltip\n ****/\n\n .dijitTooltip {\n position: absolute;\n z-index: 2000;\n display: block;\n /* make visible but off screen */\n left: 0;\n top: -10000px;\n overflow: visible;\n }\n\n .dijitTooltipContainer {\n border: solid black 2px;\n background: #b8b5b5;\n color: black;\n font-size: small;\n }\n\n .dijitTooltipFocusNode {\n padding: 2px 2px 2px 2px;\n }\n\n .dijitTooltipConnector {\n position: absolute;\n }\n .dj_a11y .dijitTooltipConnector {\n display: none; /* won't show b/c it's background-image; hide to avoid border gap */\n }\n\n .dijitTooltipData {\n display: none;\n }\n\n /* Layout widgets. This is essential CSS to make layout work (it isn't \"styling\" CSS)\n make sure that the position:absolute in dijitAlign* overrides other classes */\n\n .dijitLayoutContainer {\n position: relative;\n display: block;\n overflow: hidden;\n }\n\n .dijitAlignTop,\n .dijitAlignBottom,\n .dijitAlignLeft,\n .dijitAlignRight {\n position: absolute;\n overflow: hidden;\n }\n\n body .dijitAlignClient {\n position: absolute;\n }\n\n /*\n * BorderContainer\n *\n * .dijitBorderContainer is a stylized layout where panes have border and margin.\n * .dijitBorderContainerNoGutter is a raw layout.\n */\n .dijitBorderContainer,\n .dijitBorderContainerNoGutter {\n position: relative;\n overflow: hidden;\n z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */\n }\n\n .dijitBorderContainerPane,\n .dijitBorderContainerNoGutterPane {\n position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */\n z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */\n }\n\n .dijitBorderContainer > .dijitTextArea {\n /* On Safari, for SimpleTextArea inside a BorderContainer,\n\t\tdon't want to display the grip to resize */\n resize: none;\n }\n\n .dijitGutter {\n /* gutter is just a place holder for empty space between panes in BorderContainer */\n position: absolute;\n font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */\n }\n\n /* SplitContainer\n\n\t'V' == container that splits vertically (up/down)\n\t'H' = horizontal (left/right)\n*/\n\n .dijitSplitter {\n position: absolute;\n overflow: hidden;\n z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/\n background-color: #fff;\n border-color: gray;\n border-style: solid;\n border-width: 0;\n }\n .dj_ie .dijitSplitter {\n z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */\n }\n\n .dijitSplitterActive {\n z-index: 11 !important;\n }\n\n .dijitSplitterCover {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n .dijitSplitterCoverActive {\n z-index: 3 !important;\n }\n\n /* #6945: stop mouse events */\n .dj_ie .dijitSplitterCover {\n background: white;\n opacity: 0;\n }\n .dj_ie6 .dijitSplitterCover,\n .dj_ie7 .dijitSplitterCover,\n .dj_ie8 .dijitSplitterCover {\n filter: alpha(opacity=0);\n }\n\n .dijitSplitterH {\n height: 7px;\n border-top: 1px;\n border-bottom: 1px;\n cursor: row-resize;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitSplitterV {\n width: 7px;\n border-left: 1px;\n border-right: 1px;\n cursor: col-resize;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitSplitContainer {\n position: relative;\n overflow: hidden;\n display: block;\n }\n\n .dijitSplitPane {\n position: absolute;\n }\n\n .dijitSplitContainerSizerH,\n .dijitSplitContainerSizerV {\n position: absolute;\n font-size: 1px;\n background-color: ThreeDFace;\n border: 1px solid;\n border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n margin: 0;\n }\n\n .dijitSplitContainerSizerH .thumb,\n .dijitSplitterV .dijitSplitterThumb {\n overflow: hidden;\n position: absolute;\n top: 49%;\n }\n\n .dijitSplitContainerSizerV .thumb,\n .dijitSplitterH .dijitSplitterThumb {\n position: absolute;\n left: 49%;\n }\n\n .dijitSplitterShadow,\n .dijitSplitContainerVirtualSizerH,\n .dijitSplitContainerVirtualSizerV {\n font-size: 1px;\n background-color: ThreeDShadow;\n opacity: 0.5;\n margin: 0;\n }\n\n .dijitSplitContainerSizerH,\n .dijitSplitContainerVirtualSizerH {\n cursor: col-resize;\n }\n\n .dijitSplitContainerSizerV,\n .dijitSplitContainerVirtualSizerV {\n cursor: row-resize;\n }\n\n .dj_a11y .dijitSplitterH {\n border-top: 1px solid #d3d3d3 !important;\n border-bottom: 1px solid #d3d3d3 !important;\n }\n .dj_a11y .dijitSplitterV {\n border-left: 1px solid #d3d3d3 !important;\n border-right: 1px solid #d3d3d3 !important;\n }\n\n /* ContentPane */\n\n .dijitContentPane {\n display: block;\n overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */\n -webkit-overflow-scrolling: touch;\n }\n\n .dijitContentPaneSingleChild {\n /*\n\t * if the ContentPane holds a single layout widget child which is being sized to match the content pane,\n\t * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449\n\t */\n overflow: hidden;\n }\n\n .dijitContentPaneLoading .dijitIconLoading,\n .dijitContentPaneError .dijitIconError {\n margin-right: 9px;\n }\n\n /* TitlePane and Fieldset */\n\n .dijitTitlePane {\n display: block;\n overflow: hidden;\n }\n .dijitFieldset {\n border: 1px solid gray;\n }\n .dijitTitlePaneTitle,\n .dijitFieldsetTitle {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitTitlePaneTitleFixedOpen,\n .dijitTitlePaneTitleFixedClosed,\n .dijitFieldsetTitleFixedOpen,\n .dijitFieldsetTitleFixedClosed {\n /* TitlePane or Fieldset that cannot be toggled */\n cursor: default;\n }\n .dijitTitlePaneTitle * {\n vertical-align: middle;\n }\n .dijitTitlePane .dijitArrowNodeInner,\n .dijitFieldset .dijitArrowNodeInner {\n /* normally, hide arrow text in favor of icon */\n display: none;\n }\n .dj_a11y .dijitTitlePane .dijitArrowNodeInner,\n .dj_a11y .dijitFieldset .dijitArrowNodeInner {\n /* ... except in a11y mode, then show text arrow */\n display: inline;\n font-family: monospace; /* because - and + are different widths */\n }\n .dj_a11y .dijitTitlePane .dijitArrowNode,\n .dj_a11y .dijitFieldset .dijitArrowNode {\n /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */\n display: none;\n }\n .dijitTitlePaneTitleFixedOpen .dijitArrowNode,\n .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,\n .dijitTitlePaneTitleFixedClosed .dijitArrowNode,\n .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,\n .dijitFieldsetTitleFixedOpen .dijitArrowNode,\n .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,\n .dijitFieldsetTitleFixedClosed .dijitArrowNode,\n .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {\n /* don't show the open close icon or text arrow; it makes the user think the pane is closable */\n display: none !important; /* !important to override above a11y rules to show text arrow */\n }\n\n .dj_ie6 .dijitTitlePaneContentOuter,\n .dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {\n /* force hasLayout to ensure borders etc, show up */\n zoom: 1;\n }\n\n /* Color Palette\n * Sizes designed so that table cell positions match icons in underlying image,\n * which appear at 20x20 intervals.\n */\n\n .dijitColorPalette {\n border: 1px solid #999;\n background: #fff;\n position: relative;\n }\n\n .dijitColorPalette .dijitPaletteTable {\n /* Table that holds the palette cells, and overlays image file with color swatches.\n\t * padding/margin to align table with image.\n\t */\n padding: 2px 3px 3px 3px;\n position: relative;\n overflow: hidden;\n outline: 0;\n border-collapse: separate;\n }\n .dj_ie6 .dijitColorPalette .dijitPaletteTable,\n .dj_ie7 .dijitColorPalette .dijitPaletteTable,\n .dj_iequirks .dijitColorPalette .dijitPaletteTable {\n /* using padding above so that focus border isn't cutoff on moz/webkit,\n\t * but using margin on IE because padding doesn't seem to work\n\t */\n padding: 0;\n margin: 2px 3px 3px 3px;\n }\n\n .dijitColorPalette .dijitPaletteCell {\n /* in the */\n font-size: 1px;\n vertical-align: middle;\n text-align: center;\n background: none;\n }\n .dijitColorPalette .dijitPaletteImg {\n /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */\n padding: 1px; /* white area between gray border and color swatch */\n border: 1px solid #999;\n margin: 2px 1px;\n cursor: default;\n font-size: 1px; /* prevent from getting bigger just to hold a character */\n }\n .dj_gecko .dijitColorPalette .dijitPaletteImg {\n padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */\n }\n .dijitColorPalette .dijitColorPaletteSwatch {\n /* the actual part where the color is */\n width: 14px;\n height: 12px;\n }\n .dijitPaletteTable td {\n padding: 0;\n }\n .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {\n /* hovered color swatch */\n border: 1px solid #000;\n }\n\n .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,\n .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {\n border: 2px solid #000;\n margin: 1px 0; /* reduce margin to compensate for increased border */\n }\n\n .dj_a11y .dijitColorPalette .dijitPaletteTable,\n .dj_a11y .dijitColorPalette .dijitPaletteTable * {\n /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */\n background-color: transparent !important;\n }\n\n /* AccordionContainer */\n\n .dijitAccordionContainer {\n border: 1px solid #b7b7b7;\n border-top: 0 !important;\n }\n .dijitAccordionTitle {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitAccordionTitleSelected {\n cursor: default;\n }\n\n /* images off, high-contrast mode styles */\n .dijitAccordionTitle .arrowTextUp,\n .dijitAccordionTitle .arrowTextDown {\n display: none;\n font-size: 0.65em;\n font-weight: normal !important;\n }\n\n .dj_a11y .dijitAccordionTitle .arrowTextUp,\n .dj_a11y .dijitAccordionTitleSelected .arrowTextDown {\n display: inline;\n }\n\n .dj_a11y .dijitAccordionTitleSelected .arrowTextUp {\n display: none;\n }\n\n .dijitAccordionChildWrapper {\n /* this is the node whose height is adjusted */\n overflow: hidden;\n }\n\n /* Calendar */\n\n .dijitCalendarContainer table {\n width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */\n clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */\n }\n .dijitCalendarContainer th,\n .dijitCalendarContainer td {\n padding: 0;\n vertical-align: middle;\n }\n\n .dijitCalendarMonthContainer {\n text-align: center;\n }\n .dijitCalendarDecrementArrow {\n float: left;\n }\n .dijitCalendarIncrementArrow {\n float: right;\n }\n\n .dijitCalendarYearLabel {\n white-space: nowrap; /* make sure previous, current, and next year appear on same row */\n }\n\n .dijitCalendarNextYear {\n margin: 0 0 0 0.55em;\n }\n\n .dijitCalendarPreviousYear {\n margin: 0 0.55em 0 0;\n }\n\n .dijitCalendarIncrementControl {\n vertical-align: middle;\n }\n\n .dijitCalendarIncrementControl,\n .dijitCalendarDateTemplate,\n .dijitCalendarMonthLabel,\n .dijitCalendarPreviousYear,\n .dijitCalendarNextYear {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitCalendarDisabledDate {\n color: gray;\n text-decoration: line-through;\n cursor: default;\n }\n\n .dijitSpacer {\n /* don't display it, but make it affect the width */\n position: relative;\n height: 1px;\n overflow: hidden;\n visibility: hidden;\n }\n\n /* Styling for month drop down list */\n\n .dijitCalendarMonthMenu .dijitCalendarMonthLabel {\n text-align: center;\n }\n\n /* Menu */\n\n .dijitMenu {\n border: 1px solid black;\n background-color: white;\n }\n .dijitMenuTable {\n border-collapse: collapse;\n border-width: 0;\n background-color: white;\n }\n\n /* workaround for webkit bug #8427, remove this when it is fixed upstream */\n .dj_webkit .dijitMenuTable td[colspan=\"2\"] {\n border-right: hidden;\n }\n\n .dijitMenuItem {\n text-align: left;\n white-space: nowrap;\n padding: 0.1em 0.2em;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n /*\nNo need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected\nrule below that handles the high contrast case when there's no shading.\nHiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779.\n*/\n .dijitMenuItem:focus {\n outline: none;\n }\n\n .dijitMenuPassive .dijitMenuItemHover,\n .dijitMenuItemSelected {\n /*\n\t * dijitMenuItemHover refers to actual mouse over\n\t * dijitMenuItemSelected is used after a menu has been \"activated\" by\n\t * clicking it, tabbing into it, or being opened from a parent menu,\n\t * and denotes that the menu item has focus or that focus is on a child\n\t * menu\n\t */\n background-color: black;\n color: white;\n }\n\n .dijitMenuItemIcon,\n .dijitMenuExpand {\n background-repeat: no-repeat;\n }\n\n .dijitMenuItemDisabled * {\n /* for a disabled menu item, just set it to mostly transparent */\n opacity: 0.5;\n cursor: default;\n }\n .dj_ie .dj_a11y .dijitMenuItemDisabled,\n .dj_ie .dj_a11y .dijitMenuItemDisabled *,\n .dj_ie .dijitMenuItemDisabled * {\n color: gray;\n filter: alpha(opacity=35);\n }\n\n .dijitMenuItemLabel {\n vertical-align: middle;\n }\n\n .dj_a11y .dijitMenuItemSelected {\n border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */\n }\n\n .dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {\n border-width: 1px;\n border-style: solid;\n }\n .dj_ie8 .dj_a11y .dijitMenuItemLabel {\n position: static;\n }\n\n .dijitMenuExpandA11y {\n display: none;\n }\n .dj_a11y .dijitMenuExpandA11y {\n display: inline;\n }\n\n .dijitMenuSeparator td {\n border: 0;\n padding: 0;\n }\n\n /* separator can be two pixels -- set border of either one to 0 to have only one */\n .dijitMenuSeparatorTop {\n height: 50%;\n margin: 0;\n margin-top: 3px;\n font-size: 1px;\n }\n\n .dijitMenuSeparatorBottom {\n height: 50%;\n margin: 0;\n margin-bottom: 3px;\n font-size: 1px;\n }\n\n /* CheckedMenuItem and RadioMenuItem */\n .dijitMenuItemIconChar {\n display: none; /* don't display except in high contrast mode */\n visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */\n }\n .dj_a11y .dijitMenuItemIconChar {\n display: inline; /* display character in high contrast mode, since icon doesn't show */\n }\n .dijitCheckedMenuItemChecked .dijitMenuItemIconChar,\n .dijitRadioMenuItemChecked .dijitMenuItemIconChar {\n visibility: visible; /* menuitem is checked */\n }\n .dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {\n /* so bottom border of MenuBar appears on IE7 in high-contrast mode */\n margin: 0;\n }\n\n /* StackContainer */\n\n .dijitStackController .dijitToggleButtonChecked * {\n cursor: default; /* because pressing it has no effect */\n }\n\n /***\nTabContainer\n\nMain class hierarchy:\n\n.dijitTabContainer - the whole TabContainer\n .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons\n\t .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width)\n\t\t.nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width)\n .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs\n***/\n\n .dijitTabContainer {\n z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */\n overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */\n }\n .dj_ie6 .dijitTabContainer {\n /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */\n overflow: hidden;\n }\n .dijitTabContainerNoLayout {\n width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */\n }\n\n .dijitTabContainerBottom-tabs,\n .dijitTabContainerTop-tabs,\n .dijitTabContainerLeft-tabs,\n .dijitTabContainerRight-tabs {\n z-index: 1;\n overflow: visible !important; /* so tabs can cover up border adjacent to container */\n }\n\n .dijitTabController {\n z-index: 1;\n }\n .dijitTabContainerBottom-container,\n .dijitTabContainerTop-container,\n .dijitTabContainerLeft-container,\n .dijitTabContainerRight-container {\n z-index: 0;\n overflow: hidden;\n border: 1px solid black;\n }\n .nowrapTabStrip {\n width: 50000px;\n display: block;\n position: relative;\n text-align: left; /* just in case ancestor has non-standard setting */\n z-index: 1;\n }\n .dijitTabListWrapper {\n overflow: hidden;\n z-index: 1;\n }\n\n .dj_a11y .tabStripButton img {\n /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */\n display: none;\n }\n\n .dijitTabContainerTop-tabs {\n border-bottom: 1px solid black;\n }\n .dijitTabContainerTop-container {\n border-top: 0;\n }\n\n .dijitTabContainerLeft-tabs {\n border-right: 1px solid black;\n float: left; /* needed for IE7 RTL mode */\n }\n .dijitTabContainerLeft-container {\n border-left: 0;\n }\n\n .dijitTabContainerBottom-tabs {\n border-top: 1px solid black;\n }\n .dijitTabContainerBottom-container {\n border-bottom: 0;\n }\n\n .dijitTabContainerRight-tabs {\n border-left: 1px solid black;\n float: left; /* needed for IE7 RTL mode */\n }\n .dijitTabContainerRight-container {\n border-right: 0;\n }\n\n div.dijitTabDisabled,\n .dj_ie div.dijitTabDisabled {\n cursor: auto;\n }\n\n .dijitTab {\n position: relative;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n white-space: nowrap;\n z-index: 3;\n }\n .dijitTab * {\n /* make tab icons and close icon line up w/text */\n vertical-align: middle;\n }\n .dijitTabChecked {\n cursor: default; /* because clicking will have no effect */\n }\n\n .dijitTabContainerTop-tabs .dijitTab {\n top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */\n }\n .dijitTabContainerBottom-tabs .dijitTab {\n top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */\n }\n .dijitTabContainerLeft-tabs .dijitTab {\n left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */\n }\n .dijitTabContainerRight-tabs .dijitTab {\n left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n /* Inline-block */\n display: inline-block; /* webkit and FF3 */\n }\n\n .tabStripButton {\n z-index: 12;\n }\n\n .dijitTabButtonDisabled .tabStripButton {\n display: none;\n }\n\n .dijitTabCloseButton {\n margin-left: 1em;\n }\n\n .dijitTabCloseText {\n display: none;\n }\n\n .dijitTab .tabLabel {\n /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font.\n\t * assumes <=15px height for close button icon.\n\t */\n min-height: 15px;\n display: inline-block;\n }\n .dijitNoIcon {\n /* applied to / node when there is no icon specified */\n display: none;\n }\n .dj_ie6 .dijitTab .dijitNoIcon {\n /* because min-height (on .tabLabel, above) doesn't work on IE6 */\n display: inline;\n height: 15px;\n width: 1px;\n }\n\n /* images off, high-contrast mode styles */\n\n .dj_a11y .dijitTabCloseButton {\n background-image: none !important;\n width: auto !important;\n height: auto !important;\n }\n\n .dj_a11y .dijitTabCloseText {\n display: inline;\n }\n\n .dijitTabPane,\n .dijitStackContainer-child,\n .dijitAccordionContainer-child {\n /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders\n\t * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.\n\t */\n border: none !important;\n }\n\n /* InlineEditBox */\n .dijitInlineEditBoxDisplayMode {\n border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */\n cursor: text;\n }\n\n .dj_a11y .dijitInlineEditBoxDisplayMode,\n .dj_ie6 .dijitInlineEditBoxDisplayMode {\n /* except that IE6 doesn't support transparent borders, nor does high contrast mode */\n border: none;\n }\n\n .dijitInlineEditBoxDisplayModeHover,\n .dj_a11y .dijitInlineEditBoxDisplayModeHover,\n .dj_ie6 .dijitInlineEditBoxDisplayModeHover {\n /* An InlineEditBox in view mode (click this to edit the text) */\n background-color: #e2ebf2;\n border: solid 1px black;\n }\n\n .dijitInlineEditBoxDisplayModeDisabled {\n cursor: default;\n }\n\n /* Tree */\n .dijitTree {\n overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitTreeContainer {\n float: left; /* for correct highlighting during horizontal scroll, see #16132 */\n }\n\n .dijitTreeIndent {\n /* amount to indent each tree node (relative to parent node) */\n width: 19px;\n }\n\n .dijitTreeRow,\n .dijitTreeContent {\n white-space: nowrap;\n }\n\n .dj_ie .dijitTreeLabel:focus {\n /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */\n outline: 1px dotted black;\n }\n\n .dijitTreeRow img {\n /* make the expando and folder icons line up with the label */\n vertical-align: middle;\n }\n\n .dijitTreeContent {\n cursor: default;\n }\n\n .dijitExpandoText {\n display: none;\n }\n\n .dj_a11y .dijitExpandoText {\n display: inline;\n padding-left: 10px;\n padding-right: 10px;\n font-family: monospace;\n border-style: solid;\n border-width: thin;\n cursor: pointer;\n }\n\n .dijitTreeLabel {\n margin: 0 4px;\n }\n\n /* Dialog */\n\n .dijitDialog {\n position: absolute;\n z-index: 999;\n overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */\n }\n\n .dijitDialogTitleBar {\n cursor: move;\n }\n .dijitDialogFixed .dijitDialogTitleBar {\n cursor: default;\n }\n .dijitDialogCloseIcon {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitDialogPaneContent {\n -webkit-overflow-scrolling: touch;\n }\n .dijitDialogUnderlayWrapper {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 998;\n display: none;\n background: transparent !important;\n }\n\n .dijitDialogUnderlay {\n background: #eee;\n opacity: 0.5;\n }\n\n .dj_ie .dijitDialogUnderlay {\n filter: alpha(opacity=50);\n }\n\n /* images off, high-contrast mode styles */\n .dj_a11y .dijitSpinnerButtonContainer,\n .dj_a11y .dijitDialog {\n opacity: 1 !important;\n background-color: white !important;\n }\n\n .dijitDialog .closeText {\n display: none;\n /* for the onhover border in high contrast on IE: */\n position: absolute;\n }\n\n .dj_a11y .dijitDialog .closeText {\n display: inline;\n }\n\n /* Slider */\n\n .dijitSliderMoveable {\n z-index: 99;\n position: absolute !important;\n display: block;\n vertical-align: middle;\n }\n\n .dijitSliderMoveableH {\n right: 0;\n }\n .dijitSliderMoveableV {\n right: 50%;\n }\n\n .dj_a11y div.dijitSliderImageHandle,\n .dijitSliderImageHandle {\n margin: 0;\n padding: 0;\n position: relative !important;\n border: 8px solid gray;\n width: 0;\n height: 0;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dj_iequirks .dj_a11y .dijitSliderImageHandle {\n font-size: 0;\n }\n .dj_ie7 .dijitSliderImageHandle {\n overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */\n }\n .dj_ie7 .dj_a11y .dijitSliderImageHandle {\n overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */\n }\n .dj_a11y .dijitSliderFocused .dijitSliderImageHandle {\n border: 4px solid #000;\n height: 8px;\n width: 8px;\n }\n\n .dijitSliderImageHandleV {\n top: -8px;\n right: -50%;\n }\n\n .dijitSliderImageHandleH {\n left: 50%;\n top: -5px;\n vertical-align: top;\n }\n\n .dijitSliderBar {\n border-style: solid;\n border-color: black;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitSliderBarContainerV {\n position: relative;\n height: 100%;\n z-index: 1;\n }\n\n .dijitSliderBarContainerH {\n position: relative;\n z-index: 1;\n }\n\n .dijitSliderBarH {\n height: 4px;\n border-width: 1px 0;\n }\n\n .dijitSliderBarV {\n width: 4px;\n border-width: 0 1px;\n }\n\n .dijitSliderProgressBar {\n background-color: red;\n z-index: 1;\n }\n\n .dijitSliderProgressBarV {\n position: static !important;\n height: 0;\n vertical-align: top;\n text-align: left;\n }\n\n .dijitSliderProgressBarH {\n position: absolute !important;\n width: 0;\n vertical-align: middle;\n overflow: visible;\n }\n\n .dijitSliderRemainingBar {\n overflow: hidden;\n background-color: transparent;\n z-index: 1;\n }\n\n .dijitSliderRemainingBarV {\n height: 100%;\n text-align: left;\n }\n\n .dijitSliderRemainingBarH {\n width: 100% !important;\n }\n\n /* the slider bumper is the space consumed by the slider handle when it hangs over an edge */\n .dijitSliderBumper {\n overflow: hidden;\n z-index: 1;\n }\n\n .dijitSliderBumperV {\n width: 4px;\n height: 8px;\n border-width: 0 1px;\n }\n\n .dijitSliderBumperH {\n width: 8px;\n height: 4px;\n border-width: 1px 0;\n }\n\n .dijitSliderBottomBumper,\n .dijitSliderLeftBumper {\n background-color: red;\n }\n\n .dijitSliderTopBumper,\n .dijitSliderRightBumper {\n background-color: transparent;\n }\n\n .dijitSliderDecoration {\n text-align: center;\n }\n\n .dijitSliderDecorationC,\n .dijitSliderDecorationV {\n position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */\n }\n\n .dijitSliderDecorationH {\n width: 100%;\n }\n\n .dijitSliderDecorationV {\n height: 100%;\n white-space: nowrap;\n }\n\n .dijitSliderButton {\n font-family: monospace;\n margin: 0;\n padding: 0;\n display: block;\n }\n\n .dj_a11y .dijitSliderButtonInner {\n visibility: visible !important;\n }\n\n .dijitSliderButtonContainer {\n text-align: center;\n height: 0; /* ??? */\n }\n .dijitSliderButtonContainer * {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitSlider .dijitButtonNode {\n padding: 0;\n display: block;\n }\n\n .dijitRuleContainer {\n position: relative;\n overflow: visible;\n }\n\n .dijitRuleContainerV {\n height: 100%;\n line-height: 0;\n float: left;\n text-align: left;\n }\n\n .dj_opera .dijitRuleContainerV {\n line-height: 2%;\n }\n\n .dj_ie .dijitRuleContainerV {\n line-height: normal;\n }\n\n .dj_gecko .dijitRuleContainerV {\n margin: 0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */\n }\n\n .dijitRuleMark {\n position: absolute;\n border: 1px solid black;\n line-height: 0;\n height: 100%;\n }\n\n .dijitRuleMarkH {\n width: 0;\n border-top-width: 0 !important;\n border-bottom-width: 0 !important;\n border-left-width: 0 !important;\n }\n\n .dijitRuleLabelContainer {\n position: absolute;\n }\n\n .dijitRuleLabelContainerH {\n text-align: center;\n display: inline-block;\n }\n\n .dijitRuleLabelH {\n position: relative;\n left: -50%;\n }\n\n .dijitRuleLabelV {\n /* so that long labels don't overflow to multiple rows, or overwrite slider itself */\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .dijitRuleMarkV {\n height: 0;\n border-right-width: 0 !important;\n border-bottom-width: 0 !important;\n border-left-width: 0 !important;\n width: 100%;\n left: 0;\n }\n\n .dj_ie .dijitRuleLabelContainerV {\n margin-top: -0.55em;\n }\n\n .dj_a11y .dijitSliderReadOnly,\n .dj_a11y .dijitSliderDisabled {\n opacity: 0.6;\n }\n .dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,\n .dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {\n filter: alpha(opacity=40);\n }\n\n /* + and - Slider buttons: override theme settings to display icons */\n .dj_a11y .dijitSlider .dijitSliderButtonContainer div {\n font-family: monospace; /* otherwise hyphen is larger and more vertically centered */\n font-size: 1em;\n line-height: 1em;\n height: auto;\n width: auto;\n margin: 0 4px;\n }\n\n /* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */\n .dj_a11y .dijitButtonContents .dijitButtonText,\n .dj_a11y .dijitTab .tabLabel {\n display: inline !important;\n }\n .dj_a11y .dijitSelect .dijitButtonText {\n display: inline-block !important;\n }\n\n /* TextArea, SimpleTextArea */\n .dijitTextArea {\n width: 100%;\n overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */\n }\n .dijitTextArea[cols] {\n width: auto; /* SimpleTextArea cols */\n }\n .dj_ie .dijitTextAreaCols {\n width: auto;\n }\n\n .dijitExpandingTextArea {\n /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */\n resize: none;\n }\n\n /* Toolbar\n * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file.\n */\n\n .dijitToolbarSeparator {\n height: 18px;\n width: 5px;\n padding: 0 1px;\n margin: 0;\n }\n\n /* Editor */\n .dijitIEFixedToolbar {\n position: absolute;\n /* top:0; */\n top: expression(eval((document.documentElement||document.body) .scrollTop));\n }\n\n .dijitEditor {\n display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */\n }\n\n .dijitEditorDisabled,\n .dijitEditorReadOnly {\n color: gray;\n }\n\n /* TimePicker */\n\n .dijitTimePicker {\n background-color: white;\n }\n .dijitTimePickerItem {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitTimePickerItemHover {\n background-color: gray;\n color: white;\n }\n .dijitTimePickerItemSelected {\n font-weight: bold;\n color: #333;\n background-color: #b7cdee;\n }\n .dijitTimePickerItemDisabled {\n color: gray;\n text-decoration: line-through;\n }\n\n .dijitTimePickerItemInner {\n text-align: center;\n border: 0;\n padding: 2px 8px 2px 8px;\n }\n\n .dijitTimePickerTick,\n .dijitTimePickerMarker {\n border-bottom: 1px solid gray;\n }\n\n .dijitTimePicker .dijitDownArrowButton {\n border-top: none !important;\n }\n\n .dijitTimePickerTick {\n color: #ccc;\n }\n\n .dijitTimePickerMarker {\n color: black;\n background-color: #ccc;\n }\n\n .dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {\n border: solid 4px black;\n }\n .dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {\n border: dashed 4px black;\n }\n\n .dijitToggleButtonIconChar {\n /* character (instead of icon) to show that ToggleButton is checked */\n display: none !important;\n }\n .dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {\n display: inline !important;\n visibility: hidden;\n }\n .dj_ie6 .dijitToggleButtonIconChar,\n .dj_ie6 .tabStripButton .dijitButtonText {\n font-family: \"Arial Unicode MS\"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */\n }\n .dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {\n display: inline !important; /* In high contrast mode, display the check symbol */\n visibility: visible !important;\n }\n\n .dijitArrowButtonChar {\n display: none !important;\n }\n .dj_a11y .dijitArrowButtonChar {\n display: inline !important;\n }\n\n .dj_a11y .dijitDropDownButton .dijitArrowButtonInner,\n .dj_a11y .dijitComboButton .dijitArrowButtonInner {\n display: none !important;\n }\n\n /* Select */\n .dj_a11y .dijitSelect {\n border-collapse: separate !important;\n border-width: 1px;\n border-style: solid;\n }\n .dj_ie .dijitSelect {\n vertical-align: middle; /* Set this back for what we hack in dijit inline */\n }\n .dj_ie6 .dijitSelect .dijitValidationContainer,\n .dj_ie8 .dijitSelect .dijitButtonText {\n vertical-align: top;\n }\n .dj_ie6 .dijitTextBox .dijitInputContainer,\n .dj_iequirks .dijitTextBox .dijitInputContainer,\n .dj_ie6 .dijitTextBox .dijitArrowButtonInner,\n .dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,\n .dijitSelect .dijitSelectLabel {\n vertical-align: baseline;\n }\n\n .dijitNumberTextBox {\n text-align: left;\n direction: ltr;\n }\n\n .dijitNumberTextBox .dijitInputInner {\n text-align: inherit; /* input */\n }\n\n .dijitNumberTextBox input.dijitInputInner,\n .dijitCurrencyTextBox input.dijitInputInner,\n .dijitSpinner input.dijitInputInner {\n text-align: right;\n }\n\n .dj_ie8 .dijitNumberTextBox input.dijitInputInner,\n .dj_ie9 .dijitNumberTextBox input.dijitInputInner,\n .dj_ie8 .dijitCurrencyTextBox input.dijitInputInner,\n .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,\n .dj_ie8 .dijitSpinner input.dijitInputInner,\n .dj_ie9 .dijitSpinner input.dijitInputInner {\n /* workaround bug where caret invisible in empty textboxes */\n padding-right: 1px !important;\n }\n\n .dijitToolbar .dijitSelect {\n margin: 0;\n }\n .dj_webkit .dijitToolbar .dijitSelect {\n padding-left: 0.3em;\n }\n .dijitSelect .dijitButtonContents {\n padding: 0;\n white-space: nowrap;\n text-align: left;\n border-style: none solid none none;\n border-width: 1px;\n }\n .dijitSelectFixedWidth .dijitButtonContents {\n width: 100%;\n }\n\n .dijitSelectMenu .dijitMenuItemIcon {\n /* avoid blank area in left side of menu (since we have no icons) */\n display: none;\n }\n .dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,\n .dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {\n /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */\n position: static;\n }\n\n /* Fix the baseline of our label (for multi-size font elements) */\n .dijitSelectLabel * {\n vertical-align: baseline;\n }\n\n /* Styling for the currently-selected option (rich text can mess this up) */\n .dijitSelectSelectedOption * {\n font-weight: bold;\n }\n\n /* Fix the styling of the dropdown menu to be more combobox-like */\n .dijitSelectMenu {\n border-width: 1px;\n }\n\n /* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */\n .dijitForceStatic {\n position: static !important;\n }\n\n /**** Disabled cursor *****/\n .dijitReadOnly *,\n .dijitDisabled *,\n .dijitReadOnly,\n .dijitDisabled {\n /* a region the user would be able to click on, but it's disabled */\n cursor: default;\n }\n\n /* Drag and Drop */\n .dojoDndItem {\n padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */\n\n /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */\n -webkit-touch-callout: none;\n -webkit-user-select: none; /* Disable selection/Copy of UIWebView */\n }\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline-block;\n }\n\n .dojoDndItemBefore,\n .dojoDndItemAfter {\n border: 0px solid #369;\n }\n .dojoDndItemBefore {\n border-width: 2px 0 0 0;\n padding: 0 2px 2px 2px;\n }\n .dojoDndItemAfter {\n border-width: 0 0 2px 0;\n padding: 2px 2px 0 2px;\n }\n .dojoDndHorizontal .dojoDndItemBefore {\n border-width: 0 0 0 2px;\n padding: 2px 2px 2px 0;\n }\n .dojoDndHorizontal .dojoDndItemAfter {\n border-width: 0 2px 0 0;\n padding: 2px 0 2px 2px;\n }\n\n .dojoDndItemOver {\n cursor: pointer;\n }\n .dj_gecko .dijitArrowButtonInner input,\n .dj_gecko input.dijitArrowButtonInner {\n -moz-user-focus: ignore;\n }\n .dijitFocused .dijitMenuItemShortcutKey {\n text-decoration: underline;\n }\n\n /* Dijit custom styling */\n .dijitBorderContainer {\n height: 350px;\n }\n .dijitTooltipContainer {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 6px;\n }\n .dijitContentPane {\n box-sizing: content-box;\n overflow: auto !important;\n /* Widgets like the data grid pass their scroll\n offset to the parent if there is not enough room to display a scroll bar\n in the widget itself, so do not hide the overflow. */\n }\n\n /* Global Bootstrap changes */\n\n /* Client defaults and helpers */\n .mx-dataview-content,\n .mx-tabcontainer-content,\n .mx-grid-content {\n -webkit-overflow-scrolling: touch;\n }\n html,\n body,\n #content,\n #root {\n height: 100%;\n }\n #content > .mx-page,\n #root > .mx-page {\n width: 100%;\n min-height: 100%;\n }\n\n .mx-left-aligned {\n text-align: left;\n }\n .mx-right-aligned {\n text-align: right;\n }\n .mx-center-aligned {\n text-align: center;\n }\n\n .mx-table {\n width: 100%;\n }\n .mx-table th,\n .mx-table td {\n padding: 8px;\n vertical-align: top;\n }\n .mx-table th.nopadding,\n .mx-table td.nopadding {\n padding: 0;\n }\n\n .mx-offscreen {\n /* When position relative is not set IE doesn't properly render when this class is removed\n * with the effect that elements are not displayed or are not clickable.\n */\n position: relative;\n height: 0;\n overflow: hidden;\n }\n\n .mx-ie-event-shield {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n }\n\n .mx-swipe-navigation-progress {\n position: absolute;\n height: 54px;\n width: 54px;\n top: calc(50% - 27px);\n left: calc(50% - 27px);\n background: url(resources/swipe-progress.gif);\n }\n\n /* Bacause we use checkboxes without labels, align them with other widgets. */\n input[type=\"checkbox\"] {\n margin: 9px 0;\n }\n\n .mx-checkbox input[type=\"checkbox\"] {\n margin-left: 0;\n margin-right: 8px;\n position: static;\n }\n\n .form-vertical .form-group.mx-checkbox input[type=\"checkbox\"] {\n display: block;\n }\n\n .form-vertical .form-group.mx-checkbox.label-after input[type=\"checkbox\"] {\n display: inline-block;\n }\n\n .form-horizontal .form-group.no-columns {\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .mx-radiobuttons.inline .radio {\n display: inline-block;\n margin-right: 20px;\n }\n\n .mx-radiobuttons .radio input[type=\"radio\"] {\n /* Reset bootstrap rules */\n position: static;\n margin-right: 8px;\n margin-left: 0;\n }\n\n .mx-radiobuttons .radio label {\n /* Reset bootstrap rules */\n padding-left: 0;\n }\n\n .alert {\n margin-top: 8px;\n margin-bottom: 10px;\n white-space: pre-line;\n }\n\n //.mx-compound-control {\n // display: flex;\n //}\n\n //.mx-compound-control button {\n // margin-left: 5px;\n //}\n //\n //[dir=\"rtl\"] .mx-compound-control button {\n // margin-left: 0;\n // margin-right: 5px;\n //}\n\n .mx-tooltip {\n margin: 10px;\n }\n .mx-tooltip-content {\n width: 400px;\n overflow-y: auto;\n }\n .mx-tooltip-prepare {\n height: 24px;\n padding: 8px;\n background: transparent url(resources/ttp.gif) no-repeat scroll center center;\n }\n .mx-tooltip-content .table th,\n .mx-tooltip-content .table td {\n padding: 2px 8px;\n }\n\n .mx-tabcontainer-pane {\n height: 100%;\n }\n .mx-tabcontainer-content.loading {\n min-height: 48px;\n background: url(resources/tabcontainer-loading.gif) no-repeat center center;\n background-size: 32px 32px;\n }\n .mx-tabcontainer-tabs {\n margin-bottom: 8px;\n }\n .mx-tabcontainer-tabs li {\n position: relative;\n }\n .mx-tabcontainer-indicator {\n position: absolute;\n background: #f2dede;\n border-radius: 8px;\n color: #b94a48;\n top: 0px;\n right: -5px;\n width: 16px;\n height: 16px;\n line-height: 16px;\n text-align: center;\n vertical-align: middle;\n font-size: 10px;\n font-weight: 600;\n z-index: 1; /* indicator should not hide behind other tab */\n }\n\n /* base structure */\n .mx-grid {\n padding: 8px;\n overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */\n }\n .mx-grid-controlbar,\n .mx-grid-searchbar {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n }\n .mx-grid-controlbar .mx-button,\n .mx-grid-search-controls .mx-button {\n margin-bottom: 8px;\n }\n\n .mx-grid-search-controls .mx-button + .mx-button,\n .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0.3em;\n }\n\n [dir=\"rtl\"] .mx-grid-search-controls .mx-button + .mx-button,\n [dir=\"rtl\"] .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0;\n margin-right: 0.3em;\n }\n\n .mx-grid-pagingbar,\n .mx-grid-search-controls {\n display: flex;\n white-space: nowrap;\n align-items: baseline;\n margin-left: auto;\n }\n\n .mx-grid-toolbar,\n .mx-grid-search-inputs {\n margin-right: 5px;\n flex: 1;\n }\n\n [dir=\"rtl\"] .mx-grid-toolbar,\n [dir=\"rtl\"] .mx-grid-search-inputs {\n margin-left: 5px;\n margin-right: 0px;\n }\n [dir=\"rtl\"] .mx-grid-pagingbar,\n [dir=\"rtl\"] .mx-grid-search-controls {\n margin-left: 0px;\n margin-right: auto;\n }\n\n .mx-grid-paging-status {\n padding: 0 8px 5px;\n }\n\n /* search fields */\n .mx-grid-search-item {\n display: inline-block;\n vertical-align: top;\n margin-bottom: 8px;\n }\n .mx-grid-search-label {\n width: 110px;\n padding: 0 5px;\n text-align: right;\n display: inline-block;\n vertical-align: top;\n overflow: hidden;\n }\n [dir=\"rtl\"] .mx-grid-search-label {\n text-align: left;\n }\n .mx-grid-search-input {\n width: 150px;\n padding: 0 5px;\n display: inline-block;\n vertical-align: top;\n }\n .mx-grid-search-message {\n flex-basis: 100%;\n }\n\n /* widget combinations */\n .mx-dataview .mx-grid {\n border: 1px solid #ddd;\n border-radius: 3px;\n }\n\n .mx-calendar {\n z-index: 1000;\n }\n\n .mx-calendar-month-dropdown-options {\n position: absolute;\n }\n\n .mx-calendar,\n .mx-calendar-month-dropdown {\n user-select: none;\n }\n\n .mx-calendar-month-current {\n display: inline-block;\n }\n\n .mx-calendar-month-spacer {\n position: relative;\n height: 0px;\n overflow: hidden;\n visibility: hidden;\n }\n\n .mx-calendar,\n .mx-calendar-month-dropdown-options {\n border: 1px solid lightgrey;\n background-color: white;\n }\n\n .mx-datagrid tr {\n cursor: pointer;\n }\n\n .mx-datagrid tr.mx-datagrid-row-empty {\n cursor: default;\n }\n\n .mx-datagrid table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n }\n\n .mx-datagrid th,\n .mx-datagrid td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n }\n\n /* head */\n .mx-datagrid th {\n position: relative; /* Required for the positioning of the column resizers */\n border-bottom-width: 2px;\n }\n .mx-datagrid-head-caption {\n overflow: hidden;\n white-space: nowrap;\n }\n .mx-datagrid-sort-icon {\n float: right;\n padding-left: 5px;\n }\n [dir=\"rtl\"] .mx-datagrid-sort-icon {\n float: left;\n padding: 0 5px 0 0;\n }\n .mx-datagrid-column-resizer {\n position: absolute;\n top: 0;\n left: -6px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n }\n [dir=\"rtl\"] .mx-datagrid-column-resizer {\n left: auto;\n right: -6px;\n }\n\n /* body */\n .mx-datagrid tbody tr:first-child td {\n border-top: none;\n }\n //.mx-datagrid tbody tr:nth-child(2n+1) td {\n // background-color: #f9f9f9;\n //}\n .mx-datagrid tbody .selected td {\n background-color: #eee;\n }\n .mx-datagrid-data-wrapper {\n overflow: hidden;\n white-space: nowrap;\n }\n .mx-datagrid tbody img {\n max-width: 16px;\n max-height: 16px;\n }\n .mx-datagrid input,\n .mx-datagrid select,\n .mx-datagrid textarea {\n cursor: auto;\n }\n\n /* foot */\n .mx-datagrid tfoot th,\n .mx-datagrid tfoot td {\n padding: 3px 8px;\n }\n .mx-datagrid tfoot th {\n border-top: 1px solid #ddd;\n }\n .mx-datagrid.mx-content-loading .mx-content-loader {\n display: inline-block;\n width: 90%;\n animation: placeholderGradient 1s linear infinite;\n border-radius: 4px;\n background: #f5f5f5;\n background: repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #f9f9f9 50%, #f5f5f5 95%, #f5f5f5 100%);\n background-size: 200px 100px;\n animation-fill-mode: both;\n }\n @keyframes placeholderGradient {\n 0% {\n background-position: 100px 0;\n }\n 100% {\n background-position: -100px 0;\n }\n }\n\n .mx-datagrid-table-resizing th,\n .mx-datagrid-table-resizing td {\n cursor: col-resize !important;\n }\n\n .mx-templategrid-content-wrapper {\n display: table;\n width: 100%;\n border-collapse: collapse;\n box-sizing: border-box;\n }\n .mx-templategrid-row {\n display: table-row;\n }\n .mx-templategrid-item {\n padding: 5px;\n display: table-cell;\n border: 1px solid #ddd;\n cursor: pointer;\n box-sizing: border-box;\n }\n .mx-templategrid-empty {\n display: table-cell;\n }\n .mx-templategrid-item.selected {\n background-color: #f5f5f5;\n }\n .mx-templategrid-item .mx-table th,\n .mx-templategrid-item .mx-table td {\n padding: 2px 8px;\n }\n\n .mx-navbar-item img,\n .mx-navbar-subitem img {\n height: 16px;\n }\n\n .mx-navigationtree .navbar-inner {\n padding-left: 0;\n padding-right: 0;\n }\n .mx-navigationtree ul {\n list-style: none;\n }\n //.mx-navigationtree ul li {\n // border-bottom: 1px solid #dfe6ea;\n //}\n //.mx-navigationtree li:last-child {\n // border-style: none;\n //}\n .mx-navigationtree a {\n display: block;\n padding: 5px 10px;\n color: #777;\n text-shadow: 0 1px 0 #fff;\n text-decoration: none;\n }\n .mx-navigationtree a.active {\n color: #fff;\n text-shadow: none;\n background: #3498db;\n border-radius: 3px;\n }\n .mx-navigationtree .mx-navigationtree-collapsed ul {\n display: none;\n }\n .mx-navigationtree ul {\n margin: 0;\n padding: 0;\n }\n //.mx-navigationtree ul li {\n // padding: 5px 0;\n //}\n .mx-navigationtree ul li ul {\n padding: 0;\n margin-left: 10px;\n }\n .mx-navigationtree ul li ul li {\n margin-left: 8px;\n padding: 5px 0;\n }\n [dir=\"rtl\"] .mx-navigationtree ul li ul li {\n margin-left: auto;\n margin-right: 8px;\n }\n .mx-navigationtree ul li ul li ul li {\n font-size: 10px;\n padding-top: 3px;\n padding-bottom: 3px;\n }\n .mx-navigationtree ul li ul li ul li img {\n vertical-align: top;\n }\n\n .mx-link img,\n .mx-button img {\n height: 16px;\n }\n .mx-link {\n padding: 6px 12px;\n display: inline-block;\n cursor: pointer;\n }\n\n .mx-groupbox {\n margin-bottom: 10px;\n }\n .mx-groupbox-header {\n margin: 0;\n padding: 10px 15px;\n color: #eee;\n background: #333;\n font-size: inherit;\n line-height: inherit;\n border-radius: 4px 4px 0 0;\n }\n .mx-groupbox-collapsible > .mx-groupbox-header {\n cursor: pointer;\n }\n .mx-groupbox.collapsed > .mx-groupbox-header {\n border-radius: 4px;\n }\n .mx-groupbox-body {\n padding: 8px;\n border: 1px solid #ddd;\n border-radius: 4px;\n }\n .mx-groupbox.collapsed > .mx-groupbox-body {\n display: none;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n border-radius: 0 0 4px 4px;\n }\n .mx-groupbox-collapse-icon {\n float: right;\n }\n [dir=\"rtl\"] .mx-groupbox-collapse-icon {\n float: left;\n }\n\n .mx-dataview {\n position: relative;\n }\n .mx-dataview-controls {\n padding: 19px 20px 12px;\n background-color: #f5f5f5;\n border-top: 1px solid #eee;\n }\n\n .mx-dataview-controls .mx-button {\n margin-bottom: 8px;\n }\n\n .mx-dataview-controls .mx-button + .mx-button {\n margin-left: 0.3em;\n }\n\n .mx-dataview-message {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n .mx-dataview-message > div {\n display: table;\n width: 100%;\n height: 100%;\n }\n .mx-dataview-message > div > p {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n }\n\n /* Top-level data view in window is a special case, handle it as such. */\n .mx-window-view .mx-window-body {\n padding: 0;\n }\n .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content,\n .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 15px;\n }\n .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls,\n .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n border-radius: 0px 0px 6px 6px;\n }\n\n .mx-dialog {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 500px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n }\n .mx-dialog-header {\n cursor: move;\n }\n .mx-dialog-body {\n overflow: auto;\n }\n\n .mx-window {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 600px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n }\n .mx-window-content {\n height: 100%;\n overflow: hidden;\n }\n .mx-window-active .mx-window-header {\n background-color: #f5f5f5;\n border-radius: 6px 6px 0 0;\n }\n .mx-window-header {\n cursor: move;\n }\n .mx-window-body {\n overflow: auto;\n }\n\n .mx-dropdown-list * {\n cursor: pointer;\n }\n .mx-dropdown-list img {\n width: 35px;\n vertical-align: middle;\n margin-right: 10px;\n }\n [dir=\"rtl\"] .mx-dropdown-list img {\n margin-left: 10px;\n margin-right: auto;\n }\n\n .mx-dropdown-list {\n padding: 0;\n list-style: none;\n }\n .mx-dropdown-list > li {\n padding: 5px 10px 10px;\n border: 1px #ddd;\n border-style: solid solid none;\n background-color: #fff;\n }\n .mx-dropdown-list > li:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n .mx-dropdown-list > li:last-child {\n border-bottom-style: solid;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n .mx-dropdown-list-striped > li:nth-child(2n + 1) {\n background: #f9f9f9;\n }\n .mx-dropdown-list > li:hover {\n background: #f5f5f5;\n }\n\n .mx-header {\n position: relative;\n padding: 9px;\n background: #333;\n text-align: center;\n }\n .mx-header-center {\n display: inline-block;\n color: #eee;\n line-height: 30px; /* height of buttons */\n }\n body[dir=\"ltr\"] .mx-header-left,\n body[dir=\"rtl\"] .mx-header-right {\n position: absolute;\n top: 9px;\n left: 9px;\n }\n body[dir=\"ltr\"] .mx-header-right,\n body[dir=\"rtl\"] .mx-header-left {\n position: absolute;\n top: 9px;\n right: 9px;\n }\n\n .mx-title {\n margin-bottom: 0px;\n margin-top: 0px;\n }\n\n .mx-listview {\n padding: 8px;\n }\n .mx-listview > ul {\n padding: 0px;\n list-style: none;\n }\n // .mx-listview > ul > li {\n // padding: 5px 10px 10px;\n // border: 1px #ddd;\n // border-style: solid solid none;\n // background-color: #fff;\n // outline: none;\n // }\n // .mx-listview > ul > li:first-child {\n // border-top-left-radius: 4px;\n // border-top-right-radius: 4px;\n // }\n // .mx-listview > ul > li:last-child {\n // border-bottom-style: solid;\n // border-bottom-left-radius: 4px;\n // border-bottom-right-radius: 4px;\n // }\n //.mx-listview li:nth-child(2n+1) {\n // background: #f9f9f9;\n //}\n //.mx-listview li:nth-child(2n+1):hover {\n // background: #f5f5f5;\n //}\n .mx-listview > ul > li.selected {\n // background: #eee;\n }\n .mx-listview-clickable > ul > li {\n cursor: pointer;\n }\n .mx-listview-empty {\n color: #999;\n text-align: center;\n }\n .mx-listview .mx-listview-loading {\n padding: 10px;\n line-height: 0;\n text-align: center;\n }\n .mx-listview-searchbar {\n display: flex;\n margin-bottom: 10px;\n }\n .mx-listview-searchbar > input {\n width: 100%;\n }\n .mx-listview-searchbar > button {\n margin-left: 5px;\n }\n [dir=\"rtl\"] .mx-listview-searchbar > button {\n margin-left: 0;\n margin-right: 5px;\n }\n .mx-listview-selection {\n display: table-cell;\n vertical-align: middle;\n padding: 0 15px 0 5px;\n }\n [dir=\"rtl\"] .mx-listview-selection {\n padding: 0 5px 0 15px;\n }\n .mx-listview-selectable .mx-listview-content {\n display: table-cell;\n vertical-align: middle;\n width: 100%;\n }\n .mx-listview .selected {\n background: #def;\n }\n .mx-listview .mx-table th,\n .mx-listview .mx-table td {\n padding: 2px;\n }\n\n .mx-login .form-control {\n margin-top: 10px;\n }\n\n .mx-menubar {\n padding: 8px;\n }\n .mx-menubar-icon {\n height: 16px;\n }\n .mx-menubar-more-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background: url(resources/menubar-more-icon.png) no-repeat center center;\n background-size: 16px 16px;\n vertical-align: middle;\n }\n\n .mx-navigationlist {\n padding: 8px;\n }\n .mx-navigationlist li:hover,\n .mx-navigationlist li:focus,\n .mx-navigationlist li.active {\n color: #fff;\n background-color: #3498db;\n }\n .mx-navigationlist * {\n cursor: pointer;\n }\n .mx-navigationlist .table th,\n .mx-navigationlist .table td {\n padding: 2px;\n }\n\n .mx-progress {\n position: fixed;\n top: 30%;\n left: 0;\n right: 0;\n margin: auto;\n width: 250px;\n max-width: 90%;\n background: #333;\n opacity: 0.8;\n z-index: 5000;\n border-radius: 4px;\n padding: 20px 15px;\n transition: opacity 0.4s ease-in-out;\n }\n .mx-progress-hidden {\n opacity: 0;\n }\n .mx-progress-message {\n color: #fff;\n text-align: center;\n margin-bottom: 15px;\n }\n .mx-progress-empty .mx-progress-message {\n display: none;\n }\n .mx-progress-indicator {\n width: 70px;\n height: 10px;\n margin: auto;\n background: url(resources/progress-indicator.gif);\n }\n\n .mx-reload-notification {\n position: fixed;\n z-index: 1001;\n top: 0;\n width: 100%;\n padding: 1rem;\n\n border: 1px solid hsl(200, 96%, 41%);\n background-color: hsl(200, 96%, 44%);\n\n box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16);\n color: white;\n\n text-align: center;\n font-size: 14px;\n }\n\n .mx-resizer-n,\n .mx-resizer-s {\n position: absolute;\n left: 0;\n width: 100%;\n height: 10px;\n }\n .mx-resizer-n {\n top: -5px;\n cursor: n-resize;\n }\n .mx-resizer-s {\n bottom: -5px;\n cursor: s-resize;\n }\n\n .mx-resizer-e,\n .mx-resizer-w {\n position: absolute;\n top: 0;\n width: 10px;\n height: 100%;\n }\n .mx-resizer-e {\n right: -5px;\n cursor: e-resize;\n }\n .mx-resizer-w {\n left: -5px;\n cursor: w-resize;\n }\n\n .mx-resizer-nw,\n .mx-resizer-ne,\n .mx-resizer-sw,\n .mx-resizer-se {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .mx-resizer-nw,\n .mx-resizer-ne {\n top: -5px;\n }\n .mx-resizer-sw,\n .mx-resizer-se {\n bottom: -5px;\n }\n .mx-resizer-nw,\n .mx-resizer-sw {\n left: -5px;\n }\n .mx-resizer-ne,\n .mx-resizer-se {\n right: -5px;\n }\n\n .mx-resizer-nw {\n cursor: nw-resize;\n }\n .mx-resizer-ne {\n cursor: ne-resize;\n }\n .mx-resizer-sw {\n cursor: sw-resize;\n }\n .mx-resizer-se {\n cursor: se-resize;\n }\n\n .mx-text {\n white-space: pre-line;\n }\n\n .mx-textarea textarea {\n resize: none;\n overflow-y: hidden;\n }\n .mx-textarea .mx-textarea-noresize {\n height: auto;\n resize: vertical;\n overflow-y: auto;\n }\n .mx-textarea .mx-textarea-counter {\n font-size: smaller;\n }\n .mx-textarea .form-control-static {\n white-space: pre-line;\n }\n\n .mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #333;\n }\n\n .mx-imagezoom {\n position: absolute;\n display: table;\n width: 100%;\n height: 100%;\n background-color: #999;\n }\n .mx-imagezoom-wrapper {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n }\n .mx-imagezoom-image {\n max-width: none;\n }\n\n .mx-dropdown li {\n padding: 3px 20px;\n cursor: pointer;\n }\n .mx-dropdown label {\n padding: 0;\n color: #333;\n white-space: nowrap;\n cursor: pointer;\n }\n .mx-dropdown input {\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n }\n .mx-dropdown .selected {\n background: #f8f8f8;\n }\n //.mx-selectbox {\n // text-align: left;\n //}\n //.mx-selectbox-caret-wrapper {\n // float: right;\n // height: 100%;\n //}\n\n .mx-demouserswitcher {\n position: fixed;\n top: 0;\n right: 0;\n width: 360px;\n height: 100%;\n z-index: 20000;\n box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);\n }\n .mx-demouserswitcher-content {\n padding: 80px 40px 20px;\n height: 100%;\n color: #387ea2;\n font-size: 14px;\n overflow: auto;\n background: url(resources/switcher.png) top right no-repeat #1b3149;\n /* background-attachement local is not supported on IE8\n * when this is part of background the complete background is ignored */\n background-attachment: local;\n }\n .mx-demouserswitcher ul {\n padding: 0;\n margin-top: 25px;\n list-style-type: none;\n border-top: 1px solid #496076;\n }\n .mx-demouserswitcher a {\n display: block;\n padding: 10px 0;\n color: #387ea2;\n border-bottom: 1px solid #496076;\n }\n .mx-demouserswitcher h2 {\n margin: 20px 0 5px;\n color: #5bc4fe;\n font-size: 28px;\n }\n .mx-demouserswitcher h3 {\n margin: 0 0 2px;\n color: #5bc4fe;\n font-size: 18px;\n font-weight: normal;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .mx-demouserswitcher .active h3 {\n color: #11efdb;\n }\n .mx-demouserswitcher p {\n margin-bottom: 0;\n }\n .mx-demouserswitcher-toggle {\n position: absolute;\n top: 25%;\n left: -35px;\n width: 35px;\n height: 38px;\n margin-top: -40px;\n cursor: pointer;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);\n background: url(resources/switcher-toggle.png) center center no-repeat #1b3149;\n }\n\n /* master details screen for mobile */\n .mx-master-detail-screen {\n top: 0;\n left: 0;\n overflow: auto;\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: white;\n will-change: transform;\n }\n\n .mx-master-detail-screen .mx-master-detail-details {\n padding: 15px;\n }\n\n .mx-master-detail-screen-header {\n position: relative;\n overflow: auto;\n border-bottom: 1px solid #ccc;\n background-color: #f7f7f7;\n }\n\n .mx-master-detail-screen-header-caption {\n text-align: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 600;\n }\n\n .mx-master-detail-screen-header-close {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 50px;\n border: none;\n background: transparent;\n color: #007aff;\n }\n\n body[dir=\"rtl\"] .mx-master-detail-screen-header-close {\n right: 0;\n left: auto;\n }\n\n .mx-master-detail-screen-header-close::before {\n content: \"\\2039\";\n font-size: 52px;\n line-height: 24px;\n }\n\n /* classes for content page */\n .mx-master-detail-content-fix {\n height: 100vh;\n overflow: hidden;\n }\n\n .mx-master-detail-content-hidden {\n transform: translateX(-200%);\n }\n\n body[dir=\"rtl\"] .mx-master-detail-content-hidden {\n transform: translateX(200%);\n }\n .reportingReport {\n padding: 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n }\n\n .reportingReportParameter th {\n text-align: right;\n }\n\n .reportingDateRange table {\n width: 100%;\n table-layout: fixed;\n }\n .reportingDateRange th {\n padding: 5px;\n text-align: right;\n background-color: #eee;\n }\n .reportingDateRange td {\n padding: 5px;\n }\n\n .mx-reportmatrix table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n }\n\n .mx-reportmatrix th,\n .mx-reportmatrix td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n }\n\n .mx-reportmatrix tbody tr:first-child td {\n border-top: none;\n }\n\n .mx-reportmatrix tbody tr:nth-child(2n + 1) td {\n background-color: #f9f9f9;\n }\n\n .mx-reportmatrix tbody img {\n max-width: 16px;\n max-height: 16px;\n }\n\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .dijitInline {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display: inline; /* don't use .dj_ie since that increases the priority */\n vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n zoom: 1;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n display: inline; /* IE7 sizes to outer size w/o this */\n }\n\n .dijitButtonNode {\n vertical-align: auto;\n }\n\n .dijitTextBox {\n overflow: hidden; /* #6027, #6067 */\n }\n\n .dijitPlaceHolder {\n filter: \"\"; /* make this show up in IE6 after the rendering of the widget */\n }\n\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n text-indent: 0 !important;\n letter-spacing: -5em !important;\n text-align: right !important;\n }\n\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n text-align: left !important;\n }\n\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display: inline; /* don't use .dj_ie since that increases the priority */\n }\n\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline;\n }\n }\n}\n\n/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */\n\n/* dijit base */\n\n/* mendix base */\n\n/* widgets */\n\n/* reporting */\n\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@mixin animations() {\n @keyframes slideInUp {\n from {\n visibility: visible;\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n }\n\n .animated {\n animation-duration: 0.4s;\n animation-fill-mode: both;\n }\n\n .slideInUp {\n animation-name: slideInUp;\n }\n\n @keyframes slideInDown {\n from {\n visibility: visible;\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n }\n\n .slideInDown {\n animation-name: slideInDown;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .fadeIn {\n animation-name: fadeIn;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Flex\n\n Flex classes\n========================================================================== */\n@mixin flex() {\n $important-flex-value: if($important-flex, \" !important\", \"\");\n\n // Flex layout\n .flexcontainer {\n display: flex;\n overflow: hidden;\n flex: 1;\n flex-direction: row;\n\n .flexitem {\n margin-right: $gutter-size;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .flexitem-main {\n overflow: hidden;\n flex: 1;\n }\n }\n\n // These classes define the order of the children\n .flex-row {\n flex-direction: row #{$important-flex-value};\n }\n\n .flex-column {\n flex-direction: column #{$important-flex-value};\n }\n\n .flex-row-reverse {\n flex-direction: row-reverse #{$important-flex-value};\n }\n\n .flex-column-reverse {\n flex-direction: column-reverse #{$important-flex-value};\n }\n\n .flex-wrap {\n flex-wrap: wrap #{$important-flex-value};\n }\n\n .flex-nowrap {\n flex-wrap: nowrap #{$important-flex-value};\n }\n\n .flex-wrap-reverse {\n flex-wrap: wrap-reverse #{$important-flex-value};\n }\n\n // Align children in both directions\n .flex-center {\n align-items: center #{$important-flex-value};\n justify-content: center #{$important-flex-value};\n }\n\n // These classes define the alignment of the children\n .justify-content-start {\n justify-content: flex-start #{$important-flex-value};\n }\n\n .justify-content-end {\n justify-content: flex-end #{$important-flex-value};\n }\n\n .justify-content-center {\n justify-content: center #{$important-flex-value};\n }\n\n .justify-content-between {\n justify-content: space-between #{$important-flex-value};\n }\n\n .justify-content-around {\n justify-content: space-around #{$important-flex-value};\n }\n\n .justify-content-evenly {\n // Not Supported in IE11\n justify-content: space-evenly #{$important-flex-value};\n }\n\n .justify-content-stretch {\n justify-content: stretch #{$important-flex-value};\n }\n\n /// These classes define the alignment of the children in the cross-direction\n .align-children-start {\n align-items: flex-start #{$important-flex-value};\n }\n\n .align-children-end {\n align-items: flex-end #{$important-flex-value};\n }\n\n .align-children-center {\n align-items: center #{$important-flex-value};\n }\n\n .align-children-baseline {\n align-items: baseline #{$important-flex-value};\n }\n\n .align-children-stretch {\n align-items: stretch #{$important-flex-value};\n }\n\n /// These classes define the alignment of the rows of children in the cross-direction\n .align-content-start {\n align-content: flex-start #{$important-flex-value};\n }\n\n .align-content-end {\n align-content: flex-end #{$important-flex-value};\n }\n\n .align-content-center {\n align-content: center #{$important-flex-value};\n }\n\n .align-content-between {\n align-content: space-between #{$important-flex-value};\n }\n\n .align-content-around {\n align-content: space-around #{$important-flex-value};\n }\n\n .align-content-stretch {\n align-content: stretch #{$important-flex-value};\n }\n\n /// These classes allow the default alignment to be overridden for individual items\n .align-self-auto {\n align-self: auto #{$important-flex-value};\n }\n\n .align-self-start {\n align-self: flex-start #{$important-flex-value};\n }\n\n .align-self-end {\n align-self: flex-end #{$important-flex-value};\n }\n\n .align-self-center {\n align-self: center #{$important-flex-value};\n }\n\n .align-self-baseline {\n align-self: baseline #{$important-flex-value};\n }\n\n .align-self-stretch {\n align-self: stretch #{$important-flex-value};\n }\n\n @include flex-items($number: 12);\n}\n\n/// These classes define the percentage of available free space within a flex container a flex item will take.\n@mixin flex-items($number) {\n @if not $exclude-flex {\n @for $i from 1 through $number {\n .flexitem-#{$i} {\n flex: #{$i} #{$i} 1%;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Spacing\n\n Spacing classes\n========================================================================== */\n@mixin spacing() {\n $important-spacing-value: if($important-spacing, \" !important\", \"\");\n\n // Spacing none\n .spacing-inner-none {\n padding: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-top-none {\n padding-top: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-right-none {\n padding-right: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-bottom-none {\n padding-bottom: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-left-none {\n padding-left: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-none {\n margin: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-top-none {\n margin-top: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-right-none {\n margin-right: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-bottom-none {\n margin-bottom: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-left-none {\n margin-left: 0 #{$important-spacing-value};\n }\n\n // Spacing small\n .spacing-inner {\n padding: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-top {\n padding-top: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-right {\n padding-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-bottom {\n padding-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-left {\n padding-left: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-vertical {\n padding-top: $spacing-small #{$important-spacing-value};\n padding-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-horizontal {\n padding-left: $spacing-small #{$important-spacing-value};\n padding-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer {\n margin: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-top {\n margin-top: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-right {\n margin-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-bottom {\n margin-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-left {\n margin-left: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-vertical {\n margin-top: $spacing-small #{$important-spacing-value};\n margin-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-horizontal {\n margin-left: $spacing-small #{$important-spacing-value};\n margin-right: $spacing-small #{$important-spacing-value};\n }\n\n // Spacing Medium\n .spacing-inner-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-horizontal-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-horizontal-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n // Spacing Large\n .spacing-inner-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-horizontal-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-horizontal-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n // Spacing layouts\n .spacing-inner-layout {\n @include layout-spacing(\n $type: padding,\n $direction: all,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-layout {\n @include layout-spacing(\n $type: padding,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-layout {\n @include layout-spacing(\n $type: padding,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-layout {\n @include layout-spacing(\n $type: padding,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-layout {\n @include layout-spacing(\n $type: padding,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-layout {\n @include layout-spacing(\n $type: padding,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: padding,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n .spacing-inner-horizontal-layout {\n @include layout-spacing(\n $type: padding,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: padding,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-layout {\n @include layout-spacing(\n $type: margin,\n $direction: all,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-layout {\n @include layout-spacing(\n $type: margin,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-layout {\n @include layout-spacing(\n $type: margin,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-layout {\n @include layout-spacing(\n $type: margin,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-layout {\n @include layout-spacing(\n $type: margin,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-layout {\n @include layout-spacing(\n $type: margin,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: margin,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n .spacing-outer-horizontal-layout {\n @include layout-spacing(\n $type: margin,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: margin,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n $dash: \"-\"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-large}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix};\n }\n }\n }\n}\n\n@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n $dash: \"-\"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-medium}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix};\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $device==responsive {\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$layout-spacing}#{$suffix};\n }\n } @else if $direction==top {\n @media (max-width: $screen-sm-max) {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-top: #{$layout-spacing-top}#{$suffix};\n }\n } @else if $direction==right {\n @media (max-width: $screen-sm-max) {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-right: #{$layout-spacing-right}#{$suffix};\n }\n } @else if $direction==bottom {\n @media (max-width: $screen-sm-max) {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix};\n }\n } @else if $direction==left {\n @media (max-width: $screen-sm-max) {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-left: #{$layout-spacing-left}#{$suffix};\n }\n }\n } @else if $device==tablet {\n @if $direction==all {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n } @else if $device==mobile {\n @if $direction==all {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Base\n\n Default settings\n========================================================================== */\n@mixin base() {\n html {\n height: 100%;\n }\n\n body {\n min-height: 100%;\n color: $font-color-default;\n background-color: $bg-color;\n font-family: $font-family-base;\n font-size: $font-size-default;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n }\n\n a {\n transition: 0.25s;\n color: $link-color;\n -webkit-backface-visibility: hidden;\n }\n\n a:hover {\n text-decoration: underline;\n color: $link-hover-color;\n }\n\n // Address `outline` inconsistency between Chrome and other browsers.\n a:focus {\n outline: thin dotted;\n }\n\n // Improve readability when focused and also mouse hovered in all browsers\n a:active,\n a:hover {\n outline: 0;\n }\n\n // Removes large blue border in chrome on focus and active states\n input:focus,\n button:focus,\n .mx-link:focus {\n outline: 0;\n }\n\n // Removes large blue border for tabindexes from widgets\n div[tabindex] {\n outline: 0;\n }\n\n // Disabled State\n .disabled,\n [disabled] {\n cursor: not-allowed;\n opacity: 0.65;\n box-shadow: none;\n }\n\n .mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #0a1325;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin login() {\n body {\n height: 100%;\n }\n\n .loginpage {\n display: flex;\n height: 100%;\n }\n .loginpage-logo {\n position: absolute;\n top: 30px;\n right: 30px;\n\n & > svg {\n width: 120px;\n }\n }\n\n .loginpage-left {\n display: none;\n }\n\n .loginpage-right {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-around;\n }\n .loginpage-formwrapper {\n width: 400px;\n margin: 0 auto;\n }\n\n .loginpage-fullscreenDiv {\n background-color: #e8e8e8;\n width: 100%;\n height: auto;\n bottom: 0;\n top: 0;\n left: 0;\n position: absolute;\n }\n\n .loginpage-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n // Form\n .loginpage-form {\n .alert {\n display: none;\n }\n\n .btn {\n border-radius: $border-radius-default;\n }\n\n // Form label + input\n .form-group {\n width: 100%;\n align-items: center;\n @media only screen and (max-width: $screen-sm-max) {\n align-items: flex-start;\n }\n\n .control-label {\n flex: 4;\n margin-bottom: 0;\n font-size: $font-size-default;\n font-weight: 500;\n @media only screen and (max-width: $screen-sm-max) {\n flex: 1;\n margin-bottom: $spacing-small;\n }\n }\n\n .inputwrapper {\n flex: 8;\n position: relative;\n width: 100%;\n @media only screen and (max-width: $screen-sm-max) {\n flex: 1;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n &:before {\n transition: color 0.4s;\n }\n\n position: absolute;\n top: 50%;\n left: $form-input-padding-x;\n transform: translateY(-50%);\n\n &-eye-open:hover,\n &-eye-close:hover {\n cursor: pointer;\n color: $brand-primary;\n }\n }\n\n .form-control {\n padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px;\n width: 100%;\n }\n\n .form-control:focus ~ .glyphicon:before {\n color: $brand-primary;\n }\n }\n }\n }\n\n // Divider - only on login-with-mendixsso-button.html\n .loginpage-alternativelabel {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n margin: 25px 0px;\n\n hr {\n flex: 1;\n margin: 20px 0 20px 10px;\n border: 0;\n border-color: #d8d8d8;\n border-top: 1px solid #eeeeee;\n }\n }\n\n .loginpage-signin {\n color: #555555;\n }\n\n .loginpage-form .btn {\n img {\n vertical-align: middle;\n top: -1px;\n position: relative;\n }\n }\n\n // Show only on wide screens\n @media screen and (min-width: $screen-xl) {\n .loginpage-left {\n position: relative;\n display: block;\n flex: 1;\n width: 100%;\n height: 100%;\n }\n // Image and clipping mask\n .loginpage-image {\n height: 100%;\n animation: makePointer 1s ease-out both;\n background: left / cover no-repeat\n linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%),\n left / cover no-repeat url(\"./resources/work-do-more.jpeg\");\n -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n }\n\n .loginpage-logo {\n & > svg {\n width: 150px;\n }\n }\n\n .loginpage-formwrapper {\n width: 400px;\n }\n }\n\n // Animate image clipping mask\n @keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n }\n @-webkit-keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin input() {\n /* ==========================================================================\n Input\n\n The form-control class style all inputs\n ========================================================================== */\n .form-control {\n display: flex;\n flex: 1;\n min-width: 50px;\n height: $form-input-height;\n padding: $form-input-padding-y $form-input-padding-x;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n color: $form-input-color;\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n background-image: none;\n box-shadow: none;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n @if $form-input-style==lined {\n @extend .form-control-lined;\n }\n\n &::placeholder {\n color: $form-input-placeholder-color;\n }\n }\n\n .form-control:not([readonly]) {\n &:focus,\n &:focus-within {\n border-color: $form-input-border-focus-color;\n outline: 0;\n background-color: $form-input-bg-focus;\n box-shadow: none;\n }\n }\n\n .form-control[disabled],\n .form-control[readonly],\n fieldset[disabled] .form-control {\n opacity: 1;\n background-color: $form-input-bg-disabled;\n }\n\n .form-control[disabled],\n fieldset[disabled] .form-control {\n cursor: not-allowed;\n }\n\n // Lined\n .form-control-lined {\n border: 0;\n border-bottom: 1px solid $form-input-border-color;\n border-radius: 0;\n background-color: transparent;\n\n &:focus {\n background-color: transparent;\n }\n }\n\n // Read only form control class\n .form-control-static {\n overflow: hidden;\n flex: 1;\n min-height: auto;\n padding: $form-input-static-padding-y $form-input-static-padding-x;\n //border-bottom: 1px solid $form-input-static-border-color;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n }\n\n // Dropdown input widget\n select.form-control {\n $arrow: \"resources/arrow.svg\";\n padding-right: 30px;\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: calc(100% - #{$form-input-padding-x}) center;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n }\n\n .form-control.mx-selectbox {\n align-items: center;\n flex-direction: row-reverse;\n justify-content: space-between;\n }\n\n // Not editable textarea, textarea will be rendered as a label\n .mx-textarea .control-label {\n height: auto;\n }\n\n .mx-textarea-counter {\n display: block;\n width: 100%;\n text-align: right;\n margin-top: $spacing-small;\n }\n\n textarea.form-control {\n flex-basis: auto;\n }\n\n .mx-compound-control {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n max-width: 100%;\n\n .btn {\n margin-left: $spacing-small;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n margin-top: 4px;\n }\n }\n\n .has-error .mx-validation-message {\n margin-top: $spacing-small;\n margin-bottom: 0;\n padding: $spacing-small;\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n }\n\n // Form Group\n .form-group {\n display: flex;\n flex-direction: row;\n margin-bottom: $form-group-margin-bottom;\n\n & > div[class*=\"col-\"] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n & > [class*=\"col-\"] {\n padding-right: $form-group-gutter;\n padding-left: $form-group-gutter;\n }\n\n // Alignment content\n div[class*=\"textBox\"] > .control-label,\n div[class*=\"textArea\"] > .control-label,\n div[class*=\"datePicker\"] > .control-label {\n @extend .form-control-static;\n }\n\n // Label\n .control-label {\n overflow: hidden;\n margin-bottom: 4px;\n text-align: left;\n text-overflow: ellipsis;\n color: $form-label-color;\n font-size: $form-label-size;\n font-weight: $form-label-weight;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n }\n\n &.no-columns:not(.label-after) {\n flex-direction: column;\n }\n }\n\n .form-group.label-after {\n .form-control-static {\n flex: unset;\n }\n\n .control-label {\n margin-bottom: 0;\n }\n }\n\n .mx-dateinput,\n .mx-referenceselector,\n .mx-referencesetselector {\n flex: 1;\n }\n\n // Targets only webkit iOS devices\n .dj_webkit.dj_ios .form-control {\n transform: translateZ(0);\n }\n\n @media only screen and (min-width: $screen-md) {\n .form-horizontal {\n .control-label {\n margin-bottom: 0;\n padding-top: $form-input-padding-y;\n padding-bottom: $form-input-padding-y;\n line-height: $form-input-line-height;\n }\n }\n }\n\n @media only screen and (max-width: $screen-sm-max) {\n .form-group {\n flex-direction: column;\n }\n }\n\n @media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) {\n // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 1;\n }\n // Fix shrinking of date inputs because inability of setting a placeholder\n input[type=\"time\"]:not(.has-value):before,\n input[type=\"date\"]:not(.has-value):before,\n input[type=\"month\"]:not(.has-value):before,\n input[type=\"datetime-local\"]:not(.has-value):before {\n margin-right: 0.5em;\n content: attr(placeholder) !important;\n color: #aaaaaa;\n }\n input[type=\"time\"].has-value:before,\n input[type=\"date\"].has-value:before,\n input[type=\"month\"].has-value:before,\n input[type=\"datetime-local\"].has-value:before {\n content: \"\" !important;\n }\n }\n\n @media (-ms-high-contrast: none), (-ms-high-contrast: active) {\n // Target IE10+\n .form-group {\n display: block;\n }\n }\n\n [dir=\"rtl\"] {\n // Dropdown input widget\n select.form-control {\n padding-right: 30px;\n padding-left: 0;\n background-position: #{$form-input-padding-x} center;\n }\n\n .mx-compound-control .btn {\n margin-right: $spacing-small;\n margin-left: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin background-helpers() {\n /* ==========================================================================\n Background\n\n Different background components, all managed by variables\n ========================================================================== */\n\n .background-main {\n background-color: $bg-color !important;\n }\n\n //Brand variations\n\n .background-primary {\n background-color: $brand-primary !important;\n }\n\n .background-primary-darker {\n background-color: $color-primary-darker !important;\n }\n\n .background-primary.background-dark,\n .background-primary-dark {\n background-color: $color-primary-dark !important;\n }\n\n .background-primary.background-light,\n .background-primary-light {\n background-color: $color-primary-light !important;\n }\n\n .background-primary-lighter {\n background-color: $color-primary-lighter !important;\n }\n\n .background-secondary {\n background-color: $bg-color-secondary !important;\n }\n\n .background-secondary.background-light {\n background-color: $bg-color-secondary !important;\n }\n\n .background-secondary.background-dark {\n background-color: $bg-color-secondary !important;\n }\n\n .background-brand-gradient {\n background-image: $brand-gradient !important;\n }\n\n //Semantic variations\n\n .background-success {\n background-color: $brand-success !important;\n }\n\n .background-success-darker {\n background-color: $color-success-darker !important;\n }\n\n .background-success.background-dark,\n .background-success-dark {\n background-color: $color-success-dark !important;\n }\n\n .background-success.background-light,\n .background-success-light {\n background-color: $color-success-light !important;\n }\n\n .background-success-lighter {\n background-color: $color-success-lighter !important;\n }\n\n .background-warning {\n background-color: $brand-warning !important;\n }\n\n .background-warning-darker {\n background-color: $color-warning-darker !important;\n }\n\n .background-warning.background-dark,\n .background-warning-dark {\n background-color: $color-warning-dark !important;\n }\n\n .background-warning.background-light,\n .background-warning-light {\n background-color: $color-warning-light !important;\n }\n\n .background-warning-lighter {\n background-color: $color-warning-lighter !important;\n }\n\n .background-danger {\n background-color: $brand-danger !important;\n }\n\n .background-danger-darker {\n background-color: $color-danger-darker !important;\n }\n\n .background-danger.background-dark,\n .background-danger-dark {\n background-color: $color-danger-dark !important;\n }\n\n .background-danger.background-light,\n .background-danger-light {\n background-color: $color-danger-light !important;\n }\n\n .background-danger-lighter {\n background-color: $color-danger-lighter !important;\n }\n\n //Bootstrap variations\n\n .background-default {\n background-color: $brand-default !important;\n }\n\n .background-default-darker {\n background-color: $color-default-darker !important;\n }\n\n .background-default-dark {\n background-color: $color-default-dark !important;\n }\n\n .background-default-light {\n background-color: $color-default-light !important;\n }\n\n .background-default-lighter {\n background-color: $color-default-lighter !important;\n }\n\n .background-inverse {\n background-color: $brand-inverse !important;\n }\n\n .background-inverse-darker {\n background-color: $color-inverse-darker !important;\n }\n\n .background-inverse-dark {\n background-color: $color-inverse-dark !important;\n }\n\n .background-inverse-light {\n background-color: $color-inverse-light !important;\n }\n\n .background-inverse-lighter {\n background-color: $color-inverse-lighter !important;\n }\n\n .background-info {\n background-color: $brand-info !important;\n }\n\n .background-info-darker {\n background-color: $color-info-darker !important;\n }\n\n .background-info-dark {\n background-color: $color-info-dark !important;\n }\n\n .background-info-light {\n background-color: $color-info-light !important;\n }\n\n .background-info-lighter {\n background-color: $color-info-lighter !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin label() {\n /* ==========================================================================\n Label\n\n Default label combined with Bootstrap label\n ========================================================================== */\n\n .label {\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n border-radius: 0.25em;\n font-size: 100%;\n line-height: 1;\n\n .form-control-static {\n font-weight: $font-weight-normal;\n all: unset;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge() {\n /* ==========================================================================\n Badge\n\n Override of default Bootstrap badge style\n ========================================================================== */\n\n .badge {\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n font-size: 100%;\n line-height: 1;\n\n .form-control-static {\n font-weight: $font-weight-normal;\n all: unset;\n }\n }\n\n /* ==========================================================================\n Badge-web\n\n Widget styles\n ========================================================================== */\n\n .widget-badge {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n }\n\n .widget-badge-clickable {\n cursor: pointer;\n }\n\n .widget-badge.badge:empty {\n display: initial;\n /* Fix padding to stay round */\n padding: $spacing-smaller calc(#{$spacing-small} + 2px);\n }\n\n .widget-badge.label:empty {\n display: initial;\n /* Fix padding to stay square */\n padding: $spacing-smaller calc(#{$spacing-small} + 2px);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin label-helpers() {\n /* ==========================================================================\n Label\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component including\n badge widget\n ========================================================================== */\n // Color variations\n .label-secondary,\n .label-default {\n color: $label-default-color;\n background-color: $label-default-bg;\n }\n\n .label-primary {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n }\n\n .label-success {\n color: $label-success-color;\n background-color: $label-success-bg;\n }\n\n .label-inverse {\n color: $label-inverse-color;\n background-color: $label-inverse-bg;\n }\n\n .label-info {\n color: $label-info-color;\n background-color: $label-info-bg;\n }\n\n .label-warning {\n color: $label-warning-color;\n background-color: $label-warning-bg;\n }\n\n .label-danger {\n color: $label-danger-color;\n background-color: $label-danger-bg;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge-button() {\n /* ==========================================================================\n Badge button\n\n Widget styles\n ========================================================================== */\n .widget-badge-button {\n display: inline-block;\n\n .widget-badge-button-text {\n white-space: nowrap;\n padding-right: 5px;\n }\n\n .badge {\n top: unset;\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n background-color: $btn-primary-color;\n color: $btn-primary-bg;\n font-size: 100%;\n line-height: 1;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge-button-helpers() {\n /* ==========================================================================\n Badge button\n\n Different background components, all managed by variables\n ========================================================================== */\n\n //Badge button color variation\n .btn-secondary,\n .btn-default {\n .badge {\n color: $btn-default-bg;\n background-color: $btn-primary-bg;\n }\n }\n\n .btn-success {\n .badge {\n color: $btn-success-bg;\n }\n }\n\n .btn-warning {\n .badge {\n color: $btn-warning-bg;\n }\n }\n\n .btn-danger {\n .badge {\n color: $btn-danger-bg;\n }\n }\n\n //Badge button bordered variation\n\n .btn-bordered.btn-primary {\n .badge {\n background: $btn-primary-bg;\n color: $btn-primary-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-primary-color;\n color: $btn-primary-bg;\n }\n }\n }\n\n .btn-bordered.btn-success {\n .badge {\n background: $btn-success-bg;\n color: $btn-success-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-success-color;\n color: $btn-success-bg;\n }\n }\n }\n\n .btn-bordered.btn-warning {\n .badge {\n background: $btn-warning-bg;\n color: $btn-warning-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-warning-color;\n color: $btn-warning-bg;\n }\n }\n }\n\n .btn-bordered.btn-danger {\n .badge {\n background: $btn-danger-bg;\n color: $btn-danger-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-danger-color;\n color: $btn-danger-bg;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button() {\n /* ==========================================================================\n Button\n\n Default Bootstrap and Mendix button\n ========================================================================== */\n\n .btn,\n .mx-button {\n display: inline-block;\n margin-bottom: 0;\n padding: 0.6em 1em;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition: all 0.2s ease-in-out;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n color: $btn-default-color;\n border: 1px solid $btn-default-border-color;\n border-radius: $btn-border-radius;\n background-color: $btn-default-bg;\n background-image: none;\n box-shadow: none;\n text-shadow: none;\n font-size: $btn-font-size;\n line-height: $line-height-base;\n\n &:hover,\n &:focus,\n &:active,\n &:active:focus {\n outline: none;\n box-shadow: none;\n }\n\n &[aria-disabled] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n }\n\n @if $btn-bordered != false {\n @extend .btn-bordered;\n }\n }\n\n // Mendix button link\n .mx-link {\n padding: 0;\n color: $link-color;\n\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n }\n }\n\n .link-back {\n color: $font-color-detail;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 2px;\n }\n }\n\n // Images and icons in buttons\n .btn,\n .mx-button,\n .mx-link {\n img {\n //height: auto; // MXUI override who set the height on 16px default\n height: calc(#{$font-size-default} + 4px);\n margin-right: 4px;\n vertical-align: text-top;\n }\n }\n\n //== Phone specific\n //-------------------------------------------------------------------------------------------------------------------//\n .profile-phone {\n .btn,\n .mx-link {\n &:active {\n transform: translateY(1px);\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-helpers() {\n /* ==========================================================================\n Button\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Color variations\n .btn,\n .btn-default {\n @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover);\n }\n\n .btn-primary {\n @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover);\n }\n\n .btn-inverse {\n @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover);\n }\n\n .btn-success {\n @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover);\n }\n\n .btn-info {\n @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover);\n }\n\n .btn-warning {\n @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover);\n }\n\n .btn-danger {\n @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover);\n }\n\n // Button Sizes\n .btn-lg {\n font-size: $font-size-large;\n\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n }\n\n .btn-sm {\n font-size: $font-size-small;\n\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n }\n\n // Button Image\n .btn-image {\n padding: 0;\n vertical-align: middle;\n border-style: none;\n background-color: transparent;\n\n img {\n display: block; // or else the button doesn't get a width\n height: auto; // Image set height\n }\n\n &:hover,\n &:focus {\n background-color: transparent;\n }\n }\n\n // Icon buttons\n .btn-icon {\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n margin: 0;\n }\n }\n\n .btn-icon-right {\n display: inline-flex;\n flex-direction: row-reverse;\n align-items: center;\n\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n top: 0;\n margin-left: 4px;\n }\n }\n\n .btn-icon-top {\n padding-right: 0;\n padding-left: 0;\n\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n display: block;\n margin: 0 0 4px 0;\n }\n }\n\n .btn-icon-only {\n @extend .btn-icon;\n padding: 0;\n color: $btn-default-icon-color;\n border: none;\n }\n\n .btn-block {\n display: block;\n width: 100%;\n }\n\n .btn-block + .btn-block {\n margin-top: 4px;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-variant($color, $background, $border, $hover) {\n @if not $exclude-button {\n color: $color;\n border-color: $border;\n background-color: $background;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $hover;\n background-color: $hover;\n }\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n &[aria-disabled],\n fieldset[disabled] {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n border-color: $border;\n background-color: $background;\n }\n }\n // Button bordered\n &.btn-bordered {\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $border;\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $border;\n background-color: $border;\n }\n }\n // Button as link\n &.btn-link {\n text-decoration: none;\n border-color: transparent;\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $background;\n }\n\n &:hover {\n border-color: $btn-link-bg-hover;\n background-color: $btn-link-bg-hover;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin check-box() {\n /* ==========================================================================\n Check box\n\n Default Mendix check box widget\n ========================================================================== */\n\n .mx-checkbox.label-after {\n flex-wrap: wrap;\n\n .control-label {\n display: flex;\n align-items: center;\n padding: 0;\n }\n }\n\n input[type=\"checkbox\"] {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n transform: translateZ(0);\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: transparent;\n }\n\n &:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #ffffff;\n border-top: 0;\n border-right: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n border-color: $form-input-bg-hover; // color of checkmark on hover\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-border-focus-color;\n }\n\n &:checked:after {\n content: \"\";\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: $form-input-bg-disabled;\n }\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin grid() {\n /* ==========================================================================\n Grid\n\n Default Mendix grid (used for Mendix data grid)\n ========================================================================== */\n\n .mx-grid {\n padding: 0px;\n border: 0;\n border-radius: 0;\n\n .mx-grid-controlbar {\n margin: 10px 0;\n /* Paging */\n .mx-grid-pagingbar {\n /* Buttons */\n .mx-button {\n padding: 8px;\n color: $grid-paging-color;\n border-color: $grid-paging-border-color;\n background-color: $grid-paging-bg;\n\n &:hover {\n color: $grid-paging-color-hover;\n border-color: $grid-paging-border-color-hover;\n background-color: $grid-paging-bg-hover;\n }\n }\n\n /* Text Paging .. to .. to .. */\n .mx-grid-paging-status {\n padding: 0 8px 8px;\n }\n }\n }\n\n .mx-grid-searchbar {\n margin: 10px 0;\n\n .mx-grid-search-item {\n .mx-grid-search-label {\n vertical-align: middle;\n\n label {\n padding-top: 5px;\n }\n }\n\n .mx-grid-search-input {\n display: inline-flex;\n\n .form-control {\n height: 28px;\n font-size: 11px;\n }\n\n select.form-control {\n padding: 3px;\n vertical-align: middle;\n }\n\n .mx-button {\n height: 28px;\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n }\n\n // Remove default border from grid inside a Mendix Dataview\n .mx-dataview .mx-grid {\n border: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-grid() {\n /* ==========================================================================\n Data grid default\n\n Default Mendix data grid widget. The data grid shows a list of objects in a grid\n ========================================================================== */\n\n .mx-datagrid {\n table {\n border-width: 0;\n background-color: transparent;\n /* Table header */\n th {\n border-style: solid;\n border-color: $grid-border-color;\n border-top-width: 0;\n border-right: 0;\n border-bottom-width: 1px;\n border-left: 0;\n background-color: $grid-bg-header;\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n\n .mx-datagrid-head-caption {\n white-space: normal;\n }\n }\n\n /* Table Body */\n tbody tr {\n td {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n border-width: 0;\n border-color: $grid-border-color;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n background-color: $grid-bg;\n\n &:focus {\n outline: none;\n }\n\n /* Text without spaces */\n .mx-datagrid-data-wrapper {\n text-overflow: ellipsis;\n }\n }\n\n &.selected td,\n &.selected:hover td {\n color: $grid-selected-color;\n background-color: $grid-bg-selected !important;\n }\n }\n\n /* Table Footer */\n tfoot {\n > tr > th {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-bg;\n font-weight: $font-weight-bold;\n }\n }\n\n & *:focus {\n outline: 0;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin transition(\n $style: initial,\n $delay: 0s,\n $duration: 0.3s,\n $property: all,\n $timing-function: cubic-bezier(0.4, 0, 0.2, 1)\n) {\n @if not $exclude-animations {\n transition: $property $duration $delay $timing-function;\n transform-style: $style;\n }\n}\n\n@mixin ripple($color: #000, $transparency: 10%, $scale: 10) {\n @if not $exclude-animations {\n position: relative;\n overflow: hidden;\n transform: translate3d(0, 0, 0);\n\n &:after {\n content: \"\";\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n background-image: radial-gradient(circle, $color $transparency, transparent $transparency);\n background-repeat: no-repeat;\n background-position: 50%;\n transform: scale($scale, $scale);\n opacity: 0;\n transition: transform 0.5s, opacity 1s;\n }\n\n &:active:after {\n transform: scale(0, 0);\n opacity: 0.1;\n transition: 0s;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-grid-helpers() {\n /* ==========================================================================\n Data grid default\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Striped style\n .datagrid-striped.mx-datagrid {\n table {\n th {\n border-width: 0;\n }\n\n tbody tr {\n td {\n border-top-width: 0;\n }\n\n &:nth-child(odd) td {\n background-color: $grid-bg-striped;\n }\n }\n }\n }\n\n // Bordered style\n .datagrid-bordered.mx-datagrid {\n table {\n border: 1px solid;\n\n th {\n border: 1px solid $grid-border-color;\n }\n\n tbody tr {\n td {\n border: 1px solid $grid-border-color;\n }\n }\n }\n\n tfoot {\n > tr > th {\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n border-width: 1px;\n }\n }\n }\n\n // Transparent style so you can see the background\n .datagrid-transparent.mx-datagrid {\n table {\n background-color: transparent;\n\n tbody tr {\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n\n td {\n background-color: transparent;\n }\n }\n }\n }\n\n // Hover style activated\n .datagrid-hover.mx-datagrid {\n table {\n tbody tr {\n &:hover td {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected:hover td {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n }\n\n // Datagrid Row Sizes\n .datagrid-lg.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n }\n }\n }\n\n .datagrid-sm.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left / 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left/ 2);\n }\n }\n }\n }\n\n // Datagrid Full Search\n // Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed\n .datagrid-fullsearch.mx-grid {\n .mx-grid-search-button {\n @extend .btn-primary;\n }\n\n .mx-grid-reset-button {\n display: none;\n }\n\n .mx-grid-search-item {\n display: block;\n }\n\n .mx-grid-search-label {\n display: none;\n }\n\n .mx-grid-searchbar {\n .mx-grid-search-controls {\n position: absolute;\n right: 0;\n }\n\n .mx-grid-search-input {\n width: 80%;\n padding-left: 0;\n\n .btn,\n .form-control {\n height: 35px;\n font-size: 12px;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-view() {\n /* ==========================================================================\n Data view\n\n Default Mendix data view widget. The data view is used for showing the contents of exactly one object\n ========================================================================== */\n\n .mx-dataview {\n /* Dataview-content gives problems for nexted layout grid containers */\n > .mx-dataview-content > .mx-container-nested {\n > .row {\n margin-right: 0;\n margin-left: 0;\n }\n }\n\n /* Dataview empty message */\n .mx-dataview-message {\n color: $dataview-emptymessage-color;\n background: $dataview-emptymessage-bg;\n }\n }\n\n .mx-dataview-controls {\n margin-top: $spacing-medium;\n padding: $spacing-medium 0 0;\n border-top: 1px solid $dataview-controls-border-color;\n border-radius: 0;\n background-color: $dataview-controls-bg;\n /* Buttons */\n .mx-button {\n margin-right: $spacing-small;\n margin-bottom: 0;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n /* Fix for Dojo rendering in react client */\n [id^=\"mxui_widget_Wrapper\"]:has(> .mx-button) {\n .mx-button {\n margin-right: $spacing-small;\n }\n }\n\n background-color: inherit;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin date-picker() {\n /* ==========================================================================\n Date picker\n\n Default Mendix date picker widget\n ========================================================================== */\n\n .mx-calendar {\n /* (must be higher than popup z-index) */\n z-index: 10010 !important;\n padding: 8px;\n font-size: 12px;\n background: $bg-color;\n border-radius: $border-radius-default;\n border: 1px solid $border-color-default;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06);\n\n .mx-calendar-month-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 0 3px 10px 3px;\n }\n\n .mx-calendar-month-next,\n .mx-calendar-month-previous,\n .mx-calendar-month-dropdown {\n border: 0;\n cursor: pointer;\n background: transparent;\n }\n\n .mx-calendar-month-next,\n .mx-calendar-month-previous {\n &:hover {\n color: $brand-primary;\n }\n }\n\n .mx-calendar-month-dropdown {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n\n .mx-calendar-month-current:first-child {\n margin-right: 10px;\n }\n }\n\n th {\n color: $brand-primary;\n }\n\n th,\n td {\n width: 35px;\n height: 35px;\n text-align: center;\n }\n\n td {\n color: $font-color-default;\n\n &:hover {\n cursor: pointer;\n border-radius: 50%;\n color: $brand-primary;\n background-color: $brand-default;\n }\n }\n\n .mx-calendar-day-month-next,\n .mx-calendar-day-month-previous {\n color: lighten($font-color-default, 45%);\n }\n\n .mx-calendar-day-selected,\n .mx-calendar-day-selected:hover {\n color: #fff;\n border-radius: 50%;\n background: $brand-primary;\n }\n\n //\n\n .mx-calendar-year-switcher {\n text-align: center;\n margin-top: 10px;\n color: lighten($brand-primary, 30%);\n\n span.mx-calendar-year-selected {\n color: $brand-primary;\n margin-left: 10px;\n margin-right: 10px;\n }\n\n span:hover {\n cursor: pointer;\n text-decoration: underline;\n background-color: transparent;\n }\n }\n }\n\n .mx-calendar-month-dropdown-options {\n /* (must be higher than popup z-index) */\n z-index: 10020 !important;\n position: absolute;\n top: 25px;\n padding: 2px 10px;\n border-radius: $border-radius-default;\n background-color: $bg-color;\n\n div {\n cursor: pointer;\n font-size: 12px;\n padding: 2px 0;\n\n &:hover,\n &:focus {\n color: $brand-primary;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin header() {\n /* ==========================================================================\n Header\n\n Default Mendix mobile header\n ========================================================================== */\n\n .mx-header {\n z-index: 100;\n display: flex;\n width: 100%;\n height: $m-header-height;\n padding: 0;\n text-align: initial;\n color: $m-header-color;\n background-color: $m-header-bg;\n box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354);\n\n // Reset mxui\n div.mx-header-left,\n div.mx-header-right {\n position: relative;\n top: initial;\n right: initial;\n left: initial;\n display: flex;\n align-items: center;\n width: 25%;\n height: 100%;\n\n .mx-placeholder {\n display: flex;\n align-items: center;\n height: 100%;\n }\n }\n\n div.mx-header-left .mx-placeholder {\n order: 1;\n\n .mx-placeholder {\n justify-content: flex-start;\n }\n }\n\n div.mx-header-center {\n overflow: hidden;\n flex: 1;\n order: 2;\n text-align: center;\n\n .mx-title {\n overflow: hidden;\n width: 100%;\n margin: 0;\n text-overflow: ellipsis;\n color: $m-header-color;\n font-size: $m-header-title-size;\n line-height: $m-header-height;\n }\n }\n\n div.mx-header-right {\n order: 3;\n\n .mx-placeholder {\n justify-content: flex-end;\n }\n }\n\n // Content magic\n .mx-link {\n display: flex;\n align-items: center;\n height: 100%;\n transition: all 0.2s;\n text-decoration: none;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n font-size: 23px;\n }\n\n &:active {\n transform: translateY(1px);\n color: $link-hover-color;\n }\n }\n\n .mx-link,\n .btn,\n img {\n padding: 0 $spacing-medium;\n }\n\n .mx-sidebartoggle {\n font-size: 24px;\n line-height: $m-header-height;\n\n img {\n height: 20px;\n }\n }\n }\n\n // RTL support\n body[dir=\"rtl\"] {\n .mx-header-left {\n order: 3;\n }\n\n .mx-header-right {\n order: 1;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin glyphicon() {\n /* ==========================================================================\n Glyphicon\n\n Default Mendix glyphicon\n ========================================================================== */\n\n .mx-glyphicon {\n &:before {\n display: inline-block;\n margin-top: -0.2em;\n margin-right: 0.4555555em;\n vertical-align: middle;\n font-family: \"Glyphicons Halflings\";\n font-weight: $font-weight-normal;\n font-style: normal;\n line-height: inherit;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin group-box() {\n /* ==========================================================================\n Group box\n\n Default Mendix group box\n ========================================================================== */\n\n .mx-groupbox {\n margin: 0;\n\n > .mx-groupbox-header {\n margin: 0;\n color: $groupbox-default-color;\n border-width: 1px 1px 0 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background: $groupbox-default-bg;\n font-size: $font-size-h5;\n border-radius: $border-radius-default $border-radius-default 0 0;\n padding: $spacing-small * 1.5 $spacing-medium;\n\n .mx-groupbox-collapse-icon {\n margin-top: 0.1em;\n }\n }\n\n // Header options\n > h1.mx-groupbox-header {\n font-size: $font-size-h1;\n }\n\n > h2.mx-groupbox-header {\n font-size: $font-size-h2;\n }\n\n > h3.mx-groupbox-header {\n font-size: $font-size-h3;\n }\n\n > h4.mx-groupbox-header {\n font-size: $font-size-h4;\n }\n\n > h5.mx-groupbox-header {\n font-size: $font-size-h5;\n }\n\n > h6.mx-groupbox-header {\n font-size: $font-size-h6;\n }\n\n > .mx-groupbox-body {\n padding: $spacing-small * 1.5 $spacing-medium;\n border-width: 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background-color: #ffffff;\n border-radius: $border-radius-default;\n }\n\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n }\n\n &.collapsed > .mx-groupbox-header {\n }\n }\n\n //With header\n .mx-groupbox-header ~ .mx-groupbox-body {\n border-radius: 0 0 $border-radius-default $border-radius-default;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin group-box-helpers() {\n /* ==========================================================================\n Group box\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Color variations\n .groupbox-secondary,\n .groupbox-default {\n @include groupbox-variant($groupbox-default-color, $groupbox-default-bg);\n }\n\n .groupbox-primary {\n @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg);\n }\n\n // Success appears as green\n .groupbox-success {\n @include groupbox-variant($groupbox-success-color, $groupbox-success-bg);\n }\n\n // Warning appears as orange\n .groupbox-warning {\n @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg);\n }\n\n // Danger and error appear as red\n .groupbox-danger {\n @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg);\n }\n\n .groupbox-transparent {\n > .mx-groupbox-header {\n padding: $spacing-small * 1.5 0;\n color: $gray-darker;\n border-style: none;\n background: transparent;\n font-weight: $font-weight-semibold;\n }\n\n .mx-groupbox-body {\n padding: $spacing-small 0;\n border-radius: 0;\n border: 0;\n border-bottom: 1px solid $groupbox-default-bg;\n background-color: transparent;\n }\n\n .mx-groupbox-collapse-icon {\n color: $brand-primary;\n }\n }\n\n // Callout Look and Feel\n .groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n border: 0;\n background-color: $callout-primary-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-primary-color;\n }\n\n .mx-groupbox-header + .mx-groupbox-body {\n padding-top: 0;\n }\n }\n\n .groupbox-success.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-success-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-success-color;\n }\n }\n\n .groupbox-warning.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-warning-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-warning-color;\n }\n }\n\n .groupbox-danger.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-danger-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-danger-color;\n }\n }\n\n //Bootstrap variations\n\n .groupbox-info {\n @include groupbox-variant($groupbox-info-color, $groupbox-info-bg);\n }\n\n .groupbox-inverse {\n @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg);\n }\n\n .groupbox-white {\n @include groupbox-variant($groupbox-white-color, $groupbox-white-bg);\n }\n\n .groupbox-info.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-info-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-info-color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin groupbox-variant($color, $background) {\n @if not $exclude-group-box {\n > .mx-groupbox-header {\n color: $color;\n border-color: $background;\n background: $background;\n }\n > .mx-groupbox-body {\n border-color: $background;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin image-helpers() {\n /* ==========================================================================\n Image\n\n Default Mendix image widgets\n ========================================================================== */\n\n img.img-rounded,\n .img-rounded img {\n border-radius: 6px;\n }\n\n img.img-thumbnail,\n .img-thumbnail img {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n transition: all 0.2s ease-in-out;\n border: 1px solid $brand-default;\n border-radius: 4px;\n background-color: #ffffff;\n line-height: $line-height-base;\n }\n\n img.img-circle,\n .img-circle img {\n border-radius: 50%;\n }\n\n img.img-auto,\n .img-auto img {\n width: auto !important;\n max-width: 100% !important;\n height: auto !important;\n max-height: 100% !important;\n }\n\n img.img-center,\n .img-center img {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n img.img-icon {\n width: 20px;\n height: 20px;\n padding: 2px;\n border-radius: 50%;\n }\n\n img.img-fill,\n .img-fill img {\n object-fit: fill;\n }\n\n img.img-contain,\n .img-contain img {\n object-fit: contain;\n }\n\n img.img-cover,\n .img-cover img {\n object-fit: cover;\n }\n\n img.img-scale-down,\n .img-scale-down img {\n object-fit: scale-down;\n }\n\n .img-contain.mx-image-background {\n background-size: contain;\n }\n\n .img-cover.mx-image-background {\n background-size: cover;\n }\n\n .img-auto.mx-image-background {\n background-size: auto;\n }\n\n .img-opacity-low img,\n .img-opacity-low.mx-image-background {\n opacity: 0.3;\n }\n\n .img-opacity-medium img,\n .img-opacity-medium.mx-image-background {\n opacity: 0.5;\n }\n\n .img-opacity-high img,\n .img-opacity-high.mx-image-background {\n opacity: 0.7;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin list-view() {\n /* ==========================================================================\n List view\n\n Default Mendix list view widget. The list view shows a list of objects arranged vertically. Each object is shown using a template\n ========================================================================== */\n .mx-listview {\n // Remove widget padding\n padding: 0;\n /* Clear search button (overrides load more button stying) */\n & > ul {\n margin: 0 0 $spacing-medium;\n\n .mx-listview-empty {\n border-style: none;\n background-color: transparent;\n }\n\n & > li {\n @include transition();\n background-color: #fff;\n padding: $spacing-medium;\n border-top: 1px solid $grid-border-color;\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n }\n\n &:focus,\n &:active {\n outline: 0;\n }\n }\n }\n\n .selected {\n background: $color-primary-light;\n }\n\n .mx-layoutgrid {\n padding: 0 !important;\n }\n }\n\n // Search bar\n .mx-listview-searchbar {\n margin-bottom: $spacing-medium;\n\n .btn {\n width: auto;\n }\n }\n\n /* Load more button */\n .btn.mx-listview-loadMore {\n width: 100%;\n margin: 0 0 $spacing-medium;\n }\n\n //== Phone specific\n //-------------------------------------------------------------------------------------------------------------------//\n .profile-phone .mx-listview {\n .mx-listview-searchbar {\n margin-bottom: 3px;\n background: #ffffff;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n input {\n padding: 14px 15px;\n color: #555555;\n border-style: none;\n border-radius: 0;\n box-shadow: none;\n }\n\n .btn {\n padding: 14px 15px;\n color: inherit;\n border-style: none;\n }\n }\n\n & > ul > li {\n &:first-child {\n border-top: none;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin list-view-helpers() {\n /* ==========================================================================\n List view\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n // List items lined\n .listview-lined.mx-listview {\n & > ul > li {\n border-top: 1px solid $grid-border-color;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n }\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n }\n }\n }\n\n //List items Bordered\n .listview-bordered.mx-listview {\n & > ul > li {\n border: 1px solid $grid-border-color;\n border-top: 0;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n }\n\n &:last-child {\n }\n }\n }\n\n // List items striped\n .listview-striped.mx-listview {\n & > ul > li:nth-child(2n + 1) {\n background-color: $grid-bg-striped;\n }\n }\n\n // Items as seperated blocks\n .listview-seperated.mx-listview {\n & > ul > li {\n margin-bottom: $spacing-medium;\n border: 1px solid $grid-border-color;\n border-radius: $border-radius-default;\n }\n }\n\n // Remove all styling - deprecated\n .listview-stylingless.mx-listview {\n & > ul > li {\n padding: unset;\n cursor: default;\n border: unset;\n background-color: transparent;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent !important;\n }\n }\n }\n }\n\n // Hover style activated\n .listview-hover.mx-listview {\n & > ul > li {\n cursor: pointer;\n\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-hover;\n }\n\n &.selected {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-selected-hover;\n }\n }\n }\n }\n\n // Row Sizes\n\n .listview-sm.mx-listview {\n & > ul > li {\n padding: $spacing-small;\n }\n }\n\n .listview-lg.mx-listview {\n & > ul > li {\n padding: $spacing-large;\n }\n }\n\n // Bootstrap columns\n .mx-listview[class*=\"lv-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n & > ul {\n display: flex; // normal a table\n flex-wrap: wrap;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n\n & > li {\n // bootstrap col\n position: relative;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: $screen-md-max) {\n width: 100% !important;\n }\n\n & > .mx-dataview {\n overflow: hidden;\n }\n }\n }\n\n &.lv-col-xs-12 > ul > li {\n width: 100% !important;\n }\n\n &.lv-col-xs-11 > ul > li {\n width: 91.66666667% !important;\n }\n\n &.lv-col-xs-10 > ul > li {\n width: 83.33333333% !important;\n }\n\n &.lv-col-xs-9 > ul > li {\n width: 75% !important;\n }\n\n &.lv-col-xs-8 > ul > li {\n width: 66.66666667% !important;\n }\n\n &.lv-col-xs-7 > ul > li {\n width: 58.33333333% !important;\n }\n\n &.lv-col-xs-6 > ul > li {\n width: 50% !important;\n }\n\n &.lv-col-xs-5 > ul > li {\n width: 41.66666667% !important;\n }\n\n &.lv-col-xs-4 > ul > li {\n width: 33.33333333% !important;\n }\n\n &.lv-col-xs-3 > ul > li {\n width: 25% !important;\n }\n\n &.lv-col-xs-2 > ul > li {\n width: 16.66666667% !important;\n }\n\n &.lv-col-xs-1 > ul > li {\n width: 8.33333333% !important;\n }\n\n @media (min-width: $screen-md) {\n &.lv-col-sm-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-sm-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-sm-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-sm-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-sm-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-sm-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-sm-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-sm-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-sm-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-sm-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-sm-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-sm-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: $screen-lg) {\n &.lv-col-md-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-md-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-md-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-md-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-md-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-md-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-md-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-md-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-md-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-md-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-md-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-md-1 > ul > li {\n width: 16.66666667% !important;\n }\n }\n @media (min-width: $screen-xl) {\n &.lv-col-lg-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-lg-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-lg-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-lg-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-lg-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-lg-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-lg-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-lg-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-lg-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-lg-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-lg-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-lg-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin modal() {\n /* ==========================================================================\n Modal\n\n Default Mendix modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults\n ========================================================================== */\n .modal-dialog {\n .modal-content {\n border: 1px solid $modal-header-border-color;\n border-radius: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\n .modal-header {\n padding: 15px 20px;\n border-bottom-color: $modal-header-border-color;\n border-radius: 0; // Because of the class .mx-window-active in mxui.css\n background-color: $modal-header-bg;\n\n h4 {\n margin: 0;\n color: $modal-header-color;\n font-size: 16px;\n font-weight: $font-weight-bold;\n }\n\n .close {\n margin-top: -3px;\n opacity: 1;\n /* For IE8 and earlier */\n color: $modal-header-color;\n text-shadow: none;\n &:focus {\n border-radius: 4px;\n outline: 2px solid $brand-primary;\n }\n }\n }\n\n .modal-body {\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 0;\n padding: 20px;\n border-style: none;\n }\n }\n }\n\n // Default Mendix Window Modal\n .mx-window {\n // If popup direct child is a dataview it gets the class mx-window-view\n &.mx-window-view .mx-window-body {\n overflow: hidden; // hide second scrollbar in edit page\n padding: 0;\n // Dataview in popup\n > .mx-dataview > .mx-dataview-content,\n > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 20px;\n }\n\n > .mx-dataview > .mx-dataview-controls,\n > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n display: flex;\n justify-content: flex-end;\n margin: 0;\n padding: 20px;\n text-align: left;\n border-top: 1px solid $modal-header-border-color;\n }\n }\n\n .mx-dataview-controls {\n padding-bottom: 0;\n }\n\n .mx-layoutgrid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n .mx-dialog .modal-body {\n padding: 24px;\n }\n\n // Login modal\n .mx-login {\n .modal-body {\n padding: 0 15px;\n }\n\n .modal-content {\n input {\n height: 56px;\n padding: 12px 12px;\n border: 1px solid #eeeeee;\n background: #eeeeee;\n box-shadow: none;\n font-size: 16px;\n\n &:focus {\n border-color: #66afe9;\n }\n }\n }\n\n .modal-header,\n .modal-footer {\n border: 0;\n }\n\n button {\n font-size: 16px;\n }\n\n h4 {\n color: #aaaaaa;\n font-size: 20px;\n font-weight: $font-weight-bold;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-bar() {\n /* ==========================================================================\n Navigation\n\n Default Mendix navigation bar\n ========================================================================== */\n .mx-navbar {\n margin: 0;\n border-style: none;\n border-radius: 0;\n background-color: $navigation-bg;\n\n ul.nav {\n margin: 0; // weird -margin if screen gets small (bootstrap)\n /* Navigation item */\n & > li.mx-navbar-item > a {\n display: flex;\n align-items: center;\n padding: $navigation-item-padding;\n vertical-align: middle;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n border-radius: $border-radius-default;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n &:hover,\n &:focus,\n &.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n &.active {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n opacity: 1;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n position: absolute;\n top: -9px;\n left: 15px;\n width: 0;\n height: 0;\n content: \"\";\n transform: rotate(360deg);\n border-width: 0 9px 9px 9px;\n border-style: solid;\n border-color: transparent transparent $navigation-border-color transparent;\n }\n\n // Image\n img {\n width: 20px; // Default size (so it looks good)\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n & > .mx-navbar-item.active a {\n color: $navigation-color-active;\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-hover;\n border-bottom-color: $navigation-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n\n .caret {\n border-top-color: $navigation-sub-color-active;\n border-bottom-color: $navigation-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n padding: 10px 24px;\n }\n .mx-navbar-item.open .dropdown-menu {\n padding: 0;\n border-radius: 0;\n background-color: $navigation-sub-bg;\n\n & > li.mx-navbar-subitem > a {\n padding: 10px 24px;\n color: $navigation-sub-color;\n border-radius: 0;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n color: $navigation-sub-color-hover;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-bar-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Regions\n //## Behavior in the different regions\n ========================================================================== */\n // When used in topbar\n .region-topbar {\n .mx-navbar {\n background-color: $navtopbar-bg;\n min-height: auto;\n ul.nav {\n > .mx-navbar-item {\n margin-left: $spacing-small;\n }\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n line-height: 1.2;\n /* Dropdown arrow */\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n &.active {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navtopbar-border-color transparent;\n }\n\n // Image\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-hover;\n border-bottom-color: $navtopbar-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu {\n border-radius: $border-radius-default;\n background-color: $navtopbar-sub-bg;\n padding: $spacing-small $spacing-small 0;\n margin: 0;\n border: 0;\n box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354);\n & > li.mx-navbar-subitem a {\n padding: $spacing-small;\n color: $navtopbar-color;\n border-radius: $border-radius-default;\n margin-bottom: $spacing-small;\n line-height: 1.2;\n &:hover,\n &:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n .caret {\n border-top-color: $navtopbar-sub-color-active;\n border-bottom-color: $navtopbar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navtopbar-sub-color;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-navbar {\n background-color: $navsidebar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n &.active {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navsidebar-border-color transparent;\n }\n\n // Image\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-hover;\n border-bottom-color: $navsidebar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n .caret {\n border-top-color: $navsidebar-sub-color-active;\n border-bottom-color: $navsidebar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navsidebar-sub-color;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n\n .hide-icons.mx-navbar {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-list() {\n /* ==========================================================================\n Navigation list\n\n Default Mendix navigation list widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item\n ========================================================================== */\n .mx-navigationlist {\n margin: 0;\n padding: 0;\n list-style: none;\n\n li.mx-navigationlist-item {\n @include transition();\n padding: $spacing-medium;\n border-width: 1px;\n border-style: none none solid none;\n border-color: $grid-border-color;\n border-radius: 0;\n background-color: $grid-bg;\n\n &:hover,\n &:focus {\n color: inherit;\n background-color: $grid-bg-hover;\n }\n\n &.active {\n color: inherit;\n background-color: $grid-bg-selected;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-tree() {\n /* ==========================================================================\n Navigation\n\n Default Mendix navigation tree\n ========================================================================== */\n .mx-navigationtree {\n background-color: $navigation-bg;\n\n /* Every navigation item */\n .navbar-inner > ul {\n margin: 0;\n padding-left: 0;\n\n & > li {\n padding: 0;\n border-style: none;\n\n & > a {\n display: flex;\n align-items: center;\n height: $navigation-item-height;\n padding: $navigation-item-padding;\n color: $navigation-color;\n //border-bottom: 1px solid $navigation-border-color;\n //border-radius: 0;\n background-color: $navigation-bg;\n text-shadow: none;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n img {\n width: 20px; // Default size\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n a.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n a.active {\n color: $navigation-color-active;\n border-left-color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n margin: 0;\n padding-left: 0;\n background-color: $navigation-sub-bg;\n\n li {\n margin: 0;\n padding: 0;\n border: 0;\n\n a {\n padding: $spacing-medium;\n text-decoration: none;\n color: $navigation-sub-color;\n border: 0;\n background-color: $navigation-sub-bg;\n text-shadow: none;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-small;\n }\n\n &:hover,\n &:focus,\n &.active {\n color: $navigation-sub-color-hover;\n outline: 0;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n border: 0;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-tree-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Regions\n //## Behavior in the different regions\n ========================================================================== */\n // When used in topbar\n .region-topbar {\n .mx-navigationtree {\n background-color: $navtopbar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navtopbar-color;\n border-color: $navtopbar-border-color;\n background-color: $navtopbar-bg;\n font-size: $navtopbar-font-size;\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n a.active {\n color: $navtopbar-color-active;\n border-left-color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navtopbar-sub-bg;\n li {\n a {\n color: $navtopbar-sub-color;\n background-color: $navtopbar-sub-bg;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-navigationtree {\n background-color: $navsidebar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navsidebar-color;\n border-color: $navsidebar-border-color;\n background-color: $navsidebar-bg;\n font-size: $navsidebar-font-size;\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n a.active {\n color: $navsidebar-color-active;\n border-left-color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navsidebar-sub-bg;\n li {\n a {\n color: $navsidebar-sub-color;\n background-color: $navsidebar-sub-bg;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n }\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n //-------------------------------------------------------------------------------------------------------------------//\n // Content Centerd text and icons\n .nav-content-center-text-icons.mx-navigationtree {\n .navbar-inner ul {\n a {\n flex-direction: column;\n justify-content: center;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin: 0 0 5px 0;\n }\n }\n }\n }\n\n // Content Centerd icons only\n .nav-content-center.mx-navigationtree {\n .navbar-inner ul {\n a {\n justify-content: center;\n }\n }\n }\n\n .hide-icons.mx-navigationtree {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin pop-up-menu() {\n /* ==========================================================================\n Pop-up menu\n\n Default Mendix pop-up menu\n ========================================================================== */\n .popupmenu {\n position: relative;\n display: inline-flex;\n }\n\n .popupmenu-trigger {\n cursor: pointer;\n }\n\n .popupmenu-menu {\n position: absolute;\n z-index: 999;\n display: none;\n flex-direction: column;\n width: max-content;\n border-radius: 8px;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n\n &.popupmenu-position-left:not(.popup-portal) {\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n &.popupmenu-position-right:not(.popup-portal) {\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n &.popupmenu-position-top:not(.popup-portal) {\n top: 0;\n transform: translateY(-100%);\n }\n\n &.popupmenu-position-bottom:not(.popup-portal) {\n bottom: 0;\n transform: translateY(100%);\n }\n\n .popupmenu-basic-item:first-child,\n .popupmenu-custom-item:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .popupmenu-basic-item:last-child,\n .popupmenu-custom-item:last-child {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n }\n\n .popupmenu-basic-divider {\n width: 100%;\n height: 1px;\n background-color: $brand-default;\n }\n\n .popupmenu-basic-item {\n padding: 12px 16px;\n color: $font-color-default;\n font-size: 14px;\n\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n\n &-inverse {\n color: $brand-inverse;\n }\n\n &-primary {\n color: $brand-primary;\n }\n\n &-info {\n color: $brand-info;\n }\n\n &-success {\n color: $brand-success;\n }\n\n &-warning {\n color: $brand-warning;\n }\n\n &-danger {\n color: $brand-danger;\n }\n }\n\n .popupmenu-custom-item {\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@mixin simple-menu-bar() {\n /* ==========================================================================\n Navigation\n\n Default Mendix simple menu bar\n ========================================================================== */\n .mx-menubar {\n padding: 0;\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n width: 100%;\n min-height: 58px;\n\n li.mx-menubar-item {\n margin: 0;\n\n > a {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: $navigation-item-padding;\n white-space: nowrap;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n img {\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: -1px;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n }\n\n &.active a {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n flex-direction: column;\n\n li.mx-menubar-item {\n display: block;\n\n a {\n border-bottom: 1px solid $navigation-border-color;\n }\n }\n }\n }\n\n // Horizontal variation specifics\n .mx-menubar-horizontal {\n box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14);\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n width: auto;\n\n a {\n width: 100%;\n }\n }\n }\n\n /* Two menu items */\n &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item {\n width: 50%;\n }\n\n /* Three menu items */\n &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item {\n width: 33.33333333%;\n }\n\n /* Four menu items */\n &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item {\n width: 25%;\n }\n\n /* Five menu items */\n &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item {\n width: 20%;\n }\n }\n\n //== Regions\n //## Behavior in the different regions\n //-------------------------------------------------------------------------------------------------------------------//\n // When used in topbar\n .region-topbar {\n .mx-menubar {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n }\n\n &.active a {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n height: $navigation-item-height;\n border-color: $navtopbar-border-color;\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-menubar {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n }\n\n &.active a {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n border-color: $navsidebar-border-color;\n }\n }\n }\n }\n }\n\n @supports (padding-bottom: env(safe-area-inset-bottom)) {\n .mx-menubar {\n padding-bottom: env(safe-area-inset-bottom);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin simple-menu-bar-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Center text and icons\n .bottom-nav-text-icons.mx-menubar {\n ul.mx-menubar-list {\n li.mx-menubar-item {\n flex: 1;\n a {\n flex-direction: column;\n padding: $spacing-small $spacing-small $spacing-small/2;\n line-height: normal;\n font-size: $font-size-small;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: block;\n margin: 0 0 $spacing-small/2 0;\n font-size: $font-size-large;\n }\n img {\n display: block;\n height: $font-size-large;\n margin: 0 0 $spacing-small/2 0;\n }\n }\n }\n }\n }\n\n .hide-icons.mx-menubar {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin radio-button() {\n /* ==========================================================================\n Radio button\n\n Default Mendix radio button widget\n ========================================================================== */\n .mx-radiobuttons.inline .mx-radiogroup {\n display: flex;\n flex-direction: row;\n\n .radio {\n margin: 0 20px 0 0;\n }\n }\n\n .mx-radiobuttons .radio:last-child {\n margin-bottom: 0;\n }\n\n .radio {\n display: flex !important; // Remove after mxui merge\n align-items: center;\n margin-top: 0;\n }\n\n input[type=\"radio\"] {\n position: relative !important; // Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease-in-out;\n border-radius: 50%;\n }\n\n &:before {\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid $form-input-border-color;\n background-color: transparent;\n }\n\n &:after {\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n background-color: $form-input-border-focus-color;\n }\n\n &:not(:checked):after {\n transform: translate(-50%, -50%) scale(0);\n opacity: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n background-color: $form-input-bg-hover;\n }\n\n &:checked:after,\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg;\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:checked:disabled:after {\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n & + label {\n margin-left: $form-label-gutter;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin scroll-container-dojo() {\n /* ==========================================================================\n Scroll Container\n\n Default Mendix Scroll Container Widget.\n ========================================================================== */\n .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested) {\n -webkit-overflow-scrolling: touch;\n }\n\n .mx-scrollcontainer-horizontal {\n width: 100%;\n display: table;\n table-layout: fixed;\n }\n .mx-scrollcontainer-horizontal > div {\n display: table-cell;\n vertical-align: top;\n }\n\n .mx-scrollcontainer-nested {\n padding: 0;\n }\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper {\n overflow: auto;\n }\n\n .mx-scrollcontainer-move-in {\n transition: left 250ms ease-out;\n }\n .mx-scrollcontainer-move-out {\n transition: left 250ms ease-in;\n }\n .mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable {\n transition-property: width;\n }\n\n .mx-scrollcontainer-toggleable {\n background-color: #fff;\n }\n\n .mx-scrollcontainer-push {\n position: relative;\n }\n .mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable {\n overflow: hidden;\n }\n .mx-scrollcontainer-push.mx-scrollcontainer-open > div,\n .mx-scrollcontainer-slide.mx-scrollcontainer-open > div {\n pointer-events: none;\n }\n .mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable,\n .mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable {\n pointer-events: auto;\n }\n\n // Scroll container spacing\n // NOTE: .mx-placeholder is removed in modern client for the good, this rule is going to be ignored.\n .mx-scrollcontainer .mx-placeholder {\n width: 100%;\n height: 100%;\n\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n padding: 0;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tab-container() {\n /* ==========================================================================\n Tab Container\n\n Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages.\n This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen\n ========================================================================== */\n\n .mx-tabcontainer {\n .mx-tabcontainer-tabs {\n margin-bottom: $spacing-medium;\n border-color: $tabs-border-color;\n display: flex;\n\n > li {\n float: none;\n }\n\n & > li > a {\n margin-right: 0;\n transition: all 0.2s ease-in-out;\n color: $tabs-color;\n font-weight: $font-weight-normal;\n border-radius: $border-radius-default $border-radius-default 0 0;\n\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: $tabs-color-active;\n border: 1px solid $tabs-border-color;\n border-bottom-color: #fff;\n background-color: $tabs-bg;\n }\n }\n }\n\n // Tab Styling Specific for mobile\n .tab-mobile.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n text-align: center;\n border-style: none;\n background-color: $brand-primary;\n\n li {\n display: table-cell;\n float: none; // reset bootstrap\n width: 1%;\n margin: 0;\n text-align: center;\n border-style: none;\n border-radius: 0;\n\n a {\n padding: 16px;\n text-transform: uppercase;\n color: #ffffff;\n border-width: 0 1px 0 0;\n border-style: solid;\n border-color: rgba(255, 255, 255, 0.3);\n border-radius: 0;\n font-size: 12px;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n background-color: inherit;\n }\n }\n\n &:last-child a {\n border-right: none;\n }\n\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: #ffffff;\n border-style: none;\n border-radius: 0;\n background-color: mix($brand-primary, #000000, 80%);\n }\n }\n }\n }\n\n .mx-tabcontainer-badge {\n margin-left: $spacing-small;\n border-radius: $font-size-small;\n background-color: $label-primary-bg;\n color: $label-primary-color;\n font-size: $font-size-small;\n font-weight: $font-weight-bold;\n line-height: 1;\n padding: $spacing-small/2 $spacing-small;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tab-container-helpers() {\n /* ==========================================================================\n Tab container\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Style as pills\n .tab-pills.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border: 0;\n\n & > li {\n margin-bottom: $spacing-small;\n }\n\n & > li > a {\n margin-right: $spacing-small;\n color: $tabs-color;\n border-radius: $border-radius-default;\n background-color: $tabs-bg-pills;\n\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: #ffffff;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n\n // Style with lines\n .tab-lined.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border-width: 1px;\n\n li {\n margin-right: $spacing-large;\n\n & > a {\n padding: $spacing-medium 0 ($spacing-medium - $tabs-lined-border-width) 0; // border is 3px\n color: $tabs-color;\n border: 0;\n border-bottom: $tabs-lined-border-width solid transparent;\n border-radius: 0;\n\n &:hover,\n &:focus {\n color: $tabs-color;\n border: 0;\n border-color: transparent;\n background: transparent;\n }\n }\n\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: $tabs-lined-color-active;\n border: 0;\n border-bottom: $tabs-lined-border-width solid $tabs-lined-border-color;\n background-color: transparent;\n }\n }\n }\n }\n\n // Justified style\n // Lets your tabs take 100% of the width\n .tab-justified.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n width: 100%;\n border-bottom: 0;\n\n & > li {\n flex: 1;\n float: none; // reset bootstrap\n margin: 0;\n @media (max-width: $screen-sm-max) {\n display: block;\n width: 100%;\n }\n\n & > a {\n text-align: center;\n }\n }\n }\n }\n\n // Bordered\n .tab-bordered.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n }\n\n & > .mx-tabcontainer-content {\n padding: $spacing-small;\n border-width: 0 1px 1px 1px;\n border-style: solid;\n border-color: $tabs-border-color;\n background-color: transparent;\n }\n }\n\n // Wizard\n .tab-wizard.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n position: relative;\n display: flex;\n justify-content: space-between;\n border-style: none;\n\n &::before {\n position: absolute;\n top: $spacing-medium;\n display: block;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: $tabs-border-color;\n }\n\n & > li {\n position: relative;\n float: none; // reset bootstrap\n width: 100%;\n text-align: center;\n\n & > a {\n width: calc((#{$spacing-medium} * 2) + 1px);\n height: calc((#{$spacing-medium} * 2) + 1px);\n margin: auto;\n padding: 0;\n text-align: center;\n color: $brand-primary;\n border: 1px solid $tabs-border-color;\n border-radius: 100%;\n background-color: $bg-color;\n font-size: $font-size-large;\n font-weight: bold;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n &.active {\n & > a,\n & > a:hover,\n & > a:focus {\n color: #ffffff;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n }\n }\n\n //add tabcontainer flex classes\n\n .tab-center.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: center;\n }\n }\n\n .tab-left.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: flex-start;\n }\n }\n\n .tab-right.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: flex-end;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin table() {\n /* ==========================================================================\n Table\n\n Default Mendix table widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets\n ========================================================================== */\n\n th {\n font-weight: $font-weight-bold;\n }\n\n html body .mx-page table.mx-table {\n th,\n td {\n &.nopadding {\n padding: 0;\n }\n }\n }\n\n table.mx-table {\n > tbody {\n /* Table row */\n > tr {\n /* Table header */\n > th {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n\n s * {\n color: $form-label-color;\n font-weight: $font-weight-bold;\n font-weight: $form-label-weight;\n }\n\n > label {\n padding-top: 8px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n\n /* Table cells */\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n\n > div > label,\n .mx-referenceselector-input-wrapper label {\n padding-top: 8px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n }\n }\n }\n\n // Default Mendix Table Widget inside TemplateGrid\n .mx-templategrid table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n }\n }\n }\n }\n\n // Default Mendix Table Widget inside Listview\n .mx-list table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin table-helpers() {\n /* ==========================================================================\n Table\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Lined\n table.table-lined.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td {\n border-width: 1px 0;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n }\n\n // Bordered\n table.table-bordered.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n border-width: 1px;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n }\n\n // Makes table compact\n table.table-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n\n // Tables Vertical\n // Will remove unwanted paddings\n table.table-vertical.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n > th {\n padding-bottom: 0;\n\n > label {\n padding: 0;\n }\n\n > div > label {\n padding: 0;\n }\n }\n }\n }\n }\n\n // Align content in middle\n table.table-align-vertical-middle.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n vertical-align: middle;\n }\n }\n }\n }\n\n // Compact labels\n table.table-label-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n > label {\n margin: 0;\n padding: 0;\n }\n\n > div > label,\n .mx-referenceselector-input-wrapper label {\n margin: 0;\n padding: 0;\n }\n }\n }\n }\n }\n\n $height-row-s: 55px;\n $height-row-m: 70px;\n $height-row-l: 120px;\n // Small rows\n table.table-row-s.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-s;\n }\n }\n }\n }\n\n // Medium rows\n table.table-row-m.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-m;\n }\n }\n }\n }\n\n // Large rows\n table.table-row-l.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-l;\n }\n }\n }\n }\n\n // Makes the columns fixed\n table.table-fixed {\n table-layout: fixed;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin template-grid() {\n /* ==========================================================================\n Template grid\n\n Default Mendix template grid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows\n ========================================================================== */\n\n .mx-templategrid {\n .mx-templategrid-content-wrapper {\n table-layout: fixed;\n }\n\n .mx-templategrid-item {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n cursor: default;\n background-color: $grid-bg;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n }\n }\n\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin template-grid-helpers() {\n /* ==========================================================================\n Template grid\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Make sure your content looks selectable\n .templategrid-selectable.mx-templategrid {\n .mx-templategrid-item {\n cursor: pointer;\n }\n }\n\n // Lined\n .templategrid-lined.mx-templategrid {\n .mx-grid-content {\n border-top-width: 2px;\n border-top-style: solid;\n border-top-color: $grid-border-color;\n }\n\n .mx-templategrid-item {\n border-top: 1px solid $grid-border-color;\n border-right: none;\n border-bottom: 1px solid $grid-border-color;\n border-left: none;\n }\n }\n\n // Striped\n .templategrid-striped.mx-templategrid {\n .mx-templategrid-row:nth-child(odd) .mx-templategrid-item {\n background-color: #f9f9f9;\n }\n }\n\n // Stylingless\n .templategrid-stylingless.mx-templategrid {\n .mx-templategrid-item {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n }\n\n // Transparent items\n .templategrid-transparent.mx-templategrid {\n .mx-templategrid-item {\n border: 0;\n background-color: transparent;\n }\n }\n\n // Hover\n .templategrid-hover.mx-templategrid {\n .mx-templategrid-item {\n &:hover {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n\n &:hover {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n }\n\n // Templategrid Row Sizes\n .templategrid-lg.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n }\n\n .templategrid-sm.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left / 2);\n }\n }\n\n // Templategrid Layoutgrid styles\n .mx-templategrid[class*=\"tg-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n .mx-templategrid-content-wrapper {\n display: block;\n }\n\n .mx-templategrid-row {\n display: block;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n }\n\n .mx-templategrid-item {\n // bootstrap col\n position: relative;\n display: block;\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: 992px) {\n width: 100% !important;\n }\n\n .mx-dataview {\n overflow: hidden;\n }\n }\n\n &.tg-col-xs-12 .mx-templategrid-item {\n width: 100% !important;\n }\n\n &.tg-col-xs-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n\n &.tg-col-xs-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n\n &.tg-col-xs-9 .mx-templategrid-item {\n width: 75% !important;\n }\n\n &.tg-col-xs-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n\n &.tg-col-xs-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n\n &.tg-col-xs-6 .mx-templategrid-item {\n width: 50% !important;\n }\n\n &.tg-col-xs-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n\n &.tg-col-xs-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n\n &.tg-col-xs-3 .mx-templategrid-item {\n width: 25% !important;\n }\n\n &.tg-col-xs-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n\n &.tg-col-xs-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n\n @media (min-width: 768px) {\n &.tg-col-sm-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-sm-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-sm-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-sm-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-sm-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-sm-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-sm-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-sm-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-sm-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-sm-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-sm-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-sm-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 992px) {\n &.tg-col-md-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-md-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-md-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-md-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-md-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-md-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-md-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-md-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-md-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-md-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-md-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-md-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 1200px) {\n &.tg-col-lg-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-lg-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-lg-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-lg-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-lg-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-lg-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-lg-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-lg-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-lg-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-lg-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-lg-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-lg-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin typography() {\n /* ==========================================================================\n Typography\n ========================================================================== */\n\n p {\n line-height: $line-height-base * 1.25;\n margin: 0 0 $spacing-small;\n }\n\n .mx-title {\n margin: $font-header-margin;\n color: $font-color-header;\n font-size: $font-size-h1;\n font-weight: $font-weight-header;\n }\n\n h1,\n .h1,\n .h1 > * {\n font-size: $font-size-h1;\n }\n\n h2,\n .h2,\n .h2 > * {\n font-size: $font-size-h2;\n }\n\n h3,\n .h3,\n .h3 > * {\n font-size: $font-size-h3;\n }\n\n h4,\n .h4,\n .h4 > * {\n font-size: $font-size-h4;\n }\n\n h5,\n .h5,\n .h5 > * {\n font-size: $font-size-h5;\n }\n\n h6,\n .h6,\n .h6 > * {\n font-size: $font-size-h6;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n margin: $font-header-margin;\n color: $font-color-header;\n font-weight: $font-weight-header;\n line-height: 1.3;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin typography-helpers() {\n /* ==========================================================================\n Typography\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Text size\n .text-small {\n font-size: $font-size-small !important;\n }\n\n .text-large {\n font-size: $font-size-large !important;\n }\n\n // Text Weights\n .text-light,\n .text-light > *,\n .text-light label {\n font-weight: $font-weight-light !important;\n }\n\n .text-normal,\n .text-normal > *,\n .text-normal label {\n font-weight: $font-weight-normal !important;\n }\n\n .text-semibold,\n .text-semibold > *,\n .text-semibold label {\n font-weight: $font-weight-semibold !important;\n }\n\n .text-bold,\n .text-bold > *,\n .text-bold label {\n font-weight: $font-weight-bold !important;\n }\n\n // Color variations\n .text-secondary,\n .text-secondary:hover,\n .text-default,\n .text-default:hover {\n color: $font-color-default !important;\n }\n\n .text-primary,\n .text-primary:hover {\n color: $brand-primary !important;\n }\n\n .text-info,\n .text-info:hover {\n color: $brand-info !important;\n }\n\n .text-success,\n .text-success:hover {\n color: $brand-success !important;\n }\n\n .text-warning,\n .text-warning:hover {\n color: $brand-warning !important;\n }\n\n .text-danger,\n .text-danger:hover {\n color: $brand-danger !important;\n }\n\n .text-header {\n color: $font-color-header !important;\n }\n\n .text-detail {\n color: $font-color-detail !important;\n }\n\n .text-white {\n color: #ffffff;\n }\n\n // Alignment options\n .text-left {\n text-align: left !important;\n }\n .text-center {\n text-align: center !important;\n }\n .text-right {\n text-align: right !important;\n }\n .text-justify {\n text-align: justify !important;\n }\n\n // Transform options\n .text-lowercase {\n text-transform: lowercase !important;\n }\n .text-uppercase {\n text-transform: uppercase !important;\n }\n .text-capitalize {\n text-transform: capitalize !important;\n }\n\n // Wrap options\n .text-break {\n word-break: break-all !important;\n word-break: break-word !important;\n -webkit-hyphens: auto !important;\n hyphens: auto !important;\n }\n\n .text-nowrap {\n white-space: nowrap !important;\n }\n\n .text-nowrap {\n overflow: hidden !important;\n max-width: 100% !important;\n white-space: nowrap !important;\n text-overflow: ellipsis !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-grid() {\n /* ==========================================================================\n Layout grid\n\n Default Bootstrap containers\n ========================================================================== */\n .mx-layoutgrid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n }\n\n // Row\n .row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter-size;\n margin-left: -$gutter-size;\n\n &::before,\n &::after {\n content: normal;\n }\n }\n\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n }\n\n .no-gutters > .col,\n .no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n\n // Columns\n .col-1,\n .col-2,\n .col-3,\n .col-4,\n .col-5,\n .col-6,\n .col-7,\n .col-8,\n .col-9,\n .col-10,\n .col-11,\n .col-12,\n .col,\n .col-auto,\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12,\n .col-sm,\n .col-sm-auto,\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12,\n .col-md,\n .col-md-auto,\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12,\n .col-lg,\n .col-lg-auto,\n .col-xl-1,\n .col-xl-2,\n .col-xl-3,\n .col-xl-4,\n .col-xl-5,\n .col-xl-6,\n .col-xl-7,\n .col-xl-8,\n .col-xl-9,\n .col-xl-10,\n .col-xl-11,\n .col-xl-12,\n .col-xl,\n .col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n }\n\n .col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n\n .col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n\n .col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n\n .col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n\n .col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n\n .col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n\n .col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n\n .col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n\n .col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-first {\n order: -1;\n }\n\n .order-last {\n order: 13;\n }\n\n .order-0 {\n order: 0;\n }\n\n .order-1 {\n order: 1;\n }\n\n .order-2 {\n order: 2;\n }\n\n .order-3 {\n order: 3;\n }\n\n .order-4 {\n order: 4;\n }\n\n .order-5 {\n order: 5;\n }\n\n .order-6 {\n order: 6;\n }\n\n .order-7 {\n order: 7;\n }\n\n .order-8 {\n order: 8;\n }\n\n .order-9 {\n order: 9;\n }\n\n .order-10 {\n order: 10;\n }\n\n .order-11 {\n order: 11;\n }\n\n .order-12 {\n order: 12;\n }\n\n .offset-1,\n .col-offset-1 {\n margin-left: 8.333333%;\n }\n\n .offset-2,\n .col-offset-2 {\n margin-left: 16.666667%;\n }\n\n .offset-3,\n .col-offset-3 {\n margin-left: 25%;\n }\n\n .offset-4,\n .col-offset-4 {\n margin-left: 33.333333%;\n }\n\n .offset-5,\n .col-offset-5 {\n margin-left: 41.666667%;\n }\n\n .offset-6,\n .col-offset-6 {\n margin-left: 50%;\n }\n\n .offset-7,\n .col-offset-7 {\n margin-left: 58.333333%;\n }\n\n .offset-8,\n .col-offset-8 {\n margin-left: 66.666667%;\n }\n\n .offset-9,\n .col-offset-9 {\n margin-left: 75%;\n }\n\n .offset-10,\n .col-offset-10 {\n margin-left: 83.333333%;\n }\n\n .offset-11,\n .col-offset-11 {\n margin-left: 91.666667%;\n }\n\n // Responsiveness\n @media (min-width: $screen-sm) {\n .mx-layoutgrid-fixed {\n max-width: 540px;\n }\n }\n\n @media (min-width: $screen-md) {\n .mx-layoutgrid-fixed {\n max-width: 720px;\n }\n }\n\n @media (min-width: $screen-lg) {\n .mx-layoutgrid-fixed {\n max-width: 960px;\n }\n }\n\n @media (min-width: $screen-xl) {\n .mx-layoutgrid-fixed {\n max-width: 1140px;\n }\n }\n\n @media (min-width: $screen-sm) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0,\n .col-sm-offset-0 {\n margin-left: 0;\n }\n .offset-sm-1,\n .col-sm-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2,\n .col-sm-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3,\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .offset-sm-4,\n .col-sm-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5,\n .col-sm-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6,\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .offset-sm-7,\n .col-sm-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8,\n .col-sm-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9,\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .offset-sm-10,\n .col-sm-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11,\n .col-sm-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-md) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0,\n .col-md-offset-0 {\n margin-left: 0;\n }\n .offset-md-1,\n .col-md-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2,\n .col-md-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3,\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .offset-md-4,\n .col-md-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5,\n .col-md-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6,\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .offset-md-7,\n .col-md-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8,\n .col-md-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9,\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .offset-md-10,\n .col-md-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11,\n .col-md-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-lg) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0,\n .col-lg-offset-0 {\n margin-left: 0;\n }\n .offset-lg-1,\n .col-lg-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2,\n .col-lg-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3,\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .offset-lg-4,\n .col-lg-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5,\n .col-lg-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6,\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .offset-lg-7,\n .col-lg-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8,\n .col-lg-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9,\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .offset-lg-10,\n .col-lg-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11,\n .col-lg-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-xl) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0,\n .col-xl-offset-0 {\n margin-left: 0;\n }\n .offset-xl-1,\n .col-xl-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2,\n .col-xl-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3,\n .col-xl-offset-3 {\n margin-left: 25%;\n }\n .offset-xl-4,\n .col-xl-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5,\n .col-xl-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6,\n .col-xl-offset-6 {\n margin-left: 50%;\n }\n .offset-xl-7,\n .col-xl-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8,\n .col-xl-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9,\n .col-xl-offset-9 {\n margin-left: 75%;\n }\n .offset-xl-10,\n .col-xl-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11,\n .col-xl-offset-11 {\n margin-left: 91.666667%;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin pagination() {\n /* ==========================================================================\n Pagination\n\n Default Mendix pagination widget.\n ========================================================================== */\n\n .widget-pagination {\n overflow: unset;\n\n .pagination {\n overflow: unset;\n\n .btn {\n &:hover {\n color: $btn-default-color;\n background-color: $btn-default-bg-hover;\n }\n\n &:focus {\n outline: unset;\n outline-offset: unset;\n box-shadow: 0 0 0 0.3rem $color-primary-light;\n }\n }\n\n ul {\n margin-top: unset;\n margin-bottom: unset;\n\n li {\n display: inline-flex;\n align-items: center;\n width: unset;\n min-width: 24px;\n min-height: 24px;\n margin-right: 16px;\n padding: 4px 8px;\n transition: all 0.2s ease-in-out;\n color: $font-color-default;\n border-radius: $border-radius-default;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:not(.break-view) {\n &:hover {\n color: $btn-default-color;\n background-color: $btn-default-bg-hover;\n }\n\n &:focus {\n outline: unset;\n outline-offset: unset;\n box-shadow: 0 0 0 0.3rem $color-primary-light;\n }\n\n &.active {\n color: $btn-primary-color;\n background-color: $btn-primary-bg;\n }\n\n &.active:hover {\n color: $btn-primary-color;\n background-color: $btn-primary-bg-hover;\n }\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress() {\n /* ==========================================================================\n Progress\n\n Default Mendix progress widget.\n ========================================================================== */\n\n .mx-progress {\n color: $font-color-default;\n background: $bg-color-secondary;\n\n .mx-progress-message {\n color: $font-color-default;\n }\n\n .mx-progress-indicator {\n position: relative;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n height: 2px;\n margin: auto;\n padding: 0;\n border-radius: 0;\n background: $gray-lighter;\n\n &:before,\n &:after {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 50%;\n height: 2px;\n content: \"\";\n transform: translate3d(-100%, 0, 0);\n background: $brand-primary;\n }\n\n &::before {\n animation: loader 2s infinite;\n }\n\n &::after {\n animation: loader 2s -2s infinite;\n }\n }\n }\n\n @keyframes loader {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(200%, 0, 0);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-bar() {\n /* ==========================================================================\n Progress bar\n\n Default Mendix progress bar widget.\n ========================================================================== */\n\n .progress {\n overflow: hidden;\n display: flex;\n flex-direction: row;\n }\n\n .progress-bar {\n align-self: flex-start;\n width: 0;\n height: 100%;\n transition: width 0.6s ease;\n text-align: center;\n color: #ffffff;\n border-radius: $border-radius-default;\n font-weight: $font-weight-semibold;\n }\n\n .progress-striped .progress-bar,\n .progress-bar-striped {\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-size: 40px 40px;\n }\n\n .widget-progress-bar.active .progress-bar,\n .progress.active .progress-bar,\n .progress-bar.active {\n animation: progress-bar-stripes 2s linear infinite;\n }\n\n @keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-bar-helpers() {\n /* ==========================================================================\n Progress Bar\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-progress-bar {\n width: 100%;\n\n .progress {\n border-radius: $border-radius-default;\n background-color: $bg-color;\n }\n }\n\n .progress-bar-medium .progress,\n .progress-bar-medium .progress-bar {\n height: 16px;\n line-height: 16px;\n font-size: $font-size-small;\n }\n\n .progress-bar-small .progress,\n .progress-bar-small .progress-bar {\n height: 8px;\n line-height: 8px;\n font-size: 0px;\n }\n\n .progress-bar-small .progress-bar > * {\n // Specifically to hide custom labels.\n display: none;\n }\n\n .progress-bar-large .progress,\n .progress-bar-large .progress-bar {\n height: 24px;\n line-height: 24px;\n font-size: $font-size-default;\n }\n\n .widget-progress-bar-clickable:hover {\n cursor: pointer;\n }\n\n .widget-progress-bar.progress-bar-primary .progress-bar {\n background-color: $brand-primary;\n }\n\n .widget-progress-bar.progress-bar-success .progress-bar {\n background-color: $brand-success;\n }\n\n .widget-progress-bar.progress-bar-warning .progress-bar {\n background-color: $brand-warning;\n }\n\n .widget-progress-bar.progress-bar-danger .progress-bar {\n background-color: $brand-danger;\n }\n\n .widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar {\n color: $color-danger-darker;\n }\n\n .widget-progress-bar-text-contrast .progress-bar {\n color: $font-color-default;\n }\n\n .widget-progress-bar-negative {\n float: right;\n display: block;\n }\n\n .widget-progress-bar > .alert {\n margin-top: 24px;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-circle() {\n /* ==========================================================================\n Progress Circle\n\n Default Mendix progress circle widget.\n ========================================================================== */\n\n .widget-progress-circle {\n display: inline-block;\n }\n\n .widget-progress-circle-trail-path {\n stroke: $bg-color;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-circle-helpers() {\n /* ==========================================================================\n Progress Circle\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n //== Progress circle and label colors\n .widget-progress-circle-primary {\n .widget-progress-circle-path {\n stroke: $brand-primary;\n }\n\n .progressbar-text {\n color: $brand-primary !important;\n }\n }\n\n .widget-progress-circle-success {\n .widget-progress-circle-path {\n stroke: $brand-success;\n }\n\n .progressbar-text {\n color: $brand-success !important;\n }\n }\n\n .widget-progress-circle-warning {\n .widget-progress-circle-path {\n stroke: $brand-warning;\n }\n\n .progressbar-text {\n color: $brand-warning !important;\n }\n }\n\n .widget-progress-circle-danger {\n .widget-progress-circle-path {\n stroke: $brand-danger;\n }\n\n .progressbar-text {\n color: $brand-danger !important;\n }\n }\n\n //== Sizes\n .widget-progress-circle-thickness-medium {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 8px;\n }\n }\n\n .widget-progress-circle-thickness-small {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 4px;\n }\n }\n\n .widget-progress-circle-thickness-large {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 16px;\n }\n }\n\n //== Progress label container\n .progress-circle-label-container {\n position: relative;\n margin: 0;\n\n .progressbar-text {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: 0px;\n margin: 0px;\n transform: translate(-50%, -50%);\n // Original default from the `progressbar.js` library\n color: rgb(85, 85, 85);\n }\n }\n\n .widget-progress-circle-clickable {\n cursor: pointer;\n }\n\n @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .widget-progress-circle > div {\n height: 0;\n padding: 0;\n width: 100%;\n padding-bottom: 100%;\n\n & > svg {\n top: 0;\n left: 0;\n height: 100%;\n position: absolute;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin rating() {\n /* ==========================================================================\n Rating\n\n Default Mendix rating widget.\n ========================================================================== */\n\n .widget-star-rating-empty {\n color: #cccccc;\n }\n\n .widget-star-rating-full-widget {\n color: #ffa611;\n }\n\n .widget-star-rating-full-default {\n color: #ced0d3;\n }\n\n .widget-star-rating-font-medium {\n font-size: 30px;\n }\n\n .widget-rating {\n .rating-icon {\n font-size: 24px;\n }\n\n .rating-icon-empty {\n color: #ccc;\n }\n\n .rating-icon-full {\n color: #ffa611;\n }\n\n .rating-item {\n &:focus:not(:focus-visible) {\n .rating-image,\n .rating-icon {\n outline: none;\n }\n }\n\n &:focus-visible {\n .rating-image,\n .rating-icon {\n outline: 1px solid $brand-primary;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin rating-helpers() {\n /* ==========================================================================\n Rating\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-star-rating-full-primary {\n color: $brand-primary;\n }\n\n .widget-star-rating-full-success {\n color: $brand-success;\n }\n\n .widget-star-rating-full-info {\n color: $brand-info;\n }\n\n .widget-star-rating-full-warning {\n color: $brand-warning;\n }\n\n .widget-star-rating-full-danger {\n color: $brand-danger;\n }\n\n .widget-star-rating-full-inverse {\n color: $brand-inverse;\n }\n\n .widget-rating {\n &.widget-rating-small {\n .rating-icon {\n font-size: 16px;\n }\n .rating-image {\n height: 16px;\n }\n }\n &.widget-rating-large {\n .rating-icon {\n font-size: 32px;\n }\n .rating-image {\n height: 32px;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@import \"../helpers/slider-color-variant\";\n\n@mixin range-slider() {\n /* ==========================================================================\n Range slider\n\n Default Mendix range slider widget.\n ========================================================================== */\n\n .widget-range-slider {\n margin-bottom: 16px;\n padding: 5px 10px;\n\n .rc-slider-handle {\n border-color: $brand-default;\n }\n\n .rc-slider.rc-slider-with-marks {\n padding-bottom: 25px;\n }\n\n @include slider-color-variant($brand-primary);\n }\n}\n","@mixin slider-color-variant($color) {\n .rc-slider:not(.rc-slider-disabled) {\n .rc-slider-track {\n background-color: $color;\n }\n\n .rc-slider-handle:focus {\n border-color: $color;\n box-shadow: 0 0 0 5px lighten($color, 25%);\n outline: none;\n }\n\n .rc-slider-handle-click-focused:focus {\n border-color: lighten($color, 25%);\n box-shadow: unset;\n }\n\n .rc-slider-dot-active,\n .rc-slider-handle:hover {\n border-color: $color;\n }\n\n .rc-slider-handle:active {\n border-color: $color;\n box-shadow: 0 0 5px $color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@import \"slider-color-variant\";\n\n@mixin range-slider-helpers() {\n /* ==========================================================================\n Range Slider\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-range-slider-primary {\n @include slider-color-variant($brand-primary);\n }\n\n .widget-range-slider-success {\n @include slider-color-variant($brand-success);\n }\n\n .widget-range-slider-warning {\n @include slider-color-variant($brand-warning);\n }\n\n .widget-range-slider-danger {\n @include slider-color-variant($brand-danger);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@import \"../helpers/slider-color-variant\";\n\n@mixin slider() {\n /* ==========================================================================\n Slider\n\n Default Mendix slider widget.\n ========================================================================== */\n\n .widget-slider {\n margin-bottom: 16px;\n padding: 5px 10px;\n\n .rc-slider-handle {\n border-color: $brand-default;\n }\n\n .rc-slider.rc-slider-with-marks {\n padding-bottom: 25px;\n }\n\n @include slider-color-variant($brand-primary);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@import \"slider-color-variant\";\n\n@mixin slider-helpers() {\n /* ==========================================================================\n Slider\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-slider-primary {\n @include slider-color-variant($brand-primary);\n }\n\n .widget-slider-success {\n @include slider-color-variant($brand-success);\n }\n\n .widget-slider-warning {\n @include slider-color-variant($brand-warning);\n }\n\n .widget-slider-danger {\n @include slider-color-variant($brand-danger);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin timeline() {\n /* ==========================================================================\n Timeline\n\n Widget styles\n ========================================================================== */\n\n //Timeline grouping\n .widget-timeline-date-header {\n display: flex;\n justify-content: center;\n width: $timeline-grouping-size;\n overflow-wrap: break-word;\n padding: $spacing-small;\n border: 1px solid $timeline-grouping-border-color;\n border-radius: $timeline-grouping-border-radius;\n }\n\n //Timeline entries\n .widget-timeline-events-wrapper {\n display: flex;\n flex: 1;\n margin-left: $timeline-grouping-size/2;\n padding: $spacing-large 0 0 0;\n border-left: 1px solid $timeline-border-color;\n\n ul {\n flex: 1;\n padding: 0;\n list-style: none;\n margin-bottom: 0;\n }\n }\n\n //Timeline entry\n .widget-timeline-event {\n flex: 1;\n position: relative;\n margin-left: -1px;\n padding: 0 $spacing-large $spacing-large $spacing-large;\n margin-bottom: $spacing-medium;\n\n &.clickable {\n cursor: pointer;\n transition: background 0.8s;\n\n &:hover {\n .widget-timeline-title {\n }\n }\n }\n }\n\n //Timeline entry content wrapper\n .widget-timeline-icon-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n transform: translateX(-50%);\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $timeline-icon-size;\n }\n\n img {\n max-width: 100%;\n max-height: 100%;\n }\n }\n\n .widget-timeline-content-wrapper {\n display: flex;\n\n .widget-timeline-date-time-wrapper {\n order: 2;\n margin-right: 0;\n }\n\n .widget-timeline-info-wrapper {\n flex: 1;\n order: 1;\n margin-right: $spacing-medium;\n }\n }\n\n .timeline-with-image .widget-timeline-content-wrapper {\n display: flex;\n\n .widget-timeline-date-time-wrapper {\n order: 1;\n margin-right: $spacing-medium;\n }\n\n .widget-timeline-info-wrapper {\n flex: 1;\n order: 2;\n }\n }\n\n //Timeline entry components\n .widget-timeline-icon-circle {\n width: $timeline-icon-size;\n height: $timeline-icon-size;\n border-radius: 50%;\n background-color: $timeline-icon-color;\n }\n\n .widget-timeline-title {\n @extend h5;\n }\n\n .widget-timeline-description {\n }\n\n .widget-timeline-no-divider {\n }\n\n .widget-eventTime {\n @extend h5;\n color: $timeline-event-time-color;\n }\n\n .timeline-entry-image {\n display: flex;\n justify-content: center;\n align-content: center;\n border-radius: $border-radius-default;\n height: $timeline-image-size;\n width: $timeline-image-size;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tooltip() {\n /* ==========================================================================\n Tooltip\n\n Widget styles\n ========================================================================== */\n\n // Tooltip inline\n .widget-tooltip-inline {\n display: inline-block;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin helper-classes() {\n /* ==========================================================================\n Helper\n\n Default Mendix helpers\n ========================================================================== */\n $important-helpers-value: if($important-helpers, \" !important\", \"\");\n\n // Display properties\n .d-none {\n display: none #{$important-helpers-value};\n }\n\n .d-flex {\n display: flex #{$important-helpers-value};\n }\n\n .d-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n\n .d-inline {\n display: inline #{$important-helpers-value};\n }\n\n .d-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n\n .show,\n .d-block {\n display: block #{$important-helpers-value};\n }\n\n .table,\n .d-table {\n display: table #{$important-helpers-value};\n }\n\n .table-row,\n .d-table-row {\n display: table-row #{$important-helpers-value};\n }\n\n .table-cell,\n .d-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n\n .hide,\n .hidden {\n display: none #{$important-helpers-value};\n visibility: hidden #{$important-helpers-value};\n }\n\n .invisible {\n visibility: hidden #{$important-helpers-value};\n }\n\n .display-ie8-only:not([attr*=\"\"]) {\n display: none #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n }\n\n .list-nostyle {\n ul {\n margin: 0 #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n\n li {\n list-style-type: none #{$important-helpers-value};\n }\n }\n }\n\n .nowrap,\n .nowrap * {\n overflow: hidden #{$important-helpers-value};\n // Star for inside an element, IE8 span > a\n white-space: nowrap #{$important-helpers-value};\n text-overflow: ellipsis #{$important-helpers-value};\n }\n\n // Render DIV as Table Cells\n .table {\n display: table #{$important-helpers-value};\n }\n\n .table-row {\n display: table-row #{$important-helpers-value};\n }\n\n .table-cell {\n display: table-cell #{$important-helpers-value};\n }\n\n // Quick floats\n .pull-left {\n float: left #{$important-helpers-value};\n }\n\n .pull-right {\n float: right #{$important-helpers-value};\n }\n\n // Align options\n .align-top {\n vertical-align: top #{$important-helpers-value};\n }\n\n .align-middle {\n vertical-align: middle #{$important-helpers-value};\n }\n\n .align-bottom {\n vertical-align: bottom #{$important-helpers-value};\n }\n\n // Flex alignments\n .row-left {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-start #{$important-helpers-value};\n }\n\n .row-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .row-right {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-end #{$important-helpers-value};\n }\n\n .col-left {\n display: flex #{$important-helpers-value};\n align-items: flex-start #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .col-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .col-right {\n display: flex #{$important-helpers-value};\n align-items: flex-end #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .shadow-small {\n box-shadow: $shadow-small $shadow-color;\n margin-bottom: 5px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n .shadow-medium {\n box-shadow: $shadow-medium $shadow-color;\n margin-bottom: 15px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n\n .shadow-large {\n box-shadow: $shadow-large $shadow-color;\n margin-bottom: 25px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n\n // Media\n @media (max-width: $screen-sm-max) {\n .hide-phone {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-tablet {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-lg) {\n .hide-desktop {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (max-width: $screen-xs-max) {\n .hide-xs,\n .hidden-xs,\n .d-xs-none {\n display: none #{$important-helpers-value};\n }\n .d-xs-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xs-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xs-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xs-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xs-block {\n display: block #{$important-helpers-value};\n }\n .d-xs-table {\n display: table #{$important-helpers-value};\n }\n .d-xs-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xs-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {\n .hide-sm,\n .hidden-sm,\n .d-sm-none {\n display: none #{$important-helpers-value};\n }\n .d-sm-flex {\n display: flex #{$important-helpers-value};\n }\n .d-sm-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-sm-inline {\n display: inline #{$important-helpers-value};\n }\n .d-sm-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-sm-block {\n display: block #{$important-helpers-value};\n }\n .d-sm-table {\n display: table #{$important-helpers-value};\n }\n .d-sm-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-sm-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-md,\n .hidden-md,\n .d-md-none {\n display: none #{$important-helpers-value};\n }\n .d-md-flex {\n display: flex #{$important-helpers-value};\n }\n .d-md-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-md-inline {\n display: inline #{$important-helpers-value};\n }\n .d-md-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-md-block {\n display: block #{$important-helpers-value};\n }\n .d-md-table {\n display: table #{$important-helpers-value};\n }\n .d-md-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-md-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-lg) and (max-width: $screen-xl) {\n .hide-lg,\n .hidden-lg,\n .d-lg-none {\n display: none #{$important-helpers-value};\n }\n .d-lg-flex {\n display: flex #{$important-helpers-value};\n }\n .d-lg-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-lg-inline {\n display: inline #{$important-helpers-value};\n }\n .d-lg-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-lg-block {\n display: block #{$important-helpers-value};\n }\n .d-lg-table {\n display: table #{$important-helpers-value};\n }\n .d-lg-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-lg-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-xl) {\n .hide-xl,\n .hidden-xl,\n .d-xl-none {\n display: none #{$important-helpers-value};\n }\n .d-xl-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xl-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xl-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xl-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xl-block {\n display: block #{$important-helpers-value};\n }\n .d-xl-table {\n display: table #{$important-helpers-value};\n }\n .d-xl-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xl-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n //Box-shadow\n\n .shadow {\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05) #{$important-helpers-value};\n }\n\n //Height helpers\n\n .h-25 {\n height: 25% #{$important-helpers-value};\n }\n\n .h-50 {\n height: 50% #{$important-helpers-value};\n }\n\n .h-75 {\n height: 75% #{$important-helpers-value};\n }\n\n .h-100 {\n height: 100% #{$important-helpers-value};\n }\n\n //Width helpers\n\n .w-25 {\n width: 25% #{$important-helpers-value};\n }\n\n .w-50 {\n width: 50% #{$important-helpers-value};\n }\n\n .w-75 {\n width: 75% #{$important-helpers-value};\n }\n\n .w-100 {\n width: 100% #{$important-helpers-value};\n }\n\n //Border helpers\n .border {\n border: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-top {\n border-top: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-bottom {\n border-bottom: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-left {\n border-left: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-right {\n border-right: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-rounded {\n border-radius: $border-radius-default #{$important-helpers-value};\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin barcode-scanner() {\n /* ==========================================================================\n Barcode-scanner\n\n Override of default Bootstrap barcode-scanner style\n ========================================================================== */\n\n .mx-barcode-scanner {\n background: #000000;\n z-index: 110;\n\n .close-button {\n color: white;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: 16px;\n }\n }\n\n .video-canvas {\n .canvas-background {\n background-color: rgba(0, 0, 0, 0.7);\n }\n\n .canvas-middle {\n .canvas-middle-middle {\n $corner-offset: 13px;\n .corner {\n $corner-border: 5px solid #ffffff;\n border-left: $corner-border;\n border-top: $corner-border;\n\n &.corner-top-left {\n top: -$corner-offset;\n left: -$corner-offset;\n }\n &.corner-top-right {\n top: -$corner-offset;\n right: -$corner-offset;\n transform: rotate(90deg);\n }\n &.corner-bottom-right {\n bottom: -$corner-offset;\n right: -$corner-offset;\n transform: rotate(180deg);\n }\n &.corner-bottom-left {\n bottom: -$corner-offset;\n left: -$corner-offset;\n transform: rotate(270deg);\n }\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin accordion() {\n /* ==========================================================================\n Accordion\n\n Default Mendix accordion widget styles.\n ========================================================================== */\n\n .widget-accordion {\n .widget-accordion-group {\n @include get-accordion-group-styles(\n $accordion-header-default-bg,\n $accordion-header-default-bg-hover,\n $accordion-header-default-color,\n $brand-primary,\n $accordion-default-border-color\n );\n }\n\n &.widget-accordion-preview {\n .widget-accordion-group {\n @include get-accordion-preview-group-styles($accordion-header-default-color);\n }\n }\n }\n}\n\n@mixin get-accordion-group-styles($background-color, $background-color-hover, $color, $color-hover, $border-color) {\n border-color: $border-color;\n background-color: $bg-color-secondary;\n\n &:first-child {\n border-top-left-radius: $border-radius-default;\n border-top-right-radius: $border-radius-default;\n\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n border-top-left-radius: calc(#{$border-radius-default} - 1px);\n border-top-right-radius: calc(#{$border-radius-default} - 1px);\n }\n }\n\n &:last-child {\n border-bottom-left-radius: $border-radius-default;\n border-bottom-right-radius: $border-radius-default;\n }\n\n &.widget-accordion-group-collapsed:last-child,\n &.widget-accordion-group-collapsing:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n border-bottom-left-radius: calc(#{$border-radius-default} - 1px);\n border-bottom-right-radius: calc(#{$border-radius-default} - 1px);\n }\n }\n\n &.widget-accordion-group-collapsing:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n transition: border-radius 5ms ease 200ms;\n }\n }\n\n &.widget-accordion-group-expanding:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n transition: border-radius 5ms ease 80ms;\n }\n }\n\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n cursor: auto;\n background-color: $background-color;\n padding: $spacing-medium;\n\n > :is(h1, h2, h3, h4, h5, h6) {\n font-size: $font-size-h5;\n font-weight: $font-weight-header;\n }\n\n > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color;\n }\n\n .widget-accordion-group-header-button-icon {\n fill: $color;\n }\n\n &.widget-accordion-group-header-button-clickable {\n &:hover,\n &:focus,\n &:active {\n background-color: $background-color-hover;\n\n > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color-hover;\n }\n\n .widget-accordion-group-header-button-icon {\n fill: $color-hover;\n }\n }\n }\n }\n\n > .widget-accordion-group-content-wrapper > .widget-accordion-group-content {\n border-color: $border-color;\n padding: $spacing-small $spacing-medium $spacing-large $spacing-medium;\n }\n}\n\n@mixin get-accordion-preview-group-styles($color) {\n .widget-accordion-group-header-button {\n > div > :is(h1, h2, h3, h4, h5, h6) {\n font-size: $font-size-h5;\n font-weight: $font-weight-header;\n }\n\n > div > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin accordion-helpers() {\n /* ==========================================================================\n Accordion\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-accordion {\n .widget-accordion-group {\n &.widget-accordion-brand-primary {\n @include get-accordion-group-styles(\n $accordion-header-primary-bg,\n $accordion-header-primary-bg-hover,\n $accordion-header-primary-color,\n $accordion-header-primary-color,\n $accordion-primary-border-color\n );\n }\n\n &.widget-accordion-brand-secondary {\n @include get-accordion-group-styles(\n $accordion-header-secondary-bg,\n $accordion-header-secondary-bg-hover,\n $accordion-header-secondary-color,\n $accordion-header-secondary-color,\n $accordion-secondary-border-color\n );\n }\n\n &.widget-accordion-brand-success {\n @include get-accordion-group-styles(\n $accordion-header-success-bg,\n $accordion-header-success-bg-hover,\n $accordion-header-success-color,\n $accordion-header-success-color,\n $accordion-success-border-color\n );\n }\n\n &.widget-accordion-brand-warning {\n @include get-accordion-group-styles(\n $accordion-header-warning-bg,\n $accordion-header-warning-bg-hover,\n $accordion-header-warning-color,\n $accordion-header-warning-color,\n $accordion-warning-border-color\n );\n }\n\n &.widget-accordion-brand-danger {\n @include get-accordion-group-styles(\n $accordion-header-danger-bg,\n $accordion-header-danger-bg-hover,\n $accordion-header-danger-color,\n $accordion-header-danger-color,\n $accordion-danger-border-color\n );\n }\n }\n\n &.widget-accordion-preview {\n .widget-accordion-group {\n &.widget-accordion-brand-primary {\n @include get-accordion-preview-group-styles($accordion-header-primary-color);\n }\n\n &.widget-accordion-brand-secondary {\n @include get-accordion-preview-group-styles($accordion-header-secondary-color);\n }\n\n &.widget-accordion-brand-success {\n @include get-accordion-preview-group-styles($accordion-header-success-color);\n }\n\n &.widget-accordion-brand-warning {\n @include get-accordion-preview-group-styles($accordion-header-warning-color);\n }\n\n &.widget-accordion-brand-danger {\n @include get-accordion-preview-group-styles($accordion-header-danger-color);\n }\n }\n }\n\n &.widget-accordion-bordered-all {\n > .widget-accordion-group {\n &:first-child {\n border-top-style: solid;\n }\n\n border-right-style: solid;\n border-left-style: solid;\n }\n }\n\n &.widget-accordion-bordered-horizontal {\n > .widget-accordion-group {\n &:first-child {\n border-top-style: solid;\n }\n }\n }\n\n &.widget-accordion-bordered-none {\n > .widget-accordion-group {\n border-bottom: none;\n }\n }\n\n &.widget-accordion-striped {\n > .widget-accordion-group:not(:is(.widget-accordion-brand-primary, .widget-accordion-brand-secondary, .widget-accordion-brand-success, .widget-accordion-brand-warning, .widget-accordion-brand-danger)):nth-child(2n\n + 1) {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n background-color: $accordion-bg-striped;\n\n &.widget-accordion-group-header-button-clickable {\n &:hover,\n &:focus,\n &:active {\n background-color: $accordion-bg-striped-hover;\n }\n }\n }\n\n > .widget-accordion-group-content {\n background-color: $accordion-bg-striped;\n }\n }\n }\n\n &.widget-accordion-compact {\n > .widget-accordion-group {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n padding: $spacing-smaller $spacing-small;\n }\n\n > .widget-accordion-group-content {\n padding: $spacing-smaller $spacing-small $spacing-medium $spacing-small;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin dijit-widget() {\n /*\n * Mendix Documentation\n * Special styles for presenting components\n */\n\n /*\n * Dijit Widgets\n *\n * Default Dojo Dijit Widgets\n */\n\n /*\n * Dijit Tooltip Widget\n *\n * Default tooltip used for Mendix widgets\n */\n\n .mx-tooltip {\n .dijitTooltipContainer {\n border-width: 1px;\n border-color: $gray-light;\n border-radius: 4px;\n background: #ffffff;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n\n .mx-tooltip-content {\n padding: 12px;\n }\n\n .form-group {\n margin-bottom: 4px;\n }\n }\n\n .dijitTooltipConnector {\n width: 0;\n height: 0;\n margin-left: -8px;\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent;\n border-right-color: $gray-light;\n }\n }\n\n /*\n * Dijit Border Container\n *\n * Used in Mendix as split pane containers\n */\n\n .dijitBorderContainer {\n padding: 8px;\n background-color: #fcfcfc;\n\n .dijitSplitterV,\n .dijitGutterV {\n width: 5px;\n border: 0;\n background: #fcfcfc;\n }\n\n .dijitSplitterH,\n .dijitGutterH {\n height: 5px;\n border: 0;\n background: #fcfcfc;\n }\n\n .dijitSplitterH {\n .dijitSplitterThumb {\n top: 2px;\n width: 19px;\n height: 1px;\n background: #b0b0b0;\n }\n }\n\n .dijitSplitterV {\n .dijitSplitterThumb {\n left: 2px;\n width: 1px;\n height: 19px;\n background: #b0b0b0;\n }\n }\n\n .dijitSplitContainer-child,\n .dijitBorderContainer-child {\n border: 1px solid #cccccc;\n }\n\n .dijitBorderContainer-dijitTabContainerTop,\n .dijitBorderContainer-dijitTabContainerBottom,\n .dijitBorderContainer-dijitTabContainerLeft,\n .dijitBorderContainer-dijitTabContainerRight {\n border: none;\n }\n\n .dijitBorderContainer-dijitBorderContainer {\n padding: 0;\n border: none;\n }\n\n .dijitSplitterActive {\n /* For IE8 and earlier */\n margin: 0;\n opacity: 0.6;\n background-color: #aaaaaa;\n background-image: none;\n font-size: 1px;\n }\n\n .dijitSplitContainer-dijitContentPane,\n .dijitBorderContainer-dijitContentPane {\n padding: 8px;\n background-color: #ffffff;\n }\n }\n\n /*\n * Dijit Menu Popup\n *\n * Used in datepickers and calendar widgets\n */\n\n .dijitMenuPopup {\n margin-top: 8px;\n\n .dijitMenu {\n display: block;\n width: 200px !important;\n margin-top: 0; // No top margin because there is no parent with margin bottom\n padding: 12px 8px;\n border-radius: 3px;\n background: $brand-inverse;\n\n &:after {\n position: absolute;\n bottom: 100%;\n left: 20px;\n width: 0;\n height: 0;\n margin-left: -8px;\n content: \" \";\n pointer-events: none;\n border: medium solid transparent;\n border-width: 8px;\n border-bottom-color: $brand-inverse;\n }\n\n // Menu item\n .dijitMenuItem {\n background: transparent;\n\n .dijitMenuItemLabel {\n display: block;\n overflow: hidden;\n width: 180px !important;\n padding: 8px;\n text-overflow: ellipsis;\n color: #ffffff;\n border-radius: 3px;\n }\n\n // Hover\n &.dijitMenuItemHover {\n background: none;\n\n .dijitMenuItemLabel {\n background: $brand-primary;\n }\n }\n }\n\n // New label\n .tg_newlabelmenuitem {\n .dijitMenuItemLabel {\n font-weight: $font-weight-bold;\n }\n }\n\n // Seperator\n .dijitMenuSeparator {\n td {\n padding: 0;\n border-bottom-width: 3px;\n }\n\n .dijitMenuSeparatorIconCell {\n > div {\n margin: 0; //override dijit styling\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n$default-android-color: #6fbeb5;\n$default-ios-color: rgb(100, 189, 99);\n\n@mixin bootstrap-style-ios($brand-style) {\n border-color: $brand-style;\n background-color: $brand-style;\n box-shadow: $brand-style 0 0 0 16px inset;\n}\n\n@mixin bootstrap-style-android($brand-style) {\n background-color: lighten($brand-style, 10%);\n}\n\n@mixin style($brand-key, $brand-variable) {\n div.widget-switch-brand-#{$brand-key} {\n .widget-switch {\n .widget-switch-btn-wrapper {\n &.checked {\n @include bootstrap-style-ios($brand-variable);\n }\n }\n }\n &.android {\n .widget-switch {\n .widget-switch-btn-wrapper {\n &.checked {\n @include bootstrap-style-android($brand-variable);\n\n .widget-switch-btn {\n background: $brand-variable;\n }\n }\n }\n }\n }\n }\n}\n\n// maintained for backwards compatibility prior to Switch 3.0.0.\n@mixin ios {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-ios($default-ios-color);\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-ios($brand-success);\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-ios($brand-info);\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-ios($brand-primary);\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-ios($brand-warning);\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-ios($brand-danger);\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-ios($brand-inverse);\n }\n }\n }\n}\n\n// maintained for backwards compatibility prior to Switch 3.0.0.\n@mixin android {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-android($default-android-color);\n\n .widget-switch-btn {\n background: $default-android-color;\n }\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-android($brand-success);\n\n .widget-switch-btn {\n background: $brand-success;\n }\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-android($brand-info);\n\n .widget-switch-btn {\n background: $brand-info;\n }\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-android($brand-primary);\n\n .widget-switch-btn {\n background: $brand-primary;\n }\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-android($brand-warning);\n\n .widget-switch-btn {\n background: $brand-warning;\n }\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-android($brand-danger);\n\n .widget-switch-btn {\n background: $brand-danger;\n }\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-android($brand-inverse);\n\n .widget-switch-btn {\n background: $brand-inverse;\n }\n }\n }\n }\n}\n\n@mixin switch() {\n .widget-switch-btn-wrapper {\n &:focus {\n outline: 1px solid $brand-primary;\n }\n }\n\n @include style(\"primary\", $brand-primary);\n @include style(\"secondary\", $brand-default);\n @include style(\"success\", $brand-success);\n @include style(\"warning\", $brand-warning);\n @include style(\"danger\", $brand-danger);\n\n // below is maintained for backwards compatibility prior to Switch 3.0.0.\n div {\n &.widget-switch {\n &.iOS {\n @include ios;\n }\n\n &.android {\n @include android;\n }\n\n &.auto {\n @include ios;\n }\n }\n }\n\n html {\n div {\n &.dj_android {\n .widget-switch {\n &.auto {\n @include android;\n }\n }\n }\n\n &.dj_ios {\n .widget-switch {\n &.auto {\n @include ios;\n }\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n The core stucture of all atlas layouts\n========================================================================== */\n@mixin layout-atlas() {\n .layout-atlas {\n // Toggle button\n .toggle-btn {\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n margin: 0;\n }\n }\n .toggle-btn > .mx-icon-lined {\n font-family: \"Atlas_Core$Atlas\";\n }\n\n .toggle-btn > .mx-icon-filled {\n font-family: \"Atlas_Core$Atlas_Filled\";\n }\n\n .mx-scrollcontainer-open {\n .expand-btn > img {\n transform: rotate(180deg);\n }\n }\n\n // Sidebar\n .region-sidebar {\n background-color: $navsidebar-bg;\n @if not $use-modern-client {\n z-index: 101;\n }\n box-shadow: 0 0 4px rgb(0 0 0 / 14%), 2px 4px 8px rgb(0 0 0 / 28%);\n\n .mx-scrollcontainer-wrapper {\n display: flex;\n flex-direction: column;\n padding: $spacing-small 0;\n }\n\n .mx-navigationtree .navbar-inner > ul > li > a {\n padding: $spacing-medium;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-small;\n }\n }\n\n .sidebar-heading {\n background: $navsidebar-sub-bg;\n }\n\n .toggle-btn {\n margin-right: $spacing-small;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n padding: $spacing-medium;\n }\n }\n\n // Topbar\n .region-topbar {\n position: relative;\n z-index: 60; // Show dropshadow\n min-height: $topbar-minimalheight;\n background-color: $navtopbar-bg;\n\n // Topbar Content\n .topbar-content {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n }\n\n // Toggle btn\n .toggle-btn {\n padding: 0;\n margin-right: $spacing-medium;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n // For your company, product, or project name\n .navbar-brand {\n display: inline-block;\n float: none; // reset bootstrap\n height: auto;\n padding: 0;\n line-height: inherit;\n font-size: 16px;\n margin-right: $spacing-small;\n\n img {\n display: inline-block;\n margin-right: $spacing-small;\n @if $brand-logo !=false {\n width: 0;\n height: 0;\n padding: ($brand-logo-height / 2) ($brand-logo-width / 2);\n background-image: url($brand-logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: $brand-logo-width;\n } @else {\n width: auto;\n height: $brand-logo-height;\n }\n }\n\n a {\n margin-left: $spacing-small;\n color: $navbar-brand-name;\n font-size: 20px;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n }\n }\n\n .mx-navbar {\n display: inline-flex;\n vertical-align: middle;\n background: transparent;\n justify-content: center;\n align-items: center;\n\n & > .mx-navbar-item {\n & > a {\n margin-top: 5px;\n padding: 0 20px;\n }\n }\n }\n }\n\n @if (not $use-modern-client) {\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for phone layouts\n========================================================================== */\n@mixin layout-atlas-phone() {\n .layout-atlas-phone {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n\n .region-sidebar {\n .mx-navigationtree .navbar-inner > ul > li > a {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-medium;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for responsive layouts\n========================================================================== */\n@mixin layout-atlas-responsive() {\n $sidebar-icon-height: 52px;\n $sidebar-icon-width: 52px;\n\n .layout-atlas-responsive,\n .layout-atlas-responsive-default {\n @media (min-width: $screen-md) {\n --closed-sidebar-width: #{$navsidebar-width-closed};\n .mx-scrollcontainer-shrink:not(.mx-scrollcontainer-open) > .region-sidebar,\n .mx-scrollcontainer-push:not(.mx-scrollcontainer-open) > .region-sidebar,\n .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open) > .region-sidebar {\n @if (not $use-modern-client) {\n width: $navsidebar-width-closed !important;\n }\n\n .mx-scrollcontainer-wrapper .mx-navigationtree ul li {\n &.mx-navigationtree-has-items a {\n white-space: nowrap;\n }\n\n &.mx-navigationtree-has-items:hover > ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-icon-width;\n display: block;\n min-width: auto;\n padding: $spacing-small 0;\n\n & > li.mx-navigationtree-has-items:hover > ul {\n left: 100%;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n\n .widget-sidebar:not(.widget-sidebar-expanded) {\n .mx-navigationtree ul li {\n &.mx-navigationtree-has-items:hover {\n ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-icon-width;\n display: block;\n overflow-y: auto;\n min-width: auto;\n padding: $spacing-small 0;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n }\n\n @if (not $use-modern-client) {\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n\n &.mx-scrollcontainer-open > .region-sidebar {\n width: $navsidebar-width-closed !important;\n\n & > .mx-scrollcontainer-wrapper {\n position: relative;\n }\n }\n\n .region-sidebar > .mx-scrollcontainer-wrapper {\n z-index: 2;\n left: -$navsidebar-width-closed;\n background-color: inherit;\n }\n }\n\n // Push aside for mobile\n @media (max-width: $screen-sm-max) {\n .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) {\n width: 1100px;\n }\n\n .mx-scrollcontainer-slide .toggle-btn {\n display: inline-block !important;\n }\n }\n }\n\n // Sidebar\n .region-sidebar {\n .toggle-btn {\n width: $sidebar-icon-width;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n .mx-scrollcontainer-wrapper {\n .toggle-btn-wrapper {\n display: flex;\n padding: $spacing-small;\n align-items: center;\n min-height: calc(#{$topbar-minimalheight} + 4px);\n background: $navsidebar-sub-bg;\n }\n\n .toggle-btn {\n padding: $spacing-medium;\n\n img {\n width: 24px;\n height: 24px;\n }\n }\n\n .toggle-text {\n color: #fff;\n font-weight: bold;\n }\n\n .mx-navigationtree .navbar-inner > ul > li {\n & > a {\n height: $sidebar-icon-height;\n padding: $spacing-small 0;\n white-space: nowrap;\n overflow: hidden;\n // Glyph icon\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: flex;\n align-items: center;\n justify-content: center;\n width: $sidebar-icon-width;\n height: $sidebar-icon-height;\n padding: $spacing-small $spacing-medium;\n border-radius: $border-radius-default;\n }\n }\n }\n }\n }\n\n // Topbar\n .region-topbar {\n padding: 0 $spacing-small;\n\n .toggle-btn {\n padding: 0;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n display: flex;\n }\n\n .mx-icon-filled,\n .mx-icon-lined {\n font-size: 20px;\n }\n }\n }\n\n // Topbar variant\n .layout-atlas-responsive-topbar {\n .region-topbar {\n padding: 0 $spacing-medium;\n @media (max-width: $screen-sm-max) {\n padding: 0 $spacing-small;\n }\n }\n }\n\n // Fix Safari issue of sidebar disappearing\n .profile-tablet {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow-y: hidden;\n\n .mx-scrollcontainer-wrapper {\n overflow: visible;\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for tablet layouts\n========================================================================== */\n@mixin layout-atlas-tablet() {\n .layout-atlas-tablet {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n\n .region-sidebar {\n .mx-navigationtree .navbar-inner > ul > li > a {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-medium;\n }\n }\n }\n }\n}\n","/* \n ==| Variables |=========================================================================================\n*/\n@import \"../../../theme/web/custom-variables.scss\"; \n@import \"includes/variables\";\n@import \"includes/helpers\";\n\n/* \n ==| Widget blocks |=====================================================================================\n These blocks contains styles directly related to the widget's appearance and are mostly unique styles\n needed to display the widget's UI correctly.\n*/\n@import \"lightbox\";\n@import \"startButton\";\n@import \"annotation/annotation-canvas\";\n@import \"annotation/annotation-frame\";\n@import \"failed\";\n@import \"result\";\n@import \"feedbackForm\";\n\n/* \n ==| Generic blocks |====================================================================================\n These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and\n outline the basic styles of the widget (in accordance with Atlas UI).\n*/\n@import \"dialog/dialog\";\n@import \"dialog/underlay\";\n@import \"dialog/closeButton\";\n@import \"input/input\";\n@import \"toolbar/toolbar\";\n@import \"toolbar/toolButton\";\n@import \"labelGroup\";\n@import \"button/buttonGroup\";\n@import \"button/button\";\n@import \"screenshotPreview\";\n@import \"tooltip\";\n","/// The lightbox displays a preview of the screenshot when clicking on the thumbnail. \n\n.mxfeedback-lightbox {\n position: fixed;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n overflow: auto;\n padding-top: 10vh;\n padding-bottom: 10vh;\n background-color: $mxfeedback-lightbox-background-color;\n z-index: $mxfeedback-z-index-lightbox;\n\n &__image {\n margin: auto;\n display: block;\n max-width: 70%;\n\n @include mq($screen-md) {\n max-width: calc(100% - 16px);\n }\n }\n\n .mxfeedback-close-button {\n &__icon {\n width: $mxfeedback-icon-size-sm;\n height: $mxfeedback-icon-size-sm; \n }\n }\n}\n","//== z-index\n$mxfeedback-z-index-start-button: 999998 !default;\n$mxfeedback-z-index-underlay: 1000001 !default;\n$mxfeedback-z-index-lightbox: 1000002 !default;\n$mxfeedback-z-index-annotation-canvas: 1000003 !default;\n$mxfeedback-z-index-frame: 1000004 !default;\n\n//== Dimensions\n$mxfeedback-dialog-width: 560px;\n$mxfeedback-tooltip-width: 240px;\n$tool-list-width: 144px;\n$mxfeedback-dialog-spacing: 40px;\n\n//== Background colors\n$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9);\n$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9);\n$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5);\n\n//== Shadows\n$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%);\n$mxfeedback-shadow-small: 0 2px 4px 0;\n$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2);\n\n//== Icons\n$mxfeedback-icon-size-xs: 9px;\n$mxfeedback-icon-size-sm: 16px;\n$mxfeedback-icon-size-md: 20px;\n$mxfeedback-icon-size-lg: 24px;\n\n//== Annotation\n//## Annotation colors\n$annotation-colors: (\n \"midnight\": #2f3646,\n \"grey\": #c1c3c8,\n \"green\": #4fd84f,\n \"blue\": #47a9ff,\n \"purple\": #845eff,\n \"magenta\": #ca49f8,\n \"red\": #fb4a4c,\n \"yellow\": #fcc73a\n);\n\n//## Annotation thickness\n$annotation-thickness: (\n \"one\": 1px,\n \"two\": 2px,\n \"three\": 3px,\n \"four\": 4px,\n \"five\": 5px,\n \"six\": 6px\n);\n\n//## Annotation tool variables\n$mxfeedback-annotation-tool-size: 25px;\n","/// For responsiveness\n\n@mixin mq($width, $type: min) {\n @media only screen and (#{$type}-width: $width) {\n @content;\n }\n}\n","/// Creates or hides the default blue start button for the feedback widget.\n// if --normal is not used it will inherit from btn mx-button btn-default from AtlasCore\n.mxfeedback-start-button {\n\n &--none {\n display: none !important;\n }\n &--side {\n position: fixed;\n top: 50%;\n right: 0;\n transform: translate(50%, -50%) rotate(270deg);\n transform-origin: bottom center;\n padding: $spacing-smaller $spacing-small;\n border: none;\n border-radius: $border-radius-default $border-radius-default 0 0;\n background-color: $btn-primary-bg;\n color: $btn-primary-color;\n font-size: $m-header-title-size;\n box-shadow: $mxfeedback-start-button-shadow;\n z-index: $mxfeedback-z-index-start-button;\n\n &:focus,\n &:hover {\n background-color: $btn-primary-bg-hover;\n }\n }\n}\n\n.mx-feedback-widget-display-none {\n display: none !important;\n}\n\n.mx-feedback-widget-modal-body-auto-height {\n\theight:auto !important;\n}","/// Creates the canvas for annotation. \n/// The background color is required to cover the page behind the annotation canvas.\n\n.mxfeedback-annotation-canvas {\n z-index: $mxfeedback-z-index-annotation-canvas;\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n margin: 0;\n width: 100%;\n height: 100%;\n background-color: $mxfeedback-annotation-canvas-background-color;\n\n &__canvas {\n position: fixed;\n margin-top: $spacing-largest;\n }\n}\n","/// Centers the annotation tool and annotation canvas.\n\n.mxfeedback-annotation-frame {\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n z-index: $mxfeedback-z-index-frame;\n}\n",".mxfeedback-failed {\n // TODO: Feels like it can be replaced in the future\n &__message {\n align-self: center;\n margin: $spacing-small;\n }\n\n &__error-image {\n margin-top: 30px;\n }\n}\n","/// Style the image on the successfully submitted page\n\n.mxfeedback-result {\n &__result-image {\n align-self: center;\n width: auto;\n max-width: 50%;\n }\n\n .mxfeedback-dialog__body-text {\n margin: auto;\n }\n\n &__result-image {\n margin-top: 30px;\n }\n}",".mxfeedback-feedback-form {\n &__cancel-button {\n border: 0;\n }\n}\n","@import \"../../../../theme/web/custom-variables.scss\";\n/// Styles the dialogs.\n/// The styling is shared between the different windows.\n\n.mxfeedback-dialog {\n display: flex;\n flex-direction: column;\n position: fixed;\n left: 50% ;\n top: 50% ;\n transform: translate(-50%, -50%);\n padding: $spacing-large;\n width: $mxfeedback-dialog-width;\n max-width: calc(100% - #{$mxfeedback-dialog-spacing});\n max-height: calc(100% - #{$mxfeedback-dialog-spacing});\n background-color: $bg-color-secondary;\n border: 1px solid $border-color-default;\n border-radius: $border-radius-default;\n box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color;\n overflow: hidden auto;\n z-index: $mxfeedback-z-index-underlay;\n\n &__title {\n font-size: $font-size-large;\n font-weight: $font-weight-semibold;\n line-height: 120%;\n margin: 0 0 $spacing-medium;\n color: $font-color-default;\n align-self: center;\n }\n}\n","/// Styles the underlay behind the dialog.\n\n.mxfeedback-underlay {\n inset: 0;\n z-index: $mxfeedback-z-index-underlay;\n}\n","/// Styles the close button to follow the same styling as ATLAS UI close button.\n/// | `btn-primary-color` | To show the close button in white color.|\n\n.mxfeedback-close-button {\n right: $spacing-medium;\n top: 12px; // not using variables here as its position should be precise\n padding: 0;\n background-color: transparent;\n border: none;\n position: absolute;\n \n &__icon {\n width: 12px;\n height: 12px;\n color: $font-color-default;\n stroke: $font-color-default;\n }\n\n &--white > &__icon {\n fill: $btn-primary-color;\n }\n}\n","/// Styles the dialogs.\n/// The styling is shared between the different windows.\n\n.mxfeedback-input {\n display: flex;\n flex-direction: column;\n position: fixed;\n left: 50% !important;\n top: 50% !important;\n transform: translate(-50%, -50%);\n width: $mxfeedback-dialog-width;\n max-width: calc(100% - #{$mxfeedback-dialog-spacing});\n max-height: calc(100% - #{$mxfeedback-dialog-spacing});\n background-color: $bg-color-secondary;\n border-radius: $border-radius-default;\n box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color;\n overflow: hidden auto;\n z-index: $mxfeedback-z-index-underlay;\n\n .modal-header {\n border-bottom: unset;\n margin-top: 1rem;\n padding-top: 1rem !important;\n padding-left: 3rem !important;\n\n &.modal-header > h4 {\n font-size: $font-size-large;\n font-weight: $font-weight-semibold;\n line-height: 120%;\n color: $font-color-default;\n align-self: center;\n }\n }\n}\n","/// Styles the annotation toolbar.\n\n.mxfeedback-toolbar {\n position: fixed;\n display: flex;\n align-items: center;\n gap: $gutter-size;\n top: $spacing-larger;\n left: 50%;\n transform: translateX(-50%);\n padding: $spacing-medium $spacing-larger;\n background-color: $bg-color-secondary;\n border: 1px solid $border-color-default;\n border-radius: $border-radius-default;\n font-size: $font-size-small;\n box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color;\n z-index: $mxfeedback-z-index-frame;\n\n &--gap-md {\n gap: $gutter-size * 2;\n }\n\n &--gap-lg {\n gap: $gutter-size * 4;\n }\n}\n","/// Styles the color and thickness options in the annotation toolbar.\n\n.mxfeedback-tool-button {\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n background: transparent;\n border: 0;\n padding: 0;\n\n &--active {\n color: $brand-primary;\n }\n\n &:focus-visible {\n color: $btn-primary-bg-hover;\n }\n\n &__inner {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__icon {\n width: $mxfeedback-icon-size-lg;\n height: $mxfeedback-icon-size-lg;\n fill: currentColor;\n }\n\n &__label {\n margin-top: $spacing-smaller;\n color: inherit\n }\n\n &__caret {\n fill: $gray-darker;\n width: 8px;\n height: 8px;\n }\n\n &__dropdown {\n position: relative;\n display: flex;\n align-items: center;\n height: 100%;\n }\n\n &__menu {\n display: flex;\n flex-direction: column;\n gap: $gutter-size;\n position: absolute;\n left: 50%;\n top: 100%;\n transform: translateX(-50%);\n padding: $spacing-small;\n background: $bg-color-secondary;\n border: 1px solid $border-color-default;\n border-radius: $border-radius-default;\n width: $tool-list-width;\n z-index: 1;\n }\n\n &__list {\n display: grid;\n grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier\n gap: calc(#{$gutter-size} / 2);\n\n &--col-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n &__color {\n position: relative;\n padding: 0;\n border: none;\n border-radius: 100%;\n aspect-ratio: 1 / 1;\n\n &:focus {\n outline: 2px solid $brand-primary;\n outline-offset: 2px;\n }\n\n @each $color, $class in $annotation-colors {\n &--#{$color} {\n background-color: $class;\n }\n }\n\n svg {\n width: 10px;\n height: 10px;\n stroke: $btn-primary-color;\n }\n }\n\n &__thickness {\n background-color: transparent;\n border: none;\n border-radius: $border-radius-default;\n aspect-ratio: 4 / 3;\n\n &:hover {\n background-color: $gray-light;\n }\n\n &:focus {\n outline: 2px solid $brand-primary;\n outline-offset: 2px;\n }\n\n &--selected {\n background-color: $gray;\n }\n\n &::before {\n content: \"\";\n display: block;\n background-color: map-get($annotation-colors, \"midnight\");\n width: 100%;\n transform: rotate(-45deg);\n }\n\n @each $thickness, $height in $annotation-thickness {\n &--#{$thickness} {\n &::before {\n height: $height;\n }\n }\n }\n }\n}\n","/// Styles the label plus tooltip icon.\n\n.mxfeedback-label-group {\n display: flex;\n align-items: center;\n gap: calc(#{$gutter-size} / 2);\n margin-bottom: $spacing-smaller;\n\n &__label.control-label {\n margin-bottom: 0;\n }\n}\n","/// Styles buttons in group to have proper distance between each other.\n/// Shows the buttons in column on a smaller screen.\n\n.mxfeedback-button-group {\n display: flex;\n justify-content: flex-end;\n gap: $gutter-size;\n\n &--screenshot-container {\n flex-direction: row-reverse;\n }\n\n &--gap-md {\n gap: $gutter-size * 2;\n }\n\n &--gap-lg {\n gap: $gutter-size * 4;\n }\n\n &--justify-start {\n justify-content: flex-start;\n }\n\n &--justify-center {\n justify-content: center;\n }\n\n &--row-xs {\n flex-direction: column;\n\n @include mq($screen-md) {\n flex-direction: row;\n }\n }\n}\n","/// Styles a button that contains an icon.\n/// In Atlas the icons are added differently.\n\n.mxfeedback-button {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: $gutter-size;\n\n svg {\n width: $mxfeedback-icon-size-sm;\n height: $mxfeedback-icon-size-sm;\n fill: currentColor;\n }\n}\n","/// Styles the screenshot preview container in the form.\n\n.mxfeedback-screenshot-preview {\n display: flex;\n justify-content: left;\n position: relative;\n margin: 20px auto;\n cursor: pointer;\n\n &__image > img {\n display: block;\n object-fit: contain;\n height: 100%;\n aspect-ratio: 16 / 9;\n border: 1px solid $gray;\n border-radius: $border-radius-default;\n\n &:hover {\n background-color: $gray-lighter;\n border: 1px solid $gray-dark;\n border-radius: $border-radius-default;\n opacity: 0.5;\n }\n }\n\n &__preview-icon {\n width: $mxfeedback-icon-size-md;\n height: $mxfeedback-icon-size-md;\n fill: $gray-lighter;\n }\n\n &__delete-button {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n z-index: 1;\n color: $btn-default-color;\n border-radius: 50%;\n height: 20px;\n width: 20px;\n padding: 0;\n font-size: 12px;\n }\n}\n","/// Create a Tooltip on hover effect.\n\n$_block: \".mxfeedback-tooltip\";\n#{$_block} {\n $_offset: 32px;\n display: flex;\n position: relative;\n\n &__icon {\n width: $mxfeedback-icon-size-sm;\n height: $mxfeedback-icon-size-sm;\n\n &:hover ~ #{$_block}__tip {\n visibility: visible;\n }\n }\n\n &__tip {\n visibility: hidden;\n position: absolute;\n top: calc(100% + #{$spacing-small});\n left: calc(50% - #{$_offset});\n width: $mxfeedback-tooltip-width;\n max-width: calc(100vw - #{$spacing-larger});\n padding: 6px 8px; // not using variables here as its padding should be precise\n margin-bottom: 0;\n border-radius: 2px; // not using variables here as its border radius should be precise\n background-color: $gray-darker;\n color: $label-primary-color;\n font-size: $font-size-small;\n line-height: 1.5;\n z-index: 1;\n transition: visibility 100ms ease-in-out;\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: $_offset;\n transform: translate(-50%, -50%) rotate(45deg);\n width: 12px;\n height: 12px;\n background-color: inherit;\n text-align: center;\n pointer-events: none;\n }\n }\n}\n","@import \"custom-variables\";\n\n//fix for atlas topbar submenu item font size \n.layout-atlas .region-topbar .navbar-brand .mx-navbar-subitem a{\n font-size: unset;\n}\n\n//Remove paging bar on Gallery\n.gallery-hide-paging{\n .widget-gallery-footer{\n display: none;\n }\n}"]} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../themesource/atlas_core/web/main.scss","../../deployment/sass/Atlas_Core.Atlas_Filled.scss","../../deployment/sass/Atlas_Core.Atlas.scss","../../themesource/administration/web/main.scss","../../themesource/webactions/web/_take-picture.scss","../../themesource/atlas_web_content/web/buildingblocks/_alert.scss","../../theme/web/custom-variables.scss","../../themesource/atlas_core/web/_variables.scss","../../themesource/atlas_web_content/web/buildingblocks/_breadcrumb.scss","../../themesource/atlas_web_content/web/buildingblocks/_card.scss","../../themesource/atlas_web_content/web/buildingblocks/_chat.scss","../../themesource/atlas_web_content/web/buildingblocks/_controlgroup.scss","../../themesource/atlas_web_content/web/buildingblocks/_pageblocks.scss","../../themesource/atlas_web_content/web/buildingblocks/_pageheader.scss","../../themesource/atlas_web_content/web/buildingblocks/_heroheader.scss","../../themesource/atlas_web_content/web/buildingblocks/_formblock.scss","../../themesource/atlas_web_content/web/buildingblocks/_master-detail.scss","../../themesource/atlas_web_content/web/buildingblocks/_userprofile.scss","../../themesource/atlas_web_content/web/buildingblocks/_wizard.scss","../../themesource/atlas_web_content/web/pagetemplates/_login.scss","../../themesource/atlas_web_content/web/pagetemplates/_list-tab.scss","../../themesource/atlas_web_content/web/pagetemplates/_springboard.scss","../../themesource/atlas_web_content/web/pagetemplates/_statuspage.scss","../../themesource/datawidgets/web/_datagrid.scss","../../themesource/datawidgets/web/_date-picker.scss","../../themesource/datawidgets/web/_datagrid-filters.scss","../../themesource/datawidgets/web/_datagrid-design-properties.scss","../../themesource/datawidgets/web/_datagrid-scroll.scss","../../themesource/datawidgets/web/_drop-down-sort.scss","../../themesource/datawidgets/web/_gallery.scss","../../themesource/datawidgets/web/_gallery-design-properties.scss","../../themesource/datawidgets/web/_three-state-checkbox.scss","../../themesource/datawidgets/web/_tree-node.scss","../../themesource/datawidgets/web/_tree-node-design-properties.scss","../../themesource/conversationalui/web/abstracts/_helpers.scss","../../themesource/conversationalui/web/components/_accordion.scss","../../themesource/conversationalui/web/components/_card.scss","../../themesource/conversationalui/web/components/_chat.scss","../../themesource/conversationalui/web/_chat-variables.scss","../../themesource/conversationalui/web/components/_charts.scss","../../themesource/conversationalui/web/components/_conversationstarter.scss","../../themesource/conversationalui/web/components/_dataview.scss","../../themesource/conversationalui/web/components/_inputs.scss","../../themesource/conversationalui/web/components/_layoutgrid.scss","../../themesource/conversationalui/web/components/_listview.scss","../../themesource/conversationalui/web/components/_popup-chat.scss","../../themesource/conversationalui/web/components/_segmented-control.scss","../../themesource/conversationalui/web/components/_sidebar-chat.scss","../../themesource/conversationalui/web/components/_typography.scss","../../themesource/atlas_core/web/_variables-css-mappings.scss","../../themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap.scss","../../themesource/atlas_core/web/core/_legacy/bootstrap/_bootstrap-rtl.scss","../../themesource/atlas_core/web/core/_legacy/_mxui.scss","../../themesource/atlas_core/web/core/base/_animation.scss","../../themesource/atlas_core/web/core/base/_flex.scss","../../themesource/atlas_core/web/core/base/_spacing.scss","../../themesource/atlas_core/web/core/base/mixins/_spacing.scss","../../themesource/atlas_core/web/core/base/mixins/_layout-spacing.scss","../../themesource/atlas_core/web/core/base/_base.scss","../../themesource/atlas_core/web/core/base/_login.scss","../../themesource/atlas_core/web/core/widgets/_input.scss","../../themesource/atlas_core/web/core/helpers/_background.scss","../../themesource/atlas_core/web/core/widgets/_label.scss","../../themesource/atlas_core/web/core/widgets/_badge.scss","../../themesource/atlas_core/web/core/helpers/_label.scss","../../themesource/atlas_core/web/core/widgets/_badge-button.scss","../../themesource/atlas_core/web/core/helpers/_badge-button.scss","../../themesource/atlas_core/web/core/widgets/_button.scss","../../themesource/atlas_core/web/core/helpers/_button.scss","../../themesource/atlas_core/web/core/base/mixins/_buttons.scss","../../themesource/atlas_core/web/core/widgets/_check-box.scss","../../themesource/atlas_core/web/core/widgets/_grid.scss","../../themesource/atlas_core/web/core/widgets/_data-grid.scss","../../themesource/atlas_core/web/core/base/mixins/_animations.scss","../../themesource/atlas_core/web/core/helpers/_data-grid.scss","../../themesource/atlas_core/web/core/widgets/_data-view.scss","../../themesource/atlas_core/web/core/widgets/_date-picker.scss","../../themesource/atlas_core/web/core/widgets/_header.scss","../../themesource/atlas_core/web/core/widgets/_glyphicon.scss","../../themesource/atlas_core/web/core/widgets/_group-box.scss","../../themesource/atlas_core/web/core/helpers/_group-box.scss","../../themesource/atlas_core/web/core/base/mixins/_groupbox.scss","../../themesource/atlas_core/web/core/helpers/_image.scss","../../themesource/atlas_core/web/core/widgets/_list-view.scss","../../themesource/atlas_core/web/core/helpers/_list-view.scss","../../themesource/atlas_core/web/core/widgets/_modal.scss","../../themesource/atlas_core/web/core/widgets/_navigation-bar.scss","../../themesource/atlas_core/web/core/helpers/_navigation-bar.scss","../../themesource/atlas_core/web/core/widgets/_navigation-list.scss","../../themesource/atlas_core/web/core/widgets/_navigation-tree.scss","../../themesource/atlas_core/web/core/helpers/_navigation-tree.scss","../../themesource/atlas_core/web/core/widgets/_pop-up-menu.scss","../../themesource/atlas_core/web/core/widgets/_simple-menu-bar.scss","../../themesource/atlas_core/web/core/helpers/_simple-menu-bar.scss","../../themesource/atlas_core/web/core/widgets/_radio-button.scss","../../themesource/atlas_core/web/core/widgets/_scroll-container-dojo.scss","../../themesource/atlas_core/web/core/widgets/_tab-container.scss","../../themesource/atlas_core/web/core/helpers/_tab-container.scss","../../themesource/atlas_core/web/core/widgets/_table.scss","../../themesource/atlas_core/web/core/helpers/_table.scss","../../themesource/atlas_core/web/core/widgets/_template-grid.scss","../../themesource/atlas_core/web/core/helpers/_template-grid.scss","../../themesource/atlas_core/web/core/widgets/_typography.scss","../../themesource/atlas_core/web/core/helpers/_typography.scss","../../themesource/atlas_core/web/core/widgets/_layout-grid.scss","../../themesource/atlas_core/web/core/widgets/_pagination.scss","../../themesource/atlas_core/web/core/widgets/_progress.scss","../../themesource/atlas_core/web/core/widgets/_progress-bar.scss","../../themesource/atlas_core/web/core/helpers/_progress-bar.scss","../../themesource/atlas_core/web/core/widgets/_progress-circle.scss","../../themesource/atlas_core/web/core/helpers/_progress-circle.scss","../../themesource/atlas_core/web/core/widgets/_rating.scss","../../themesource/atlas_core/web/core/helpers/_rating.scss","../../themesource/atlas_core/web/core/widgets/_range-slider.scss","../../themesource/atlas_core/web/core/helpers/_slider-color-variant.scss","../../themesource/atlas_core/web/core/helpers/_range-slider.scss","../../themesource/atlas_core/web/core/widgets/_slider.scss","../../themesource/atlas_core/web/core/helpers/_slider.scss","../../themesource/atlas_core/web/core/widgets/_timeline.scss","../../themesource/atlas_core/web/core/widgets/_tooltip.scss","../../themesource/atlas_core/web/core/helpers/_helper-classes.scss","../../themesource/atlas_core/web/core/widgets/_barcode-scanner.scss","../../themesource/atlas_core/web/core/widgets/_accordion.scss","../../themesource/atlas_core/web/core/helpers/_accordion.scss","../../themesource/atlas_core/web/core/widgetscustom/_dijit-widget.scss","../../themesource/atlas_core/web/core/widgets/_switch.scss","../../themesource/atlas_core/web/layouts/_layout-atlas.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-phone.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-responsive.scss","../../themesource/atlas_core/web/layouts/_layout-atlas-tablet.scss","../../themesource/feedbackmodule/web/main.scss","../../themesource/feedbackmodule/web/feedback-button.scss","../../themesource/feedbackmodule/web/variables.scss","../../themesource/feedbackmodule/web/annotation-canvas.scss","../../themesource/feedbackmodule/web/annotation-frame.scss","../../themesource/feedbackmodule/web/toolbar.scss","../../themesource/feedbackmodule/web/tool-button.scss","../../themesource/feedbackmodule/web/button-group.scss","../../themesource/feedbackmodule/web/helpers.scss","../../themesource/feedbackmodule/web/button.scss","../../themesource/feedbackmodule/web/screenshot-preview.scss","../../themesource/feedbackmodule/web/underlay.scss","../../theme/web/main.scss"],"names":[],"mappings":";AAUY;ACVZ;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACnlCF;EACE;EACA;;AAEF;EACE;EACA;EACA;EACA;EACA;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;ACjlCE;EACI;;AAYJ;EACI;;AAGJ;EACI;EACA;EACA;;;ACtBR;AAAA;AAAA;AAIA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;;;AAEJ;EACI;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;AACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EAC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EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAKR;EACI;EACA;;AACA;EACI;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAOR;AAII;AAMA;;AATA;EACI;;AAGJ;EACI;EACA;;AAIJ;EACI;EACA;;AAMZ;EACI;AAEA;;AACA;EACI;EACA;AACA;AAiBA;;AAhBA;AAEI;EAGA;EACA;EAEA;EACA;;AAEA;EACI,QAXU;;AAgBlB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;;AAQpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;AAAA;EAEI;;AAKZ;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAGJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA,OAlU0B;;AAoU1B;EACI;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;;AAGJ;EACI;;AAGR;EACI;EACA;EACA;EACA;EACA;;;AAIR;AACA;AACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;;;AAOJ;EACI,kBAnYK;;;AAwYjB;EACI;;;AAGJ;EACI;;;AC7ZJ;AAAA;AAAA;AAUA;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;EACA;EACA;;;AAGJ;AAAA;EAEI,OArDW;EAsDX;;AAEA;AAAA;EACI;EACA;EACA;;;AAIR;EACI;EACA;;;AAGJ;EACI,OAlEqB;;;AAqEzB;AAAA;EAEI;EACA;;;AAGJ;AAAA;AAAA;AAAA;EAII;;;AAGJ;AAAA;AAAA;AAAA;EAII;EACA;;AAEA;AAAA;AAAA;AAAA;EACI;EACA;EACA;;;AAIR;AAAA;AAAA;AAAA;AAAA;AAAA;EAQI,kBAzGsB;EA0GtB,OA3GiB;;AA6GjB;AAAA;AAAA;AAAA;AAAA;AAAA;EACI;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;AAAA;AAAA;AAGA;EACI;EACA;;;AC7IJ;EACI;EACA;EACA;EAGA;EACA;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;;AAGJ;EACI;;AACA;EACI;EACA;;;AAKZ;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;AAAmB;;AAI3B;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EAEI;;;AAOpB;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;;AAGJ;EAEI;;;AAKZ;EACI;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EAEI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAKZ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;E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A;;;ACTR;EACI;EACA;EACA;EACA;EACA;EACA,OTCgB;;ASAhB;EACI;EACA;;AACA;EACI,YzCSI;EyCRJ;EACA;;AACA;EACI,OzC6PI;;AyC3PR;EACI,OzC0PI;;AyCvPZ;EACI;EACA,SzCgiBK;EyC/hBL;;AACA;EACI;;;AC1BhB;EACI;;;ACDJ;AACI;AAAA;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;AAA0C;AAE1C;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;AACA;;AAAA;EAGA;EACA;EAEA;EACA;EACA;AAAoD;EAEpD;EACA;EACA;EAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAAoD;EAEpD;EACA;EACA;EAEA;EACA;EACA;EAEA;EACA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAAkC;EAClC;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;AAEA;AACA;AAEA;EACA;AAEA;AACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EAEA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;AAEA;AACA;EAEA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;AAEA;AACA;AACA;EACA;EACA;EACA;AAEA;AAEA;EACA;EACA;AAEA;AACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;AAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EAEA;AAEA;AACA;AAEA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;AAEA;AACA;AAEA;EACA;AAEA;EACA;AAEA;EACA;AACA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;AACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AACA;AACA;AAEA;EACA;AAEA;EACA;;;AC/vBJ;AAAA;AAAA;AAAA;AAAA;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ADOI;AACA;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAaI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;EAKI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;AAAA;EAII;EACA;;;AAMJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;AACA;EACI;AAAA;AAAA;IAGI;IACA;IACA;IACA;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;IAEA;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;AAAA;AAAA;IAGI;IACA;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ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A;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAkBI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAkBI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAkBI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAkBI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;EAMI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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ACA;;;AAEJ;EACI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAuOJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;EAEI;;;AAEJ;AAAA;AAAA;EAGI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;EACA;;;AAEJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EASI;;;AAEJ;AAAA;AAAA;EAGI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AAAA;AAAA;EAGI;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;;;AAEJ;AA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ACI;;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;;;AAEJ;EACI;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;AAAA;EAEI;;;AAEJ;EACI;IACI;IACA;IACA;IAEA;IACA;IACA;IACA;;;EAEJ;AAAA;IAEI;IACA;IACA;;;EAEJ;AAAA;IAEI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IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;;AAGR;EACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAYI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI;IACA;;EAEJ;IACI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J;EDmGR;IClGY;;;AAEJ;EDgGR;IC/FY;;;AAEJ;ED6FR;IC5FY;;;AAPJ;EDmGR;IClGY;;;AAEJ;EDgGR;IC/FY;;;AAEJ;ED6FR;IC5FY;;;;AAPJ;EDgHR;IC/GY;;;AAEJ;ED6GR;IC5GY;;;AAEJ;ED0GR;ICzGY;;;AAPJ;EDgHR;IC/GY;;;AAEJ;ED6GR;IC5GY;;;AAEJ;ED0GR;ICzGY;;;;AAjBJ;EDuIR;ICtIY;;;AAEJ;EDoIR;ICnIY;;;AAEJ;EDiIR;IChIY;;;;AAGJ;EDqIR;ICpIY;;;AAEJ;EDkIR;ICjIY;;;AAEJ;ED+HR;IC9HY;;;;AAPJ;ED6IR;IC5IY;;;AAEJ;ED0IR;ICzIY;;;AAEJ;EDuIR;ICtIY;;;;AAPJ;EDqJR;ICpJY;;;AAEJ;EDkJR;ICjJY;;;AAEJ;ED+IR;IC9IY;;;;AAPJ;ED6JR;IC5JY;;;AAEJ;ED0JR;ICzJY;;;AAEJ;EDuJR;ICtJY;;;;AAPJ;EDqKR;ICpKY;;;AAEJ;EDkKR;ICjKY;;;AAEJ;ED+JR;IC9JY;;;AAPJ;EDqKR;ICpKY;;;AAEJ;EDkKR;ICjKY;;;AAEJ;ED+JR;IC9JY;;;;AAPJ;EDkLR;ICjLY;;;AAEJ;ED+KR;IC9KY;;;AAEJ;ED4KR;IC3KY;;;AAPJ;EDkLR;ICjLY;;;AAEJ;ED+KR;IC9KY;;;AAEJ;ED4KR;IC3KY;;;;AAjDJ;ED0OR;ICzOY;;;AAEJ;EDuOR;ICtOY;;;AAEJ;EDoOR;ICnOY;;;;AAGJ;EDwOR;ICvOY;;;AAEJ;EDqOR;ICpOY;;;AAEJ;EDkOR;ICjOY;;;;AAPJ;EDgPR;IC/OY;;;AAEJ;ED6OR;IC5OY;;;AAEJ;ED0OR;ICzOY;;;;AAPJ;EDwPR;ICvPY;;;AAEJ;EDqPR;ICpPY;;;AAEJ;EDkPR;ICjPY;;;;AAPJ;EDgQR;IC/PY;;;AAEJ;ED6PR;IC5PY;;;AAEJ;ED0PR;ICzPY;;;;AAPJ;EDwQR;ICvQY;;;AAEJ;EDqQR;ICpQY;;;AAEJ;EDkQR;ICjQY;;;AAPJ;EDwQR;ICvQY;;;AAEJ;EDqQR;ICpQY;;;AAEJ;EDkQR;ICjQY;;;;AAPJ;EDqRR;ICpRY;;;AAEJ;EDkRR;ICjRY;;;AAEJ;ED+QR;IC9QY;;;AAPJ;EDqRR;ICpRY;;;AAEJ;EDkRR;ICjRY;;;AAEJ;ED+QR;IC9QY;;;;AAjBJ;ED4SR;IC3SY;;;AAEJ;EDySR;ICxSY;;;AAEJ;EDsSR;ICrSY;;;;AAGJ;ED0SR;ICzSY;;;AAEJ;EDuSR;ICtSY;;;AAEJ;EDoSR;ICnSY;;;;AAPJ;EDkTR;ICjTY;;;AAEJ;ED+SR;IC9SY;;;AAEJ;ED4SR;IC3SY;;;;AAPJ;ED0TR;ICzTY;;;AAEJ;EDuTR;ICtTY;;;AAEJ;EDoTR;ICnTY;;;;AAPJ;EDkUR;ICjUY;;;AAEJ;ED+TR;IC9TY;;;AAEJ;ED4TR;IC3TY;;;;AAPJ;ED0UR;ICzUY;;;AAEJ;EDuUR;ICtUY;;;AAEJ;EDoUR;ICnUY;;;AAPJ;ED0UR;ICzUY;;;AAEJ;EDuUR;ICtUY;;;AAEJ;EDoUR;ICnUY;;;;AAPJ;EDuVR;ICtVY;;;AAEJ;EDoVR;ICnVY;;;AAEJ;EDiVR;IChVY;;;AAPJ;EDuVR;ICtVY;;;AAEJ;EDoVR;ICnVY;;;AAEJ;EDiVR;IChVY;;;;AClBA;EFgXZ;IE/WgB;;;AAEJ;EF6WZ;IE5WgB;;;AAEJ;EF0WZ;IEzWgB;;;;AAGJ;EF+WZ;IE9WgB;;;AAEJ;EF4WZ;IE3WgB;;;AAEJ;EFyWZ;IExWgB;;;;AAGJ;EF8WZ;IE7WgB;;;AAEJ;EF2WZ;IE1WgB;;;AAEJ;EFwWZ;IEvWgB;;;;AAGJ;EF6WZ;IE5WgB;;;AAEJ;EF0WZ;IEzWgB;;;AAEJ;EFuWZ;IEtWgB;;;;AAGJ;EF4WZ;IE3WgB;;;AAEJ;EFyWZ;IExWgB;;;AAEJ;EFsWZ;IErWgB;;;;AArCJ;EFmZZ;IElZgB;;;AAEJ;EFgZZ;IE/YgB;;;AAEJ;EF6YZ;IE5YgB;;;AAaJ;EF+XZ;IE9XgB;;;AAEJ;EF4XZ;IE3XgB;;;AAEJ;EFyXZ;IExXgB;;;;AAGJ;EFmYZ;IElYgB;;;AAEJ;EFgYZ;IE/XgB;;;AAEJ;EF6XZ;IE5XgB;;;AA3BJ;EFuZZ;IEtZgB;;;AAEJ;EFoZZ;IEnZgB;;;AAEJ;EFiZZ;IEhZgB;;;;AA3BJ;EF0bZ;IEzbgB;;;AAEJ;EFubZ;IEtbgB;;;AAEJ;EFobZ;IEnbgB;;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I;;;ACvFZ;AAAA;;AAAA;AAAA;AAAA;AAOA;AAAA;ECNI,O/DWQ;E+DVR,c/DKO;E+DJP,kB/D4NS;;A+D1NT;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,O/DEI;E+DDJ,c/DJG;E+DKH,kB/DLG;;A+DOP;AAAA;AAAA;AAAA;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/DrBD;E+DsBC,kB/DkMC;;A+D9LT;AAAA;EACI;;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,O/DhCA;E+DiCA,c/DtCD;E+DuCC,kB/DvCD;;A+D2CP;AAAA;EACI;EACA;EACA;;AAKA;AAAA;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DIX;ECXI,O/D6OY;E+D5OZ,c/DUQ;E+DTR,kB/DSQ;;A+DPR;EAKI,O/DoOQ;E+DnOR,c/D6OW;E+D5OX,kB/D4OW;;A+D1Of;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/DhBA;E+DiBA,kB/DjBA;;A+DqBR;EACI;EAEI,O/DxBA;;A+D2BJ;EAKI,O/DkMI;E+DjMJ,c/DjCA;E+DkCA,kB/DlCA;;A+DsCR;EACI;EACA;EACA;EAEI,O/D3CA;;A+D8CJ;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DQX;ECfI,O/DuoBY;E+DtoBZ,c/DqnBQ;E+DpnBR,kB/DonBQ;;A+DlnBR;EAKI,O/D8nBQ;E+D7nBR,c/DioBW;E+DhoBX,kB/DgoBW;;A+D9nBf;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/D2lBA;E+D1lBA,kB/D0lBA;;A+DtlBR;EACI;EAEI,O/DmlBA;;A+DhlBJ;EAKI,O/D4lBI;E+D3lBJ,c/D0kBA;E+DzkBA,kB/DykBA;;A+DrkBR;EACI;EACA;EACA;EAEI,O/DgkBA;;A+D7jBJ;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DYX;ECnBI,O/D8OY;E+D7OZ,c/DWQ;E+DVR,kB/DUQ;;A+DRR;EAKI,O/DqOQ;E+DpOR,c/D8OW;E+D7OX,kB/D6OW;;A+D3Of;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/DfA;E+DgBA,kB/DhBA;;A+DoBR;EACI;EAEI,O/DvBA;;A+D0BJ;EAKI,O/DmMI;E+DlMJ,c/DhCA;E+DiCA,kB/DjCA;;A+DqCR;EACI;EACA;EACA;EAEI,O/D1CA;;A+D6CJ;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DgBX;ECvBI,O/DwoBS;E+DvoBT,c/DsnBK;E+DrnBL,kB/DqnBK;;A+DnnBL;EAKI,O/D+nBK;E+D9nBL,c/DkoBQ;E+DjoBR,kB/DioBQ;;A+D/nBZ;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/D4lBH;E+D3lBG,kB/D2lBH;;A+DvlBL;EACI;EAEI,O/DolBH;;A+DjlBD;EAKI,O/D6lBC;E+D5lBD,c/D2kBH;E+D1kBG,kB/D0kBH;;A+DtkBL;EACI;EACA;EACA;EAEI,O/DikBH;;A+D9jBD;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DoBX;EC3BI,O/D+OY;E+D9OZ,c/DYQ;E+DXR,kB/DWQ;;A+DTR;EAKI,O/DsOQ;E+DrOR,c/D+OW;E+D9OX,kB/D8OW;;A+D5Of;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/DdA;E+DeA,kB/DfA;;A+DmBR;EACI;EAEI,O/DtBA;;A+DyBJ;EAKI,O/DoMI;E+DnMJ,c/D/BA;E+DgCA,kB/DhCA;;A+DoCR;EACI;EACA;EACA;EAEI,O/DzCA;;A+D4CJ;EACI,c/DnDD;E+DoDC,kB/DpDD;;;A8DwBX;EC/BI,O/DgPW;E+D/OX,c/DaO;E+DZP,kB/DYO;;A+DVP;EAKI,O/DuOO;E+DtOP,c/DgPU;E+D/OV,kB/D+OU;;A+D7Od;EAGI;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;EAKI,c/DbD;E+DcC,kB/DdD;;A+DkBP;EACI;EAEI,O/DrBD;;A+DwBH;EAKI,O/DqMG;E+DpMH,c/D9BD;E+D+BC,kB/D/BD;;A+DmCP;EACI;EACA;EACA;EAEI,O/DxCD;;A+D2CH;EACI,c/DnDD;E+DoDC,k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;EACI,ajF+hBJ;;AiF5hBA;EACI,OjF8IF;EiF7IE,WjFMA;EiFLA;AACA;AAoBA;;AAnBA;EACI,kBjFyIN;EiFxIM,qBjFwIN;;AiFtIE;EAGI,OjFmIN;EiFlIM,kBjFgIH;;AiF/HG;EACI,kBjFgIV;EiF/HU,qBjF+HV;;AiF5HE;EACI,OjF2HN;EiF1HM,kBjFyHF;;AiFrHF;EACI;;AAIJ;AAAA;AAAA;EAGI,WjFyGD;;AiFpGP;EAMI,OjFmGF;EiFlGE,kBjFgGC;;AiF/FD;EACI,kBjFgGN;EiF/FM,qBjF+FN;;AiF3FF;EACI,ejFxCI;EiFyCJ,kBjFtCR;EiFuCQ;EACA;EACA;EACA;;AACA;EACI,SjFgeR;EiF/dQ,OjFkFN;EiFjFM,ejFjDA;EiFkDA,ejF6dR;EiF5dQ;;AACA;EAEI,OjF4EV;EiF3EU,kBjFyEP;;AiFrEL;EACI,OjF+ES;EiF9ET,kBjFmEC;;AiFlED;EACI,kBjF4EK;EiF3EL,qBjF2EK;;AiFvEjB;EAGI;IACI,kBjFrER;;EiFsEQ;IACI,OjF+DF;IiF9DE,WjF3BN;;EiF4BM;IAEI,OjF4DA;IiF3DA,kBjFiDP;;EiF/CG;IACI,OjFyDC;IiFxDD,kBjF6CP;;;;AiFnCb;EACI,kBjFtFC;;AiFuFD;AACI;AAsCA;;AArCA;EACI,OjFaD;EiFZC,WjFxGA;AiF0GA;AAoBA;;AAnBA;EACI,kBjFQL;EiFPK,qBjFOL;;AiFLC;EAGI,OjFGC;EiFFD,kBjFZF;;AiFaE;EACI,kBjFCF;EiFAE;;AAGR;EACI,OjFJE;EiFKF,kBjFnBD;;AiFuBH;EACI;;AAIJ;AAAA;AAAA;EAGI,WjFrBA;;AiF0BR;EAMI,OjF7BK;EiF8BL,kBjF5CE;;AiF6CF;EACI,kBjFhCC;EiFiCD,qBjFjCC;;AiFoCT;EACI,OjFhCU;EiFiCV,kBjF9IP;;AiF+IO;EACI,kBjFnCM;EiFoCN,qBjFpCM;;AiFwClB;EAGI;IACI,kBjF9JR;;EiF+JQ;IACI,OjFhDD;IiFiDC,WjFpHN;;EiFqHM;IAEI,OjFnDC;IiFoDD,kBjFhKf;;EiFkKW;IACI,OjFtDE;IiFuDF,kBjFpKf;;;;AiF6KL;AAAA;AAAA;EAGI;;;ACrNR;AAAA;;AAAA;AAAA;AAKA;EACI;EACA;EACA;;AAEA;EfHA;EACA,iBARI;EeYA,SlFmiBK;EkFliBL;EACA;EACA,clFaW;EkFZX;EACA,kBlFsTF;;AkFpTE;EAEI;EACA,kBlFmTA;;AkFhTJ;EACI;EACA,kBlF+SG;;;AmF1Uf;AAAA;;AAAA;AAAA;AAKA;EACI,kBlF4nBQ;AkF1nBR;AAgEA;AA6CA;;AA5GA;EACI;EACA;;AAEA;EACI;EACA;;AAEA;EACI;EACA;EACA,QnF0FK;EmFzFL,SnF0FM;EmFzFN,OnF+FD;EmF5FC,kBlFymBJ;EkFxmBI;EACA,WnFsFG;EmFrFH,anFqDC;;AmFnDD;EACI,kBnFsFL;EmFrFK,qBnFqFL;;AmFlFC;EACI;EACA;EACA;;AAGJ;AAAA;AAAA;EAGI;EACA;EACA;EACA,WnFoEA;;AmFhER;AAAA;AAAA;EAGI;EACA,OnF+DK;EmF9DL,kBlFslBE;;AkFplBF;AAAA;AAAA;EACI,kBnF4DE;EmF3DF,qBnF2DE;;AmFvDV;EACI,OnFsDM;EmFrDN,mBnFqDM;EmFpDN,kBlF4kBG;;AkFrkBX;EACI;EACA;EACA,kBlFokBI;;AkFlkBJ;EACI;EACA;EACA;;AAEA;EACI,SnF0dP;EmFzdO;EACA,OnFkCD;EmFjCC;EACA,kBlFwjBJ;EkFvjBI;EACA,WnFdN;EmFeM,anFXH;;AmFYG;AAAA;AAAA;EAGI,cnF4cZ;;AmFzcQ;EAGI,OnFoBC;EmFnBD;EACA,kBlFyiBR;;AkFtiBI;EACI,OnFeE;EmFdF;EACA,kBlFmiBR;;AkF3hBZ;EACI;;;ACvHR;AAAA;;AAAA;AAAA;AAAA;AAQI;EACI,kBpFuBA;AoFcA;;AAlCQ;EACI,OpFkJN;EoFjJM,cpFcD;EoFbC,kBpFiBZ;EoFhBY,WpFQJ;;AoFPI;EACI,kBpF6IV;EoF5IU,qBpF4IV;;AoFzIM;AAAA;AAAA;EAGI,WpFiIL;;AoF9HH;AAAA;AAAA;EAGI,OpFgIN;EoF/HM,kBpF6HH;;AoF5HG;AAAA;AAAA;EACI,kBpF6HV;EoF5HU,qBpF4HV;;AoFzHE;EACI,OpFwHN;EoFvHM,mBpFuHN;EoFtHM,kBpFqHF;;AoF9GN;EACI,kBpFjBR;;AoFmBY;EACI,OpFkHN;EoFjHM,kBpFrBhB;EoFsBgB,WpFuBV;;AoFtBU;EAGI,OpF6GJ;EoF5GI,kBpFkGX;;AoFhGO;EACI,OpF0GH;EoFzGG,kBpF8FX;;;AoFnFb;EACI,kBpFtCC;AoF2ED;;AAlCQ;EACI,OpF6DL;EoF5DK,cpF+CF;EoF9CE,kBpF5CX;EoF6CW,WpF1DJ;;AoF2DI;EACI,kBpFwDT;EoFvDS,qBpFuDT;;AoFpDK;AAAA;AAAA;EAGI,WpF+CJ;;AoF5CJ;AAAA;AAAA;EAGI,OpF4CC;EoF3CD,kBpF6BF;;AoF5BE;AAAA;AAAA;EACI,kBpF0CF;EoFzCE,qBpFyCF;;AoFtCN;EACI,OpFqCE;EoFpCF,mBpFoCE;EoFnCF,kBpFqBD;;AoFdP;EACI,kBpFYE;;AoFVE;EACI,OpF0BL;EoFzBK,kBpFQN;EoFPM,WpF3CV;;AoF4CU;EAGI,OpFqBH;EoFpBG,kBpFxFnB;;AoF0Fe;EACI,OpFkBF;EoFjBE,kBpF5FnB;;;AoF2GD;EACI;EACA;;AACA;AAAA;AAAA;EAGI;;;AASR;EACI;;;AAMR;AAAA;AAAA;EAGI;;;ACzKR;AAAA;;AAAA;AAAA;AAKA;EACI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA,kBrF6BG;EqF5BH;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI;EACA;;AAGJ;AAAA;EAEI;EACA;;;AAIR;EACI;EACA;EACA,kBrFvDO;;;AqF0DX;EACI;EACA,OrF1Ca;EqF2Cb;;AAEA;EAGI;EACA,crFvBS;EqFwBT,kBrFxBS;;AqF2Bb;EACI,OrFwiBI;;AqFriBR;EACI,OrFvEI;;AqF0ER;EACI,OrFiiBC;;AqF9hBL;EACI,OrF9EI;;AqFiFR;EACI,OrFjFI;;AqFoFR;EACI,OrFpFG;;;AqFyFP;EAGI;EACA,crFzDS;EqF0DT,kBrF1DS;;;AsFpDjB;AAAA;;AAAA;A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IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAIR;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAIR;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AAIR;EACI;IACI;IACA;IACA;;;EAEJ;IACI;IACA;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;IACA;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;EAEJ;AAAA;IAEI;;;AC16BR;AAAA;;AAAA;AAAA;AAMA;EACI;;AAEA;EACI;;AAGI;EACI,OnGFJ;EmGGI,kBnGRL;;AmGWC;EACI;EACA;EACA;;AAIR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,OnGbC;EmGcD,enGVI;;AmGYJ;EACI;;AAIA;EACI,OnGnCZ;EmGoCY,kBnGzCb;;AmG4CS;EACI;EACA;EACA;;AAGJ;EACI,OnGoLR;EmGnLQ,kBnG/CZ;;AmGkDQ;EACI,OnG+KR;EmG9KQ,kBnGwLL;;;AoGxPnB;AAAA;;AAAA;AAAA;AAMA;EACI,OpGkBa;EoGjBb,YpG2Ca;;AoGzCb;EACI,OpGcS;;AoGXb;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YpGfG;;AoGiBH;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YpGvBA;;AoG0BJ;EACI;;AAGJ;EACI;;;AAKZ;EACI;IACI;;EAEJ;IACI;;;ACrDR;AAAA;;AAAA;AAAA;AAMA;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA,erGUgB;EqGThB,arG8De;;;AqG3DnB;AAAA;EAEI;EAUA;;;AAGJ;AAAA;AAAA;EAGI;;;AAGJ;EACI;IACI;;EAEJ;IACI;;;ACjDR;AAAA;;AAAA;AAAA;AAAA;AAOA;EACI;;AAEA;EACI,etGkBY;EsGjBZ,kBtGsCD;;;AsGlCP;AAAA;EAEI;EACA;EACA,WtGyDU;;;AsGtDd;AAAA;EAEI;EACA;EACA;;;AAGJ;EAEI;;;AAGJ;AAAA;EAEI;EACA;EACA,WtGfY;;;AsGkBhB;EACI;;;AAGJ;EACI,kBtGnCQ;;;AsGsCZ;EACI,kBtGtCQ;;;AsGyCZ;EACI,kBtGzCQ;;;AsG4CZ;EACI,kBtG5CO;;;AsG+CX;EACI,OtGyOc;;;AsGtOlB;EACI,OtG1Ca;;;AsG6CjB;EACI;EACA;;;AAGJ;EACI;;;AC5EJ;AAAA;;AAAA;AAAA;AAMA;EACI;;;AAGJ;EACI,QvGuCG;;;AwGlDP;AAAA;;AAAA;AAAA;AAAA;AASI;EACI,QxGEI;;AwGCR;EACI;;;AAKJ;EACI,QxGPI;;AwGUR;EACI;;;AAKJ;EACI,QxGhBI;;AwGmBR;EACI;;;AAKJ;EACI,QxGzBG;;AwG4BP;EACI;;;AAMJ;AAAA;EAEI;;;AAKJ;AAAA;EAEI;;;AAKJ;AAAA;EAEI;;;AAKR;EACI;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAIR;EACI;;;AAGJ;EACI;IACI;IACA;IACA;IACA;;EAEA;IACI;IACA;IACA;IACA;;;ACtGZ;AAAA;;AAAA;AAAA;AAMA;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIA;EACI;;AAGJ;EACI;;AAGJ;EACI;;AAKI;AAAA;EAEI;;AAKJ;AAAA;EAEI;;;AC9ChB;AAAA;;AAAA;AAAA;AAAA;AAOA;EACI,O1GIQ;;;A0GDZ;EACI,O1GCQ;;;A0GEZ;EACI,O1GwmBK;;;A0GrmBT;EACI,O1GNQ;;;A0GSZ;EACI,O1GTO;;;A0GYX;EACI,O1G2lBQ;;;A0GtlBJ;EACI;;AAEJ;EACI;;AAIJ;EACI;;AAEJ;EACI;;;AC5CZ;AAAA;;AAAA;AAAA;AAMA;EACI;EACA;;AAEA;EACI,c3GLG;;A2GQP;EACI;;ACtBJ;EACI,kB5GiBI;;A4GdR;EACI,c5GaI;E4GZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GCI;;A4GER;EACI,c5GHI;E4GIJ;;;ACdR;AAAA;;AAAA;AAAA;AAAA;ADRI;EACI,kB5GiBI;;A4GdR;EACI,c5GaI;E4GZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GCI;;A4GER;EACI,c5GHI;E4GIJ;;;AAtBJ;EACI,kB5GkBI;;A4GfR;EACI,c5GcI;E4GbJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GEI;;A4GCR;EACI,c5GFI;E4GGJ;;;AAtBJ;EACI,kB5GmBI;;A4GhBR;EACI,c5GeI;E4GdJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GGI;;A4GAR;EACI,c5GDI;E4GEJ;;;AAtBJ;EACI,kB5GoBG;;A4GjBP;EACI,c5GgBG;E4GfH;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GIG;;A4GDP;EACI;EACA;;;AEdR;AAAA;;AAAA;AAAA;AAMA;EACI;EACA;;AAEA;EACI,c9GNG;;A8GSP;EACI;;AFvBJ;EACI,kB5GiBI;;A4GdR;EACI,c5GaI;E4GZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GCI;;A4GER;EACI,c5GHI;E4GIJ;;;AGfR;AAAA;;AAAA;AAAA;AAAA;AHPI;EACI,kB5GiBI;;A4GdR;EACI,c5GaI;E4GZJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GCI;;A4GER;EACI,c5GHI;E4GIJ;;;AAtBJ;EACI,kB5GkBI;;A4GfR;EACI,c5GcI;E4GbJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GEI;;A4GCR;EACI,c5GFI;E4GGJ;;;AAtBJ;EACI,kB5GmBI;;A4GhBR;EACI,c5GeI;E4GdJ;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GGI;;A4GAR;EACI,c5GDI;E4GEJ;;;AAtBJ;EACI,kB5GoBG;;A4GjBP;EACI,c5GgBG;E4GfH;EACA;;AAGJ;EACI;EACA;;AAGJ;AAAA;EAEI,c5GIG;;A4GDP;EACI;EACA;;;AIhBR;AAAA;;AAAA;AAAA;AAOA;EACI;EACA;EACA,OhH6eiB;EgH5ejB;EACA,ShHgiBQ;EgH/hBR;EACA,ehH0e0B;;;AgHte9B;EACI;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;;AAKR;EACI;EACA;EACA;EACA;EACA,ehHwgBS;;AgHtgBT;EACI;EACA;;AAUR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EAGI,WhHkbS;;AgH/ab;EACI;EACA;;;AAIR;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;EACA;EACA,chH0dK;;;AgHtdb;EACI;;AAEA;EACI;EACA,chHidK;;AgH9cT;EACI;EACA;;;AAKR;EACI,OhH0Ya;EgHzYb,QhHyYa;EgHxYb;EACA,kBhHhGQ;;;AgH6GZ;EAEI,OhH/GQ;;;AgHkHZ;EACI;EACA;EACA;EACA,ehHrGgB;EgHsGhB,QhHiXc;EgHhXd,OhHgXc;;;AiHpflB;AAAA;;AAAA;AAAA;AAOA;EACI;;;ACRJ;AAAA;;AAAA;AAAA;AAQA;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;;;AAGJ;AAAA;EAEI;EACA;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAIA;EACI;EACA;;AAEA;EACI;;;AAKZ;AAAA;EAEI;EAEA;EACA;;;AAIJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;;AAEJ;EACI;EACA;EACA;EACA;EACA,cjHPc;;;AiHUlB;EACI;EACA;EACA;EACA;EACA,cjHfc;;;AiHmBlB;EACI;IACI;;;AAIR;EACI;IACI;;;AAIR;EACI;IACI;;;AAIR;EACI;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAIR;EACI;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAIR;EACI;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAIR;EACI;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAIR;EACI;AAAA;AAAA;IAGI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;EAEJ;IACI;;;AAMR;EACI;;;AAKJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAKJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAIJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;;;AC1aJ;AAAA;;AAAA;AAAA;AAMA;EACI;EACA;;AAEA;EACI;;AACA;AAAA;AAAA;EAGI;;AAKJ;EACI;;AAMI;EAEI,aADgB;EAEhB,YAFgB;;AAIhB;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;;;ACjDxB;AAAA;;AAAA;AAAA;AAOI;EAmBJ,cpHEmB;EoHDnB,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpHfa;EoHgBb,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpH6BQ;;AoH1BZ;EACI,MpHyBQ;;AoHrBR;EAGI,kBpHpCL;;AoHsCK;EACI,OpH7EJ;;AoHgFA;EACI,MpHjFJ;;AoHuFZ;EACI,cpHxEe;EoHyEf;;AAMA;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpHTQ;;;AqHxGhB;AAAA;;AAAA;AAAA;AAAA;AASQ;EDiBR,cpHdY;EoHeZ,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpHtDQ;EoHuDR,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpHmKQ;;AoHhKZ;EACI,MpH+JQ;;AoH3JR;EAGI,kBpHkKO;;AoHhKP;EACI,OpHqJA;;AoHlJJ;EACI,MpHiJA;;AoH3IhB;EACI,cpHxFQ;EoHyFR;;AClFI;EDOR,cpHnBW;EoHoBX,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpH6JS;EoH5JT,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpH/DI;;AoHkER;EACI,MpHnEI;;AoHuEJ;EAGI,kBpH/ED;;AoHiFC;EACI,OpH7EJ;;AoHgFA;EACI,MpHjFJ;;AoHuFZ;EACI,cpH7FO;EoH8FP;;ACxEI;EDHR,cpHbY;EoHcZ,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpHrDQ;EoHsDR,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpHoKQ;;AoHjKZ;EACI,MpHgKQ;;AoH5JR;EAGI,kBpHmKO;;AoHjKP;EACI,OpHsJA;;AoHnJJ;EACI,MpHkJA;;AoH5IhB;EACI,cpHvFQ;EoHwFR;;AC9DI;EDbR,cpHZY;EoHaZ,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpHpDQ;EoHqDR,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpHqKQ;;AoHlKZ;EACI,MpHiKQ;;AoH7JR;EAGI,kBpHoKO;;AoHlKP;EACI,OpHuJA;;AoHpJJ;EACI,MpHmJA;;AoH7IhB;EACI,cpHtFQ;EoHuFR;;ACpDI;EDvBR,cpHXW;EoHYX,kBpHwBiB;;AoHtBjB;EACI,wBpHDgB;EoHEhB,yBpHFgB;;AoHIhB;EACI;EACA;;AAIR;EACI,2BpHXgB;EoHYhB,4BpHZgB;;AoHiBhB;EACI;EACA;;AAKJ;EACI;;AAKJ;EACI;;AAIR;EACI;EACA,kBpHnDO;EoHoDP,SpH4eS;;AoH1eT;EACI,WpH9CQ;EoH+CR,apHWW;;AoHRf;EACI,OpHsKO;;AoHnKX;EACI,MpHkKO;;AoH9JP;EAGI,kBpHqKM;;AoHnKN;EACI,OpHwJD;;AoHrJH;EACI,MpHoJD;;AoH9If;EACI,cpHrFO;EoHsFP;;AAMA;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpH6HQ;;AoHnIZ;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpHrGI;;AoH+FR;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpH8HQ;;AoHpIZ;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpH+HQ;;AoHrIZ;EACI,WpHpFQ;EoHqFR,apH3BW;;AoH8Bf;EACI,OpHgIO;;AqH5JP;EAKI;EACA;;AALA;EACI;;AAUJ;EACI;;AAMR;EACI;;AAOA;EACI,kBrH6NF;;AqH1NM;EAGI,kBrHmNT;;AqH9MH;EACI,kBrHiNF;;AqH1MF;EACI;;AAGJ;EACI;;;ACzIhB;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA,ctHdC;EsHeD;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA,oBtHnCC;;;AsHuCT;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;;AAGJ;AAAA;EAEI;EACA;EACA;;AAIA;EACI;EACA;EACA;EACA;;AAKJ;EACI;EACA;EACA;EACA;;AAIR;AAAA;EAEI;;AAGJ;AAAA;AAAA;AAAA;EAII;;AAGJ;EACI;EACA;;AAGJ;AACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;AAAA;EAEI;EACA;;;AAIR;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA,YtHgfI;;AsH9eJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,qBtHmeA;;AsH/dJ;EACI;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACI;;AAEA;EACI,YtH9JR;;AsHqKA;EACI,atH/FD;;AsHqGH;EACI;EACA;;AAIA;EACI;;;ACtDhB;EACI;;;AA1HI;EAbZ,cvHSY;EuHRZ,kBvHQY;EuHPZ;;AAmBgB;EAfhB;;AAkBoB;EACI,YvHhBZ;;;AuHIA;EAbZ,cvHIW;EuHHX,kBvHGW;EuHFX;;AAmBgB;EAfhB;;AAkBoB;EACI,YvHrBb;;;AuHSC;EAbZ,cvHUY;EuHTZ,kBvHSY;EuHRZ;;AAmBgB;EAfhB;;AAkBoB;EACI,YvHfZ;;;AuHGA;EAbZ,cvHWY;EuHVZ,kBvHUY;EuHTZ;;AAmBgB;EAfhB;;AAkBoB;EACI,YvHdZ;;;AuHEA;EAbZ,cvHYW;EuHXX,kBvHWW;EuHVX;;AAmBgB;EAfhB;;AAkBoB;EACI,YvHbb;;;AuH0BH;EAtCR,cAHgB;EAIhB,kBAJgB;EAKhB;;AAwCQ;EA1CR,cvHUY;EuHTZ,kBvHSY;EuHRZ;;AA4CQ;EA9CR,cvHqnBS;EuHpnBT,kBvHonBS;EuHnnBT;;AAgDQ;EAlDR,cvHSY;EuHRZ,kBvHQY;EuHPZ;;AAoDQ;EAtDR,cvHWY;EuHVZ,kBvHUY;EuHTZ;;AAwDQ;EA1DR,cvHYW;EuHXX,kBvHWW;EuHVX;;AA4DQ;EA9DR,cvHonBY;EuHnnBZ,kBvHmnBY;EuHlnBZ;;AAuEQ;EAnER;;AAsEY;EACI,YAjFI;;AAqFZ;EA3ER;;AA8EY;EACI,YvH3EJ;;AuH+EJ;EAnFR;;AAsFY;EACI,YvHwhBP;;AuHphBD;EA3FR;;AA8FY;EACI,YvH5FJ;;AuHgGJ;EAnGR;;AAsGY;EACI,YvHlGJ;;AuHsGJ;EA3GR;;AA8GY;EACI,YvHzGL;;AuH6GH;EAnHR;;AAsHY;EACI,YvHufJ;;AuH9kBJ;EAtCR,cAHgB;EAIhB,kBAJgB;EAKhB;;AAwCQ;EA1CR,cvHUY;EuHTZ,kBvHSY;EuHRZ;;AA4CQ;EA9CR,cvHqnBS;EuHpnBT,kBvHonBS;EuHnnBT;;AAgDQ;EAlDR,cvHSY;EuHRZ,kBvHQY;EuHPZ;;AAoDQ;EAtDR,cvHWY;EuHVZ,kBvHUY;EuHTZ;;AAwDQ;EA1DR,cvHYW;EuHXX,kBvHWW;EuHVX;;AA4DQ;EA9DR,cv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","file":"theme.compiled.css","sourcesContent":["// Default variables\n@import \"exclusion-variables-defaults\";\n@import \"../../../theme/web/exclusion-variables\";\n@import \"generated-exclusion-variables\";\n@import \"variables\";\n@import \"variables-css-mappings\";\n@import \"../../../theme/web/custom-variables\";\n\n// Font Family Import\n@if $font-family-import != false {\n @import url($font-family-import);\n}\n\n//=============================== Bootstrap ================================\\\\\n\n// Utilities\n@import \"core/_legacy/bootstrap/bootstrap\";\n@import \"core/_legacy/bootstrap/bootstrap-rtl\";\n@if not $exclude-bootstrap {\n @include bootstrap();\n @include bootstrap-rtl();\n}\n@import \"core/_legacy/mxui\";\n@if not $exclude-mxui {\n @include mxui();\n}\n\n//================================== CORE ==================================\\\\\n\n// Base\n@import \"core/base/mixins/animations\";\n@import \"core/base/mixins/spacing\";\n@import \"core/base/mixins/layout-spacing\";\n@import \"core/base/mixins/buttons\";\n@import \"core/base/mixins/groupbox\";\n\n@import \"core/base/animation\";\n@if not $exclude-animations {\n @include animations();\n}\n@import \"core/base/flex\";\n@if not $exclude-flex {\n @include flex();\n}\n@import \"core/base/spacing\";\n@if not $exclude-spacing {\n @include spacing();\n}\n@import \"core/base/base\";\n@if not $exclude-base {\n @include base();\n}\n@import \"core/base/login\";\n@if not $exclude-login {\n @include login();\n}\n\n// Widgets\n@import \"core/widgets/input\";\n@if not $exclude-input {\n @include input();\n}\n\n@import \"core/helpers/background\";\n@if not $exclude-background-helpers {\n @include background-helpers();\n}\n\n@import \"core/widgets/label\";\n@if not $exclude-label {\n @include label();\n}\n\n@import \"core/widgets/badge\";\n@if not $exclude-badge {\n @include badge();\n}\n\n@import \"core/helpers/label\";\n@if not $exclude-label and not $exclude-label-helpers {\n @include label-helpers();\n}\n\n@import \"core/widgets/badge-button\";\n@if not $exclude-badge-button {\n @include badge-button();\n}\n\n@import \"core/helpers/badge-button\";\n@if not $exclude-badge-button and not $exclude-badge-button-helpers {\n @include badge-button-helpers();\n}\n\n@import \"core/widgets/button\";\n@if not $exclude-button {\n @include button();\n}\n\n@import \"core/helpers/button\";\n@if not $exclude-button and not $exclude-button-helpers {\n @include button-helpers();\n}\n\n@import \"core/widgets/check-box\";\n@if not $exclude-check-box {\n @include check-box();\n}\n\n@import \"core/widgets/grid\";\n@if not $exclude-grid {\n @include grid();\n}\n\n@import \"core/widgets/data-grid\";\n@if not $exclude-data-grid {\n @include data-grid();\n}\n\n@import \"core/helpers/data-grid\";\n@if not $exclude-data-grid and not $exclude-data-grid-helpers {\n @include data-grid-helpers();\n}\n\n@import \"core/widgets/data-view\";\n@if not $exclude-data-view {\n @include data-view();\n}\n\n@import \"core/widgets/date-picker\";\n@if not $exclude-data-picker {\n @include date-picker();\n}\n\n@import \"core/widgets/header\";\n@if not $exclude-header {\n @include header();\n}\n\n@import \"core/widgets/glyphicon\";\n@if not $exclude-glyphicon {\n @include glyphicon();\n}\n\n@import \"core/widgets/group-box\";\n@if not $exclude-group-box {\n @include group-box();\n}\n\n@import \"core/helpers/group-box\";\n@if not $exclude-group-box and not $exclude-group-box-helpers {\n @include group-box-helpers();\n}\n\n@import \"core/helpers/image\";\n@if not $exclude-image-helpers {\n @include image-helpers();\n}\n\n@import \"core/widgets/list-view\";\n@if not $exclude-list-view {\n @include list-view();\n}\n\n@import \"core/helpers/list-view\";\n@if not $exclude-list-view and not $exclude-list-view-helpers {\n @include list-view-helpers();\n}\n\n@import \"core/widgets/modal\";\n@if not $exclude-modal {\n @include modal();\n}\n\n@import \"core/widgets/navigation-bar\";\n@if not $exclude-navigation-bar {\n @include navigation-bar();\n}\n\n@import \"core/helpers/navigation-bar\";\n@if not $exclude-navigation-bar and not $exclude-navigation-bar-helpers {\n @include navigation-bar-helpers();\n}\n\n@import \"core/widgets/navigation-list\";\n@if not $exclude-navigation-list {\n @include navigation-list();\n}\n\n@import \"core/widgets/navigation-tree\";\n@if not $exclude-navigation-tree {\n @include navigation-tree();\n}\n\n@import \"core/helpers/navigation-tree\";\n@if not $exclude-navigation-tree and not $exclude-navigation-tree-helpers {\n @include navigation-tree-helpers();\n}\n\n@import \"core/widgets/pop-up-menu\";\n@if not $exclude-pop-up-menu {\n @include pop-up-menu();\n}\n\n@import \"core/widgets/simple-menu-bar\";\n@if not $exclude-simple-menu-bar {\n @include simple-menu-bar();\n}\n\n@import \"core/helpers/simple-menu-bar\";\n@if not $exclude-simple-menu-bar and not $exclude-simple-menu-bar-helpers {\n @include simple-menu-bar-helpers();\n}\n\n@import \"core/widgets/radio-button\";\n@if not $exclude-radio-button {\n @include radio-button();\n}\n\n@import \"core/widgets/scroll-container-react\";\n@import \"core/widgets/scroll-container-dojo\";\n@if not $exclude-scroll-container {\n @if $use-modern-client {\n @include scroll-container-react();\n } @else {\n @include scroll-container-dojo();\n }\n}\n\n@import \"core/widgets/tab-container\";\n@if not $exclude-tab-container {\n @include tab-container();\n}\n\n@import \"core/helpers/tab-container\";\n@if not $exclude-tab-container and not $exclude-tab-container-helpers {\n @include tab-container-helpers();\n}\n\n@import \"core/widgets/table\";\n@if not $exclude-table {\n @include table();\n}\n\n@import \"core/helpers/table\";\n@if not $exclude-table and not $exclude-table-helpers {\n @include table-helpers();\n}\n\n@import \"core/widgets/template-grid\";\n@if not $exclude-template-grid {\n @include template-grid();\n}\n\n@import \"core/helpers/template-grid\";\n@if not $exclude-template-grid and not $exclude-template-grid-helpers {\n @include template-grid-helpers();\n}\n\n@import \"core/widgets/typography\";\n@if not $exclude-typography {\n @include typography();\n}\n\n@import \"core/helpers/typography\";\n@if not $exclude-typography and not $exclude-typography-helpers {\n @include typography-helpers();\n}\n\n@import \"core/widgets/layout-grid\";\n@if not $exclude-layout-grid {\n @include layout-grid();\n}\n\n@import \"core/widgets/pagination\";\n@if not $exclude-pagination {\n @include pagination();\n}\n\n@import \"core/widgets/progress\";\n@if not $exclude-progress {\n @include progress();\n}\n\n@import \"core/widgets/progress-bar\";\n@if not $exclude-progress-bar {\n @include progress-bar();\n}\n\n@import \"core/helpers/progress-bar\";\n@if not $exclude-progress-bar and not $exclude-progress-bar-helpers {\n @include progress-bar-helpers();\n}\n\n@import \"core/widgets/progress-circle\";\n@if not $exclude-progress-circle {\n @include progress-circle();\n}\n\n@import \"core/helpers/progress-circle\";\n@if not $exclude-progress-circle and not $exclude-progress-circle-helpers {\n @include progress-circle-helpers();\n}\n\n@import \"core/widgets/rating\";\n@if not $exclude-rating {\n @include rating();\n}\n\n@import \"core/helpers/rating\";\n@if not $exclude-rating and not $exclude-rating-helpers {\n @include rating-helpers();\n}\n\n@import \"core/widgets/range-slider\";\n@if not $exclude-range-slider {\n @include range-slider();\n}\n\n@import \"core/helpers/range-slider\";\n@if not $exclude-range-slider and not $exclude-range-slider-helpers {\n @include range-slider-helpers();\n}\n\n@import \"core/widgets/slider\";\n@if not $exclude-slider {\n @include slider();\n}\n\n@import \"core/helpers/slider\";\n@if not $exclude-slider and not $exclude-slider-helpers {\n @include slider-helpers();\n}\n\n@import \"core/widgets/timeline\";\n@if not $exclude-timeline {\n @include timeline();\n}\n\n@import \"core/widgets/tooltip\";\n@if not $exclude-tooltip {\n @include tooltip();\n}\n\n@import \"core/helpers/helper-classes\";\n@if not $exclude-helper-classes {\n @include helper-classes();\n}\n\n@import \"core/widgets/barcode-scanner\";\n@if not $exclude-barcode-scanner {\n @include barcode-scanner();\n}\n\n@import \"core/widgets/accordion\";\n@if not $exclude-accordion {\n @include accordion();\n}\n\n@import \"core/helpers/accordion\";\n@if not $exclude-accordion and not $exclude-accordion-helpers {\n @include accordion-helpers();\n}\n\n// Custom widgets\n@import \"core/widgetscustom/dijit-widget\";\n@if not $exclude-custom-dijit-widget {\n @include dijit-widget();\n}\n\n@import \"core/widgets/switch\";\n@if not $exclude-custom-switch {\n @include switch();\n}\n\n//================================= CUSTOM =================================\\\\\n\n// Layouts\n@import \"layouts/layout-atlas\";\n@if not $exclude-layout-atlas {\n @include layout-atlas();\n}\n@import \"layouts/layout-atlas-phone\";\n@if not $exclude-layout-atlas-phone {\n @include layout-atlas-phone();\n}\n@import \"layouts/layout-atlas-responsive\";\n@if not $exclude-layout-atlas-responsive {\n @include layout-atlas-responsive();\n}\n@import \"layouts/layout-atlas-tablet\";\n@if not $exclude-layout-atlas-tablet {\n @include layout-atlas-tablet();\n}\n","@font-face {\n font-family: \"Atlas_Core$Atlas_Filled\";\n src: url(\"./fonts/Atlas_Core$Atlas_Filled.ttf\") format(\"truetype\");\n}\n.mx-icon-filled {\n display: inline-block;\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n font-family: \"Atlas_Core$Atlas_Filled\";\n}\n.mx-icon-filled.mx-icon-add::before {\n content: \"\\e900\";\n}\n.mx-icon-filled.mx-icon-add-circle::before {\n content: \"\\e901\";\n}\n.mx-icon-filled.mx-icon-airplane::before {\n content: \"\\e902\";\n}\n.mx-icon-filled.mx-icon-alarm-bell::before {\n content: \"\\e903\";\n}\n.mx-icon-filled.mx-icon-alarm-bell-off::before {\n content: \"\\e904\";\n}\n.mx-icon-filled.mx-icon-alert-circle::before {\n content: \"\\e905\";\n}\n.mx-icon-filled.mx-icon-alert-triangle::before {\n content: \"\\e906\";\n}\n.mx-icon-filled.mx-icon-align-bottom::before {\n content: \"\\e907\";\n}\n.mx-icon-filled.mx-icon-align-center::before {\n content: \"\\e908\";\n}\n.mx-icon-filled.mx-icon-align-left::before {\n content: \"\\e909\";\n}\n.mx-icon-filled.mx-icon-align-middle::before {\n content: \"\\e90a\";\n}\n.mx-icon-filled.mx-icon-align-right::before {\n content: \"\\e90b\";\n}\n.mx-icon-filled.mx-icon-align-top::before {\n content: \"\\e90c\";\n}\n.mx-icon-filled.mx-icon-analytics-bars::before {\n content: \"\\e90d\";\n}\n.mx-icon-filled.mx-icon-analytics-graph-bar::before {\n content: \"\\e90e\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-down::before {\n content: \"\\e90f\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-left::before {\n content: \"\\e910\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-right::before {\n content: \"\\e911\";\n}\n.mx-icon-filled.mx-icon-arrow-circle-up::before {\n content: \"\\e912\";\n}\n.mx-icon-filled.mx-icon-arrow-down::before {\n content: \"\\e913\";\n}\n.mx-icon-filled.mx-icon-arrow-left::before {\n content: \"\\e914\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-down::before {\n content: \"\\e915\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-left::before {\n content: \"\\e916\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-right::before {\n content: \"\\e917\";\n}\n.mx-icon-filled.mx-icon-arrow-narrow-up::before {\n content: \"\\e918\";\n}\n.mx-icon-filled.mx-icon-arrow-right::before {\n content: \"\\e919\";\n}\n.mx-icon-filled.mx-icon-arrow-square-down::before {\n content: \"\\e91a\";\n}\n.mx-icon-filled.mx-icon-arrow-square-left::before {\n content: \"\\e91b\";\n}\n.mx-icon-filled.mx-icon-arrow-square-right::before {\n content: \"\\e91c\";\n}\n.mx-icon-filled.mx-icon-arrow-square-up::before {\n content: \"\\e91d\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-down::before {\n content: \"\\e91e\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-left::before {\n content: \"\\e91f\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-right::before {\n content: \"\\e920\";\n}\n.mx-icon-filled.mx-icon-arrow-thick-up::before {\n content: \"\\e921\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-down::before {\n content: \"\\e922\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-left::before {\n content: \"\\e923\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-right::before {\n content: \"\\e924\";\n}\n.mx-icon-filled.mx-icon-arrow-triangle-up::before {\n content: \"\\e925\";\n}\n.mx-icon-filled.mx-icon-arrow-up::before {\n content: \"\\e926\";\n}\n.mx-icon-filled.mx-icon-arrows-retweet::before {\n content: \"\\e927\";\n}\n.mx-icon-filled.mx-icon-asterisk::before {\n content: \"\\e928\";\n}\n.mx-icon-filled.mx-icon-badge::before {\n content: \"\\e929\";\n}\n.mx-icon-filled.mx-icon-barcode::before {\n content: \"\\e92a\";\n}\n.mx-icon-filled.mx-icon-binoculars::before {\n content: \"\\e92b\";\n}\n.mx-icon-filled.mx-icon-bitcoin::before {\n content: \"\\e92c\";\n}\n.mx-icon-filled.mx-icon-blocks::before {\n content: \"\\e92d\";\n}\n.mx-icon-filled.mx-icon-book-closed::before {\n content: \"\\e92e\";\n}\n.mx-icon-filled.mx-icon-book-open::before {\n content: \"\\e92f\";\n}\n.mx-icon-filled.mx-icon-bookmark::before {\n content: \"\\e930\";\n}\n.mx-icon-filled.mx-icon-briefcase::before {\n content: \"\\e931\";\n}\n.mx-icon-filled.mx-icon-browser::before {\n content: \"\\e932\";\n}\n.mx-icon-filled.mx-icon-browser-code::before {\n content: \"\\e933\";\n}\n.mx-icon-filled.mx-icon-browser-page-text::before {\n content: \"\\e934\";\n}\n.mx-icon-filled.mx-icon-browser-search::before {\n content: \"\\e935\";\n}\n.mx-icon-filled.mx-icon-browser-trophy::before {\n content: \"\\e936\";\n}\n.mx-icon-filled.mx-icon-calendar::before {\n content: \"\\e937\";\n}\n.mx-icon-filled.mx-icon-calendar-1::before {\n content: \"\\e938\";\n}\n.mx-icon-filled.mx-icon-camera::before {\n content: \"\\e939\";\n}\n.mx-icon-filled.mx-icon-camping-tent::before {\n content: \"\\e93a\";\n}\n.mx-icon-filled.mx-icon-cash-payment-bill::before {\n content: \"\\e93b\";\n}\n.mx-icon-filled.mx-icon-cash-payment-bill-2::before {\n content: \"\\e93c\";\n}\n.mx-icon-filled.mx-icon-cd::before {\n content: \"\\e93d\";\n}\n.mx-icon-filled.mx-icon-charger::before {\n content: \"\\e93e\";\n}\n.mx-icon-filled.mx-icon-checkmark::before {\n content: \"\\e93f\";\n}\n.mx-icon-filled.mx-icon-checkmark-circle::before {\n content: \"\\e940\";\n}\n.mx-icon-filled.mx-icon-checkmark-shield::before {\n content: \"\\e941\";\n}\n.mx-icon-filled.mx-icon-checkmark-square::before {\n content: \"\\e942\";\n}\n.mx-icon-filled.mx-icon-chevron-down::before {\n content: \"\\e943\";\n}\n.mx-icon-filled.mx-icon-chevron-left::before {\n content: \"\\e944\";\n}\n.mx-icon-filled.mx-icon-chevron-right::before {\n content: \"\\e945\";\n}\n.mx-icon-filled.mx-icon-chevron-up::before {\n content: \"\\e946\";\n}\n.mx-icon-filled.mx-icon-cloud::before {\n content: \"\\e947\";\n}\n.mx-icon-filled.mx-icon-cloud-check::before {\n content: \"\\e948\";\n}\n.mx-icon-filled.mx-icon-cloud-data-transfer::before {\n content: \"\\e949\";\n}\n.mx-icon-filled.mx-icon-cloud-disable::before {\n content: \"\\e94a\";\n}\n.mx-icon-filled.mx-icon-cloud-download::before {\n content: \"\\e94b\";\n}\n.mx-icon-filled.mx-icon-cloud-lock::before {\n content: \"\\e94c\";\n}\n.mx-icon-filled.mx-icon-cloud-off::before {\n content: \"\\e94d\";\n}\n.mx-icon-filled.mx-icon-cloud-refresh::before {\n content: \"\\e94e\";\n}\n.mx-icon-filled.mx-icon-cloud-remove::before {\n content: \"\\e94f\";\n}\n.mx-icon-filled.mx-icon-cloud-search::before {\n content: \"\\e950\";\n}\n.mx-icon-filled.mx-icon-cloud-settings::before {\n content: \"\\e951\";\n}\n.mx-icon-filled.mx-icon-cloud-subtract::before {\n content: \"\\e952\";\n}\n.mx-icon-filled.mx-icon-cloud-sync::before {\n content: \"\\e953\";\n}\n.mx-icon-filled.mx-icon-cloud-upload::before {\n content: \"\\e954\";\n}\n.mx-icon-filled.mx-icon-cloud-warning::before {\n content: \"\\e955\";\n}\n.mx-icon-filled.mx-icon-cog::before {\n content: \"\\e956\";\n}\n.mx-icon-filled.mx-icon-cog-hand-give::before {\n content: \"\\e957\";\n}\n.mx-icon-filled.mx-icon-cog-play::before {\n content: \"\\e958\";\n}\n.mx-icon-filled.mx-icon-cog-shield::before {\n content: \"\\e959\";\n}\n.mx-icon-filled.mx-icon-color-bucket-brush::before {\n content: \"\\e95a\";\n}\n.mx-icon-filled.mx-icon-color-painting-palette::before {\n content: \"\\e95b\";\n}\n.mx-icon-filled.mx-icon-compass-directions::before {\n content: \"\\e95c\";\n}\n.mx-icon-filled.mx-icon-compressed::before {\n content: \"\\e95d\";\n}\n.mx-icon-filled.mx-icon-computer-chip::before {\n content: \"\\e95e\";\n}\n.mx-icon-filled.mx-icon-connect::before {\n content: \"\\e95f\";\n}\n.mx-icon-filled.mx-icon-connect-1::before {\n content: \"\\e960\";\n}\n.mx-icon-filled.mx-icon-console-terminal::before {\n content: \"\\e961\";\n}\n.mx-icon-filled.mx-icon-contacts::before {\n content: \"\\e962\";\n}\n.mx-icon-filled.mx-icon-contrast::before {\n content: \"\\e963\";\n}\n.mx-icon-filled.mx-icon-controls-backward::before {\n content: \"\\e964\";\n}\n.mx-icon-filled.mx-icon-controls-eject::before {\n content: \"\\e965\";\n}\n.mx-icon-filled.mx-icon-controls-fast-backward::before {\n content: \"\\e966\";\n}\n.mx-icon-filled.mx-icon-controls-fast-forward::before {\n content: \"\\e967\";\n}\n.mx-icon-filled.mx-icon-controls-forward::before {\n content: \"\\e968\";\n}\n.mx-icon-filled.mx-icon-controls-pause::before {\n content: \"\\e969\";\n}\n.mx-icon-filled.mx-icon-controls-play::before {\n content: \"\\e96a\";\n}\n.mx-icon-filled.mx-icon-controls-record::before {\n content: \"\\e96b\";\n}\n.mx-icon-filled.mx-icon-controls-shuffle::before {\n content: \"\\e96c\";\n}\n.mx-icon-filled.mx-icon-controls-step-backward::before {\n content: \"\\e96d\";\n}\n.mx-icon-filled.mx-icon-controls-step-forward::before {\n content: \"\\e96e\";\n}\n.mx-icon-filled.mx-icon-controls-stop::before {\n content: \"\\e96f\";\n}\n.mx-icon-filled.mx-icon-controls-volume-full::before {\n content: \"\\e970\";\n}\n.mx-icon-filled.mx-icon-controls-volume-low::before {\n content: \"\\e971\";\n}\n.mx-icon-filled.mx-icon-controls-volume-off::before {\n content: \"\\e972\";\n}\n.mx-icon-filled.mx-icon-conversation-question-warning::before {\n content: \"\\e973\";\n}\n.mx-icon-filled.mx-icon-copy::before {\n content: \"\\e974\";\n}\n.mx-icon-filled.mx-icon-credit-card::before {\n content: \"\\e975\";\n}\n.mx-icon-filled.mx-icon-crossroad-sign::before {\n content: \"\\e976\";\n}\n.mx-icon-filled.mx-icon-cube::before {\n content: \"\\e977\";\n}\n.mx-icon-filled.mx-icon-cutlery::before {\n content: \"\\e978\";\n}\n.mx-icon-filled.mx-icon-dashboard::before {\n content: \"\\e979\";\n}\n.mx-icon-filled.mx-icon-data-transfer::before {\n content: \"\\e97a\";\n}\n.mx-icon-filled.mx-icon-desktop::before {\n content: \"\\e97b\";\n}\n.mx-icon-filled.mx-icon-diamond::before {\n content: \"\\e97c\";\n}\n.mx-icon-filled.mx-icon-direction-buttons::before {\n content: \"\\e97d\";\n}\n.mx-icon-filled.mx-icon-direction-buttons-arrows::before {\n content: \"\\e97e\";\n}\n.mx-icon-filled.mx-icon-disable::before {\n content: \"\\e97f\";\n}\n.mx-icon-filled.mx-icon-document::before {\n content: \"\\e980\";\n}\n.mx-icon-filled.mx-icon-document-open::before {\n content: \"\\e981\";\n}\n.mx-icon-filled.mx-icon-document-save::before {\n content: \"\\e982\";\n}\n.mx-icon-filled.mx-icon-dollar::before {\n content: \"\\e983\";\n}\n.mx-icon-filled.mx-icon-double-bed::before {\n content: \"\\e984\";\n}\n.mx-icon-filled.mx-icon-double-chevron-left::before {\n content: \"\\e985\";\n}\n.mx-icon-filled.mx-icon-double-chevron-right::before {\n content: \"\\e986\";\n}\n.mx-icon-filled.mx-icon-download-bottom::before {\n content: \"\\e987\";\n}\n.mx-icon-filled.mx-icon-download-button::before {\n content: \"\\e988\";\n}\n.mx-icon-filled.mx-icon-duplicate::before {\n content: \"\\e989\";\n}\n.mx-icon-filled.mx-icon-email::before {\n content: \"\\e98a\";\n}\n.mx-icon-filled.mx-icon-equalizer::before {\n content: \"\\e98b\";\n}\n.mx-icon-filled.mx-icon-eraser::before {\n content: \"\\e98c\";\n}\n.mx-icon-filled.mx-icon-euro::before {\n content: \"\\e98d\";\n}\n.mx-icon-filled.mx-icon-expand-horizontal::before {\n content: \"\\e98e\";\n}\n.mx-icon-filled.mx-icon-expand-vertical::before {\n content: \"\\e98f\";\n}\n.mx-icon-filled.mx-icon-external::before {\n content: \"\\e990\";\n}\n.mx-icon-filled.mx-icon-file-pdf::before {\n content: \"\\e991\";\n}\n.mx-icon-filled.mx-icon-file-zip::before {\n content: \"\\e992\";\n}\n.mx-icon-filled.mx-icon-film::before {\n content: \"\\e993\";\n}\n.mx-icon-filled.mx-icon-filter::before {\n content: \"\\e994\";\n}\n.mx-icon-filled.mx-icon-fire::before {\n content: \"\\e995\";\n}\n.mx-icon-filled.mx-icon-flag::before {\n content: \"\\e996\";\n}\n.mx-icon-filled.mx-icon-flash::before {\n content: \"\\e997\";\n}\n.mx-icon-filled.mx-icon-floppy-disk::before {\n content: \"\\e998\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-arrow-down::before {\n content: \"\\e999\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-arrow-up::before {\n content: \"\\e99a\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-checkmark::before {\n content: \"\\e99b\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-group::before {\n content: \"\\e99c\";\n}\n.mx-icon-filled.mx-icon-floppy-disk-remove::before {\n content: \"\\e99d\";\n}\n.mx-icon-filled.mx-icon-folder-closed::before {\n content: \"\\e99e\";\n}\n.mx-icon-filled.mx-icon-folder-open::before {\n content: \"\\e99f\";\n}\n.mx-icon-filled.mx-icon-folder-upload::before {\n content: \"\\e9a0\";\n}\n.mx-icon-filled.mx-icon-fruit-apple::before {\n content: \"\\e9a1\";\n}\n.mx-icon-filled.mx-icon-fullscreen::before {\n content: \"\\e9a2\";\n}\n.mx-icon-filled.mx-icon-gift::before {\n content: \"\\e9a3\";\n}\n.mx-icon-filled.mx-icon-github::before {\n content: \"\\e9a4\";\n}\n.mx-icon-filled.mx-icon-globe::before {\n content: \"\\e9a5\";\n}\n.mx-icon-filled.mx-icon-globe-1::before {\n content: \"\\e9a6\";\n}\n.mx-icon-filled.mx-icon-graduation-hat::before {\n content: \"\\e9a7\";\n}\n.mx-icon-filled.mx-icon-hammer::before {\n content: \"\\e9a8\";\n}\n.mx-icon-filled.mx-icon-hammer-wench::before {\n content: \"\\e9a9\";\n}\n.mx-icon-filled.mx-icon-hand-down::before {\n content: \"\\e9aa\";\n}\n.mx-icon-filled.mx-icon-hand-left::before {\n content: \"\\e9ab\";\n}\n.mx-icon-filled.mx-icon-hand-right::before {\n content: \"\\e9ac\";\n}\n.mx-icon-filled.mx-icon-hand-up::before {\n content: \"\\e9ad\";\n}\n.mx-icon-filled.mx-icon-handshake-business::before {\n content: \"\\e9ae\";\n}\n.mx-icon-filled.mx-icon-hard-drive::before {\n content: \"\\e9af\";\n}\n.mx-icon-filled.mx-icon-headphones::before {\n content: \"\\e9b0\";\n}\n.mx-icon-filled.mx-icon-headphones-mic::before {\n content: \"\\e9b1\";\n}\n.mx-icon-filled.mx-icon-heart::before {\n content: \"\\e9b2\";\n}\n.mx-icon-filled.mx-icon-hierarchy-files::before {\n content: \"\\e9b3\";\n}\n.mx-icon-filled.mx-icon-home::before {\n content: \"\\e9b4\";\n}\n.mx-icon-filled.mx-icon-hourglass::before {\n content: \"\\e9b5\";\n}\n.mx-icon-filled.mx-icon-hyperlink::before {\n content: \"\\e9b6\";\n}\n.mx-icon-filled.mx-icon-image::before {\n content: \"\\e9b7\";\n}\n.mx-icon-filled.mx-icon-image-collection::before {\n content: \"\\e9b8\";\n}\n.mx-icon-filled.mx-icon-images::before {\n content: \"\\e9b9\";\n}\n.mx-icon-filled.mx-icon-info-circle::before {\n content: \"\\e9ba\";\n}\n.mx-icon-filled.mx-icon-laptop::before {\n content: \"\\e9bb\";\n}\n.mx-icon-filled.mx-icon-layout::before {\n content: \"\\e9bc\";\n}\n.mx-icon-filled.mx-icon-layout-1::before {\n content: \"\\e9bd\";\n}\n.mx-icon-filled.mx-icon-layout-2::before {\n content: \"\\e9be\";\n}\n.mx-icon-filled.mx-icon-layout-column::before {\n content: \"\\e9bf\";\n}\n.mx-icon-filled.mx-icon-layout-horizontal::before {\n content: \"\\e9c0\";\n}\n.mx-icon-filled.mx-icon-layout-list::before {\n content: \"\\e9c1\";\n}\n.mx-icon-filled.mx-icon-layout-rounded::before {\n content: \"\\e9c2\";\n}\n.mx-icon-filled.mx-icon-layout-rounded-1::before {\n content: \"\\e9c3\";\n}\n.mx-icon-filled.mx-icon-leaf::before {\n content: \"\\e9c4\";\n}\n.mx-icon-filled.mx-icon-legal-certificate::before {\n content: \"\\e9c5\";\n}\n.mx-icon-filled.mx-icon-lego-block-stack::before {\n content: \"\\e9c6\";\n}\n.mx-icon-filled.mx-icon-light-bulb-shine::before {\n content: \"\\e9c7\";\n}\n.mx-icon-filled.mx-icon-list-bullets::before {\n content: \"\\e9c8\";\n}\n.mx-icon-filled.mx-icon-location-pin::before {\n content: \"\\e9c9\";\n}\n.mx-icon-filled.mx-icon-lock::before {\n content: \"\\e9ca\";\n}\n.mx-icon-filled.mx-icon-lock-key::before {\n content: \"\\e9cb\";\n}\n.mx-icon-filled.mx-icon-login::before {\n content: \"\\e9cc\";\n}\n.mx-icon-filled.mx-icon-login-1::before {\n content: \"\\e9cd\";\n}\n.mx-icon-filled.mx-icon-login-2::before {\n content: \"\\e9ce\";\n}\n.mx-icon-filled.mx-icon-logout::before {\n content: \"\\e9cf\";\n}\n.mx-icon-filled.mx-icon-logout-1::before {\n content: \"\\e9d0\";\n}\n.mx-icon-filled.mx-icon-luggage-travel::before {\n content: \"\\e9d1\";\n}\n.mx-icon-filled.mx-icon-magnet::before {\n content: \"\\e9d2\";\n}\n.mx-icon-filled.mx-icon-map-location-pin::before {\n content: \"\\e9d3\";\n}\n.mx-icon-filled.mx-icon-martini::before {\n content: \"\\e9d4\";\n}\n.mx-icon-filled.mx-icon-megaphone::before {\n content: \"\\e9d5\";\n}\n.mx-icon-filled.mx-icon-message-bubble::before {\n content: \"\\e9d6\";\n}\n.mx-icon-filled.mx-icon-message-bubble-add::before {\n content: \"\\e9d7\";\n}\n.mx-icon-filled.mx-icon-message-bubble-check::before {\n content: \"\\e9d8\";\n}\n.mx-icon-filled.mx-icon-message-bubble-disable::before {\n content: \"\\e9d9\";\n}\n.mx-icon-filled.mx-icon-message-bubble-edit::before {\n content: \"\\e9da\";\n}\n.mx-icon-filled.mx-icon-message-bubble-information::before {\n content: \"\\e9db\";\n}\n.mx-icon-filled.mx-icon-message-bubble-quotation::before {\n content: \"\\e9dc\";\n}\n.mx-icon-filled.mx-icon-message-bubble-remove::before {\n content: \"\\e9dd\";\n}\n.mx-icon-filled.mx-icon-message-bubble-typing::before {\n content: \"\\e9de\";\n}\n.mx-icon-filled.mx-icon-mobile-phone::before {\n content: \"\\e9df\";\n}\n.mx-icon-filled.mx-icon-modal-window::before {\n content: \"\\e9e0\";\n}\n.mx-icon-filled.mx-icon-monitor::before {\n content: \"\\e9e1\";\n}\n.mx-icon-filled.mx-icon-monitor-camera::before {\n content: \"\\e9e2\";\n}\n.mx-icon-filled.mx-icon-monitor-cash::before {\n content: \"\\e9e3\";\n}\n.mx-icon-filled.mx-icon-monitor-e-learning::before {\n content: \"\\e9e4\";\n}\n.mx-icon-filled.mx-icon-monitor-pie-line-graph::before {\n content: \"\\e9e5\";\n}\n.mx-icon-filled.mx-icon-moon-new::before {\n content: \"\\e9e6\";\n}\n.mx-icon-filled.mx-icon-mountain-flag::before {\n content: \"\\e9e7\";\n}\n.mx-icon-filled.mx-icon-move-down::before {\n content: \"\\e9e8\";\n}\n.mx-icon-filled.mx-icon-move-left::before {\n content: \"\\e9e9\";\n}\n.mx-icon-filled.mx-icon-move-right::before {\n content: \"\\e9ea\";\n}\n.mx-icon-filled.mx-icon-move-up::before {\n content: \"\\e9eb\";\n}\n.mx-icon-filled.mx-icon-music-note::before {\n content: \"\\e9ec\";\n}\n.mx-icon-filled.mx-icon-navigation-menu::before {\n content: \"\\e9ed\";\n}\n.mx-icon-filled.mx-icon-navigation-next::before {\n content: \"\\e9ee\";\n}\n.mx-icon-filled.mx-icon-notes-checklist::before {\n content: \"\\e9ef\";\n}\n.mx-icon-filled.mx-icon-notes-checklist-flip::before {\n content: \"\\e9f0\";\n}\n.mx-icon-filled.mx-icon-notes-paper-edit::before {\n content: \"\\e9f1\";\n}\n.mx-icon-filled.mx-icon-notes-paper-text::before {\n content: \"\\e9f2\";\n}\n.mx-icon-filled.mx-icon-office-sheet::before {\n content: \"\\e9f3\";\n}\n.mx-icon-filled.mx-icon-org-chart::before {\n content: \"\\e9f4\";\n}\n.mx-icon-filled.mx-icon-paper-clipboard::before {\n content: \"\\e9f5\";\n}\n.mx-icon-filled.mx-icon-paper-holder::before {\n content: \"\\e9f6\";\n}\n.mx-icon-filled.mx-icon-paper-holder-full::before {\n content: \"\\e9f7\";\n}\n.mx-icon-filled.mx-icon-paper-list::before {\n content: \"\\e9f8\";\n}\n.mx-icon-filled.mx-icon-paper-plane::before {\n content: \"\\e9f9\";\n}\n.mx-icon-filled.mx-icon-paperclip::before {\n content: \"\\e9fa\";\n}\n.mx-icon-filled.mx-icon-password-lock::before {\n content: \"\\e9fb\";\n}\n.mx-icon-filled.mx-icon-password-type::before {\n content: \"\\e9fc\";\n}\n.mx-icon-filled.mx-icon-paste::before {\n content: \"\\e9fd\";\n}\n.mx-icon-filled.mx-icon-pen-write-paper::before {\n content: \"\\e9fe\";\n}\n.mx-icon-filled.mx-icon-pencil::before {\n content: \"\\e9ff\";\n}\n.mx-icon-filled.mx-icon-pencil-write-paper::before {\n content: \"\\ea00\";\n}\n.mx-icon-filled.mx-icon-performance-graph-calculator::before {\n content: \"\\ea01\";\n}\n.mx-icon-filled.mx-icon-phone::before {\n content: \"\\ea02\";\n}\n.mx-icon-filled.mx-icon-phone-handset::before {\n content: \"\\ea03\";\n}\n.mx-icon-filled.mx-icon-piggy-bank::before {\n content: \"\\ea04\";\n}\n.mx-icon-filled.mx-icon-pin::before {\n content: \"\\ea05\";\n}\n.mx-icon-filled.mx-icon-plane-ticket::before {\n content: \"\\ea06\";\n}\n.mx-icon-filled.mx-icon-play-circle::before {\n content: \"\\ea07\";\n}\n.mx-icon-filled.mx-icon-pound-sterling::before {\n content: \"\\ea08\";\n}\n.mx-icon-filled.mx-icon-power-button::before {\n content: \"\\ea09\";\n}\n.mx-icon-filled.mx-icon-print::before {\n content: \"\\ea0a\";\n}\n.mx-icon-filled.mx-icon-progress-bars::before {\n content: \"\\ea0b\";\n}\n.mx-icon-filled.mx-icon-qr-code::before {\n content: \"\\ea0c\";\n}\n.mx-icon-filled.mx-icon-question-circle::before {\n content: \"\\ea0d\";\n}\n.mx-icon-filled.mx-icon-redo::before {\n content: \"\\ea0e\";\n}\n.mx-icon-filled.mx-icon-refresh::before {\n content: \"\\ea0f\";\n}\n.mx-icon-filled.mx-icon-remove::before {\n content: \"\\ea10\";\n}\n.mx-icon-filled.mx-icon-remove-circle::before {\n content: \"\\ea11\";\n}\n.mx-icon-filled.mx-icon-remove-shield::before {\n content: \"\\ea12\";\n}\n.mx-icon-filled.mx-icon-repeat::before {\n content: \"\\ea13\";\n}\n.mx-icon-filled.mx-icon-resize-full::before {\n content: \"\\ea14\";\n}\n.mx-icon-filled.mx-icon-resize-small::before {\n content: \"\\ea15\";\n}\n.mx-icon-filled.mx-icon-road::before {\n content: \"\\ea16\";\n}\n.mx-icon-filled.mx-icon-robot-head::before {\n content: \"\\ea17\";\n}\n.mx-icon-filled.mx-icon-rss-feed::before {\n content: \"\\ea18\";\n}\n.mx-icon-filled.mx-icon-ruble::before {\n content: \"\\ea19\";\n}\n.mx-icon-filled.mx-icon-scissors::before {\n content: \"\\ea1a\";\n}\n.mx-icon-filled.mx-icon-search::before {\n content: \"\\ea1b\";\n}\n.mx-icon-filled.mx-icon-server::before {\n content: \"\\ea1c\";\n}\n.mx-icon-filled.mx-icon-settings-slider::before {\n content: \"\\ea1d\";\n}\n.mx-icon-filled.mx-icon-settings-slider-1::before {\n content: \"\\ea1e\";\n}\n.mx-icon-filled.mx-icon-share::before {\n content: \"\\ea1f\";\n}\n.mx-icon-filled.mx-icon-share-1::before {\n content: \"\\ea20\";\n}\n.mx-icon-filled.mx-icon-share-arrow::before {\n content: \"\\ea21\";\n}\n.mx-icon-filled.mx-icon-shipment-box::before {\n content: \"\\ea22\";\n}\n.mx-icon-filled.mx-icon-shopping-cart::before {\n content: \"\\ea23\";\n}\n.mx-icon-filled.mx-icon-shopping-cart-full::before {\n content: \"\\ea24\";\n}\n.mx-icon-filled.mx-icon-signal-full::before {\n content: \"\\ea25\";\n}\n.mx-icon-filled.mx-icon-smart-house-garage::before {\n content: \"\\ea26\";\n}\n.mx-icon-filled.mx-icon-smart-watch-circle::before {\n content: \"\\ea27\";\n}\n.mx-icon-filled.mx-icon-smart-watch-square::before {\n content: \"\\ea28\";\n}\n.mx-icon-filled.mx-icon-sort::before {\n content: \"\\ea29\";\n}\n.mx-icon-filled.mx-icon-sort-alphabet-ascending::before {\n content: \"\\ea2a\";\n}\n.mx-icon-filled.mx-icon-sort-alphabet-descending::before {\n content: \"\\ea2b\";\n}\n.mx-icon-filled.mx-icon-sort-ascending::before {\n content: \"\\ea2c\";\n}\n.mx-icon-filled.mx-icon-sort-descending::before {\n content: \"\\ea2d\";\n}\n.mx-icon-filled.mx-icon-sort-numerical-ascending::before {\n content: \"\\ea2e\";\n}\n.mx-icon-filled.mx-icon-sort-numerical-descending::before {\n content: \"\\ea2f\";\n}\n.mx-icon-filled.mx-icon-star::before {\n content: \"\\ea30\";\n}\n.mx-icon-filled.mx-icon-stopwatch::before {\n content: \"\\ea31\";\n}\n.mx-icon-filled.mx-icon-substract::before {\n content: \"\\ea32\";\n}\n.mx-icon-filled.mx-icon-subtract-circle::before {\n content: \"\\ea33\";\n}\n.mx-icon-filled.mx-icon-sun::before {\n content: \"\\ea34\";\n}\n.mx-icon-filled.mx-icon-swap::before {\n content: \"\\ea35\";\n}\n.mx-icon-filled.mx-icon-synchronize-arrow-clock::before {\n content: \"\\ea36\";\n}\n.mx-icon-filled.mx-icon-table-lamp::before {\n content: \"\\ea37\";\n}\n.mx-icon-filled.mx-icon-tablet::before {\n content: \"\\ea38\";\n}\n.mx-icon-filled.mx-icon-tag::before {\n content: \"\\ea39\";\n}\n.mx-icon-filled.mx-icon-tag-group::before {\n content: \"\\ea3a\";\n}\n.mx-icon-filled.mx-icon-task-list-multiple::before {\n content: \"\\ea3b\";\n}\n.mx-icon-filled.mx-icon-text-align-center::before {\n content: \"\\ea3c\";\n}\n.mx-icon-filled.mx-icon-text-align-justify::before {\n content: \"\\ea3d\";\n}\n.mx-icon-filled.mx-icon-text-align-left::before {\n content: \"\\ea3e\";\n}\n.mx-icon-filled.mx-icon-text-align-right::before {\n content: \"\\ea3f\";\n}\n.mx-icon-filled.mx-icon-text-background::before {\n content: \"\\ea40\";\n}\n.mx-icon-filled.mx-icon-text-bold::before {\n content: \"\\ea41\";\n}\n.mx-icon-filled.mx-icon-text-color::before {\n content: \"\\ea42\";\n}\n.mx-icon-filled.mx-icon-text-font::before {\n content: \"\\ea43\";\n}\n.mx-icon-filled.mx-icon-text-header::before {\n content: \"\\ea44\";\n}\n.mx-icon-filled.mx-icon-text-height::before {\n content: \"\\ea45\";\n}\n.mx-icon-filled.mx-icon-text-indent-left::before {\n content: \"\\ea46\";\n}\n.mx-icon-filled.mx-icon-text-indent-right::before {\n content: \"\\ea47\";\n}\n.mx-icon-filled.mx-icon-text-italic::before {\n content: \"\\ea48\";\n}\n.mx-icon-filled.mx-icon-text-size::before {\n content: \"\\ea49\";\n}\n.mx-icon-filled.mx-icon-text-subscript::before {\n content: \"\\ea4a\";\n}\n.mx-icon-filled.mx-icon-text-superscript::before {\n content: \"\\ea4b\";\n}\n.mx-icon-filled.mx-icon-text-width::before {\n content: \"\\ea4c\";\n}\n.mx-icon-filled.mx-icon-three-dots-menu-horizontal::before {\n content: \"\\ea4d\";\n}\n.mx-icon-filled.mx-icon-three-dots-menu-vertical::before {\n content: \"\\ea4e\";\n}\n.mx-icon-filled.mx-icon-thumbs-down::before {\n content: \"\\ea4f\";\n}\n.mx-icon-filled.mx-icon-thumbs-up::before {\n content: \"\\ea50\";\n}\n.mx-icon-filled.mx-icon-time-clock::before {\n content: \"\\ea51\";\n}\n.mx-icon-filled.mx-icon-tint::before {\n content: \"\\ea52\";\n}\n.mx-icon-filled.mx-icon-trash-can::before {\n content: \"\\ea53\";\n}\n.mx-icon-filled.mx-icon-tree::before {\n content: \"\\ea54\";\n}\n.mx-icon-filled.mx-icon-trophy::before {\n content: \"\\ea55\";\n}\n.mx-icon-filled.mx-icon-ui-webpage-slider::before {\n content: \"\\ea56\";\n}\n.mx-icon-filled.mx-icon-unchecked::before {\n content: \"\\ea57\";\n}\n.mx-icon-filled.mx-icon-undo::before {\n content: \"\\ea58\";\n}\n.mx-icon-filled.mx-icon-unlock::before {\n content: \"\\ea59\";\n}\n.mx-icon-filled.mx-icon-upload-bottom::before {\n content: \"\\ea5a\";\n}\n.mx-icon-filled.mx-icon-upload-button::before {\n content: \"\\ea5b\";\n}\n.mx-icon-filled.mx-icon-user::before {\n content: \"\\ea5c\";\n}\n.mx-icon-filled.mx-icon-user-3d-box::before {\n content: \"\\ea5d\";\n}\n.mx-icon-filled.mx-icon-user-man::before {\n content: \"\\ea5e\";\n}\n.mx-icon-filled.mx-icon-user-neutral-group::before {\n content: \"\\ea5f\";\n}\n.mx-icon-filled.mx-icon-user-neutral-pair::before {\n content: \"\\ea60\";\n}\n.mx-icon-filled.mx-icon-user-neutral-shield::before {\n content: \"\\ea61\";\n}\n.mx-icon-filled.mx-icon-user-neutral-sync::before {\n content: \"\\ea62\";\n}\n.mx-icon-filled.mx-icon-user-pair::before {\n content: \"\\ea63\";\n}\n.mx-icon-filled.mx-icon-user-woman::before {\n content: \"\\ea64\";\n}\n.mx-icon-filled.mx-icon-video-camera::before {\n content: \"\\ea65\";\n}\n.mx-icon-filled.mx-icon-view::before {\n content: \"\\ea66\";\n}\n.mx-icon-filled.mx-icon-view-off::before {\n content: \"\\ea67\";\n}\n.mx-icon-filled.mx-icon-wheat::before {\n content: \"\\ea68\";\n}\n.mx-icon-filled.mx-icon-whiteboard::before {\n content: \"\\ea69\";\n}\n.mx-icon-filled.mx-icon-wrench::before {\n content: \"\\ea6a\";\n}\n.mx-icon-filled.mx-icon-yen::before {\n content: \"\\ea6b\";\n}\n.mx-icon-filled.mx-icon-zoom-in::before {\n content: \"\\ea6c\";\n}\n.mx-icon-filled.mx-icon-zoom-out::before {\n content: \"\\ea6d\";\n}\n","@font-face {\n font-family: \"Atlas_Core$Atlas\";\n src: url(\"./fonts/Atlas_Core$Atlas.ttf\") format(\"truetype\");\n}\n.mx-icon-lined {\n display: inline-block;\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n font-family: \"Atlas_Core$Atlas\";\n}\n.mx-icon-lined.mx-icon-add::before {\n content: \"\\e900\";\n}\n.mx-icon-lined.mx-icon-add-circle::before {\n content: \"\\e901\";\n}\n.mx-icon-lined.mx-icon-airplane::before {\n content: \"\\e902\";\n}\n.mx-icon-lined.mx-icon-alarm-bell::before {\n content: \"\\e903\";\n}\n.mx-icon-lined.mx-icon-alarm-bell-off::before {\n content: \"\\e904\";\n}\n.mx-icon-lined.mx-icon-alert-circle::before {\n content: \"\\e905\";\n}\n.mx-icon-lined.mx-icon-alert-triangle::before {\n content: \"\\e906\";\n}\n.mx-icon-lined.mx-icon-align-bottom::before {\n content: \"\\e907\";\n}\n.mx-icon-lined.mx-icon-align-center::before {\n content: \"\\e908\";\n}\n.mx-icon-lined.mx-icon-align-left::before {\n content: \"\\e909\";\n}\n.mx-icon-lined.mx-icon-align-middle::before {\n content: \"\\e90a\";\n}\n.mx-icon-lined.mx-icon-align-right::before {\n content: \"\\e90b\";\n}\n.mx-icon-lined.mx-icon-align-top::before {\n content: \"\\e90c\";\n}\n.mx-icon-lined.mx-icon-analytics-bars::before {\n content: \"\\e90d\";\n}\n.mx-icon-lined.mx-icon-analytics-graph-bar::before {\n content: \"\\e90e\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-down::before {\n content: \"\\e90f\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-left::before {\n content: \"\\e910\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-right::before {\n content: \"\\e911\";\n}\n.mx-icon-lined.mx-icon-arrow-circle-up::before {\n content: \"\\e912\";\n}\n.mx-icon-lined.mx-icon-arrow-down::before {\n content: \"\\e913\";\n}\n.mx-icon-lined.mx-icon-arrow-left::before {\n content: \"\\e914\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-down::before {\n content: \"\\e915\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-left::before {\n content: \"\\e916\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-right::before {\n content: \"\\e917\";\n}\n.mx-icon-lined.mx-icon-arrow-narrow-up::before {\n content: \"\\e918\";\n}\n.mx-icon-lined.mx-icon-arrow-right::before {\n content: \"\\e919\";\n}\n.mx-icon-lined.mx-icon-arrow-square-down::before {\n content: \"\\e91a\";\n}\n.mx-icon-lined.mx-icon-arrow-square-left::before {\n content: \"\\e91b\";\n}\n.mx-icon-lined.mx-icon-arrow-square-right::before {\n content: \"\\e91c\";\n}\n.mx-icon-lined.mx-icon-arrow-square-up::before {\n content: \"\\e91d\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-down::before {\n content: \"\\e91e\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-left::before {\n content: \"\\e91f\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-right::before {\n content: \"\\e920\";\n}\n.mx-icon-lined.mx-icon-arrow-thick-up::before {\n content: \"\\e921\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-down::before {\n content: \"\\e922\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-left::before {\n content: \"\\e923\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-right::before {\n content: \"\\e924\";\n}\n.mx-icon-lined.mx-icon-arrow-triangle-up::before {\n content: \"\\e925\";\n}\n.mx-icon-lined.mx-icon-arrow-up::before {\n content: \"\\e926\";\n}\n.mx-icon-lined.mx-icon-arrows-retweet::before {\n content: \"\\e927\";\n}\n.mx-icon-lined.mx-icon-asterisk::before {\n content: \"\\e928\";\n}\n.mx-icon-lined.mx-icon-badge::before {\n content: \"\\e929\";\n}\n.mx-icon-lined.mx-icon-barcode::before {\n content: \"\\e92a\";\n}\n.mx-icon-lined.mx-icon-binoculars::before {\n content: \"\\e92b\";\n}\n.mx-icon-lined.mx-icon-bitcoin::before {\n content: \"\\e92c\";\n}\n.mx-icon-lined.mx-icon-blocks::before {\n content: \"\\e92d\";\n}\n.mx-icon-lined.mx-icon-book-closed::before {\n content: \"\\e92e\";\n}\n.mx-icon-lined.mx-icon-book-open::before {\n content: \"\\e92f\";\n}\n.mx-icon-lined.mx-icon-bookmark::before {\n content: \"\\e930\";\n}\n.mx-icon-lined.mx-icon-briefcase::before {\n content: \"\\e931\";\n}\n.mx-icon-lined.mx-icon-browser::before {\n content: \"\\e932\";\n}\n.mx-icon-lined.mx-icon-browser-code::before {\n content: \"\\e933\";\n}\n.mx-icon-lined.mx-icon-browser-page-text::before {\n content: \"\\e934\";\n}\n.mx-icon-lined.mx-icon-browser-search::before {\n content: \"\\e935\";\n}\n.mx-icon-lined.mx-icon-browser-trophy::before {\n content: \"\\e936\";\n}\n.mx-icon-lined.mx-icon-calendar::before {\n content: \"\\e937\";\n}\n.mx-icon-lined.mx-icon-calendar-1::before {\n content: \"\\e938\";\n}\n.mx-icon-lined.mx-icon-camera::before {\n content: \"\\e939\";\n}\n.mx-icon-lined.mx-icon-camping-tent::before {\n content: \"\\e93a\";\n}\n.mx-icon-lined.mx-icon-cash-payment-bill::before {\n content: \"\\e93b\";\n}\n.mx-icon-lined.mx-icon-cash-payment-bill-2::before {\n content: \"\\e93c\";\n}\n.mx-icon-lined.mx-icon-cd::before {\n content: \"\\e93d\";\n}\n.mx-icon-lined.mx-icon-charger::before {\n content: \"\\e93e\";\n}\n.mx-icon-lined.mx-icon-checkmark::before {\n content: \"\\e93f\";\n}\n.mx-icon-lined.mx-icon-checkmark-circle::before {\n content: \"\\e940\";\n}\n.mx-icon-lined.mx-icon-checkmark-shield::before {\n content: \"\\e941\";\n}\n.mx-icon-lined.mx-icon-checkmark-square::before {\n content: \"\\e942\";\n}\n.mx-icon-lined.mx-icon-chevron-down::before {\n content: \"\\e943\";\n}\n.mx-icon-lined.mx-icon-chevron-left::before {\n content: \"\\e944\";\n}\n.mx-icon-lined.mx-icon-chevron-right::before {\n content: \"\\e945\";\n}\n.mx-icon-lined.mx-icon-chevron-up::before {\n content: \"\\e946\";\n}\n.mx-icon-lined.mx-icon-cloud::before {\n content: \"\\e947\";\n}\n.mx-icon-lined.mx-icon-cloud-check::before {\n content: \"\\e948\";\n}\n.mx-icon-lined.mx-icon-cloud-data-transfer::before {\n content: \"\\e949\";\n}\n.mx-icon-lined.mx-icon-cloud-disable::before {\n content: \"\\e94a\";\n}\n.mx-icon-lined.mx-icon-cloud-download::before {\n content: \"\\e94b\";\n}\n.mx-icon-lined.mx-icon-cloud-lock::before {\n content: \"\\e94c\";\n}\n.mx-icon-lined.mx-icon-cloud-off::before {\n content: \"\\e94d\";\n}\n.mx-icon-lined.mx-icon-cloud-refresh::before {\n content: \"\\e94e\";\n}\n.mx-icon-lined.mx-icon-cloud-remove::before {\n content: \"\\e94f\";\n}\n.mx-icon-lined.mx-icon-cloud-search::before {\n content: \"\\e950\";\n}\n.mx-icon-lined.mx-icon-cloud-settings::before {\n content: \"\\e951\";\n}\n.mx-icon-lined.mx-icon-cloud-subtract::before {\n content: \"\\e952\";\n}\n.mx-icon-lined.mx-icon-cloud-sync::before {\n content: \"\\e953\";\n}\n.mx-icon-lined.mx-icon-cloud-upload::before {\n content: \"\\e954\";\n}\n.mx-icon-lined.mx-icon-cloud-warning::before {\n content: \"\\e955\";\n}\n.mx-icon-lined.mx-icon-cog::before {\n content: \"\\e956\";\n}\n.mx-icon-lined.mx-icon-cog-hand-give::before {\n content: \"\\e957\";\n}\n.mx-icon-lined.mx-icon-cog-play::before {\n content: \"\\e958\";\n}\n.mx-icon-lined.mx-icon-cog-shield::before {\n content: \"\\e959\";\n}\n.mx-icon-lined.mx-icon-color-bucket-brush::before {\n content: \"\\e95a\";\n}\n.mx-icon-lined.mx-icon-color-painting-palette::before {\n content: \"\\e95b\";\n}\n.mx-icon-lined.mx-icon-compass-directions::before {\n content: \"\\e95c\";\n}\n.mx-icon-lined.mx-icon-compressed::before {\n content: \"\\e95d\";\n}\n.mx-icon-lined.mx-icon-computer-chip::before {\n content: \"\\e95e\";\n}\n.mx-icon-lined.mx-icon-connect::before {\n content: \"\\e95f\";\n}\n.mx-icon-lined.mx-icon-connect-1::before {\n content: \"\\e960\";\n}\n.mx-icon-lined.mx-icon-console-terminal::before {\n content: \"\\e961\";\n}\n.mx-icon-lined.mx-icon-contacts::before {\n content: \"\\e962\";\n}\n.mx-icon-lined.mx-icon-contrast::before {\n content: \"\\e963\";\n}\n.mx-icon-lined.mx-icon-controls-backward::before {\n content: \"\\e964\";\n}\n.mx-icon-lined.mx-icon-controls-eject::before {\n content: \"\\e965\";\n}\n.mx-icon-lined.mx-icon-controls-fast-backward::before {\n content: \"\\e966\";\n}\n.mx-icon-lined.mx-icon-controls-fast-forward::before {\n content: \"\\e967\";\n}\n.mx-icon-lined.mx-icon-controls-forward::before {\n content: \"\\e968\";\n}\n.mx-icon-lined.mx-icon-controls-pause::before {\n content: \"\\e969\";\n}\n.mx-icon-lined.mx-icon-controls-play::before {\n content: \"\\e96a\";\n}\n.mx-icon-lined.mx-icon-controls-record::before {\n content: \"\\e96b\";\n}\n.mx-icon-lined.mx-icon-controls-shuffle::before {\n content: \"\\e96c\";\n}\n.mx-icon-lined.mx-icon-controls-step-backward::before {\n content: \"\\e96d\";\n}\n.mx-icon-lined.mx-icon-controls-step-forward::before {\n content: \"\\e96e\";\n}\n.mx-icon-lined.mx-icon-controls-stop::before {\n content: \"\\e96f\";\n}\n.mx-icon-lined.mx-icon-controls-volume-full::before {\n content: \"\\e970\";\n}\n.mx-icon-lined.mx-icon-controls-volume-low::before {\n content: \"\\e971\";\n}\n.mx-icon-lined.mx-icon-controls-volume-off::before {\n content: \"\\e972\";\n}\n.mx-icon-lined.mx-icon-conversation-question-warning::before {\n content: \"\\e973\";\n}\n.mx-icon-lined.mx-icon-copy::before {\n content: \"\\e974\";\n}\n.mx-icon-lined.mx-icon-credit-card::before {\n content: \"\\e975\";\n}\n.mx-icon-lined.mx-icon-crossroad-sign::before {\n content: \"\\e976\";\n}\n.mx-icon-lined.mx-icon-cube::before {\n content: \"\\e977\";\n}\n.mx-icon-lined.mx-icon-cutlery::before {\n content: \"\\e978\";\n}\n.mx-icon-lined.mx-icon-dashboard::before {\n content: \"\\e979\";\n}\n.mx-icon-lined.mx-icon-data-transfer::before {\n content: \"\\e97a\";\n}\n.mx-icon-lined.mx-icon-desktop::before {\n content: \"\\e97b\";\n}\n.mx-icon-lined.mx-icon-diamond::before {\n content: \"\\e97c\";\n}\n.mx-icon-lined.mx-icon-direction-buttons::before {\n content: \"\\e97d\";\n}\n.mx-icon-lined.mx-icon-direction-buttons-arrows::before {\n content: \"\\e97e\";\n}\n.mx-icon-lined.mx-icon-disable::before {\n content: \"\\e97f\";\n}\n.mx-icon-lined.mx-icon-document::before {\n content: \"\\e980\";\n}\n.mx-icon-lined.mx-icon-document-open::before {\n content: \"\\e981\";\n}\n.mx-icon-lined.mx-icon-document-save::before {\n content: \"\\e982\";\n}\n.mx-icon-lined.mx-icon-dollar::before {\n content: \"\\e983\";\n}\n.mx-icon-lined.mx-icon-double-bed::before {\n content: \"\\e984\";\n}\n.mx-icon-lined.mx-icon-double-chevron-left::before {\n content: \"\\e985\";\n}\n.mx-icon-lined.mx-icon-double-chevron-right::before {\n content: \"\\e986\";\n}\n.mx-icon-lined.mx-icon-download-bottom::before {\n content: \"\\e987\";\n}\n.mx-icon-lined.mx-icon-download-button::before {\n content: \"\\e988\";\n}\n.mx-icon-lined.mx-icon-duplicate::before {\n content: \"\\e989\";\n}\n.mx-icon-lined.mx-icon-email::before {\n content: \"\\e98a\";\n}\n.mx-icon-lined.mx-icon-equalizer::before {\n content: \"\\e98b\";\n}\n.mx-icon-lined.mx-icon-eraser::before {\n content: \"\\e98c\";\n}\n.mx-icon-lined.mx-icon-euro::before {\n content: \"\\e98d\";\n}\n.mx-icon-lined.mx-icon-expand-horizontal::before {\n content: \"\\e98e\";\n}\n.mx-icon-lined.mx-icon-expand-vertical::before {\n content: \"\\e98f\";\n}\n.mx-icon-lined.mx-icon-external::before {\n content: \"\\e990\";\n}\n.mx-icon-lined.mx-icon-file-pdf::before {\n content: \"\\e991\";\n}\n.mx-icon-lined.mx-icon-file-zip::before {\n content: \"\\e992\";\n}\n.mx-icon-lined.mx-icon-film::before {\n content: \"\\e993\";\n}\n.mx-icon-lined.mx-icon-filter::before {\n content: \"\\e994\";\n}\n.mx-icon-lined.mx-icon-fire::before {\n content: \"\\e995\";\n}\n.mx-icon-lined.mx-icon-flag::before {\n content: \"\\e996\";\n}\n.mx-icon-lined.mx-icon-flash::before {\n content: \"\\e997\";\n}\n.mx-icon-lined.mx-icon-floppy-disk::before {\n content: \"\\e998\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-arrow-down::before {\n content: \"\\e999\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-arrow-up::before {\n content: \"\\e99a\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-checkmark::before {\n content: \"\\e99b\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-group::before {\n content: \"\\e99c\";\n}\n.mx-icon-lined.mx-icon-floppy-disk-remove::before {\n content: \"\\e99d\";\n}\n.mx-icon-lined.mx-icon-folder-closed::before {\n content: \"\\e99e\";\n}\n.mx-icon-lined.mx-icon-folder-open::before {\n content: \"\\e99f\";\n}\n.mx-icon-lined.mx-icon-folder-upload::before {\n content: \"\\e9a0\";\n}\n.mx-icon-lined.mx-icon-fruit-apple::before {\n content: \"\\e9a1\";\n}\n.mx-icon-lined.mx-icon-fullscreen::before {\n content: \"\\e9a2\";\n}\n.mx-icon-lined.mx-icon-gift::before {\n content: \"\\e9a3\";\n}\n.mx-icon-lined.mx-icon-github::before {\n content: \"\\e9a4\";\n}\n.mx-icon-lined.mx-icon-globe::before {\n content: \"\\e9a5\";\n}\n.mx-icon-lined.mx-icon-globe-1::before {\n content: \"\\e9a6\";\n}\n.mx-icon-lined.mx-icon-graduation-hat::before {\n content: \"\\e9a7\";\n}\n.mx-icon-lined.mx-icon-hammer::before {\n content: \"\\e9a8\";\n}\n.mx-icon-lined.mx-icon-hammer-wench::before {\n content: \"\\e9a9\";\n}\n.mx-icon-lined.mx-icon-hand-down::before {\n content: \"\\e9aa\";\n}\n.mx-icon-lined.mx-icon-hand-left::before {\n content: \"\\e9ab\";\n}\n.mx-icon-lined.mx-icon-hand-right::before {\n content: \"\\e9ac\";\n}\n.mx-icon-lined.mx-icon-hand-up::before {\n content: \"\\e9ad\";\n}\n.mx-icon-lined.mx-icon-handshake-business::before {\n content: \"\\e9ae\";\n}\n.mx-icon-lined.mx-icon-hard-drive::before {\n content: \"\\e9af\";\n}\n.mx-icon-lined.mx-icon-headphones::before {\n content: \"\\e9b0\";\n}\n.mx-icon-lined.mx-icon-headphones-mic::before {\n content: \"\\e9b1\";\n}\n.mx-icon-lined.mx-icon-heart::before {\n content: \"\\e9b2\";\n}\n.mx-icon-lined.mx-icon-hierarchy-files::before {\n content: \"\\e9b3\";\n}\n.mx-icon-lined.mx-icon-home::before {\n content: \"\\e9b4\";\n}\n.mx-icon-lined.mx-icon-hourglass::before {\n content: \"\\e9b5\";\n}\n.mx-icon-lined.mx-icon-hyperlink::before {\n content: \"\\e9b6\";\n}\n.mx-icon-lined.mx-icon-image::before {\n content: \"\\e9b7\";\n}\n.mx-icon-lined.mx-icon-image-collection::before {\n content: \"\\e9b8\";\n}\n.mx-icon-lined.mx-icon-images::before {\n content: \"\\e9b9\";\n}\n.mx-icon-lined.mx-icon-info-circle::before {\n content: \"\\e9ba\";\n}\n.mx-icon-lined.mx-icon-laptop::before {\n content: \"\\e9bb\";\n}\n.mx-icon-lined.mx-icon-layout::before {\n content: \"\\e9bc\";\n}\n.mx-icon-lined.mx-icon-layout-1::before {\n content: \"\\e9bd\";\n}\n.mx-icon-lined.mx-icon-layout-2::before {\n content: \"\\e9be\";\n}\n.mx-icon-lined.mx-icon-layout-column::before {\n content: \"\\e9bf\";\n}\n.mx-icon-lined.mx-icon-layout-horizontal::before {\n content: \"\\e9c0\";\n}\n.mx-icon-lined.mx-icon-layout-list::before {\n content: \"\\e9c1\";\n}\n.mx-icon-lined.mx-icon-layout-rounded::before {\n content: \"\\e9c2\";\n}\n.mx-icon-lined.mx-icon-layout-rounded-1::before {\n content: \"\\e9c3\";\n}\n.mx-icon-lined.mx-icon-leaf::before {\n content: \"\\e9c4\";\n}\n.mx-icon-lined.mx-icon-legal-certificate::before {\n content: \"\\e9c5\";\n}\n.mx-icon-lined.mx-icon-lego-block-stack::before {\n content: \"\\e9c6\";\n}\n.mx-icon-lined.mx-icon-light-bulb-shine::before {\n content: \"\\e9c7\";\n}\n.mx-icon-lined.mx-icon-list-bullets::before {\n content: \"\\e9c8\";\n}\n.mx-icon-lined.mx-icon-location-pin::before {\n content: \"\\e9c9\";\n}\n.mx-icon-lined.mx-icon-lock::before {\n content: \"\\e9ca\";\n}\n.mx-icon-lined.mx-icon-lock-key::before {\n content: \"\\e9cb\";\n}\n.mx-icon-lined.mx-icon-login::before {\n content: \"\\e9cc\";\n}\n.mx-icon-lined.mx-icon-login-1::before {\n content: \"\\e9cd\";\n}\n.mx-icon-lined.mx-icon-login-2::before {\n content: \"\\e9ce\";\n}\n.mx-icon-lined.mx-icon-logout::before {\n content: \"\\e9cf\";\n}\n.mx-icon-lined.mx-icon-logout-1::before {\n content: \"\\e9d0\";\n}\n.mx-icon-lined.mx-icon-luggage-travel::before {\n content: \"\\e9d1\";\n}\n.mx-icon-lined.mx-icon-magnet::before {\n content: \"\\e9d2\";\n}\n.mx-icon-lined.mx-icon-map-location-pin::before {\n content: \"\\e9d3\";\n}\n.mx-icon-lined.mx-icon-martini::before {\n content: \"\\e9d4\";\n}\n.mx-icon-lined.mx-icon-megaphone::before {\n content: \"\\e9d5\";\n}\n.mx-icon-lined.mx-icon-message-bubble::before {\n content: \"\\e9d6\";\n}\n.mx-icon-lined.mx-icon-message-bubble-add::before {\n content: \"\\e9d7\";\n}\n.mx-icon-lined.mx-icon-message-bubble-check::before {\n content: \"\\e9d8\";\n}\n.mx-icon-lined.mx-icon-message-bubble-disable::before {\n content: \"\\e9d9\";\n}\n.mx-icon-lined.mx-icon-message-bubble-edit::before {\n content: \"\\e9da\";\n}\n.mx-icon-lined.mx-icon-message-bubble-information::before {\n content: \"\\e9db\";\n}\n.mx-icon-lined.mx-icon-message-bubble-quotation::before {\n content: \"\\e9dc\";\n}\n.mx-icon-lined.mx-icon-message-bubble-remove::before {\n content: \"\\e9dd\";\n}\n.mx-icon-lined.mx-icon-message-bubble-typing::before {\n content: \"\\e9de\";\n}\n.mx-icon-lined.mx-icon-mobile-phone::before {\n content: \"\\e9df\";\n}\n.mx-icon-lined.mx-icon-modal-window::before {\n content: \"\\e9e0\";\n}\n.mx-icon-lined.mx-icon-monitor::before {\n content: \"\\e9e1\";\n}\n.mx-icon-lined.mx-icon-monitor-camera::before {\n content: \"\\e9e2\";\n}\n.mx-icon-lined.mx-icon-monitor-cash::before {\n content: \"\\e9e3\";\n}\n.mx-icon-lined.mx-icon-monitor-e-learning::before {\n content: \"\\e9e4\";\n}\n.mx-icon-lined.mx-icon-monitor-pie-line-graph::before {\n content: \"\\e9e5\";\n}\n.mx-icon-lined.mx-icon-moon-new::before {\n content: \"\\e9e6\";\n}\n.mx-icon-lined.mx-icon-mountain-flag::before {\n content: \"\\e9e7\";\n}\n.mx-icon-lined.mx-icon-move-down::before {\n content: \"\\e9e8\";\n}\n.mx-icon-lined.mx-icon-move-left::before {\n content: \"\\e9e9\";\n}\n.mx-icon-lined.mx-icon-move-right::before {\n content: \"\\e9ea\";\n}\n.mx-icon-lined.mx-icon-move-up::before {\n content: \"\\e9eb\";\n}\n.mx-icon-lined.mx-icon-music-note::before {\n content: \"\\e9ec\";\n}\n.mx-icon-lined.mx-icon-navigation-menu::before {\n content: \"\\e9ed\";\n}\n.mx-icon-lined.mx-icon-navigation-next::before {\n content: \"\\e9ee\";\n}\n.mx-icon-lined.mx-icon-notes-checklist::before {\n content: \"\\e9ef\";\n}\n.mx-icon-lined.mx-icon-notes-checklist-flip::before {\n content: \"\\e9f0\";\n}\n.mx-icon-lined.mx-icon-notes-paper-edit::before {\n content: \"\\e9f1\";\n}\n.mx-icon-lined.mx-icon-notes-paper-text::before {\n content: \"\\e9f2\";\n}\n.mx-icon-lined.mx-icon-office-sheet::before {\n content: \"\\e9f3\";\n}\n.mx-icon-lined.mx-icon-org-chart::before {\n content: \"\\e9f4\";\n}\n.mx-icon-lined.mx-icon-paper-clipboard::before {\n content: \"\\e9f5\";\n}\n.mx-icon-lined.mx-icon-paper-holder::before {\n content: \"\\e9f6\";\n}\n.mx-icon-lined.mx-icon-paper-holder-full::before {\n content: \"\\e9f7\";\n}\n.mx-icon-lined.mx-icon-paper-list::before {\n content: \"\\e9f8\";\n}\n.mx-icon-lined.mx-icon-paper-plane::before {\n content: \"\\e9f9\";\n}\n.mx-icon-lined.mx-icon-paperclip::before {\n content: \"\\e9fa\";\n}\n.mx-icon-lined.mx-icon-password-lock::before {\n content: \"\\e9fb\";\n}\n.mx-icon-lined.mx-icon-password-type::before {\n content: \"\\e9fc\";\n}\n.mx-icon-lined.mx-icon-paste::before {\n content: \"\\e9fd\";\n}\n.mx-icon-lined.mx-icon-pen-write-paper::before {\n content: \"\\e9fe\";\n}\n.mx-icon-lined.mx-icon-pencil::before {\n content: \"\\e9ff\";\n}\n.mx-icon-lined.mx-icon-pencil-write-paper::before {\n content: \"\\ea00\";\n}\n.mx-icon-lined.mx-icon-performance-graph-calculator::before {\n content: \"\\ea01\";\n}\n.mx-icon-lined.mx-icon-phone::before {\n content: \"\\ea02\";\n}\n.mx-icon-lined.mx-icon-phone-handset::before {\n content: \"\\ea03\";\n}\n.mx-icon-lined.mx-icon-piggy-bank::before {\n content: \"\\ea04\";\n}\n.mx-icon-lined.mx-icon-pin::before {\n content: \"\\ea05\";\n}\n.mx-icon-lined.mx-icon-plane-ticket::before {\n content: \"\\ea06\";\n}\n.mx-icon-lined.mx-icon-play-circle::before {\n content: \"\\ea07\";\n}\n.mx-icon-lined.mx-icon-pound-sterling::before {\n content: \"\\ea08\";\n}\n.mx-icon-lined.mx-icon-power-button::before {\n content: \"\\ea09\";\n}\n.mx-icon-lined.mx-icon-print::before {\n content: \"\\ea0a\";\n}\n.mx-icon-lined.mx-icon-progress-bars::before {\n content: \"\\ea0b\";\n}\n.mx-icon-lined.mx-icon-qr-code::before {\n content: \"\\ea0c\";\n}\n.mx-icon-lined.mx-icon-question-circle::before {\n content: \"\\ea0d\";\n}\n.mx-icon-lined.mx-icon-redo::before {\n content: \"\\ea0e\";\n}\n.mx-icon-lined.mx-icon-refresh::before {\n content: \"\\ea0f\";\n}\n.mx-icon-lined.mx-icon-remove::before {\n content: \"\\ea10\";\n}\n.mx-icon-lined.mx-icon-remove-circle::before {\n content: \"\\ea11\";\n}\n.mx-icon-lined.mx-icon-remove-shield::before {\n content: \"\\ea12\";\n}\n.mx-icon-lined.mx-icon-repeat::before {\n content: \"\\ea13\";\n}\n.mx-icon-lined.mx-icon-resize-full::before {\n content: \"\\ea14\";\n}\n.mx-icon-lined.mx-icon-resize-small::before {\n content: \"\\ea15\";\n}\n.mx-icon-lined.mx-icon-road::before {\n content: \"\\ea16\";\n}\n.mx-icon-lined.mx-icon-robot-head::before {\n content: \"\\ea17\";\n}\n.mx-icon-lined.mx-icon-rss-feed::before {\n content: \"\\ea18\";\n}\n.mx-icon-lined.mx-icon-ruble::before {\n content: \"\\ea19\";\n}\n.mx-icon-lined.mx-icon-scissors::before {\n content: \"\\ea1a\";\n}\n.mx-icon-lined.mx-icon-search::before {\n content: \"\\ea1b\";\n}\n.mx-icon-lined.mx-icon-server::before {\n content: \"\\ea1c\";\n}\n.mx-icon-lined.mx-icon-settings-slider::before {\n content: \"\\ea1d\";\n}\n.mx-icon-lined.mx-icon-settings-slider-1::before {\n content: \"\\ea1e\";\n}\n.mx-icon-lined.mx-icon-share::before {\n content: \"\\ea1f\";\n}\n.mx-icon-lined.mx-icon-share-1::before {\n content: \"\\ea20\";\n}\n.mx-icon-lined.mx-icon-share-arrow::before {\n content: \"\\ea21\";\n}\n.mx-icon-lined.mx-icon-shipment-box::before {\n content: \"\\ea22\";\n}\n.mx-icon-lined.mx-icon-shopping-cart::before {\n content: \"\\ea23\";\n}\n.mx-icon-lined.mx-icon-shopping-cart-full::before {\n content: \"\\ea24\";\n}\n.mx-icon-lined.mx-icon-signal-full::before {\n content: \"\\ea25\";\n}\n.mx-icon-lined.mx-icon-smart-house-garage::before {\n content: \"\\ea26\";\n}\n.mx-icon-lined.mx-icon-smart-watch-circle::before {\n content: \"\\ea27\";\n}\n.mx-icon-lined.mx-icon-smart-watch-square::before {\n content: \"\\ea28\";\n}\n.mx-icon-lined.mx-icon-sort::before {\n content: \"\\ea29\";\n}\n.mx-icon-lined.mx-icon-sort-alphabet-ascending::before {\n content: \"\\ea2a\";\n}\n.mx-icon-lined.mx-icon-sort-alphabet-descending::before {\n content: \"\\ea2b\";\n}\n.mx-icon-lined.mx-icon-sort-ascending::before {\n content: \"\\ea2c\";\n}\n.mx-icon-lined.mx-icon-sort-descending::before {\n content: \"\\ea2d\";\n}\n.mx-icon-lined.mx-icon-sort-numerical-ascending::before {\n content: \"\\ea2e\";\n}\n.mx-icon-lined.mx-icon-sort-numerical-descending::before {\n content: \"\\ea2f\";\n}\n.mx-icon-lined.mx-icon-star::before {\n content: \"\\ea30\";\n}\n.mx-icon-lined.mx-icon-stopwatch::before {\n content: \"\\ea31\";\n}\n.mx-icon-lined.mx-icon-substract::before {\n content: \"\\ea32\";\n}\n.mx-icon-lined.mx-icon-subtract-circle::before {\n content: \"\\ea33\";\n}\n.mx-icon-lined.mx-icon-sun::before {\n content: \"\\ea34\";\n}\n.mx-icon-lined.mx-icon-swap::before {\n content: \"\\ea35\";\n}\n.mx-icon-lined.mx-icon-synchronize-arrow-clock::before {\n content: \"\\ea36\";\n}\n.mx-icon-lined.mx-icon-table-lamp::before {\n content: \"\\ea37\";\n}\n.mx-icon-lined.mx-icon-tablet::before {\n content: \"\\ea38\";\n}\n.mx-icon-lined.mx-icon-tag::before {\n content: \"\\ea39\";\n}\n.mx-icon-lined.mx-icon-tag-group::before {\n content: \"\\ea3a\";\n}\n.mx-icon-lined.mx-icon-task-list-multiple::before {\n content: \"\\ea3b\";\n}\n.mx-icon-lined.mx-icon-text-align-center::before {\n content: \"\\ea3c\";\n}\n.mx-icon-lined.mx-icon-text-align-justify::before {\n content: \"\\ea3d\";\n}\n.mx-icon-lined.mx-icon-text-align-left::before {\n content: \"\\ea3e\";\n}\n.mx-icon-lined.mx-icon-text-align-right::before {\n content: \"\\ea3f\";\n}\n.mx-icon-lined.mx-icon-text-background::before {\n content: \"\\ea40\";\n}\n.mx-icon-lined.mx-icon-text-bold::before {\n content: \"\\ea41\";\n}\n.mx-icon-lined.mx-icon-text-color::before {\n content: \"\\ea42\";\n}\n.mx-icon-lined.mx-icon-text-font::before {\n content: \"\\ea43\";\n}\n.mx-icon-lined.mx-icon-text-header::before {\n content: \"\\ea44\";\n}\n.mx-icon-lined.mx-icon-text-height::before {\n content: \"\\ea45\";\n}\n.mx-icon-lined.mx-icon-text-indent-left::before {\n content: \"\\ea46\";\n}\n.mx-icon-lined.mx-icon-text-indent-right::before {\n content: \"\\ea47\";\n}\n.mx-icon-lined.mx-icon-text-italic::before {\n content: \"\\ea48\";\n}\n.mx-icon-lined.mx-icon-text-size::before {\n content: \"\\ea49\";\n}\n.mx-icon-lined.mx-icon-text-subscript::before {\n content: \"\\ea4a\";\n}\n.mx-icon-lined.mx-icon-text-superscript::before {\n content: \"\\ea4b\";\n}\n.mx-icon-lined.mx-icon-text-width::before {\n content: \"\\ea4c\";\n}\n.mx-icon-lined.mx-icon-three-dots-menu-horizontal::before {\n content: \"\\ea4d\";\n}\n.mx-icon-lined.mx-icon-three-dots-menu-vertical::before {\n content: \"\\ea4e\";\n}\n.mx-icon-lined.mx-icon-thumbs-down::before {\n content: \"\\ea4f\";\n}\n.mx-icon-lined.mx-icon-thumbs-up::before {\n content: \"\\ea50\";\n}\n.mx-icon-lined.mx-icon-time-clock::before {\n content: \"\\ea51\";\n}\n.mx-icon-lined.mx-icon-tint::before {\n content: \"\\ea52\";\n}\n.mx-icon-lined.mx-icon-trash-can::before {\n content: \"\\ea53\";\n}\n.mx-icon-lined.mx-icon-tree::before {\n content: \"\\ea54\";\n}\n.mx-icon-lined.mx-icon-trophy::before {\n content: \"\\ea55\";\n}\n.mx-icon-lined.mx-icon-ui-webpage-slider::before {\n content: \"\\ea56\";\n}\n.mx-icon-lined.mx-icon-unchecked::before {\n content: \"\\ea57\";\n}\n.mx-icon-lined.mx-icon-undo::before {\n content: \"\\ea58\";\n}\n.mx-icon-lined.mx-icon-unlock::before {\n content: \"\\ea59\";\n}\n.mx-icon-lined.mx-icon-upload-bottom::before {\n content: \"\\ea5a\";\n}\n.mx-icon-lined.mx-icon-upload-button::before {\n content: \"\\ea5b\";\n}\n.mx-icon-lined.mx-icon-user::before {\n content: \"\\ea5c\";\n}\n.mx-icon-lined.mx-icon-user-3d-box::before {\n content: \"\\ea5d\";\n}\n.mx-icon-lined.mx-icon-user-man::before {\n content: \"\\ea5e\";\n}\n.mx-icon-lined.mx-icon-user-neutral-group::before {\n content: \"\\ea5f\";\n}\n.mx-icon-lined.mx-icon-user-neutral-pair::before {\n content: \"\\ea60\";\n}\n.mx-icon-lined.mx-icon-user-neutral-shield::before {\n content: \"\\ea61\";\n}\n.mx-icon-lined.mx-icon-user-neutral-sync::before {\n content: \"\\ea62\";\n}\n.mx-icon-lined.mx-icon-user-pair::before {\n content: \"\\ea63\";\n}\n.mx-icon-lined.mx-icon-user-woman::before {\n content: \"\\ea64\";\n}\n.mx-icon-lined.mx-icon-video-camera::before {\n content: \"\\ea65\";\n}\n.mx-icon-lined.mx-icon-view::before {\n content: \"\\ea66\";\n}\n.mx-icon-lined.mx-icon-view-off::before {\n content: \"\\ea67\";\n}\n.mx-icon-lined.mx-icon-wheat::before {\n content: \"\\ea68\";\n}\n.mx-icon-lined.mx-icon-whiteboard::before {\n content: \"\\ea69\";\n}\n.mx-icon-lined.mx-icon-wrench::before {\n content: \"\\ea6a\";\n}\n.mx-icon-lined.mx-icon-yen::before {\n content: \"\\ea6b\";\n}\n.mx-icon-lined.mx-icon-zoom-in::before {\n content: \"\\ea6c\";\n}\n.mx-icon-lined.mx-icon-zoom-out::before {\n content: \"\\ea6d\";\n}\n","\n.mx-administration-lv-dg-list {\n &.mx-listview > ul {\n margin: 0;\n }\n\n // &.mx-listview > ul > li::after {\n // display: inline-block;\n // content: \", \";\n // }\n \n // &.mx-listview > ul > li {\n // display: inline-block;\n // }\n\n .mx-listview-empty {\n display: none;\n }\n\n .mx-button.mx-listview-loadMore {\n text-align: left;\n width: auto;\n margin: 8px 0 0 0;\n }\n \n}\n\n","/* ==========================================================================\n Take picture styles\n========================================================================== */\n\n.take-picture-wrapper {\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n flex-direction: column-reverse;\n justify-content: space-between;\n /* Should be higher than the the video. */\n z-index: 111;\n}\n.take-picture-video-element {\n position: absolute;\n /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */\n z-index: 110;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n object-fit: cover;\n width: 100%;\n height: 100%;\n background-color: black;\n}\n.take-picture-action-control-wrapper {\n display: flex;\n justify-content: center;\n flex-direction: row;\n align-items: center;\n /* should be higher than the video. */\n z-index: 111;\n margin-bottom: 74px;\n}\n.take-picture-action-switch-control-wrapper {\n display: flex;\n justify-content: space-between;\n flex-direction: row;\n align-items: center;\n /* should be higher than the video. */\n z-index: 111;\n margin-bottom: 74px;\n}\n.take-picture-close-control-wrapper {\n display: flex;\n justify-content: flex-start;\n flex-direction: column;\n align-items: flex-start;\n /* should be higher than the video. */\n z-index: 111;\n}\n.take-picture-action-control {\n background-color: transparent;\n border-style: none;\n padding: 0;\n}\n.take-picture-action-spacing {\n flex: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.take-picture-switch-spacing {\n display: flex;\n flex: 1;\n justify-content: flex-end;\n align-items: center;\n}\n.take-picture-spacing-div {\n flex: 1;\n}\n.take-picture-action-control-inner {\n border-radius: 50%;\n background-color: white;\n border: 1px solid black;\n width: 58px;\n height: 58px;\n}\n.take-picture-button-wrapper {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n z-index: 111;\n}\n.take-picture-save-button {\n color: white;\n background-color: #264ae5;\n width: 100%;\n border-radius: 4px;\n height: 40px;\n font-size: 14px;\n line-height: 20px;\n text-align: center;\n border-style: none;\n}\n.take-picture-switch-control {\n background-color: transparent;\n border-style: none;\n padding: 0;\n margin-right: 22.33px;\n}\n.take-picture-close-control {\n margin: 30px 0 0 30px;\n border-style: none;\n padding: 0;\n background-color: transparent;\n}\n.take-picture-save-control {\n margin: 30px 30px 0 0;\n border-style: none;\n padding: 0;\n background-color: transparent;\n}\n.take-picture-confirm-wrapper {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: white;\n /* should be higher than the wrapper. */\n z-index: 112;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.take-picture-image {\n position: absolute;\n /* Should be higher than the z-index of '.layout-atlas .region-sidebar' so it sits on top of the page. */\n z-index: 110;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n object-fit: cover;\n width: 100%;\n height: 100%;\n background-color: black;\n}\n/* Overwrite 'atlas_core/web/core/_legacy/_mxui.scss' for this particular widget because otherwise\n iOS Safari will in certain cases put the top and/or bottom bar on top of the overlay of this widget. */\n\n.mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested) {\n -webkit-overflow-scrolling: auto;\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n/* ==========================================================================\n Alerts\n\n Default Bootstrap Alert boxes. Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages\n========================================================================== */\n\n.alert {\n margin-top: 0;\n padding: $spacing-medium;\n border: 1px solid;\n border-radius: $border-radius-default;\n padding: $spacing-medium;\n}\n\n.alert-icon {\n font-size: $font-size-h3;\n}\n\n.alert-title {\n color: inherit;\n}\n\n.alert-description {\n color: inherit;\n}\n\n//Variations\n\n.alert-primary,\n.alert {\n color: $alert-primary-color;\n border-color: $alert-primary-border-color;\n background-color: $alert-primary-bg;\n}\n\n.alert-secondary {\n color: $alert-secondary-color;\n border-color: $alert-secondary-border-color;\n background-color: $alert-secondary-bg;\n}\n\n// Semantic variations\n.alert-success {\n color: $alert-success-color;\n border-color: $alert-success-border-color;\n background-color: $alert-success-bg;\n}\n\n.alert-warning {\n color: $alert-warning-color;\n border-color: $alert-warning-border-color;\n background-color: $alert-warning-bg;\n}\n\n.alert-danger {\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n}\n\n//== State\n//## Styling when component is in certain state\n//-------------------------------------------------------------------------------------------------------------------//\n.has-error .alert {\n margin-top: $spacing-small;\n margin-bottom: 0;\n}\n","//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #0a1325;\n$gray-dark: #474e5c;\n$gray: #787d87;\n$gray-light: #a9acb3;\n$gray-primary: #e7e7e9;\n$gray-lighter: #f8f8f8;\n\n//== Step 1: Brand Colors\n$brand-default: $gray-primary;\n$brand-primary: #264ae5;\n$brand-success: #3cb33d;\n$brand-warning: #eca51c;\n$brand-danger: #e33f4e;\n\n$brand-logo: false;\n$brand-logo-height: 32px;\n$brand-logo-width: 32px; // Only used for CSS brand logo\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px;\n$font-color-default: #0a1325;\n\n// Global Border Color\n$border-color-default: #ced0d3;\n$border-radius-default: 4px;\n\n// Topbar\n$topbar-bg: #020557;\n$topbar-minimalheight: 48px;\n$topbar-border-color: $border-color-default;\n\n// Sidebar\n$sidebar-bg: #24276c;\n\n// Topbar mobile\n$m-header-height: 45px;\n$m-header-bg: $topbar-bg;\n$m-header-color: #fff;\n$m-header-title-size: 16px;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: #fff;\n\n// Background Colors\n// Backgrounds\n$bg-color: #f8f8f8;\n$bg-color-secondary: #fff;\n\n// Default Link Color\n$link-color: $brand-primary;\n$link-hover-color: darken($link-color, 15%);\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater)\n$font-family-import: \"resources/fonts/open-sans/open-sans.css\";\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: \"Open Sans\", sans-serif;\n\n// Font Sizes\n$font-size-large: 18px;\n$font-size-small: 12px;\n\n// Font Weights\n$font-weight-light: 100;\n$font-weight-normal: normal;\n$font-weight-semibold: 600;\n$font-weight-bold: bold;\n\n// Font Size Headers\n$font-size-h1: 31px;\n$font-size-h2: 26px;\n$font-size-h3: 24px;\n$font-size-h4: 18px;\n$font-size-h5: $font-size-default;\n$font-size-h6: 12px;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-semibold;\n\n// Line Height\n$line-height-base: 1.428571429;\n\n// Spacing\n$font-header-margin: 0 0 8px 0;\n\n// Text Colors\n$font-color-detail: #6c717e;\n$font-color-header: #0a1325;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: unset;\n$navigation-item-padding: 8px;\n\n$navigation-font-size: 14px;\n$navigation-sub-font-size: $font-size-small;\n$navigation-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-color: #fff;\n$navigation-color-hover: #fff;\n$navigation-color-active: #fff;\n\n$navigation-sub-color: #fff;\n$navigation-sub-color-hover: #fff;\n$navigation-sub-color-active: #fff;\n\n// Navigation Sidebar\n$navsidebar-bg: $sidebar-bg;\n$navsidebar-bg-hover: darken($navsidebar-bg, 10%);\n$navsidebar-bg-active: darken($navsidebar-bg, 10%);\n\n$navsidebar-sub-bg: $navsidebar-bg-hover;\n$navsidebar-sub-bg-hover: $navsidebar-bg;\n$navsidebar-sub-bg-active: $navsidebar-bg;\n\n$navsidebar-border-color: $navsidebar-bg-hover;\n\n$navsidebar-font-size: $font-size-default;\n$navsidebar-sub-font-size: $font-size-small;\n$navsidebar-glyph-size: 20px; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-color: #fff;\n$navsidebar-color-hover: #fff;\n$navsidebar-color-active: #fff;\n\n$navsidebar-sub-color: #fff;\n$navsidebar-sub-color-hover: #fff;\n$navsidebar-sub-color-active: #fff;\n\n$navsidebar-width-closed: 52px;\n$navsidebar-width-open: 232px;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default;\n$navtopbar-sub-font-size: $font-size-small;\n$navtopbar-glyph-size: 1.2em; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg;\n$navtopbar-bg-hover: mix($topbar-bg, white, 85%);\n$navtopbar-bg-active: mix($topbar-bg, white, 85%);\n$navtopbar-color: #fff;\n$navtopbar-color-hover: $navtopbar-color;\n$navtopbar-color-active: $navtopbar-color;\n\n$navtopbar-sub-bg: $topbar-bg;\n$navtopbar-sub-bg-hover: $navtopbar-bg-hover;\n$navtopbar-sub-bg-active: $navtopbar-bg-hover;\n$navtopbar-sub-color: #fff;\n$navtopbar-sub-color-hover: #fff;\n$navtopbar-sub-color-active: #fff;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color;\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default;\n\n// Form Label\n$form-label-color: $font-color-default;\n$form-label-size: $font-size-default;\n$form-label-weight: $font-weight-semibold;\n$form-label-gutter: 8px;\n\n// Form Input dimensions\n$form-input-height: auto;\n$form-input-padding-y: 8px;\n$form-input-padding-x: 8px;\n$form-input-static-padding-y: 8px;\n$form-input-static-padding-x: 0;\n$form-input-font-size: $form-label-size;\n$form-input-line-height: $line-height-base;\n$form-input-border-radius: $border-radius-default;\n\n// Form Input styling\n$form-input-bg: #fff;\n$form-input-bg-focus: #fff;\n$form-input-bg-hover: $gray-primary;\n$form-input-bg-disabled: $bg-color;\n$form-input-color: $font-color-default;\n$form-input-focus-color: $form-input-color;\n$form-input-disabled-color: #9da1a8;\n$form-input-placeholder-color: #6c717c;\n$form-input-border-color: $gray-primary;\n$form-input-border-focus-color: $brand-primary;\n\n// Form Input Static styling\n$form-input-static-border-color: $gray-primary;\n\n// Form Group\n$form-group-margin-bottom: 16px;\n$form-group-gutter: 16px;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px;\n$btn-bordered: false; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default;\n\n// Button Background Color\n$btn-default-bg: #fff;\n$btn-primary-bg: $brand-primary;\n$btn-success-bg: $brand-success;\n$btn-warning-bg: $brand-warning;\n$btn-danger-bg: $brand-danger;\n\n// Button Border Color\n$btn-default-border-color: $gray-primary;\n$btn-primary-border-color: $brand-primary;\n$btn-success-border-color: $brand-success;\n$btn-warning-border-color: $brand-warning;\n$btn-danger-border-color: $brand-danger;\n\n// Button Text Color\n$btn-default-color: $brand-primary;\n$btn-primary-color: #fff;\n$btn-success-color: #fff;\n$btn-warning-color: #fff;\n$btn-danger-color: #fff;\n\n// Button Icon Color\n$btn-default-icon-color: $gray;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%);\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%);\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%);\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%);\n$btn-link-bg-hover: $gray-lighter;\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n\n$header-min-height: 240px;\n$header-bg-color: $brand-primary;\n$header-bgimage-filter: brightness(60%);\n$header-text-color: #fff;\n$header-text-color-detail: rgba(0, 0, 0, 0.2);\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%);\n$color-default-dark: mix($brand-default, black, 70%);\n$color-default-light: mix($brand-default, white, 40%);\n$color-default-lighter: mix($brand-default, white, 20%);\n\n$color-primary-darker: mix($brand-primary, black, 60%);\n$color-primary-dark: mix($brand-primary, black, 70%);\n$color-primary-light: mix($brand-primary, white, 40%);\n$color-primary-lighter: mix($brand-primary, white, 20%);\n\n$color-success-darker: mix($brand-success, black, 60%);\n$color-success-dark: mix($brand-success, black, 70%);\n$color-success-light: mix($brand-success, white, 40%);\n$color-success-lighter: mix($brand-success, white, 20%);\n\n$color-warning-darker: mix($brand-warning, black, 60%);\n$color-warning-dark: mix($brand-warning, black, 70%);\n$color-warning-light: mix($brand-warning, white, 40%);\n$color-warning-lighter: mix($brand-warning, white, 20%);\n\n$color-danger-darker: mix($brand-danger, black, 60%);\n$color-danger-dark: mix($brand-danger, black, 70%);\n$color-danger-light: mix($brand-danger, white, 40%);\n$color-danger-lighter: mix($brand-danger, white, 20%);\n\n$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c);\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default;\n\n// Spacing\n// Default\n$grid-padding-top: 16px;\n$grid-padding-right: 16px;\n$grid-padding-bottom: 16px;\n$grid-padding-left: 16px;\n\n// Listview\n$listview-padding-top: 16px;\n$listview-padding-right: 16px;\n$listview-padding-bottom: 16px;\n$listview-padding-left: 16px;\n\n// Dropdown\n$dropdown-outer-padding: 10px;\n$dropdown-border-radius: 7px;\n\n// Background Colors\n$grid-bg: transparent;\n$grid-bg-header: transparent; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #fff, 20%);\n$grid-bg-selected: mix($grid-border-color, #fff, 30%);\n$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%);\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #fff, 10%);\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary;\n\n// Text Color\n$grid-selected-color: $font-color-default;\n\n// Paging Colors\n$grid-paging-bg: transparent;\n$grid-paging-bg-hover: transparent;\n$grid-paging-border-color: transparent;\n$grid-paging-border-color-hover: transparent;\n$grid-paging-color: $gray-light;\n$grid-paging-color-hover: $brand-primary;\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail;\n$tabs-color-active: $font-color-default;\n$tabs-lined-color-active: $font-color-default;\n\n$tabs-lined-border-width: 3px;\n\n// Border Color\n$tabs-border-color: $border-color-default;\n$tabs-lined-border-color: $brand-primary;\n\n// Background Color\n$tabs-bg: transparent;\n$tabs-bg-pills: #e7e7e9;\n$tabs-bg-hover: lighten($tabs-border-color, 5);\n$tabs-bg-active: $brand-primary;\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent;\n\n// Border Color\n$modal-header-border-color: $border-color-default;\n\n// Text Color\n$modal-header-color: $font-color-default;\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent;\n$dataview-controls-border-color: $border-color-default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color;\n$dataview-emptymessage-color: $font-color-default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-success-bg: $color-success-lighter;\n$alert-warning-bg: $color-warning-lighter;\n$alert-danger-bg: $color-danger-lighter;\n\n// Text Color\n$alert-success-color: $color-success-darker;\n$alert-warning-color: $color-warning-darker;\n$alert-danger-color: $color-danger-darker;\n\n// Border Color\n$alert-success-border-color: $color-success-dark;\n$alert-warning-border-color: $color-warning-dark;\n$alert-danger-border-color: $color-danger-dark;\n\n//== Wizard\n\n$wizard-step-height: 48px;\n$wizard-step-number-size: 64px;\n$wizard-step-number-font-size: $font-size-h3;\n\n//Wizard step states\n$wizard-default-bg: #fff;\n$wizard-default-color: #fff;\n$wizard-default-step-color: $font-color-default;\n$wizard-default-border-color: $border-color-default;\n\n$wizard-active-bg: $color-primary-lighter;\n$wizard-active-color: $color-primary-dark;\n$wizard-active-step-color: $color-primary-dark;\n$wizard-active-border-color: $color-primary-dark;\n\n$wizard-visited-bg: $color-success-lighter;\n$wizard-visited-color: $color-success-dark;\n$wizard-visited-step-color: $color-success-dark;\n$wizard-visited-border-color: $color-success-dark;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default;\n$label-primary-bg: $brand-primary;\n$label-success-bg: $brand-success;\n$label-warning-bg: $brand-warning;\n$label-danger-bg: $brand-danger;\n\n// Border Color\n$label-default-border-color: $brand-default;\n$label-primary-border-color: $brand-primary;\n$label-success-border-color: $brand-success;\n$label-warning-border-color: $brand-warning;\n$label-danger-border-color: $brand-danger;\n\n// Text Color\n$label-default-color: $font-color-default;\n$label-primary-color: #fff;\n$label-success-color: #fff;\n$label-warning-color: #fff;\n$label-danger-color: #fff;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $gray-primary;\n$groupbox-primary-bg: $brand-primary;\n$groupbox-success-bg: $brand-success;\n$groupbox-warning-bg: $brand-warning;\n$groupbox-danger-bg: $brand-danger;\n$groupbox-white-bg: #fff;\n\n// Text Color\n$groupbox-default-color: $font-color-default;\n$groupbox-primary-color: #fff;\n$groupbox-success-color: #fff;\n$groupbox-warning-color: #fff;\n$groupbox-danger-color: #fff;\n$groupbox-white-color: $font-color-default;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default;\n$callout-success-color: $brand-success;\n$callout-warning-color: $brand-warning;\n$callout-danger-color: $brand-danger;\n\n// Background Color\n$callout-default-bg: $color-default-lighter;\n$callout-success-bg: $color-success-lighter;\n$callout-warning-bg: $color-warning-lighter;\n$callout-danger-bg: $color-danger-lighter;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary;\n$timeline-border-color: $border-color-default;\n$timeline-event-time-color: $brand-primary;\n\n// Sizes\n$timeline-icon-size: 18px;\n$timeline-image-size: 36px;\n\n//Timeline grouping\n$timeline-grouping-size: 120px;\n$timeline-grouping-border-radius: 30px;\n$timeline-grouping-border-color: $timeline-border-color;\n\n//== Accordions\n//## Extended variables for Accordion Widget\n\n// Default\n$accordion-header-default-bg: $bg-color-secondary;\n$accordion-header-default-bg-hover: $bg-color;\n$accordion-header-default-color: $font-color-header;\n$accordion-default-border-color: $border-color-default;\n\n$accordion-bg-striped: $grid-bg-striped;\n$accordion-bg-striped-hover: $grid-bg-selected;\n\n// Semantic background colors\n$accordion-header-primary-bg: $btn-primary-bg;\n$accordion-header-secondary-bg: $btn-default-bg;\n$accordion-header-success-bg: $btn-success-bg;\n$accordion-header-warning-bg: $btn-warning-bg;\n$accordion-header-danger-bg: $btn-danger-bg;\n\n$accordion-header-primary-bg-hover: $btn-primary-bg-hover;\n$accordion-header-secondary-bg-hover: $btn-default-bg-hover;\n$accordion-header-success-bg-hover: $btn-success-bg-hover;\n$accordion-header-warning-bg-hover: $btn-warning-bg-hover;\n$accordion-header-danger-bg-hover: $btn-danger-bg-hover;\n\n// Semantic text colors\n$accordion-header-primary-color: $btn-primary-color;\n$accordion-header-secondary-color: $btn-default-color;\n$accordion-header-success-color: $btn-success-color;\n$accordion-header-warning-color: $btn-warning-color;\n$accordion-header-danger-color: $btn-danger-color;\n\n// Semantic border colors\n$accordion-primary-border-color: $btn-primary-border-color;\n$accordion-secondary-border-color: $btn-default-border-color;\n$accordion-success-border-color: $btn-success-border-color;\n$accordion-warning-border-color: $btn-warning-border-color;\n$accordion-danger-border-color: $btn-danger-border-color;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Smallest spacing\n$spacing-smallest: 2px;\n\n// Smaller spacing\n$spacing-smaller: 4px;\n\n// Small spacing\n$spacing-small: 8px;\n\n// Medium spacing\n$spacing-medium: 16px;\n$t-spacing-medium: 16px;\n$m-spacing-medium: 16px;\n\n// Large spacing\n$spacing-large: 24px;\n$t-spacing-large: 24px;\n$m-spacing-large: 16px;\n\n// Larger spacing\n$spacing-larger: 32px;\n\n// Largest spacing\n$spacing-largest: 48px;\n\n// Layout spacing\n$layout-spacing-top: 24px;\n$layout-spacing-right: 24px;\n$layout-spacing-bottom: 24px;\n$layout-spacing-left: 24px;\n\n$t-layout-spacing-top: 24px;\n$t-layout-spacing-right: 24px;\n$t-layout-spacing-bottom: 24px;\n$t-layout-spacing-left: 24px;\n\n$m-layout-spacing-top: 16px;\n$m-layout-spacing-right: 16px;\n$m-layout-spacing-bottom: 16px;\n$m-layout-spacing-left: 16px;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left;\n\n// Gutter size\n$gutter-size: 8px;\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px;\n$padding-table-cell-bottom: 8px;\n$padding-table-cell-left: 8px;\n$padding-table-cell-right: 8px;\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px;\n$screen-sm: 576px;\n$screen-md: 768px;\n$screen-lg: 992px;\n$screen-xl: 1200px;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: calc(#{$screen-sm} - 1px);\n$screen-sm-max: calc(#{$screen-md} - 1px);\n$screen-md-max: calc(#{$screen-lg} - 1px);\n$screen-lg-max: calc(#{$screen-xl} - 1px);\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true; // ./base/flex.scss\n$important-spacing: true; // ./base/spacing.scss\n$important-helpers: true; // ./helpers/helperclasses.scss\n\n//===== Legacy variables =====\n\n//== Step 1: Brand Colors\n$brand-inverse: #24276c;\n$brand-info: #0086d9;\n\n//== Step 2: UI Customization\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Button Background Color\n$btn-inverse-bg: $brand-inverse;\n$btn-info-bg: $brand-info;\n\n// Button Border Color\n$btn-inverse-border-color: $brand-inverse;\n$btn-info-border-color: $brand-info;\n\n// Button Text Color\n$btn-inverse-color: #fff;\n$btn-info-color: #fff;\n\n// Button Background Color\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%);\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%);\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-inverse-darker: mix($brand-inverse, black, 60%);\n$color-inverse-dark: mix($brand-inverse, black, 70%);\n$color-inverse-light: mix($brand-inverse, white, 60%);\n$color-inverse-lighter: mix($brand-inverse, white, 20%);\n\n$color-info-darker: mix($brand-info, black, 60%);\n$color-info-dark: mix($brand-info, black, 70%);\n$color-info-light: mix($brand-info, white, 60%);\n$color-info-lighter: mix($brand-info, white, 20%);\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-primary-lighter;\n\n// Text Color\n$alert-info-color: $color-primary-darker;\n\n// Border Color\n$alert-info-border-color: $color-primary-dark;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-info-bg: $brand-info;\n$label-inverse-bg: $brand-inverse;\n\n// Border Color\n$label-info-border-color: $brand-info;\n$label-inverse-border-color: $brand-inverse;\n\n// Text Color\n$label-info-color: #fff;\n$label-inverse-color: #fff;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-inverse-bg: $brand-inverse;\n$groupbox-info-bg: $brand-info;\n\n// Text Color\n$groupbox-inverse-color: #fff;\n$groupbox-info-color: #fff;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-info-color: $brand-info;\n\n// Background Color\n$callout-info-bg: $color-info-lighter;\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n//\n// ██████╗ █████╗ ███████╗██╗ ██████╗\n// ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n// ██████╔╝███████║███████╗██║██║\n// ██╔══██╗██╔══██║╚════██║██║██║\n// ██████╔╝██║ ██║███████║██║╚██████╗\n// ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n//\n\n//== Gray Shades\n//## Different gray shades to be used for our variables and components\n$gray-darker: #3b4251 !default;\n$gray-dark: #606671 !default;\n$gray: #787d87 !default;\n$gray-light: #6c7180 !default;\n$gray-primary: #ced0d3 !default;\n$gray-lighter: #f8f8f8 !default;\n\n//== Step 1: Brand Colors\n$brand-default: $gray-primary !default;\n$brand-primary: #264ae5 !default;\n$brand-success: #3cb33d !default;\n$brand-warning: #eca51c !default;\n$brand-danger: #e33f4e !default;\n\n$brand-logo: false !default;\n$brand-logo-height: 26px !default;\n$brand-logo-width: 26px !default; // Only used for CSS brand logo\n\n//== Step 2: UI Customization\n\n// Default Font Size & Color\n$font-size-default: 14px !default;\n$font-color-default: #6c717e !default;\n\n// Global Border Color\n$border-color-default: #ced0d3 !default;\n$border-radius-default: 5px !default;\n\n// Topbar\n$topbar-bg: #fff !default;\n$topbar-minimalheight: 60px !default;\n$topbar-border-color: $border-color-default !default;\n\n// Topbar mobile\n$m-header-height: 45px !default;\n$m-header-bg: $brand-primary !default;\n$m-header-color: #fff !default;\n$m-header-title-size: 16px !default;\n\n// Navbar Brand Name / For your company, product, or project name (used in layouts/base/)\n$navbar-brand-name: $font-color-default !default;\n\n// Background Colors\n// Backgrounds\n$bg-color: #f8f8f8 !default;\n$bg-color-secondary: #fff !default;\n\n// Default Link Color\n$link-color: $brand-primary !default;\n$link-hover-color: darken($link-color, 15%) !default;\n\n//\n// █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n// ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n// ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n// ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n// ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n// ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n//\n\n//== Typography\n//## Change your font family, weight, line-height, headings and more (used in components/typography)\n\n// Font Family Import (Used for google font plugin in theme creater)\n$font-family-import: \"resources/fonts/open-sans/open-sans.css\" !default;\n\n// Font Family / False = fallback from Bootstrap (Helvetica Neue)\n$font-family-base: \"Open Sans\", sans-serif !default;\n\n// Font Sizes\n$font-size-large: 18px !default;\n$font-size-small: 12px !default;\n\n// Font Weights\n$font-weight-light: 100 !default;\n$font-weight-normal: normal !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: bold !default;\n\n// Font Size Headers\n$font-size-h1: 31px !default;\n$font-size-h2: 26px !default;\n$font-size-h3: 24px !default;\n$font-size-h4: 18px !default;\n$font-size-h5: $font-size-default !default;\n$font-size-h6: 12px !default;\n\n// Font Weight Headers\n$font-weight-header: $font-weight-semibold !default;\n\n// Line Height\n$line-height-base: 1.428571429 !default;\n\n// Spacing\n$font-header-margin: 0 0 8px 0 !default;\n\n// Text Colors\n$font-color-detail: #6c717e !default;\n$font-color-header: #0a1326 !default;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-item-height: unset !default;\n$navigation-item-padding: 16px !default;\n\n$navigation-font-size: $font-size-default !default;\n$navigation-sub-font-size: $font-size-small !default;\n$navigation-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navigation-color: #fff !default;\n$navigation-color-hover: #fff !default;\n$navigation-color-active: #fff !default;\n\n$navigation-sub-color: #aaa !default;\n$navigation-sub-color-hover: $brand-primary !default;\n$navigation-sub-color-active: $brand-primary !default;\n\n// Navigation Sidebar\n$navsidebar-font-size: $font-size-default !default;\n$navsidebar-sub-font-size: $font-size-small !default;\n$navsidebar-glyph-size: 20px !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navsidebar-color: #fff !default;\n$navsidebar-color-hover: #fff !default;\n$navsidebar-color-active: #fff !default;\n\n$navsidebar-sub-color: #aaa !default;\n$navsidebar-sub-color-hover: $brand-primary !default;\n$navsidebar-sub-color-active: $brand-primary !default;\n\n$navsidebar-width-closed: 52px !default;\n$navsidebar-width-open: 232px !default;\n\n// Navigation topbar\n$navtopbar-font-size: $font-size-default !default;\n$navtopbar-sub-font-size: $font-size-small !default;\n$navtopbar-glyph-size: 1.2em !default; // For glyphicons that you can select in the Mendix Modeler\n\n$navtopbar-bg: $topbar-bg !default;\n$navtopbar-bg-hover: darken($navtopbar-bg, 4) !default;\n$navtopbar-bg-active: darken($navtopbar-bg, 8) !default;\n$navtopbar-color: $font-color-default !default;\n$navtopbar-color-hover: $navtopbar-color !default;\n$navtopbar-color-active: $navtopbar-color !default;\n\n$navtopbar-sub-bg: lighten($navtopbar-bg, 4) !default;\n$navtopbar-sub-bg-hover: $navtopbar-sub-bg !default;\n$navtopbar-sub-bg-active: $navtopbar-sub-bg !default;\n$navtopbar-sub-color: #aaa !default;\n$navtopbar-sub-color-hover: $brand-primary !default;\n$navtopbar-sub-color-active: $brand-primary !default;\n\n//== Cards\n// Shadow color\n$shadow-color-border: rgba($gray-primary, 0.5);\n$shadow-color: rgba($gray-primary, 0.66);\n\n//Shadow size\n$shadow-small: 0 2px 4px 0;\n$shadow-medium: 0 5px 7px 0;\n$shadow-large: 0 8px 10px 0;\n\n//## Used in layouts/base\n$navtopbar-border-color: $topbar-border-color !default;\n\n//== Form\n//## Used in components/inputs\n\n// Values that can be used default | lined\n$form-input-style: default !default;\n\n// Form Label\n$form-label-size: $font-size-default !default;\n$form-label-weight: $font-weight-semibold !default;\n$form-label-gutter: 8px !default;\n\n// Form Input dimensions\n$form-input-height: auto !default;\n$form-input-padding-y: 8px !default;\n$form-input-padding-x: 8px !default;\n$form-input-static-padding-y: 8px !default;\n$form-input-static-padding-x: 0 !default;\n$form-input-font-size: $form-label-size !default;\n$form-input-line-height: $line-height-base !default;\n$form-input-border-radius: $border-radius-default !default;\n\n// Form Input styling\n$form-input-bg: #fff !default;\n$form-input-bg-focus: #fff !default;\n$form-input-bg-hover: $gray-primary !default;\n$form-input-bg-disabled: $bg-color !default;\n$form-input-color: $font-color-default !default;\n$form-input-focus-color: $form-input-color !default;\n$form-input-disabled-color: #9da1a8 !default;\n$form-input-placeholder-color: #6c717c !default;\n$form-input-border-color: $gray-primary !default;\n$form-input-border-focus-color: $brand-primary !default;\n\n// Form Input Static styling\n$form-input-static-border-color: $gray-primary !default;\n\n// Form Group\n$form-group-margin-bottom: 16px !default;\n$form-group-gutter: 16px !default;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Default button style\n$btn-font-size: 14px !default;\n$btn-bordered: false !default; // Default value false, set to true if you want this effect\n$btn-border-radius: $border-radius-default !default;\n\n// Button Background Color\n$btn-default-bg: #fff !default;\n$btn-primary-bg: $brand-primary !default;\n$btn-success-bg: $brand-success !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-danger-bg: $brand-danger !default;\n\n// Button Border Color\n$btn-default-border-color: $gray-primary !default;\n$btn-primary-border-color: $brand-primary !default;\n$btn-success-border-color: $brand-success !default;\n$btn-warning-border-color: $brand-warning !default;\n$btn-danger-border-color: $brand-danger !default;\n\n// Button Text Color\n$btn-default-color: $brand-primary !default;\n$btn-primary-color: #fff !default;\n$btn-success-color: #fff !default;\n$btn-warning-color: #fff !default;\n$btn-danger-color: #fff !default;\n\n// Button Icon Color\n$btn-default-icon-color: $gray !default;\n\n// Button Background Color\n$btn-default-bg-hover: $btn-default-border-color !default;\n$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%) !default;\n$btn-success-bg-hover: mix($btn-success-bg, black, 80%) !default;\n$btn-warning-bg-hover: mix($btn-warning-bg, black, 80%) !default;\n$btn-danger-bg-hover: mix($btn-danger-bg, black, 80%) !default;\n$btn-link-bg-hover: $gray-lighter !default;\n\n//== Header blocks\n//## Define look and feel over multible building blocks that serve as header\n\n$header-min-height: 240px !default;\n$header-bg-color: $brand-primary !default;\n$header-bgimage-filter: brightness(60%) !default;\n$header-text-color: #fff !default;\n$header-text-color-detail: rgba(0, 0, 0, 0.2) !default;\n\n//\n// ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n// ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n// █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n// ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n// ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n// ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n//\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-default-darker: mix($brand-default, black, 60%) !default;\n$color-default-dark: mix($brand-default, black, 70%) !default;\n$color-default-light: mix($brand-default, white, 20%) !default;\n$color-default-lighter: mix($brand-default, white, 10%) !default;\n\n$color-primary-darker: mix($brand-primary, black, 60%) !default;\n$color-primary-dark: mix($brand-primary, black, 70%) !default;\n$color-primary-light: mix($brand-primary, white, 20%) !default;\n$color-primary-lighter: mix($brand-primary, white, 10%) !default;\n\n$color-success-darker: mix($brand-success, black, 60%) !default;\n$color-success-dark: mix($brand-success, black, 70%) !default;\n$color-success-light: mix($brand-success, white, 20%) !default;\n$color-success-lighter: mix($brand-success, white, 10%) !default;\n\n$color-warning-darker: mix($brand-warning, black, 60%) !default;\n$color-warning-dark: mix($brand-warning, black, 70%) !default;\n$color-warning-light: mix($brand-warning, white, 20%) !default;\n$color-warning-lighter: mix($brand-warning, white, 10%) !default;\n\n$color-danger-darker: mix($brand-danger, black, 60%) !default;\n$color-danger-dark: mix($brand-danger, black, 70%) !default;\n$color-danger-light: mix($brand-danger, white, 20%) !default;\n$color-danger-lighter: mix($brand-danger, white, 10%) !default;\n\n$brand-gradient: linear-gradient(to right top, #264ae5, #2239c5, #1b29a6, #111988, #03096c) !default;\n\n//== Grids\n//## Used for Datagrid, Templategrid, Listview & Tables (see components folder)\n\n// Default Border Colors\n$grid-border-color: $border-color-default !default;\n\n// Spacing\n// Default\n$grid-padding-top: 16px !default;\n$grid-padding-right: 16px !default;\n$grid-padding-bottom: 16px !default;\n$grid-padding-left: 16px !default;\n\n// Listview\n$listview-padding-top: 16px !default;\n$listview-padding-right: 16px !default;\n$listview-padding-bottom: 16px !default;\n$listview-padding-left: 16px !default;\n\n// Background Colors\n$grid-bg: transparent !default;\n$grid-bg-header: transparent !default; // Grid Headers\n$grid-bg-hover: mix($grid-border-color, #fff, 20%) !default;\n$grid-bg-selected: mix($grid-border-color, #fff, 30%) !default;\n$grid-bg-selected-hover: mix($grid-border-color, #fff, 50%) !default;\n\n// Striped Background Color\n$grid-bg-striped: mix($grid-border-color, #fff, 10%) !default;\n\n// Background Footer Color\n$grid-footer-bg: $gray-primary !default;\n\n// Text Color\n$grid-selected-color: $font-color-default !default;\n\n// Paging Colors\n$grid-paging-bg: transparent !default;\n$grid-paging-bg-hover: transparent !default;\n$grid-paging-border-color: transparent !default;\n$grid-paging-border-color-hover: transparent !default;\n$grid-paging-color: $gray-light !default;\n$grid-paging-color-hover: $brand-primary !default;\n\n//== Tabs\n//## Default variables for Tab Container Widget (used in components/tabcontainer)\n\n// Text Color\n$tabs-color: $font-color-detail !default;\n$tabs-color-active: $font-color-default !default;\n$tabs-lined-color-active: $font-color-default !default;\n\n$tabs-lined-border-width: 3px !default;\n\n// Border Color\n$tabs-border-color: $border-color-default !default;\n$tabs-lined-border-color: $brand-primary !default;\n\n// Background Color\n$tabs-bg: transparent !default;\n$tabs-bg-pills: #e7e7e9 !default;\n$tabs-bg-hover: lighten($tabs-border-color, 5) !default;\n$tabs-bg-active: $brand-primary !default;\n\n//== Modals\n//## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals)\n\n// Background Color\n$modal-header-bg: transparent !default;\n\n// Border Color\n$modal-header-border-color: $border-color-default !default;\n\n// Text Color\n$modal-header-color: $font-color-default !default;\n\n//== Dataview\n//## Default variables for Dataview Widget (used in components/dataview)\n\n// Controls\n$dataview-controls-bg: transparent !default;\n$dataview-controls-border-color: $border-color-default !default;\n\n// Empty Message\n$dataview-emptymessage-bg: $bg-color !default;\n$dataview-emptymessage-color: $font-color-default !default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-primary-bg: $color-primary-lighter !default;\n$alert-secondary-bg: $color-primary-lighter !default;\n$alert-success-bg: $color-success-lighter !default;\n$alert-warning-bg: $color-warning-lighter !default;\n$alert-danger-bg: $color-danger-lighter !default;\n\n// Text Color\n$alert-primary-color: $color-primary-darker !default;\n$alert-secondary-color: $color-primary-darker !default;\n$alert-success-color: $color-success-darker !default;\n$alert-warning-color: $color-warning-darker !default;\n$alert-danger-color: $color-danger-darker !default;\n\n// Border Color\n$alert-primary-border-color: $color-primary-dark !default;\n$alert-secondary-border-color: $color-primary-dark !default;\n$alert-success-border-color: $color-success-dark !default;\n$alert-warning-border-color: $color-warning-dark !default;\n$alert-danger-border-color: $color-danger-dark !default;\n\n//== Wizard\n\n$wizard-step-height: 48px !default;\n$wizard-step-number-size: 64px !default;\n$wizard-step-number-font-size: $font-size-h3 !default;\n\n//Wizard states\n$wizard-default: #fff !default;\n$wizard-active: $brand-primary !default;\n$wizard-visited: $brand-success !default;\n\n//Wizard step states\n$wizard-default-bg: $wizard-default !default;\n$wizard-default-color: $wizard-default !default;\n$wizard-default-step-color: $font-color-default !default;\n$wizard-default-border-color: $border-color-default !default;\n\n$wizard-active-bg: $wizard-active !default;\n$wizard-active-color: $wizard-default !default;\n$wizard-active-step-color: $wizard-active !default;\n$wizard-active-border-color: $wizard-active !default;\n\n$wizard-visited-bg: $wizard-visited !default;\n$wizard-visited-color: $wizard-default !default;\n$wizard-visited-step-color: $wizard-visited !default;\n$wizard-visited-border-color: $wizard-visited !default;\n\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-default-bg: $brand-default !default;\n$label-primary-bg: $brand-primary !default;\n$label-success-bg: $brand-success !default;\n$label-warning-bg: $brand-warning !default;\n$label-danger-bg: $brand-danger !default;\n\n// Border Color\n$label-default-border-color: $brand-default !default;\n$label-primary-border-color: $brand-primary !default;\n$label-success-border-color: $brand-success !default;\n$label-warning-border-color: $brand-warning !default;\n$label-danger-border-color: $brand-danger !default;\n\n// Text Color\n$label-default-color: $font-color-default !default;\n$label-primary-color: #fff !default;\n$label-success-color: #fff !default;\n$label-warning-color: #fff !default;\n$label-danger-color: #fff !default;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-default-bg: $gray-primary !default;\n$groupbox-primary-bg: $brand-primary !default;\n$groupbox-success-bg: $brand-success !default;\n$groupbox-warning-bg: $brand-warning !default;\n$groupbox-danger-bg: $brand-danger !default;\n$groupbox-white-bg: #fff !default;\n\n// Text Color\n$groupbox-default-color: $font-color-default !default;\n$groupbox-primary-color: #fff !default;\n$groupbox-success-color: #fff !default;\n$groupbox-warning-color: #fff !default;\n$groupbox-danger-color: #fff !default;\n$groupbox-white-color: $font-color-default !default;\n\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-default-color: $font-color-default !default;\n$callout-primary-color: $brand-primary !default;\n$callout-success-color: $brand-success !default;\n$callout-warning-color: $brand-warning !default;\n$callout-danger-color: $brand-danger !default;\n\n// Background Color\n$callout-default-bg: $color-default-lighter !default;\n$callout-primary-bg: $color-primary-lighter !default;\n$callout-success-bg: $color-success-lighter !default;\n$callout-warning-bg: $color-warning-lighter !default;\n$callout-danger-bg: $color-danger-lighter !default;\n\n//== Timeline\n//## Extended variables for Timeline Widget\n// Colors\n$timeline-icon-color: $brand-primary !default;\n$timeline-border-color: $border-color-default !default;\n$timeline-event-time-color: $brand-primary !default;\n\n// Sizes\n$timeline-icon-size: 18px !default;\n$timeline-image-size: 36px !default;\n\n//Timeline grouping\n$timeline-grouping-size: 120px !default;\n$timeline-grouping-border-radius: 30px !default;\n$timeline-grouping-border-color: $timeline-border-color !default;\n\n//== Accordions\n//## Extended variables for Accordion Widget\n\n// Default\n$accordion-header-default-bg: $bg-color-secondary !default;\n$accordion-header-default-bg-hover: $bg-color !default;\n$accordion-header-default-color: $font-color-header !default;\n$accordion-default-border-color: $border-color-default !default;\n\n$accordion-bg-striped: $grid-bg-striped !default;\n$accordion-bg-striped-hover: $grid-bg-selected !default;\n\n// Semantic background colors\n$accordion-header-primary-bg: $btn-primary-bg !default;\n$accordion-header-secondary-bg: $btn-default-bg !default;\n$accordion-header-success-bg: $btn-success-bg !default;\n$accordion-header-warning-bg: $btn-warning-bg !default;\n$accordion-header-danger-bg: $btn-danger-bg !default;\n\n$accordion-header-primary-bg-hover: $btn-primary-bg-hover !default;\n$accordion-header-secondary-bg-hover: $btn-default-bg-hover !default;\n$accordion-header-success-bg-hover: $btn-success-bg-hover !default;\n$accordion-header-warning-bg-hover: $btn-warning-bg-hover !default;\n$accordion-header-danger-bg-hover: $btn-danger-bg-hover !default;\n\n// Semantic text colors\n$accordion-header-primary-color: $btn-primary-color !default;\n$accordion-header-secondary-color: $btn-default-color !default;\n$accordion-header-success-color: $btn-success-color !default;\n$accordion-header-warning-color: $btn-warning-color !default;\n$accordion-header-danger-color: $btn-danger-color !default;\n\n// Semantic border colors\n$accordion-primary-border-color: $btn-primary-border-color !default;\n$accordion-secondary-border-color: $btn-default-border-color !default;\n$accordion-success-border-color: $btn-success-border-color !default;\n$accordion-warning-border-color: $btn-warning-border-color !default;\n$accordion-danger-border-color: $btn-danger-border-color !default;\n\n//== Spacing\n//## Advanced layout options (used in base/mixins/default-spacing)\n\n// Smallest spacing\n$spacing-smallest: 2px !default;\n\n// Smaller spacing\n$spacing-smaller: 4px !default;\n\n// Small spacing\n$spacing-small: 8px !default;\n\n// Medium spacing\n$spacing-medium: 16px !default;\n$t-spacing-medium: 16px !default;\n$m-spacing-medium: 16px !default;\n\n// Large spacing\n$spacing-large: 24px !default;\n$t-spacing-large: 24px !default;\n$m-spacing-large: 16px !default;\n\n// Larger spacing\n$spacing-larger: 32px !default;\n\n// Largest spacing\n$spacing-largest: 48px !default;\n\n// Layout spacing\n$layout-spacing-top: 24px !default;\n$layout-spacing-right: 24px !default;\n$layout-spacing-bottom: 24px !default;\n$layout-spacing-left: 24px !default;\n\n$t-layout-spacing-top: 24px !default;\n$t-layout-spacing-right: 24px !default;\n$t-layout-spacing-bottom: 24px !default;\n$t-layout-spacing-left: 24px !default;\n\n$m-layout-spacing-top: 16px !default;\n$m-layout-spacing-right: 16px !default;\n$m-layout-spacing-bottom: 16px !default;\n$m-layout-spacing-left: 16px !default;\n\n// Combined layout spacing\n$layout-spacing: $layout-spacing-top $layout-spacing-right $layout-spacing-bottom $layout-spacing-left !default;\n$m-layout-spacing: $m-layout-spacing-top $m-layout-spacing-right $m-layout-spacing-bottom $m-layout-spacing-left !default;\n$t-layout-spacing: $t-layout-spacing-top $t-layout-spacing-right $t-layout-spacing-bottom $t-layout-spacing-left !default;\n\n// Gutter size\n$gutter-size: 8px !default;\n\n//== Tables\n//## Table spacing options (used in components/tables)\n\n$padding-table-cell-top: 8px !default;\n$padding-table-cell-bottom: 8px !default;\n$padding-table-cell-left: 8px !default;\n$padding-table-cell-right: 8px !default;\n\n//== Media queries breakpoints\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n$screen-xs: 480px !default;\n$screen-sm: 576px !default;\n$screen-md: 768px !default;\n$screen-lg: 992px !default;\n$screen-xl: 1200px !default;\n\n// So media queries don't overlap when required, provide a maximum (used for max-width)\n$screen-xs-max: calc(#{$screen-sm} - 1px) !default;\n$screen-sm-max: calc(#{$screen-md} - 1px) !default;\n$screen-md-max: calc(#{$screen-lg} - 1px) !default;\n$screen-lg-max: calc(#{$screen-xl} - 1px) !default;\n\n//== Settings\n//## Enable or disable your desired framework features\n// Use of !important\n$important-flex: true !default; // ./base/flex.scss\n$important-spacing: true !default; // ./base/spacing.scss\n$important-helpers: true !default; // ./helpers/helperclasses.scss\n\n//===== Legacy variables =====\n\n//== Step 1: Brand Colors\n$brand-inverse: #24276c !default;\n$brand-info: #0086d9 !default;\n\n//== Step 2: UI Customization\n// Sidebar\n$sidebar-bg: $brand-inverse !default;\n\n//== Navigation\n//## Used in components/navigation\n\n// Default Navigation styling\n$navigation-bg: $brand-inverse !default;\n$navigation-bg-hover: lighten($navigation-bg, 4) !default;\n$navigation-bg-active: lighten($navigation-bg, 8) !default;\n\n$navigation-sub-bg: darken($navigation-bg, 4) !default;\n$navigation-sub-bg-hover: $navigation-sub-bg !default;\n$navigation-sub-bg-active: $navigation-sub-bg !default;\n\n$navigation-border-color: $navigation-bg-hover !default;\n\n// Navigation Sidebar\n$navsidebar-bg: $sidebar-bg !default;\n$navsidebar-bg-hover: darken($navsidebar-bg, 4) !default;\n$navsidebar-bg-active: darken($navsidebar-bg, 8) !default;\n\n$navsidebar-sub-bg: darken($navsidebar-bg, 4) !default;\n$navsidebar-sub-bg-hover: $navsidebar-sub-bg !default;\n$navsidebar-sub-bg-active: $navsidebar-sub-bg !default;\n\n$navsidebar-border-color: $navsidebar-bg-hover !default;\n\n//== Form\n//## Used in components/inputs\n\n// Form Label\n$form-label-color: $brand-inverse !default;\n\n//== Buttons\n//## Define background-color, border-color and text. Used in components/buttons\n\n// Button Background Color\n$btn-inverse-bg: $brand-inverse !default;\n$btn-info-bg: $brand-info !default;\n\n// Button Border Color\n$btn-inverse-border-color: $brand-inverse !default;\n$btn-info-border-color: $brand-info !default;\n\n// Button Text Color\n$btn-inverse-color: #fff !default;\n$btn-info-color: #fff !default;\n\n// Button Background Color\n$btn-inverse-bg-hover: mix($btn-inverse-bg, white, 80%) !default;\n$btn-info-bg-hover: mix($btn-info-bg, black, 80%) !default;\n\n//== Color variations\n//## These variations are used to support several other variables and components\n\n// Color variations\n$color-inverse-darker: mix($brand-inverse, black, 60%) !default;\n$color-inverse-dark: mix($brand-inverse, black, 70%) !default;\n$color-inverse-light: mix($brand-inverse, white, 40%) !default;\n$color-inverse-lighter: mix($brand-inverse, white, 20%) !default;\n\n$color-info-darker: mix($brand-info, black, 60%) !default;\n$color-info-dark: mix($brand-info, black, 70%) !default;\n$color-info-light: mix($brand-info, white, 60%) !default;\n$color-info-lighter: mix($brand-info, white, 20%) !default;\n\n//== Alerts\n//## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts)\n\n// Background Color\n$alert-info-bg: $color-primary-lighter !default;\n\n// Text Color\n$alert-info-color: $color-primary-darker !default;\n\n// Border Color\n$alert-info-border-color: $color-primary-dark !default;\n//== Labels\n//## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels)\n\n// Background Color\n$label-info-bg: $brand-info !default;\n$label-inverse-bg: $brand-inverse !default;\n\n// Border Color\n$label-info-border-color: $brand-info !default;\n$label-inverse-border-color: $brand-inverse !default;\n\n// Text Color\n$label-info-color: #fff !default;\n$label-inverse-color: #fff !default;\n\n//== Groupbox\n//## Default variables for Groupbox Widget (used in components/groupbox)\n\n// Background Color\n$groupbox-inverse-bg: $brand-inverse !default;\n$groupbox-info-bg: $brand-info !default;\n\n// Text Color\n$groupbox-inverse-color: #fff !default;\n$groupbox-info-color: #fff !default;\n//== Callout (groupbox) Colors\n//## Extended variables for Groupbox Widget (used in components/groupbox)\n\n// Text and Border Color\n$callout-info-color: $brand-info !default;\n\n// Background Color\n$callout-info-bg: $color-info-lighter !default;\n","/* ==========================================================================\n Breadcrumbs\n\n========================================================================== */\n.breadcrumb {\n //reset\n margin: 0;\n padding: 0;\n border-radius: 0;\n background-color: transparent;\n font-size: $font-size-default;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-item {\n display: inline-block;\n margin: 0;\n &:last-child {\n color: $font-color-default;\n a {\n text-decoration: none;\n }\n }\n}\n.breadcrumb-item + .breadcrumb-item {\n &::before {\n display: inline-block;\n padding-right: $spacing-small;\n padding-left: $spacing-small;\n content: \"/\";\n color: $gray-light;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.breadcrumb-large {\n font-size: $font-size-h3;\n}\n.breadcrumb-underline {\n padding-bottom: $spacing-medium;\n border-bottom: 1px solid $border-color-default;\n}\n","/* ==========================================================================\n Cards\n\n========================================================================== */\n.card {\n border: 0;\n border-radius: $border-radius-default;\n background-color: #ffffff;\n overflow: hidden;\n position: relative;\n padding: $spacing-large;\n margin-bottom: $spacing-large;\n}\n\n//== Card components\n//-------------------------------------------------------------------------------------------------------------------//\n.card-body {\n padding: $spacing-large;\n}\n\n.card-overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n background: rgba(0, 0, 0, 0.6);\n background: linear-gradient(\n to bottom,\n rgba(255, 255, 255, 0) 0%,\n rgba(250, 250, 250, 0) 8%,\n rgba(0, 0, 0, 0.99) 121%,\n #000 100%\n );\n padding: $spacing-large;\n}\n\n.card-title {\n}\n\n.card-image {\n width: 100%;\n height: auto;\n}\n\n.card-supportingtext {\n}\n\n.card-action {\n}\n\n.card-icon {\n font-size: $font-size-h1;\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.card-with-image {\n overflow: hidden;\n}\n\n.card-with-background {\n position: relative;\n}\n","/* ==========================================================================\n Chats\n\n========================================================================== */\n.chat {\n display: flex;\n flex-direction: column;\n height: 100%;\n background-color: $bg-color-secondary;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-content {\n display: flex;\n overflow: auto;\n flex: 1;\n flex-direction: column;\n justify-content: flex-end;\n\n .chat-list {\n position: relative;\n overflow: auto;\n\n ul {\n display: flex;\n flex-direction: column-reverse;\n margin-bottom: $m-spacing-large;\n }\n\n li {\n padding: 15px 30px;\n animation: fadeIn 0.2s;\n background-color: transparent;\n animation-fill-mode: both;\n\n &,\n &:last-child {\n border: 0;\n }\n }\n\n .mx-listview-loadMore {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n display: block;\n width: 50%;\n margin: 15px auto;\n color: #ffffff;\n background-color: $brand-primary;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n }\n }\n}\n\n.chat-message {\n display: flex;\n}\n\n.chat-avatar {\n margin: 0 20px 0 0;\n border-radius: 50%;\n}\n\n.chat-message-content {\n display: inline-flex;\n flex-direction: column;\n}\n\n.chat-message-balloon {\n position: relative;\n display: flex;\n flex-direction: column;\n padding: 10px 15px;\n border-radius: 5px;\n background-color: $bg-color;\n\n &::after {\n position: absolute;\n top: 10px;\n right: 100%;\n width: 0;\n height: 0;\n content: \"\";\n border: 10px solid transparent;\n border-top: 0;\n border-right-color: $bg-color;\n border-left: 0;\n }\n}\n\n.chat-message-time {\n padding-top: 2px;\n\n .form-control-static {\n border: 0;\n }\n}\n\n.chat-footer {\n z-index: 1;\n padding: $m-spacing-large;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 0 rgba(0, 0, 0, 0.05);\n}\n\n.chat-input {\n display: flex;\n\n .chat-textbox {\n flex: 1;\n margin-right: $spacing-large;\n margin-bottom: 0;\n\n .form-control {\n border: 0;\n }\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.chat-message-self {\n justify-content: flex-end;\n\n .chat-avatar {\n margin: 0 0 0 20px;\n }\n\n .chat-message-balloon {\n background-color: $color-primary-lighter;\n\n &::after {\n left: 100%;\n border: 10px solid transparent;\n border-top: 0;\n border-right: 0;\n border-left-color: $color-primary-lighter;\n }\n }\n\n .chat-message-time {\n text-align: right;\n }\n}\n","/* ==========================================================================\n Control Group\n \n A group of buttons next to eachother\n========================================================================== */\n.controlgroup {\n .btn,\n .btn-group {\n margin-right: $spacing-small;\n margin-bottom: $spacing-small;\n\n &:last-child {\n margin-right: 0;\n }\n .btn {\n margin-right: 0;\n margin-bottom: 0;\n }\n }\n .btn-group {\n .btn + .btn {\n margin-left: -1px;\n }\n }\n}\n","/* ==========================================================================\n Full page blocks\n\n Blocks that take up the full width and height\n========================================================================== */\n\n.fullpageblock {\n position: relative;\n height: 100%;\n min-height: 100%;\n\n // Helper to make it fullheight\n .fullheight {\n height: 100% !important;\n\n & > .mx-dataview-content {\n height: inherit !important;\n }\n }\n\n .fullpage-overlay {\n position: absolute;\n z-index: 10;\n bottom: 0;\n left: 0;\n width: 100%;\n }\n}\n","/* ==========================================================================\n Pageheader\n========================================================================== */\n\n//== Default\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader {\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.pageheader-title {\n}\n\n.pageheader-subtitle {\n}\n\n.pageheader-image {\n}\n","/* ==========================================================================\n Hero header\n\n========================================================================== */\n\n.headerhero {\n width: 100%;\n min-height: $header-min-height;\n background-color: $header-bg-color;\n position: relative;\n overflow: hidden;\n padding: $spacing-large;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.headerhero-title {\n color: $header-text-color;\n}\n\n.headerhero-subtitle {\n color: $header-text-color;\n}\n\n.headerhero-backgroundimage {\n position: absolute;\n z-index: 0;\n top: 0;\n height: 100%;\n width: 100%;\n filter: $header-bgimage-filter;\n}\n\n.btn.headerhero-action {\n color: $header-text-color;\n}\n\n.heroheader-overlay {\n z-index: 1;\n}\n","/* ==========================================================================\n Form Block\n\n Used in default forms\n========================================================================== */\n.formblock {\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//== Elements\n//-------------------------------------------------------------------------------------------------------------------//\n.form-title {\n}\n","/* ==========================================================================\n Master Detail\n\n A list with a listening dataview\n========================================================================== */\n.masterdetail {\n background: #fff;\n .masterdetail-master {\n border-right: 1px solid $border-color-default;\n }\n .masterdetail-detail {\n padding: $spacing-large;\n }\n}\n\n//== Variations\n//-------------------------------------------------------------------------------------------------------------------//\n.masterdetail-vertical {\n background: #fff;\n .masterdetail-master {\n border-bottom: 1px solid $border-color-default;\n }\n .masterdetail-detail {\n padding: $spacing-large;\n }\n}\n","/* ==========================================================================\n User profile blocks\n -\n========================================================================== */\n.userprofile {\n .userprofile-img {\n }\n .userprofile-title {\n }\n .userprofile-subtitle {\n }\n}\n","//Wizard\n.wizard {\n display: flex;\n justify-content: space-between;\n width: 100%;\n margin-bottom: $spacing-large;\n}\n\n//Wizard step\n.wizard-step {\n position: relative;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n//Wizard step number\n.wizard-step-number {\n position: relative;\n z-index: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n width: $wizard-step-number-size;\n height: $wizard-step-number-size;\n color: $wizard-default-step-color;\n font-size: $wizard-step-number-font-size;\n border-radius: 50%;\n background-color: $wizard-default-bg;\n border-color: $wizard-default-border-color;\n}\n\n//Wizard step text\n.wizard-step-text {\n overflow: hidden;\n white-space: nowrap;\n text-decoration: none;\n text-overflow: ellipsis;\n color: $wizard-default-step-color;\n}\n\n//Wizard circle\n.wizard-circle .wizard-step {\n flex-direction: column;\n &::before {\n position: absolute;\n z-index: 0;\n top: $wizard-step-number-size / 2;\n display: block;\n width: 100%;\n height: 2px;\n content: \"\";\n background-color: $wizard-default-border-color;\n }\n}\n\n//Wizard arrow\n.wizard-arrow .wizard-step {\n height: $wizard-step-height;\n margin-left: calc(0px - (#{$wizard-step-height} / 2));\n padding-left: ($wizard-step-height / 2);\n background-color: $wizard-default-bg;\n justify-content: flex-start;\n border: 1px solid $wizard-default-border-color;\n &::before,\n &::after {\n position: absolute;\n z-index: 1;\n left: 100%;\n margin-left: calc(0px - ((#{$wizard-step-height} / 2) - 1px));\n content: \" \";\n border-style: solid;\n border-color: transparent;\n }\n &::after {\n top: 0;\n border-width: calc((#{$wizard-step-height} / 2) - 1px);\n border-left-color: $wizard-default-bg;\n }\n &::before {\n top: -1px;\n border-width: $wizard-step-height / 2;\n border-left-color: $wizard-default-border-color;\n }\n\n &:first-child {\n margin-left: 0;\n padding-left: 0;\n border-top-left-radius: $border-radius-default;\n border-bottom-left-radius: $border-radius-default;\n }\n\n &:last-child {\n border-top-right-radius: $border-radius-default;\n border-bottom-right-radius: $border-radius-default;\n &::before,\n &::after {\n display: none;\n }\n }\n}\n\n//Wizard states\n.wizard-circle .wizard-step-active {\n .wizard-step-number {\n color: $wizard-active-color;\n border-color: $wizard-active-border-color;\n background-color: $wizard-active-bg;\n }\n .wizard-step-text {\n color: $wizard-active-step-color;\n }\n}\n.wizard-circle .wizard-step-visited {\n .wizard-step-number {\n color: $wizard-visited-color;\n border-color: $wizard-visited-border-color;\n background-color: $wizard-visited-bg;\n }\n .wizard-step-text {\n color: $wizard-visited-step-color;\n }\n}\n\n.wizard-arrow .wizard-step-active {\n background-color: $wizard-active-bg;\n .wizard-step-text {\n color: $wizard-active-color;\n }\n &::after {\n border-left-color: $wizard-active-bg;\n }\n}\n\n.wizard-arrow .wizard-step-visited {\n .wizard-step-text {\n color: $link-color;\n }\n}\n",".login-formblock {\n display: flex;\n flex-direction: column;\n}\n\n.login-form {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n",".listtab-tabs.mx-tabcontainer {\n background: $bg-color-secondary;\n .mx-tabcontainer-tabs {\n background: $brand-primary;\n margin-bottom: 0;\n li {\n > a {\n color: #fff;\n opacity: 0.6;\n &:hover,\n &:focus {\n color: #fff;\n }\n }\n &.active {\n > a {\n opacity: 1;\n color: #fff;\n border-color: #fff;\n &:hover,\n &:focus {\n color: #fff;\n border-color: #fff;\n }\n }\n }\n }\n }\n}\n",".springboard-grid {\n display: flex;\n flex-direction: column;\n .row {\n flex: 1;\n .col {\n display: flex;\n }\n }\n}\n\n.springboard-header {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.springboard-card {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n",".statuspage-section {\n display: flex;\n flex-direction: column;\n}\n\n.statuspage-content {\n flex: 1;\n}\n\n.statuspage-icon {\n color: #fff;\n}\n\n.statuspage-subtitle {\n opacity: 0.6;\n}\n\n.statuspage-buttons {\n}\n","$dg-background-color: #fff;\n$dg-icon-color: #606671;\n$dg-icon-size: 14px;\n$dg-pagination-button-color: #3b4251;\n$dg-pagination-caption-color: #0a1325;\n$dragging-color-effect: rgba(10, 19, 37, 0.8);\n$dg-dragging-effect-size: 4px;\n\n$dg-grid-bg-striped: #fafafb;\n$dg-grid-bg-hover: #f5f6f6;\n$dg-spacing-small: 8px;\n$dg-spacing-medium: 16px;\n$dg-spacing-large: 24px;\n$dg-grid-border-color: #ced0d3;\n\n$dg-brand-primary: #264ae5;\n$dg-brand-light: #e6eaff;\n$dg-grid-selected-row-background: $dg-brand-light;\n\n.table {\n position: relative;\n border-width: 0;\n background-color: var(--bg-color-secondary, $dg-background-color);\n\n /* Table Content */\n .table-content {\n display: grid;\n position: relative;\n }\n\n /* Pseudo Row, to target this object please use .tr > .td or .tr > div */\n .tr {\n display: contents;\n }\n\n /* Column Header */\n .th {\n display: flex;\n align-items: flex-start;\n font-weight: 600;\n background-color: var(--bg-color-secondary, $dg-background-color);\n border-width: 0;\n border-color: var(--grid-border-color, $dg-grid-border-color);\n padding: var(--spacing-medium, $dg-spacing-medium);\n top: 0;\n min-width: 0;\n position: relative;\n\n &.dragging {\n opacity: 0.5;\n &.dragging-over-self {\n opacity: 0.8;\n }\n }\n\n &.drop-after:after,\n &.drop-before:after {\n content: \"\";\n position: absolute;\n top: 0;\n height: 100%;\n width: var(--spacing-smaller, $dg-dragging-effect-size);\n background-color: $dragging-color-effect;\n\n z-index: 1;\n }\n\n &.drop-before {\n &:after {\n left: 0;\n }\n &:not(:first-child):after {\n transform: translateX(-50%);\n }\n }\n\n &.drop-after {\n &:after {\n right: 0;\n }\n &:not(:last-child):after {\n transform: translateX(50%);\n }\n }\n\n /* Clickable column header (Sortable) */\n .clickable {\n cursor: pointer;\n }\n\n /* Column resizer when column is resizable */\n .column-resizer {\n padding: 0 4px;\n align-self: stretch;\n cursor: col-resize;\n\n &:hover .column-resizer-bar {\n background-color: var(--brand-primary, $dg-brand-primary);\n }\n &:active .column-resizer-bar {\n background-color: var(--brand-primary, $dg-brand-primary);\n }\n\n .column-resizer-bar {\n height: 100%;\n width: 4px;\n }\n }\n\n /* Content of the column header */\n .column-container {\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n align-self: stretch;\n min-width: 0;\n\n &:not(:has(.filter)) {\n .column-header {\n height: 100%;\n }\n }\n }\n\n /* Header text */\n .column-header {\n margin: 1px 1px calc((-1 * var(--spacing-smaller, $dg-dragging-effect-size)) + 2px);\n display: flex;\n align-items: baseline;\n\n span {\n min-width: 0;\n flex-grow: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n text-wrap: nowrap;\n align-self: center;\n }\n\n svg {\n margin-left: 8px;\n flex: 0 0 var(--btn-font-size, $dg-icon-size);\n color: var(--gray-dark, $dg-icon-color);\n height: var(--btn-font-size, $dg-icon-size);\n align-self: center;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n }\n }\n\n /* Header filter */\n .filter {\n display: flex;\n margin-top: 4px;\n input:not([type=\"checkbox\"]) {\n font-weight: normal;\n flex-grow: 1;\n width: 100%;\n }\n > .form-group {\n margin-bottom: 0;\n }\n > .form-control {\n flex: unset;\n min-width: unset;\n }\n }\n }\n\n /* If Column Header has filter */\n &:has(.th .column-container .filter:not(:empty)) {\n .th {\n &.column-selector {\n padding: var(--spacing-medium, $dg-spacing-medium) 0;\n }\n /*adjust filter-selector icon to be mid-bottom aligned */\n .column-selector-content {\n align-self: flex-end;\n margin-bottom: 3px;\n }\n\n /*adjust checkbox toggle to be mid-bottom aligned */\n &.widget-datagrid-col-select {\n align-items: flex-end;\n padding-bottom: calc(var(--spacing-medium, $dg-spacing-medium) + 11px);\n }\n }\n }\n\n /* Column selector for hidable columns */\n .column-selector {\n padding: 0;\n\n /* Column content */\n .column-selector-content {\n align-self: center;\n padding-right: var(--spacing-medium, $dg-spacing-medium);\n /* Button containing the eye icon */\n .column-selector-button {\n $icon-margin: 7px;\n /* 2px as path of icon's path is a bit bigger than outer svg */\n $icon-slack-size: 2px;\n\n padding: 0;\n margin: 0;\n\n height: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size);\n width: calc(var(--btn-font-size, $dg-icon-size) + $icon-margin * 2 + $icon-slack-size);\n\n svg {\n margin: $icon-margin;\n }\n }\n\n /* List of columns to select */\n .column-selectors {\n position: absolute;\n right: 0;\n margin: 8px;\n padding: 0 16px;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 3px;\n border: 1px solid transparent;\n list-style-type: none;\n -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n\n li {\n display: flex;\n align-items: center;\n\n label {\n margin: 8px;\n font-weight: normal;\n white-space: nowrap;\n }\n }\n }\n }\n }\n\n /* Column content */\n .td {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--spacing-medium, $dg-spacing-medium);\n border-style: solid;\n border-width: 0;\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-bottom-width: 1px;\n min-width: 0;\n\n &.td-borders {\n border-top-width: 1px;\n border-top-style: solid;\n }\n\n &:focus-visible {\n outline-width: 1px;\n outline-style: solid;\n outline-offset: -1px;\n outline-color: var(--brand-primary, $dg-brand-primary);\n }\n\n &.clickable {\n cursor: pointer;\n }\n\n > .td-text {\n white-space: nowrap;\n word-break: break-word;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n > .td-custom-content {\n flex-grow: 1;\n }\n\n > .empty-placeholder {\n width: 100%;\n }\n\n &.wrap-text {\n min-height: 0;\n min-width: 0;\n\n > .td-text,\n > .mx-text {\n white-space: normal;\n }\n }\n }\n\n & *:focus {\n outline: 0;\n }\n\n .align-column-left {\n justify-content: flex-start;\n }\n\n .align-column-center {\n justify-content: center;\n }\n\n .align-column-right {\n justify-content: flex-end;\n }\n}\n\n.pagination-bar {\n display: flex;\n justify-content: flex-end;\n white-space: nowrap;\n align-items: baseline;\n margin: 16px;\n color: $dg-pagination-caption-color;\n\n .paging-status {\n padding: 0 8px 8px;\n }\n\n .pagination-button {\n padding: 6px;\n color: var(--gray-darker, $dg-pagination-button-color);\n border-color: transparent;\n background-color: transparent;\n\n &:hover {\n color: var(--brand-primary, $dg-brand-primary);\n border-color: transparent;\n background-color: transparent;\n }\n\n &:disabled {\n border-color: transparent;\n background-color: transparent;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n }\n }\n .pagination-icon {\n position: relative;\n top: 4px;\n display: inline-block;\n width: 20px;\n height: 20px;\n }\n}\n\n/* Column selector for hidable columns outside DG context */\n/* List of columns to select */\n.column-selectors {\n position: absolute;\n right: 0;\n margin: 8px 0;\n padding: 0 16px;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 3px;\n border: 1px solid transparent;\n list-style-type: none;\n -webkit-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n -moz-box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n box-shadow: 0 2px 20px 1px rgba(32, 43, 54, 0.08);\n\n &.overflow {\n height: 250px;\n overflow-y: scroll;\n }\n\n li {\n display: flex;\n align-items: center;\n cursor: pointer;\n\n label {\n margin: 8px;\n font-weight: normal;\n white-space: nowrap;\n }\n }\n}\n\n.widget-datagrid {\n &.widget-datagrid-selection-method-click {\n .tr.tr-selected .td {\n background-color: $dg-grid-selected-row-background;\n }\n }\n}\n\n.widget-datagrid-col-select input:focus-visible {\n outline-offset: 0;\n}\n\n.widget-datagrid-content {\n overflow-y: auto;\n}\n","/**\n Classes for React Date-Picker font-unit and color adjustments\n*/\n$dg-day-color: #555;\n$dg-day-range-color: #000;\n$dg-day-range-background: #eaeaea;\n$dg-outside-month-color: #c8c8c8;\n$dg-text-color: #fff;\n$dg-border-color: #d7d7d7;\n\n.react-datepicker {\n font-size: 1em;\n border: 1px solid $dg-border-color;\n}\n\n.react-datepicker-wrapper {\n display: flex;\n flex: 1;\n}\n\n.react-datepicker__input-container {\n display: flex;\n flex: 1;\n}\n\n.react-datepicker__header {\n padding-top: 0.8em;\n background-color: var(--bg-color, $dg-background-color);\n border-color: transparent;\n}\n\n.react-datepicker__header__dropdown {\n margin: 8px 0 4px 0; //4px due to the header contains 4px already\n}\n\n.react-datepicker__year-dropdown-container {\n margin-left: 8px;\n}\n\n.react-datepicker__month {\n margin: 4px 4px 8px 4px; //4px due to the rows already contains 4px each day\n}\n\n.react-datepicker__month-container {\n font-weight: normal;\n}\n\n.react-datepicker__day-name,\n.react-datepicker__day {\n width: 2em;\n line-height: 2em;\n margin: 4px;\n}\n\n.react-datepicker__day,\n.react-datepicker__day--in-range {\n color: $dg-day-color;\n border-radius: 50%;\n\n &:hover {\n border-radius: 50%;\n color: var(--brand-primary, $dg-brand-primary);\n background-color: var(--gray-ligter, $dg-hover-color);\n }\n}\n\n.react-datepicker__day-name {\n color: var(--brand-primary, $dg-brand-primary);\n font-weight: bold;\n}\n\n.react-datepicker__day--outside-month {\n color: $dg-outside-month-color;\n}\n\n.react-datepicker__day--today:not(.react-datepicker__day--in-range),\n.react-datepicker__day--keyboard-selected {\n color: var(--brand-primary, $dg-brand-primary);\n background-color: var(--gray-ligter, $dg-hover-color);\n}\n\n.react-datepicker__month-select:focus-visible,\n.react-datepicker__year-select:focus-visible,\n.react-datepicker__navigation:focus-visible,\n.react-datepicker__day.react-datepicker__day--keyboard-selected {\n outline: 1px solid var(--form-input-border-focus-color);\n}\n\n.react-datepicker__day--selected,\n.react-datepicker__day--range-start,\n.react-datepicker__day--range-end,\n.react-datepicker__day--in-selecting-range.react-datepicker__day--selecting-range-start {\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n\n &:hover {\n border-radius: 50%;\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n }\n}\n\n.react-datepicker__day--in-range:not(.react-datepicker__day--range-start, .react-datepicker__day--range-end),\n.react-datepicker__day--in-selecting-range:not(\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--in-range,\n .react-datepicker__quarter-text--in-range,\n .react-datepicker__year-text--in-range,\n .react-datepicker__day--selecting-range-start\n ) {\n background-color: $dg-day-range-background;\n color: $dg-day-range-color;\n\n &:hover {\n background-color: var(--brand-primary, $dg-brand-primary);\n color: var(--header-text-color, $dg-text-color);\n }\n}\n\nbutton.react-datepicker__close-icon::after {\n background-color: var(--brand-primary, $dg-brand-primary);\n}\n\n.react-datepicker__current-month {\n font-size: 1em;\n font-weight: normal;\n}\n\n.react-datepicker__navigation {\n top: 1em;\n line-height: 1.7em;\n border: 0.45em solid transparent;\n}\n\n.react-datepicker__navigation--previous {\n border-right-color: #ccc;\n left: 8px;\n border: none;\n}\n\n.react-datepicker__navigation--next {\n border-left-color: #ccc;\n right: 8px;\n border: none;\n}\n\n/**\nSpace between the fields and the popup\n */\n.react-datepicker-popper[data-placement^=\"bottom\"] {\n margin-top: unset;\n padding-top: 0;\n}\n","$dg-hover-color: #f8f8f8;\n$dg-background-color: #fff;\n$dg-selected-color: #dadcde;\n$dg-border-color: #ced0d3;\n$dg-spacing-small: 8px;\n$arrow: \"resources/dropdown-arrow.svg\";\n$dg-item-min-height: 32px;\n\n@import \"date-picker\";\n\n@font-face {\n font-family: \"datagrid-filters\";\n src: url(\"./fonts/datagrid-filters.eot\");\n src: url(\"./fonts/datagrid-filters.eot\") format(\"embedded-opentype\"),\n url(\"./fonts/datagrid-filters.woff2\") format(\"woff2\"), url(\"./fonts/datagrid-filters.woff\") format(\"woff\"),\n url(\"./fonts/datagrid-filters.ttf\") format(\"truetype\"), url(\"./fonts/datagrid-filters.svg\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n.filter-container {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n\n .filter-input {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n\n .btn-calendar {\n margin-left: 5px; //Review in atlas, the current date picker is also 5px\n .button-icon {\n width: 18px;\n height: 18px;\n }\n }\n}\n\n.filter-selector {\n padding-left: 0;\n padding-right: 0;\n\n .filter-selector-content {\n height: 100%;\n align-self: flex-end;\n\n .filter-selector-button {\n padding: 8px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: none;\n height: 100%;\n\n &:before {\n justify-content: center;\n width: 20px;\n height: 20px;\n padding-left: 4px; /* The font has spaces in the right side, so to align in the middle we need this */\n }\n }\n\n .filter-selectors {\n position: absolute;\n width: max-content;\n left: 0;\n margin: 0 var(--spacing-small, $dg-spacing-small);\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow: hidden;\n z-index: 102;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n line-height: 32px;\n cursor: pointer;\n\n .filter-label {\n padding-right: 8px;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n }\n }\n }\n}\n\n.filter-selectors {\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow: hidden;\n z-index: 102;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n line-height: 32px;\n cursor: pointer;\n\n .filter-label {\n padding-right: 8px;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n }\n}\n\n.dropdown-list {\n list-style-type: none;\n padding: 0;\n margin-bottom: 0;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n min-height: var(--spacing-larger, $dg-item-min-height);\n cursor: pointer;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n\n .filter-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n\n label {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n margin: 8px;\n font-weight: normal;\n width: calc(100% - 32px);\n }\n }\n}\n\n:not(.dropdown-content) > .dropdown-list {\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n max-height: 40vh;\n z-index: 102;\n}\n\n.dropdown-content {\n background: var(--bg-color-secondary, $dg-background-color);\n border-radius: 8px;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n max-height: 40vh;\n z-index: 140;\n}\n\n.dropdown-footer {\n position: sticky;\n bottom: 0;\n background: inherit;\n z-index: 50;\n}\n\n.dropdown-footer-item {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n min-height: 40px;\n}\n\n.dropdown-loading {\n flex-grow: 1;\n text-align: center;\n}\n\n.dropdown-container {\n flex: 1;\n position: relative;\n\n .dropdown-triggerer {\n caret-color: transparent;\n cursor: pointer;\n\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: center;\n background-position-x: right;\n background-position-y: center;\n background-origin: content-box;\n text-overflow: ellipsis;\n width: 100%;\n }\n\n .dropdown-list {\n left: 0;\n margin: 0 var(--spacing-small, $dg-spacing-small);\n padding: 0;\n background: var(--bg-color-secondary, $dg-background-color);\n z-index: 102;\n border-radius: 8px;\n list-style-type: none;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n overflow-x: hidden;\n max-height: 40vh;\n\n li {\n display: flex;\n align-items: center;\n font-weight: normal;\n min-height: var(--spacing-larger, $dg-item-min-height);\n cursor: pointer;\n padding: 0 var(--spacing-small, $dg-spacing-small);\n\n .filter-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &.filter-selected {\n background-color: var(--gray-lighter, $dg-hover-color);\n color: var(--brand-primary, $brand-primary);\n }\n\n &:hover,\n &:focus {\n background-color: var(--gray-lighter, $dg-hover-color);\n }\n\n label {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n margin: 8px;\n font-weight: normal;\n width: calc(100% - 32px);\n }\n }\n }\n}\n\n/**\nIcons\n */\n\n.filter-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n width: 20px;\n margin: 6px 8px;\n font-family: \"datagrid-filters\";\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.button-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: \"datagrid-filters\";\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.contains:before {\n content: \"\\e808\";\n}\n.endsWith:before {\n content: \"\\e806\";\n}\n.equal:before {\n content: \"\\e809\";\n}\n.greater:before {\n content: \"\\e80a\";\n}\n.greaterEqual:before {\n content: \"\\e80b\";\n}\n.notEqual:before {\n content: \"\\e80c\";\n}\n.smaller:before {\n content: \"\\e80d\";\n}\n.smallerEqual:before {\n content: \"\\e80e\";\n}\n.startsWith:before {\n content: \"\\e807\";\n}\n.between:before {\n content: \"\\e900\";\n}\n.empty:before {\n content: \"\\e901\";\n}\n.notEmpty:before {\n content: \"\\e903\";\n}\n\n/**\n* Specific styles for filters inside Data Grid 2\n**/\ndiv:not(.table-compact) > .table {\n .th {\n .filter-selector {\n .filter-selectors {\n margin: 0;\n }\n }\n\n .dropdown-container {\n .dropdown-list {\n margin: 0;\n }\n }\n }\n}\n",".table-compact {\n .th {\n padding: var(--spacing-small, $dg-spacing-small);\n\n .filter-selectors {\n margin: 0 var(--spacing-small, $dg-spacing-small);\n }\n }\n\n &:has(.th .column-container .filter:not(:empty)) {\n .th {\n &.column-selector {\n padding: var(--spacing-small, $dg-spacing-small) 0;\n }\n &.widget-datagrid-col-select {\n padding-bottom: calc(var(--spacing-small, $dg-spacing-small) + 11px);\n }\n }\n }\n\n .td {\n padding: var(--spacing-small, $dg-spacing-small);\n }\n\n .dropdown-container .dropdown-list {\n margin: 0 var(--spacing-small, $dg-spacing-small);\n }\n\n .column-selector {\n /* Column content */\n .column-selector-content {\n padding-right: var(--spacing-small, $dg-spacing-small);\n }\n }\n}\n\n.table-striped {\n .tr:nth-child(odd) > .td {\n background-color: var(--grid-bg-striped, $dg-grid-bg-striped);\n }\n}\n\n.table-hover {\n .tr:hover > .td {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n}\n\n.table-bordered-all {\n .th,\n .td {\n border-left-width: 1px;\n border-left-style: solid;\n\n // Column for the visibility when a column can be hidden\n &.column-selector {\n border-left-width: 0;\n }\n\n &:last-child,\n &.column-selector {\n border-right-width: 1px;\n border-right-style: solid;\n }\n }\n .th {\n border-top-width: 1px;\n border-top-style: solid;\n }\n\n .td {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n\n &.td-borders {\n border-top-width: 1px;\n }\n }\n}\n\n.table-bordered-horizontal {\n .td {\n border-bottom-width: 1px;\n border-bottom-style: solid;\n\n &.td-borders {\n border-top-width: 1px;\n }\n }\n}\n\n.table-bordered-vertical {\n .th,\n .td {\n border-left-width: 1px;\n border-left-style: solid;\n border-bottom-width: 0;\n\n // Column for the visibility when a column can be hidden\n &.column-selector {\n border-left-width: 0;\n border-bottom-width: 0;\n border-right-width: 1px;\n border-right-style: solid;\n }\n\n &.td-borders {\n border-top-width: 0;\n }\n }\n}\n\n.table-bordered-none {\n .td,\n .th {\n border: 0;\n\n &.column-selector {\n border: 0;\n }\n\n &.td-borders {\n border: 0;\n }\n }\n}\n",".sticky-sentinel {\n &.container-stuck {\n & + .widget-datagrid-grid,\n & + .table {\n .th {\n position: -webkit-sticky; /* Safari */\n position: sticky;\n z-index: 50;\n }\n }\n }\n}\n\n.widget-datagrid-content.infinite-loading {\n overflow-y: auto;\n margin-bottom: 20px;\n}\n\n.table {\n .table-content {\n &.infinite-loading {\n overflow-y: scroll;\n }\n }\n}\n","/* ==========================================================================\n Drop-down sort\n\n Override styles of Drop-down sort widget\n========================================================================== */\n@font-face {\n font-family: \"dropdown-sort\";\n src: url(\"./fonts/dropdown-sort.eot?46260688\");\n src: url(\"./fonts/dropdown-sort.eot?46260688#iefix\") format(\"embedded-opentype\"),\n url(\"./fonts/dropdown-sort.woff2?46260688\") format(\"woff2\"),\n url(\"./fonts/dropdown-sort.woff?46260688\") format(\"woff\"),\n url(\"./fonts/dropdown-sort.ttf?46260688\") format(\"truetype\"),\n url(\"./fonts/dropdown-sort.svg?46260688#dropdown-sort\") format(\"svg\");\n font-weight: normal;\n font-style: normal;\n}\n\n.dropdown-triggerer-wrapper {\n display: flex;\n\n .dropdown-triggerer {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n border-right-width: 0;\n }\n\n .btn-sort {\n padding: var(--spacing-small, $dg-spacing-small);\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n\n font-family: \"dropdown-sort\";\n font-style: normal;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n &.icon-asc:before {\n content: \"\\e802\";\n margin: 2px;\n }\n\n &.icon-desc:before {\n content: \"\\e803\";\n margin: 2px;\n }\n }\n}\n","/* ==========================================================================\n Gallery\n\n Override styles of Gallery widget\n========================================================================== */\n$gallery-screen-lg: 992px;\n$gallery-screen-md: 768px;\n\n@mixin grid-items($number, $suffix) {\n @for $i from 1 through $number {\n &.widget-gallery-#{$suffix}-#{$i} {\n grid-template-columns: repeat($i, minmax(0, 1fr));\n }\n }\n}\n\n@mixin grid-span($number, $type) {\n @for $i from 1 through $number {\n .widget-gallery-#{$type}-span-#{$i} {\n grid-#{$type}: span $i;\n }\n }\n}\n\n.widget-gallery {\n .widget-gallery-items {\n display: grid;\n grid-gap: var(--spacing-small, $dg-spacing-small);\n\n /*\n Desktop widths\n */\n @media screen and (min-width: $gallery-screen-lg) {\n @include grid-items(12, \"lg\");\n }\n\n /*\n Tablet widths\n */\n @media screen and (min-width: $gallery-screen-md) and (max-width: ($gallery-screen-lg - 1px)) {\n @include grid-items(12, \"md\");\n }\n\n /*\n Phone widths\n */\n @media screen and (max-width: ($gallery-screen-md - 1)) {\n @include grid-items(12, \"sm\");\n }\n }\n\n .widget-gallery-clickable {\n cursor: pointer;\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 1px solid var(--brand-primary, $dg-brand-primary);\n outline-offset: -1px;\n }\n }\n\n &:not(.widget-gallery-disable-selected-items-highlight) {\n .widget-gallery-item.widget-gallery-clickable.widget-gallery-selected {\n background: $dg-brand-light;\n }\n }\n\n .infinite-loading {\n overflow: auto;\n }\n\n .widget-gallery-filter,\n .widget-gallery-empty,\n .widget-gallery-pagination {\n flex: 1;\n }\n\n /**\n Helper classes\n */\n @include grid-span(12, \"column\");\n @include grid-span(12, \"row\");\n}\n\n.widget-gallery-item-button {\n width: inherit;\n}\n","/* ==========================================================================\n Gallery default\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n// All borders\n.widget-gallery-bordered-all {\n .widget-gallery-item {\n border: 1px solid var(--grid-border-color, $dg-grid-border-color);\n }\n}\n\n// Vertical borders\n.widget-gallery-bordered-vertical {\n .widget-gallery-item {\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-style: solid;\n border-width: 0;\n border-left-width: 1px;\n border-right-width: 1px;\n }\n}\n\n// Horizontal orders\n.widget-gallery-bordered-horizontal {\n .widget-gallery-item {\n border-color: var(--grid-border-color, $dg-grid-border-color);\n border-style: solid;\n border-width: 0;\n border-top-width: 1px;\n border-bottom-width: 1px;\n }\n}\n\n// Hover styles\n.widget-gallery-hover {\n .widget-gallery-items {\n .widget-gallery-item:hover {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n }\n}\n\n// Striped styles\n.widget-gallery-striped {\n .widget-gallery-item:nth-child(odd) {\n background-color: var(--grid-bg-striped, $dg-grid-bg-striped);\n }\n .widget-gallery-item:nth-child(even) {\n background-color: #fff;\n }\n}\n\n// Grid spacing none\n.widget-gallery.widget-gallery-gridgap-none {\n .widget-gallery-items {\n gap: 0;\n }\n}\n\n// Grid spacing small\n.widget-gallery.widget-gallery-gridgap-small {\n .widget-gallery-items {\n gap: var(--spacing-small, $dg-spacing-small);\n }\n}\n\n// Grid spacing medium\n.widget-gallery.widget-gallery-gridgap-medium {\n .widget-gallery-items {\n gap: var(--spacing-medium, $dg-spacing-medium);\n }\n}\n\n// Grid spacing large\n.widget-gallery.widget-gallery-gridgap-large {\n .widget-gallery-items {\n gap: var(--spacing-large, $dg-spacing-large);\n }\n}\n\n// Pagination left\n.widget-gallery-pagination-left {\n .widget-gallery-pagination {\n .pagination-bar {\n justify-content: flex-start;\n }\n }\n}\n\n// Pagination center\n.widget-gallery-pagination-center {\n .widget-gallery-pagination {\n .pagination-bar {\n justify-content: center;\n }\n }\n}\n\n.widget-gallery-disable-selected-items-highlight {\n // placeholder\n // this class in needed to disable standard styles of highlighted items\n}\n","input[type=\"checkbox\"].three-state-checkbox {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n transform: translateZ(0);\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid #e7e7e9;\n border-radius: 4px;\n background-color: transparent;\n }\n\n &:not(:indeterminate):after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #ffffff;\n border-top: 0;\n border-right: 0;\n }\n\n &:indeterminate:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(0deg);\n pointer-events: none;\n border: 0 solid #ffffff;\n border-bottom-width: 2px;\n transition: border 0s;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n border-color: #e7e7e9; // color of checkmark on hover\n }\n\n &:indeterminate:before,\n &:checked:before {\n border-color: #264ae5;\n background-color: #264ae5;\n }\n\n &:indeterminate:after,\n &:checked:after {\n content: \"\";\n }\n\n &:disabled:before {\n background-color: #f8f8f8;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba(#264ae5, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: #f8f8f8;\n }\n\n & + .control-label {\n margin-left: 8px;\n }\n}\n",".widget-tree-node {\n width: 100%;\n padding: 0;\n display: flex;\n flex-direction: column;\n\n .widget-tree-node-branch {\n display: block;\n\n &:focus-visible {\n outline: none;\n & > .widget-tree-node-branch-header {\n outline: -webkit-focus-ring-color auto 1px;\n outline: -moz-mac-focusring auto 1px;\n }\n }\n }\n\n .widget-tree-node-branch-header-clickable {\n cursor: pointer;\n }\n\n .widget-tree-node-branch-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin: 0;\n padding: 8px 0;\n\n svg {\n &.widget-tree-node-branch-header-icon-animated {\n transition: transform 0.2s ease-in-out 50ms;\n }\n &.widget-tree-node-branch-header-icon-collapsed-left {\n transform: rotate(-90deg);\n }\n &.widget-tree-node-branch-header-icon-collapsed-right {\n transform: rotate(90deg);\n }\n }\n\n .widget-tree-node-loading-spinner {\n width: 16px;\n height: 16px;\n animation: spin 2s linear infinite;\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n }\n\n .widget-tree-node-branch-header-reversed {\n flex-direction: row-reverse;\n }\n\n .widget-tree-node-branch-header-value {\n flex: 1;\n font-size: 16px;\n margin: 0 8px;\n }\n\n .widget-tree-node-branch-header-icon-container {\n display: flex;\n align-items: center;\n }\n\n .widget-tree-node-body {\n padding-left: 24px;\n transition: height 0.2s ease 50ms;\n overflow: hidden;\n\n &.widget-tree-node-branch-hidden {\n display: none;\n }\n }\n}\n\n.widget-tree-node-lined-styling {\n .widget-tree-node .widget-tree-node-body {\n position: relative;\n\n &::before {\n content: \"\";\n width: 0px;\n height: 100%;\n position: absolute;\n top: 0;\n left: 7px;\n border: 1px solid #b6b8be;\n }\n }\n\n .widget-tree-node[role=\"group\"] > .widget-tree-node-branch > .widget-tree-node-branch-header {\n position: relative;\n\n &::before {\n content: \"\";\n position: absolute;\n width: 10px;\n height: 0;\n border: 1px solid #b6b8be;\n top: 50%;\n left: -16px;\n transform: translate(0, -50%);\n }\n }\n}\n","/* ==========================================================================\n Tree Node\n\n//== Design Properties\n//## Helper classes to change the look and feel of the component\n========================================================================== */\n$dg-grid-border-color: #ced0d3;\n$dg-grid-bg-hover: #f5f6f6;\n\n.widget-tree-node-hover {\n .widget-tree-node-branch:hover > .widget-tree-node-branch-header {\n background-color: var(--grid-bg-hover, $dg-grid-bg-hover);\n }\n}\n\n.widget-tree-node-bordered-horizontal {\n .widget-tree-node-branch > .widget-tree-node-branch-header {\n border-width: 0;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-bottom-color: var(--grid-border-color, $dg-grid-border-color);\n }\n}\n\n.widget-tree-node-bordered-all {\n border: 1px solid var(--grid-border-color, $dg-grid-border-color);\n border-radius: 8px;\n overflow: hidden;\n\n .widget-tree-node-body:not(.widget-tree-node-branch-loading) {\n border-width: 0;\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: #ced0d3;\n }\n .widget-tree-node-branch:not(:first-of-type) > .widget-tree-node-branch-header {\n border-width: 0;\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: #ced0d3;\n }\n}\n\n.widget-tree-node-bordered-none {\n border-width: 0;\n .widget-tree-node-branch > .widget-tree-node-branch-header {\n border-width: 0;\n }\n}\n",".hover-trigger {\n .show-on-hover {\n visibility: hidden; // Initially hide the hover content\n }\n\n &:hover .show-on-hover {\n display: inline;\n visibility: visible; // Show hover content, when hovering over the hover trigger\n }\n}\n\n.text-break-word {\n word-break: break-word;\n}\n\n.spacing-inner-top-smaller {\n padding-top: $spacing-smaller;\n}\n\n.text-clamp--2-lines {\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-clamp: 2;\n}\n\n.line-height--1 {\n line-height: 1;\n}\n",".accordion-chat-sources {\n .widget-accordion-group{\n background: transparent;\n\n .widget-accordion-group-header{\n .widget-accordion-group-header-button {\n display: inline-flex;\n background: transparent;\n padding: 0;\n\n &.widget-accordion-group-header-button-clickable{\n &:hover, &:focus {\n color: $font-color-default;\n background: transparent;\n }\n }\n\n .widget-accordion-group-header-button-icon {\n align-self: left;\n display: inline-flex;\n fill: $font-color-default;\n }\n } \n }\n\n .widget-accordion-group-content-wrapper{\n .widget-accordion-group-content {\n padding-left: 0;\n padding-bottom: 0;\n }\n }\n }\n}",".chat-card--full-height {\n height: 100%;\n}\n\n.card-border {\n border: 1px solid $light-border-color;\n}\n\n.card-border-top{\n border-top: 1px solid $light-border-color;\n}\n\n.card-statistics {\n width: fit-content;\n .mx-text.statistic {\n min-width: 200px;\n }\n}\n\n.card--sticky-content{\n overflow: unset;\n padding-top: 0;\n}\n\n.sticky-header{\n position: sticky;\n background-color: inherit;\n top: 0px;\n padding-top: $spacing-large;\n z-index: 101;\n}\n",".chat-loading-wrapper {\n display: flex;\n justify-content: left;\n padding: $spacing-small;\n\n .loading-dot {\n border-radius: 100%;\n background-color: $font-color-default;\n width: $font-size-default / 3;\n height: $font-size-default / 3;\n\n &:nth-child(1) {\n animation: preloader 0.9s ease-in-out alternate infinite;\n }\n\n &:nth-child(2) {\n margin: 0 14px;\n animation: preloader 0.9s ease-in-out alternate 0.2s infinite;\n }\n\n &:nth-child(3) {\n animation: preloader 0.9s ease-in-out alternate 0.4s infinite;\n }\n }\n\n @keyframes preloader {\n 0% { transform: scale(1); }\n 50% { transform: scale(1.5); }\n 100% { transform: scale(1); }\n }\n}\n\n.chat-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n\n .messages-container {\n flex: 1 1 auto;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n &--center {\n max-width: $chat-width;\n margin: 0 auto;\n height: 100%\n }\n}\n\n\n.chat-input-wrapper {\n position: relative;\n\n .form-group {\n width: 100%;\n padding-left: 0px !important;\n padding-right: 0px !important;\n\n .form-control {\n padding-right: $send-btn-size + 36px;\n max-height: $chat-input-max-height;\n overflow: auto;\n }\n }\n\n .has-error .alert {\n display: none !important;\n }\n\n .send-btn {\n position: absolute;\n right: 58px / 2 - $send-btn-size / 2;\n bottom: 58px / 2 - $send-btn-size / 2;\n display: flex;\n align-items: center;\n justify-content: center;\n text-decoration-line: none;\n border-radius: 50%;\n width: $send-btn-size;\n height: $send-btn-size;\n\n .glyphicon {\n top: 0;\n font-size: $send-btn-size / 2;\n left: -2px;\n }\n }\n}\n\n.chat-bubble-wrapper {\n margin-top: $spacing-small;\n .chat-message-card {\n background: $chat-bubble-assistant-background;\n border-radius: 8px 8px 8px 0;\n margin: 0 10% 0 0;\n text-align: left;\n padding: $spacing-small;\n }\n\n &--user .chat-message-card {\n background: $chat-bubble-user-background;\n border-radius: 8px 8px 0 8px;\n margin: 0 0 0 10%;\n }\n}\n\n.chat-history-sidebar{\n overflow-y: auto;\n}\n\n.chat-history-active {\n border-left: 3px solid $brand-primary;\n font-weight: bold;\n}","$chat-width: 900px !default;\n$send-btn-size: $form-input-font-size * 2 !default;\n$chat-input-max-height: 400px !default;\n\n//pop-up chat\n$pop-up-chat-bottom-position: 5vh !default;\n$pop-up-chat-right-position: 3vw !default;\n$pop-up-chat-width: 500px !default;\n$pop-up-chat-height: 65vh !default;\n\n//chat bubbles\n$chat-bubble-user-background: $color-primary-lighter !default;\n$chat-bubble-assistant-background: $color-success-lighter !default;\n$chat-bubble-margin: 10% !default;\n","@mixin chart($graph-line-color) {\r\n &.widget-chart {\r\n\r\n .fills,\r\n .legendfill {\r\n .js-fill {\r\n fill: mix($graph-line-color, white, 60%) !important;\r\n }\r\n }\r\n\r\n .lines,\r\n .legendlines {\r\n .js-line {\r\n stroke: $graph-line-color !important;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.chart-input {\r\n @include chart($input-graph-line-color);\r\n}\r\n\r\n.chart-output {\r\n @include chart($output-graph-line-color);\r\n}","@import '../../../../theme/web/custom-variables';\n\n//Cards for ConversationStarters\n.conversationstarter.card {\n margin-bottom: $spacing-small;\n padding: $spacing-small;\n border: 1px solid $brand-default;\n position: relative;\n\n &:hover {\n background-color: $grid-bg-hover\n }\n\n .mx-link {\n color: $brand-primary;\n margin-bottom: $spacing-small;\n margin-top: $spacing-small;\n }\n\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n} \n\n//Card containers for ConversationStarters\n.conversationstarter-container--vertical {\n margin-top: 20%;\n}\n\n.conversationstarter-container--horizontal {\n margin-top: 20%;\n \n .mx-layoutgrid {\n height: 100%;\n &>.row {\n .col>.card {\n height: 100%;\n display: flex;\n flex-direction: column;\n\n }\n }\n }\n\n .conversationstarter.card {\n height: 100%;\n div {\n display: flex;\n flex-direction: column;\n }\n }\n\n .widget-gallery-item-button {\n height: 100%;\n }\n\n .conversationstarter-arrow {\n display: none;\n }\n} ",".chat-dataview--display-contents {\r\n display: contents;\r\n\r\n &>div {\r\n display: contents;\r\n }\r\n}\r\n\r\n.dataview--display-contents {\r\n &>div {\r\n display: contents;\r\n }\r\n}",".datetime-inputs-wrapper {\r\n display: flex;\r\n justify-content: flex-end;\r\n\r\n .time-input {\r\n max-width: 100px;\r\n margin-left: -1px;\r\n margin-bottom: 0;\r\n }\r\n\r\n .date-input {\r\n max-width: 150px;\r\n margin-left: $spacing-medium;\r\n margin-bottom: 0;\r\n }\r\n\r\n .mx-compound-control .btn {\r\n margin-left: -44px;\r\n border: 1px solid transparent;\r\n background: transparent;\r\n }\r\n}\r\n\r\n.input-container {\r\n border-bottom: 1px solid $light-border-color;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: start;\r\n}\r\n \r\n.combo-deployment-selection {\r\n min-width: 360px;\r\n .deployment-selection{\r\n display: flex;\r\n align-items: center;\r\n height: max-content;\r\n }\r\n .mx-image {\r\n height: $font-size-default;\r\n margin-right: $spacing-small;\r\n }\r\n\r\n}",".layoutgrid--full-height {\r\n height: 100%;\r\n .row {\r\n height: 100%;\r\n > [class*=\"col\"] {\r\n height: 100%;\r\n }\r\n }\r\n}",".chat-listview-horizontal.mx-listview {\n > ul {\n display: contents;\n margin-bottom: none;\n > li {\n display: inline-block;\n &:hover {\n background-color: transparent;}\n }\n }\n}\n\n.listview-hide-on-empty.mx-listview {\n > ul > li.mx-listview-empty {\n display: none;\n }\n}","@import \"../../../atlas_core/web/_variables.scss\";\r\n//this file contains styling for a pop-up chatbox\r\n\r\n.btn-chat-popup {\r\n position: fixed;\r\n right: $pop-up-chat-right-position;\r\n bottom: $pop-up-chat-bottom-position;\r\n z-index: 10;\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 50%;\r\n .glyphicon {\r\n font-size: 24px;\r\n }\r\n img {\r\n height: 32px;\r\n width: 32px;\r\n margin: 0;\r\n }\r\n}\r\n\r\n.layout-chat-popup.mx-window {\r\n position: fixed;\r\n right: $pop-up-chat-right-position !important;\r\n bottom: $pop-up-chat-bottom-position !important;\r\n left: unset !important;\r\n top: unset !important;\r\n width: $pop-up-chat-width !important;\r\n height: $pop-up-chat-height !important;\r\n z-index: 100;\r\n\r\n .mx-resizer-n, .mx-resizer-s, .mx-resizer-e, .mx-resizer-w, .mx-resizer-nw, .mx-resizer-ne, .mx-resizer-sw, .mx-resizer-se{\r\n cursor: auto;\r\n }\r\n .mx-window-header {\r\n background: $brand-primary;\r\n cursor: auto;\r\n h4 {\r\n color: $header-text-color;\r\n }\r\n }\r\n .mx-window-header button.close {\r\n color: transparent;\r\n &::after {\r\n content: \"-\";\r\n color: $header-text-color;\r\n }\r\n \r\n }\r\n .modal-body {\r\n height: calc(100% - 50px);\r\n overflow: hidden;\r\n padding: $spacing-medium;\r\n .mx-placeholder {\r\n height: 100%;\r\n }\r\n }\r\n}\r\n\r\n\r\n",".segmented-control{\r\n height: fit-content;\r\n border: 1px solid $border-color-default;\r\n border-radius: $btn-border-radius;\r\n padding: $spacing-smaller;\r\n width: fit-content;\r\n background-color: $gray-lighter;\r\n .btn.btn-default{\r\n border: 1px solid transparent;\r\n background: transparent;\r\n }\r\n}",".layout-chat-sidebar {\r\n right: 0 !important;\r\n top: 0 !important;\r\n bottom: 0 !important;\r\n left: unset !important;\r\n height: unset !important;\r\n width: $pop-up-chat-width;\r\n .mx-window-content {\r\n border-radius: 0;\r\n border: none;\r\n .mx-window-header {\r\n background: $brand-primary;\r\n cursor: auto;\r\n border: none;\r\n h4 {\r\n color: $header-text-color;\r\n }\r\n .close {\r\n color: $header-text-color;\r\n }\r\n }\r\n .mx-window-body {\r\n overflow: hidden;\r\n padding: $spacing-medium;\r\n height: calc(100% - 50px);\r\n .mx-placeholder {\r\n height: 100%;\r\n }\r\n }\r\n }\r\n}",".text-italic {\n font-style: italic;\n}",":root {\n /*\n DISCLAIMER:\n This is a mapping file which will be used to help moving towards CSS variables over time.\n Do not change this file because it is core styling.\n Customizing core files will make updating Atlas much more difficult in the future.\n To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n \n \n ██████╗ █████╗ ███████╗██╗ ██████╗\n ██╔══██╗██╔══██╗██╔════╝██║██╔════╝\n ██████╔╝███████║███████╗██║██║\n ██╔══██╗██╔══██║╚════██║██║██║\n ██████╔╝██║ ██║███████║██║╚██████╗\n ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝\n */\n\n /*== Gray Shades*/\n /*## Different gray shades to be used for our variables and components */\n --gray-darker: #{$gray-darker};\n --gray-dark: #{$gray-dark};\n --gray: #{$gray};\n --gray-light: #{$gray-light};\n --gray-primary: #{$gray-primary};\n --gray-lighter: #{$gray-lighter};\n\n /*== Step 1: Brand Colors */\n --brand-default: #{$brand-default};\n --brand-primary: #{$brand-primary};\n --brand-success: #{$brand-success};\n --brand-warning: #{$brand-warning};\n --brand-danger: #{$brand-danger};\n\n --brand-logo: #{$brand-logo};\n --brand-logo-height: #{$brand-logo-height};\n --brand-logo-width: #{$brand-logo-width}; /* Only used for CSS brand logo */\n\n /*== Step 2: UI Customization */\n\n /* Default Font Size & Color */\n --font-size-default: #{$font-size-default};\n --font-color-default: #{$font-color-default};\n\n /* Global Border Color */\n --border-color-default: #{$border-color-default};\n --border-radius-default: #{$border-radius-default};\n\n /* Topbar */\n --topbar-bg: #{$topbar-bg};\n --topbar-minimalheight: #{$topbar-minimalheight};\n --topbar-border-color: #{$topbar-border-color};\n\n /* Topbar mobile */\n --m-header-height: #{$m-header-height};\n --m-header-bg: #{$m-header-bg};\n --m-header-color: #{$m-header-color};\n --m-header-title-size: #{$m-header-title-size};\n\n /* Navbar Brand Name / For your company, product, or project name (used in layouts/base/) */\n --navbar-brand-name: #{$navbar-brand-name};\n\n /* Background Colors */\n /* Backgrounds */\n --bg-color: #{$bg-color};\n --bg-color: #f8f8f8;\n --bg-color-secondary: #{$bg-color-secondary};\n\n /* Default Link Color */\n --link-color: #{$link-color};\n --link-hover-color: #{$link-hover-color};\n\n /*\n █████╗ ██████╗ ██╗ ██╗ █████╗ ███╗ ██╗ ██████╗███████╗██████╗\n ██╔══██╗██╔══██╗██║ ██║██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗\n ███████║██║ ██║██║ ██║███████║██╔██╗ ██║██║ █████╗ ██║ ██║\n ██╔══██║██║ ██║╚██╗ ██╔╝██╔══██║██║╚██╗██║██║ ██╔══╝ ██║ ██║\n ██║ ██║██████╔╝ ╚████╔╝ ██║ ██║██║ ╚████║╚██████╗███████╗██████╔╝\n ╚═╝ ╚═╝╚═════╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═════╝\n */\n\n /*== Typography */\n /*## Change your font family, weight, line-height, headings and more (used in components/typography) */\n\n /* Font Family Import (Used for google font plugin in theme creater) */\n --font-family-import: #{$font-family-import};\n\n /* Font Family / False = fallback from Bootstrap (Helvetica Neue) */\n --font-family-base: #{$font-family-base};\n\n /* Font Sizes */\n --font-size-large: #{$font-size-large};\n --font-size-small: #{$font-size-small};\n\n /* Font Weights */\n --font-weight-light: #{$font-weight-light};\n --font-weight-normal: #{$font-weight-normal};\n --font-weight-semibold: #{$font-weight-semibold};\n --font-weight-bold: #{$font-weight-bold};\n\n /* Font Size Headers */\n --font-size-h1: #{$font-size-h1};\n --font-size-h2: #{$font-size-h2};\n --font-size-h3: #{$font-size-h3};\n --font-size-h4: #{$font-size-h4};\n --font-size-h5: #{$font-size-h5};\n --font-size-h6: #{$font-size-h6};\n\n /* Font Weight Headers */\n --font-weight-header: #{$font-weight-header};\n\n /* Line Height */\n --line-height-base: #{$line-height-base};\n\n /* Spacing */\n --font-header-margin: #{$font-header-margin};\n\n /* Text Colors */\n --font-color-detail: #{$font-color-detail};\n --font-color-header: #{$font-color-header};\n\n /*== Navigation */\n /*## Used in components/navigation\n \n /* Default Navigation styling */\n --navigation-item-height: #{$navigation-item-height};\n --navigation-item-padding: #{$navigation-item-padding};\n\n --navigation-font-size: #{$navigation-font-size};\n --navigation-sub-font-size: #{$navigation-sub-font-size};\n --navigation-glyph-size: #{$navigation-glyph-size}; /* For glyphicons that you can select in the Mendix Modeler */\n\n --navigation-color: #{$navigation-color};\n --navigation-color-hover: #{$navigation-color-hover};\n --navigation-color-active: #{$navigation-color-active};\n\n --navigation-sub-color: #{$navigation-sub-color};\n --navigation-sub-color-hover: #{$navigation-sub-color-hover};\n --navigation-sub-color-active: #{$navigation-sub-color-active};\n\n /* Navigation Sidebar */\n --navsidebar-font-size: #{$navsidebar-font-size};\n --navsidebar-sub-font-size: #{$navsidebar-sub-font-size};\n --navsidebar-glyph-size: #{$navsidebar-glyph-size}; /* For glyphicons that you can select in the Mendix Modeler */\n\n --navsidebar-color: #{$navsidebar-color};\n --navsidebar-color-hover: #{$navsidebar-color-hover};\n --navsidebar-color-active: #{$navsidebar-color-active};\n\n --navsidebar-sub-color: #{$navsidebar-sub-color};\n --navsidebar-sub-color-hover: #{$navsidebar-sub-color-hover};\n --navsidebar-sub-color-active: #{$navsidebar-sub-color-active};\n\n --navsidebar-width-closed: #{$navsidebar-width-closed};\n --navsidebar-width-open: #{$navsidebar-width-open};\n\n /* Navigation topbar */\n --navtopbar-font-size: #{$navtopbar-font-size};\n --navtopbar-sub-font-size: #{$navtopbar-sub-font-size};\n --navtopbar-glyph-size: #{$navtopbar-glyph-size};\n\n --navtopbar-bg: #{$navtopbar-bg};\n --navtopbar-bg-hover: #{$navtopbar-bg-hover};\n --navtopbar-bg-active: #{$navtopbar-bg-active};\n --navtopbar-color: #{$navtopbar-color};\n --navtopbar-color-hover: #{$navtopbar-color-hover};\n --navtopbar-color-active: #{$navtopbar-color-active};\n\n --navtopbar-sub-bg: #{$navtopbar-sub-bg};\n --navtopbar-sub-bg-hover: #{$navtopbar-sub-bg-hover};\n --navtopbar-sub-bg-active: #{$navtopbar-sub-bg-active};\n --navtopbar-sub-color: #{$navtopbar-sub-color};\n --navtopbar-sub-color-hover: #{$navtopbar-sub-color-hover};\n --navtopbar-sub-color-active: #{$navtopbar-sub-color-active};\n\n /*== Cards */\n /* Shadow color */\n --shadow-color-border: #{$shadow-color-border};\n --shadow-color: #{$shadow-color};\n\n /*Shadow size */\n --shadow-small: #{$shadow-small};\n --shadow-medium: #{$shadow-medium};\n --shadow-large: #{$shadow-large};\n\n /*## Used in layouts/base */\n --navtopbar-border-color: #{$navtopbar-border-color};\n\n /*== Form */\n /*## Used in components/inputs */\n\n /* Values that can be used default | lined */\n --form-input-style: #{$form-input-style};\n\n /* Form Label */\n --form-label-size: #{$form-label-size};\n --form-label-weight: #{$form-label-weight};\n --form-label-gutter: #{$form-label-gutter};\n\n /* Form Input dimensions */\n --form-input-height: #{$form-input-height};\n --form-input-padding-y: #{$form-input-padding-y};\n --form-input-padding-x: #{$form-input-padding-x};\n --form-input-static-padding-y: #{$form-input-static-padding-y};\n --form-input-static-padding-x: #{$form-input-static-padding-x};\n --form-input-font-size: #{$form-input-font-size};\n --form-input-line-height: #{$form-input-line-height};\n --form-input-border-radius: #{$form-input-border-radius};\n\n /* Form Input styling */\n --form-input-bg: #{$form-input-bg};\n --form-input-bg-focus: #{$form-input-bg-focus};\n --form-input-bg-hover: #{$form-input-bg-hover};\n --form-input-bg-disabled: #{$form-input-bg-disabled};\n --form-input-color: #{$form-input-color};\n --form-input-focus-color: #{$form-input-focus-color};\n --form-input-disabled-color: #{$form-input-disabled-color};\n --form-input-placeholder-color: #{$form-input-placeholder-color};\n --form-input-border-color: #{$form-input-border-color};\n --form-input-border-focus-color: #{$form-input-border-focus-color};\n\n /* Form Input Static styling */\n --form-input-static-border-color: #{$form-input-static-border-color};\n\n /* Form Group */\n --form-group-margin-bottom: #{$form-group-margin-bottom};\n --form-group-gutter: #{$form-group-gutter};\n\n /*== Buttons */\n /*## Define background-color, border-color and text. Used in components/buttons */\n\n /* Default button style */\n --btn-font-size: #{$btn-font-size};\n --btn-bordered: #{$btn-bordered}; /* Default value false, set to true if you want this effect */\n --btn-border-radius: #{$btn-border-radius};\n\n /* Button Background Color */\n --btn-default-bg: #{$btn-default-bg};\n --btn-primary-bg: #{$btn-primary-bg};\n --btn-success-bg: #{$btn-success-bg};\n --btn-warning-bg: #{$btn-warning-bg};\n --btn-danger-bg: #{$btn-danger-bg};\n\n /* Button Border Color */\n --btn-default-border-color: #{$btn-default-border-color};\n --btn-primary-border-color: #{$btn-primary-border-color};\n --btn-success-border-color: #{$btn-success-border-color};\n --btn-warning-border-color: #{$btn-warning-border-color};\n --btn-danger-border-color: #{$btn-danger-border-color};\n\n /* Button Text Color */\n --btn-default-color: #{$btn-default-color};\n --btn-primary-color: #{$btn-primary-color};\n --btn-success-color: #{$btn-success-color};\n --btn-warning-color: #{$btn-warning-color};\n --btn-danger-color: #{$btn-danger-color};\n\n /* Button Icon Color */\n --btn-default-icon-color: #{$btn-default-icon-color};\n\n /* Button Background Color */\n --btn-default-bg-hover: #{$btn-default-bg-hover};\n --btn-primary-bg-hover: #{$btn-primary-bg-hover};\n --btn-success-bg-hover: #{$btn-success-bg-hover};\n --btn-warning-bg-hover: #{$btn-warning-bg-hover};\n --btn-danger-bg-hover: #{$btn-danger-bg-hover};\n --btn-link-bg-hover: #{$btn-link-bg-hover};\n\n /*== Header blocks */\n /*## Define look and feel over multible building blocks that serve as header */\n\n --header-min-height: #{$header-min-height};\n --header-bg-color: #{$header-bg-color};\n --header-bgimage-filter: #{$header-bgimage-filter};\n --header-text-color: #{$header-text-color};\n --header-text-color-detail: #{$header-text-color-detail};\n\n /*\n ███████╗██╗ ██╗██████╗ ███████╗██████╗ ████████╗\n ██╔════╝╚██╗██╔╝██╔══██╗██╔════╝██╔══██╗╚══██╔══╝\n █████╗ ╚███╔╝ ██████╔╝█████╗ ██████╔╝ ██║\n ██╔══╝ ██╔██╗ ██╔═══╝ ██╔══╝ ██╔══██╗ ██║\n ███████╗██╔╝ ██╗██║ ███████╗██║ ██║ ██║\n ╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝\n */\n\n /*== Color variations */\n /*## These variations are used to support several other variables and components */\n\n /* Color variations */\n --color-default-darker: #{$color-default-darker};\n --color-default-dark: #{$color-default-dark};\n --color-default-light: #{$color-default-light};\n --color-default-lighter: #{$color-default-lighter};\n\n --color-primary-darker: #{$color-primary-darker};\n --color-primary-dark: #{$color-primary-dark};\n --color-primary-light: #{$color-primary-light};\n --color-primary-lighter: #{$color-primary-lighter};\n\n --color-success-darker: #{$color-success-darker};\n --color-success-dark: #{$color-success-dark};\n --color-success-light: #{$color-success-light};\n --color-success-lighter: #{$color-success-lighter};\n\n --color-warning-darker: #{$color-warning-darker};\n --color-warning-dark: #{$color-warning-dark};\n --color-warning-light: #{$color-warning-light};\n --color-warning-lighter: #{$color-warning-lighter};\n\n --color-danger-darker: #{$color-danger-darker};\n --color-danger-dark: #{$color-danger-dark};\n --color-danger-light: #{$color-danger-light};\n --color-danger-lighter: #{$color-danger-lighter};\n\n --brand-gradient: #{$brand-gradient};\n\n /*== Grids */\n /*## Used for Datagrid, Templategrid, Listview & Tables (see components folder) */\n\n /* Default Border Colors */\n --grid-border-color: #{$grid-border-color};\n\n /* Spacing */\n /* Default */\n --grid-padding-top: #{$grid-padding-top};\n --grid-padding-right: #{$grid-padding-right};\n --grid-padding-bottom: #{$grid-padding-bottom};\n --grid-padding-left: #{$grid-padding-left};\n\n /* Listview */\n --listview-padding-top: #{$listview-padding-top};\n --listview-padding-right: #{$listview-padding-right};\n --listview-padding-bottom: #{$listview-padding-bottom};\n --listview-padding-left: #{$listview-padding-left};\n\n /* Background Colors */\n --grid-bg: #{$grid-bg};\n --grid-bg-header: #{$grid-bg-header}; //Grid Headers\n --grid-bg-hover: #{$grid-bg-hover};\n --grid-bg-selected: #{$grid-bg-selected};\n --grid-bg-selected-hover: #{$grid-bg-selected-hover};\n\n /* Striped Background Color */\n --grid-bg-striped: #{$grid-bg-striped};\n\n /* Background Footer Color */\n --grid-footer-bg: #{$grid-footer-bg};\n\n /* Text Color */\n --grid-selected-color: #{$grid-selected-color};\n\n /* Paging Colors */\n --grid-paging-bg: #{$grid-paging-bg};\n --grid-paging-bg-hover: #{$grid-paging-bg-hover};\n --grid-paging-border-color: #{$grid-paging-border-color};\n --grid-paging-border-color-hover: #{$grid-paging-border-color-hover};\n --grid-paging-color: #{$grid-paging-color};\n --grid-paging-color-hover: #{$grid-paging-color-hover};\n\n /*== Tabs */\n /*## Default variables for Tab Container Widget (used in components/tabcontainer) */\n\n /* Text Color */\n --tabs-color: #{$tabs-color};\n --tabs-color-active: #{$tabs-color-active};\n --tabs-lined-color-active: #{$tabs-lined-color-active};\n\n --tabs-lined-border-width: #{$tabs-lined-border-width};\n\n /* Border Color */\n --tabs-border-color: #{$tabs-border-color};\n --tabs-lined-border-color: #{$tabs-lined-border-color};\n\n /* Background Color */\n --tabs-bg: #{$tabs-bg};\n --tabs-bg-pills: #{$tabs-bg-pills};\n --tabs-bg-hover: #{$tabs-bg-hover};\n --tabs-bg-active: #{$tabs-bg-active};\n\n /*== Modals */\n /*## Default Mendix Modal, Blocking Modal and Login Modal (used in components/modals) */\n\n /* Background Color */\n --modal-header-bg: #{$modal-header-bg};\n\n /* Border Color */\n --modal-header-border-color: #{$modal-header-border-color};\n\n /* Text Color */\n --modal-header-color: #{$modal-header-color};\n\n /*== Dataview */\n /*## Default variables for Dataview Widget (used in components/dataview) */\n\n /* Controls */\n --dataview-controls-bg: #{$dataview-controls-bg};\n --dataview-controls-border-color: #{$dataview-controls-border-color};\n\n /* Empty Message */\n --dataview-emptymessage-bg: #{$dataview-emptymessage-bg};\n --dataview-emptymessage-color: #{$dataview-emptymessage-color};\n\n /*== Alerts */\n /*## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) */\n\n /* Background Color */\n --alert-primary-bg: #{$alert-primary-bg};\n --alert-secondary-bg: #{$alert-secondary-bg};\n --alert-success-bg: #{$alert-success-bg};\n --alert-warning-bg: #{$alert-warning-bg};\n --alert-danger-bg: #{$alert-danger-bg};\n\n /* Text Color */\n --alert-primary-color: #{$alert-primary-color};\n --alert-secondary-color: #{$alert-secondary-color};\n --alert-success-color: #{$alert-success-color};\n --alert-warning-color: #{$alert-warning-color};\n --alert-danger-color: #{$alert-danger-color};\n\n /* Border Color */\n --alert-primary-border-color: #{$alert-primary-border-color};\n --alert-secondary-border-color: #{$alert-secondary-border-color};\n --alert-success-border-color: #{$alert-success-border-color};\n --alert-warning-border-color: #{$alert-warning-border-color};\n --alert-danger-border-color: #{$alert-danger-border-color};\n\n /*== Wizard */\n\n --wizard-step-height: #{$wizard-step-height};\n --wizard-step-number-size: #{$wizard-step-number-size};\n --wizard-step-number-font-size: #{$wizard-step-number-font-size};\n\n /*Wizard states */\n --wizard-default: #{$wizard-default};\n --wizard-active: #{$wizard-active};\n --wizard-visited: #{$wizard-visited};\n\n /*Wizard step states */\n --wizard-default-bg: #{$wizard-default-bg};\n --wizard-default-color: #{$wizard-default-color};\n --wizard-default-step-color: #{$wizard-default-step-color};\n --wizard-default-border-color: #{$wizard-default-border-color};\n\n --wizard-active-bg: #{$wizard-active-bg};\n --wizard-active-color: #{$wizard-active-color};\n --wizard-active-step-color: #{$wizard-active-step-color};\n --wizard-active-border-color: #{$wizard-active-border-color};\n\n --wizard-visited-bg: #{$wizard-visited-bg};\n --wizard-visited-color: #{$wizard-visited-color};\n --wizard-visited-step-color: #{$wizard-visited-step-color};\n --wizard-visited-border-color: #{$wizard-visited-border-color};\n\n /*== Labels */\n /*## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) */\n\n /* Background Color */\n --label-default-bg: #{$label-default-bg};\n --label-primary-bg: #{$label-primary-bg};\n --label-success-bg: #{$label-success-bg};\n --label-warning-bg: #{$label-warning-bg};\n --label-danger-bg: #{$label-danger-bg};\n\n /* Border Color */\n --label-default-border-color: #{$label-default-border-color};\n --label-primary-border-color: #{$label-primary-border-color};\n --label-success-border-color: #{$label-success-border-color};\n --label-warning-border-color: #{$label-warning-border-color};\n --label-danger-border-color: #{$label-danger-border-color};\n\n /* Text Color */\n --label-default-color: #{$label-default-color};\n --label-primary-color: #{$label-primary-color};\n --label-success-color: #{$label-success-color};\n --label-warning-color: #{$label-warning-color};\n --label-danger-color: #{$label-danger-color};\n\n /*== Groupbox */\n /*## Default variables for Groupbox Widget (used in components/groupbox) */\n\n /* Background Color */\n --groupbox-default-bg: #{$groupbox-default-bg};\n --groupbox-primary-bg: #{$groupbox-primary-bg};\n --groupbox-success-bg: #{$groupbox-success-bg};\n --groupbox-warning-bg: #{$groupbox-warning-bg};\n --groupbox-danger-bg: #{$groupbox-danger-bg};\n --groupbox-white-bg: #{$groupbox-white-bg};\n\n /* Text Color */\n --groupbox-default-color: #{$groupbox-default-color};\n --groupbox-primary-color: #{$groupbox-primary-color};\n --groupbox-success-color: #{$groupbox-success-color};\n --groupbox-warning-color: #{$groupbox-warning-color};\n --groupbox-danger-color: #{$groupbox-danger-color};\n --groupbox-white-color: #{$groupbox-white-color};\n\n /*== Callout (groupbox) Colors */\n /*## Extended variables for Groupbox Widget (used in components/groupbox) */\n\n /* Text and Border Color */\n --callout-default-color: #{$callout-default-color};\n --callout-primary-color: #{$callout-primary-color};\n --callout-success-color: #{$callout-success-color};\n --callout-warning-color: #{$callout-warning-color};\n --callout-danger-color: #{$callout-danger-color};\n\n /* Background Color */\n --callout-default-bg: #{$callout-default-bg};\n --callout-primary-bg: #{$callout-primary-bg};\n --callout-success-bg: #{$callout-success-bg};\n --callout-warning-bg: #{$callout-warning-bg};\n --callout-danger-bg: #{$callout-danger-bg};\n\n /*== Timeline */\n /*## Extended variables for Timeline Widget */\n /* Colors */\n --timeline-icon-color: #{$timeline-icon-color};\n --timeline-border-color: #{$timeline-border-color};\n --timeline-event-time-color: #{$timeline-event-time-color};\n\n /* Sizes */\n --timeline-icon-size: #{$timeline-icon-size};\n --timeline-image-size: #{$timeline-image-size};\n\n /*Timeline grouping */\n --timeline-grouping-size: #{$timeline-grouping-size};\n --timeline-grouping-border-radius: #{$timeline-grouping-border-radius};\n --timeline-grouping-border-color: #{$timeline-grouping-border-color};\n\n /*== Accordions */\n /*## Extended variables for Accordion Widget */\n\n /* Default */\n --accordion-header-default-bg: #{$accordion-header-default-bg};\n --accordion-header-default-bg-hover: #{$accordion-header-default-bg-hover};\n --accordion-header-default-color: #{$accordion-header-default-color};\n --accordion-default-border-color: #{$accordion-default-border-color};\n\n --accordion-bg-striped: #{$accordion-bg-striped};\n --accordion-bg-striped-hover: #{$accordion-bg-striped-hover};\n\n /* Semantic background colors */\n --accordion-header-primary-bg: #{$accordion-header-primary-bg};\n --accordion-header-secondary-bg: #{$accordion-header-secondary-bg};\n --accordion-header-success-bg: #{$accordion-header-success-bg};\n --accordion-header-warning-bg: #{$accordion-header-warning-bg};\n --accordion-header-danger-bg: #{$accordion-header-danger-bg};\n\n --accordion-header-primary-bg-hover: #{$accordion-header-primary-bg-hover};\n --accordion-header-secondary-bg-hover: #{$accordion-header-secondary-bg-hover};\n --accordion-header-success-bg-hover: #{$accordion-header-success-bg-hover};\n --accordion-header-warning-bg-hover: #{$accordion-header-warning-bg-hover};\n --accordion-header-danger-bg-hover: #{$accordion-header-danger-bg-hover};\n\n /* Semantic text colors */\n --accordion-header-primary-color: #{$accordion-header-primary-color};\n --accordion-header-secondary-color: #{$accordion-header-secondary-color};\n --accordion-header-success-color: #{$accordion-header-success-color};\n --accordion-header-warning-color: #{$accordion-header-warning-color};\n --accordion-header-danger-color: #{$accordion-header-danger-color};\n\n /* Semantic border colors */\n --accordion-primary-border-color: #{$accordion-primary-border-color};\n --accordion-secondary-border-color: #{$accordion-secondary-border-color};\n --accordion-success-border-color: #{$accordion-success-border-color};\n --accordion-warning-border-color: #{$accordion-warning-border-color};\n --accordion-danger-border-color: #{$accordion-danger-border-color};\n\n /*== Spacing */\n /*## Advanced layout options (used in base/mixins/default-spacing) */\n\n /* Smallest spacing */\n --spacing-smallest: #{$spacing-smallest};\n\n /* Smaller spacing */\n --spacing-smaller: #{$spacing-smaller};\n\n /* Small spacing */\n --spacing-small: #{$spacing-small};\n\n /* Medium spacing */\n --spacing-medium: #{$spacing-medium};\n --t-spacing-medium: #{$t-spacing-medium};\n --m-spacing-medium: #{$m-spacing-medium};\n\n /* Large spacing */\n --spacing-large: #{$spacing-large};\n --t-spacing-large: #{$t-spacing-large};\n --m-spacing-large: #{$m-spacing-large};\n\n /* Larger spacing */\n --spacing-larger: #{$spacing-larger};\n\n /* Largest spacing */\n --spacing-largest: #{$spacing-largest};\n\n /* Layout spacing */\n --layout-spacing-top: #{$layout-spacing-top};\n --layout-spacing-right: #{$layout-spacing-right};\n --layout-spacing-bottom: #{$layout-spacing-bottom};\n --layout-spacing-left: #{$layout-spacing-left};\n\n --t-layout-spacing-top: #{$t-layout-spacing-top};\n --t-layout-spacing-right: #{$t-layout-spacing-right};\n --t-layout-spacing-bottom: #{$t-layout-spacing-bottom};\n --t-layout-spacing-left: #{$t-layout-spacing-left};\n\n --m-layout-spacing-top: #{$m-layout-spacing-top};\n --m-layout-spacing-right: #{$m-layout-spacing-right};\n --m-layout-spacing-bottom: #{$m-layout-spacing-bottom};\n --m-layout-spacing-left: #{$m-layout-spacing-left};\n\n /* Combined layout spacing */\n --layout-spacing: #{$layout-spacing};\n --m-layout-spacing: #{$m-layout-spacing};\n --t-layout-spacing: #{$t-layout-spacing};\n\n /* Gutter size */\n --gutter-size: #{$gutter-size};\n\n /*== Tables */\n /*## Table spacing options (used in components/tables) */\n\n --padding-table-cell-top: #{$padding-table-cell-top};\n --padding-table-cell-bottom: #{$padding-table-cell-bottom};\n --padding-table-cell-left: #{$padding-table-cell-left};\n --padding-table-cell-right: #{$padding-table-cell-right};\n\n /*== Media queries breakpoints */\n /*## Define the breakpoints at which your layout will change, adapting to different screen sizes. */\n\n --screen-xs: #{$screen-xs};\n --screen-sm: #{$screen-sm};\n --screen-md: #{$screen-md};\n --screen-lg: #{$screen-lg};\n --screen-xl: #{$screen-xl};\n\n /* So media queries don't overlap when required, provide a maximum (used for max-width) */\n --screen-xs-max: #{$screen-xs-max};\n --screen-sm-max: #{$screen-sm-max};\n --screen-md-max: #{$screen-md-max};\n --screen-lg-max: #{$screen-lg-max};\n\n /*== Settings */\n /*## Enable or disable your desired framework features */\n /* Use of !important */\n --important-flex: #{$important-flex}; // ./base/flex.scss\n --important-spacing: #{$important-spacing}; // ./base/spacing.scss\n --important-helpers: #{$important-helpers}; // ./helpers/helperclasses.scss\n\n /*===== Legacy variables ===== */\n\n /*== Step 1: Brand Colors */\n --brand-inverse: #{$brand-inverse};\n --brand-info: #{$brand-info};\n\n /*== Step 2: UI Customization */\n /* Sidebar */\n --sidebar-bg: #{$sidebar-bg};\n\n /*== Navigation */\n /*## Used in components/navigation */\n\n /* Default Navigation styling */\n --navigation-bg: #{$navigation-bg};\n --navigation-bg-hover: #{$navigation-bg-hover};\n --navigation-bg-active: #{$navigation-bg-active};\n\n --navigation-sub-bg: #{$navigation-sub-bg};\n --navigation-sub-bg-hover: #{$navigation-sub-bg-hover};\n --navigation-sub-bg-active: #{$navigation-sub-bg-active};\n\n --navigation-border-color: #{$navigation-border-color};\n\n /* Navigation Sidebar */\n --navsidebar-bg: #{$navsidebar-bg};\n --navsidebar-bg-hover: #{$navsidebar-bg-hover};\n --navsidebar-bg-active: #{$navsidebar-bg-active};\n\n --navsidebar-sub-bg: #{$navsidebar-sub-bg};\n --navsidebar-sub-bg-hover: #{$navsidebar-sub-bg-hover};\n --navsidebar-sub-bg-active: #{$navsidebar-sub-bg-active};\n\n --navsidebar-border-color: #{$navsidebar-border-color};\n\n /*== Form */\n /*## Used in components/inputs */\n\n /* Form Label */\n --form-label-color: #{$form-label-color};\n\n /*== Buttons */\n /*## Define background-color, border-color and text. Used in components/buttons */\n\n /* Button Background Color */\n --btn-inverse-bg: #{$btn-inverse-bg};\n --btn-info-bg: #{$btn-info-bg};\n\n /* Button Border Color */\n --btn-inverse-border-color: #{$btn-inverse-border-color};\n --btn-info-border-color: #{$btn-info-border-color};\n\n /* Button Text Color */\n --btn-inverse-color: #{$btn-inverse-color};\n --btn-info-color: #{$btn-info-color};\n\n /* Button Background Color */\n --btn-inverse-bg-hover: #{$btn-inverse-bg-hover};\n --btn-info-bg-hover: #{$btn-info-bg-hover};\n\n /*== Color variations */\n /*## These variations are used to support several other variables and components */\n\n /* Color variations */\n --color-inverse-darker: #{$color-inverse-darker};\n --color-inverse-dark: #{$color-inverse-dark};\n --color-inverse-light: #{$color-inverse-light};\n --color-inverse-lighter: #{$color-inverse-lighter};\n\n --color-info-darker: #{$color-info-darker};\n --color-info-dark: #{$color-info-dark};\n --color-info-light: #{$color-info-light};\n --color-info-lighter: #{$color-info-lighter};\n\n /*== Alerts */\n /*## Default Bootstrap alerts, not a widget in the Modeler (used in components/alerts) */\n\n /* Background Color */\n --alert-info-bg: #{$alert-info-bg};\n\n /* Text Color */\n --alert-info-color: #{$alert-info-color};\n\n /* Border Color */\n --alert-info-border-color: #{$alert-info-border-color};\n /*== Labels */\n /*## Default Bootstrap Labels, not a widget in the Modeler (used in components/labels) */\n\n /* Background Color */\n --label-info-bg: #{$label-info-bg};\n --label-inverse-bg: #{$label-inverse-bg};\n\n /* Border Color */\n --label-info-border-color: #{$label-info-border-color};\n --label-inverse-border-color: #{$label-inverse-border-color};\n\n /* Text Color */\n --label-info-color: #{$label-info-color};\n --label-inverse-color: #{$label-inverse-color};\n\n /*== Groupbox */\n /*## Default variables for Groupbox Widget (used in components/groupbox) */\n\n /* Background Color */\n --groupbox-inverse-bg: #{$groupbox-inverse-bg};\n --groupbox-info-bg: #{$groupbox-info-bg};\n\n /* Text Color */\n --groupbox-inverse-color: #{$groupbox-inverse-color};\n --groupbox-info-color: #{$groupbox-info-color};\n /*== Callout (groupbox) Colors */\n /*## Extended variables for Groupbox Widget (used in components/groupbox) */\n\n /* Text and Border Color */\n --callout-info-color: #{$callout-info-color};\n\n /* Background Color */\n --callout-info-bg: #{$callout-info-bg};\n}\n","/*!\n * Bootstrap v3.3.4 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@mixin bootstrap() {\n /*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n html {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n }\n body {\n margin: 0;\n }\n article,\n aside,\n details,\n figcaption,\n figure,\n footer,\n header,\n hgroup,\n main,\n menu,\n nav,\n section,\n summary {\n display: block;\n }\n audio,\n canvas,\n progress,\n video {\n display: inline-block;\n vertical-align: baseline;\n }\n audio:not([controls]) {\n display: none;\n height: 0;\n }\n [hidden],\n template {\n display: none;\n }\n a {\n background-color: transparent;\n }\n a:active,\n a:hover {\n outline: 0;\n }\n abbr[title] {\n border-bottom: 1px dotted;\n }\n b,\n strong {\n font-weight: bold;\n }\n dfn {\n font-style: italic;\n }\n h1 {\n margin: 0.67em 0;\n font-size: 2em;\n }\n mark {\n color: #000;\n background: #ff0;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n }\n sup {\n top: -0.5em;\n }\n sub {\n bottom: -0.25em;\n }\n img {\n border: 0;\n }\n svg:not(:root) {\n overflow: hidden;\n }\n figure {\n margin: 1em 40px;\n }\n hr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n }\n pre {\n overflow: auto;\n }\n code,\n kbd,\n pre,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n margin: 0;\n font: inherit;\n color: inherit;\n }\n button {\n overflow: visible;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n html input[type=\"button\"],\n input[type=\"reset\"],\n input[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n }\n //button[disabled],\n //html input[disabled] {\n // cursor: default;\n //}\n button::-moz-focus-inner,\n input::-moz-focus-inner {\n padding: 0;\n border: 0;\n }\n input {\n line-height: normal;\n }\n input[type=\"checkbox\"],\n input[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n }\n input[type=\"number\"]::-webkit-inner-spin-button,\n input[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n input[type=\"search\"] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n }\n input[type=\"search\"]::-webkit-search-cancel-button,\n input[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n fieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n }\n legend {\n padding: 0;\n border: 0;\n }\n textarea {\n overflow: auto;\n }\n optgroup {\n font-weight: bold;\n }\n table {\n border-spacing: 0;\n border-collapse: collapse;\n }\n td,\n th {\n padding: 0;\n }\n /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n @media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n select {\n background: #fff !important;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n }\n @font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(\"./resources/glyphicons-halflings-regular.woff2\") format(\"woff2\");\n }\n .glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n .glyphicon-asterisk:before {\n content: \"\\2a\";\n }\n .glyphicon-plus:before {\n content: \"\\2b\";\n }\n .glyphicon-euro:before,\n .glyphicon-eur:before {\n content: \"\\20ac\";\n }\n .glyphicon-minus:before {\n content: \"\\2212\";\n }\n .glyphicon-cloud:before {\n content: \"\\2601\";\n }\n .glyphicon-envelope:before {\n content: \"\\2709\";\n }\n .glyphicon-pencil:before {\n content: \"\\270f\";\n }\n .glyphicon-glass:before {\n content: \"\\e001\";\n }\n .glyphicon-music:before {\n content: \"\\e002\";\n }\n .glyphicon-search:before {\n content: \"\\e003\";\n }\n .glyphicon-heart:before {\n content: \"\\e005\";\n }\n .glyphicon-star:before {\n content: \"\\e006\";\n }\n .glyphicon-star-empty:before {\n content: \"\\e007\";\n }\n .glyphicon-user:before {\n content: \"\\e008\";\n }\n .glyphicon-film:before {\n content: \"\\e009\";\n }\n .glyphicon-th-large:before {\n content: \"\\e010\";\n }\n .glyphicon-th:before {\n content: \"\\e011\";\n }\n .glyphicon-th-list:before {\n content: \"\\e012\";\n }\n .glyphicon-ok:before {\n content: \"\\e013\";\n }\n .glyphicon-remove:before {\n content: \"\\e014\";\n }\n .glyphicon-zoom-in:before {\n content: \"\\e015\";\n }\n .glyphicon-zoom-out:before {\n content: \"\\e016\";\n }\n .glyphicon-off:before {\n content: \"\\e017\";\n }\n .glyphicon-signal:before {\n content: \"\\e018\";\n }\n .glyphicon-cog:before {\n content: \"\\e019\";\n }\n .glyphicon-trash:before {\n content: \"\\e020\";\n }\n .glyphicon-home:before {\n content: \"\\e021\";\n }\n .glyphicon-file:before {\n content: \"\\e022\";\n }\n .glyphicon-time:before {\n content: \"\\e023\";\n }\n .glyphicon-road:before {\n content: \"\\e024\";\n }\n .glyphicon-download-alt:before {\n content: \"\\e025\";\n }\n .glyphicon-download:before {\n content: \"\\e026\";\n }\n .glyphicon-upload:before {\n content: \"\\e027\";\n }\n .glyphicon-inbox:before {\n content: \"\\e028\";\n }\n .glyphicon-play-circle:before {\n content: \"\\e029\";\n }\n .glyphicon-repeat:before {\n content: \"\\e030\";\n }\n .glyphicon-refresh:before {\n content: \"\\e031\";\n }\n .glyphicon-list-alt:before {\n content: \"\\e032\";\n }\n .glyphicon-lock:before {\n content: \"\\e033\";\n }\n .glyphicon-flag:before {\n content: \"\\e034\";\n }\n .glyphicon-headphones:before {\n content: \"\\e035\";\n }\n .glyphicon-volume-off:before {\n content: \"\\e036\";\n }\n .glyphicon-volume-down:before {\n content: \"\\e037\";\n }\n .glyphicon-volume-up:before {\n content: \"\\e038\";\n }\n .glyphicon-qrcode:before {\n content: \"\\e039\";\n }\n .glyphicon-barcode:before {\n content: \"\\e040\";\n }\n .glyphicon-tag:before {\n content: \"\\e041\";\n }\n .glyphicon-tags:before {\n content: \"\\e042\";\n }\n .glyphicon-book:before {\n content: \"\\e043\";\n }\n .glyphicon-bookmark:before {\n content: \"\\e044\";\n }\n .glyphicon-print:before {\n content: \"\\e045\";\n }\n .glyphicon-camera:before {\n content: \"\\e046\";\n }\n .glyphicon-font:before {\n content: \"\\e047\";\n }\n .glyphicon-bold:before {\n content: \"\\e048\";\n }\n .glyphicon-italic:before {\n content: \"\\e049\";\n }\n .glyphicon-text-height:before {\n content: \"\\e050\";\n }\n .glyphicon-text-width:before {\n content: \"\\e051\";\n }\n .glyphicon-align-left:before {\n content: \"\\e052\";\n }\n .glyphicon-align-center:before {\n content: \"\\e053\";\n }\n .glyphicon-align-right:before {\n content: \"\\e054\";\n }\n .glyphicon-align-justify:before {\n content: \"\\e055\";\n }\n .glyphicon-list:before {\n content: \"\\e056\";\n }\n .glyphicon-indent-left:before {\n content: \"\\e057\";\n }\n .glyphicon-indent-right:before {\n content: \"\\e058\";\n }\n .glyphicon-facetime-video:before {\n content: \"\\e059\";\n }\n .glyphicon-picture:before {\n content: \"\\e060\";\n }\n .glyphicon-map-marker:before {\n content: \"\\e062\";\n }\n .glyphicon-adjust:before {\n content: \"\\e063\";\n }\n .glyphicon-tint:before {\n content: \"\\e064\";\n }\n .glyphicon-edit:before {\n content: \"\\e065\";\n }\n .glyphicon-share:before {\n content: \"\\e066\";\n }\n .glyphicon-check:before {\n content: \"\\e067\";\n }\n .glyphicon-move:before {\n content: \"\\e068\";\n }\n .glyphicon-step-backward:before {\n content: \"\\e069\";\n }\n .glyphicon-fast-backward:before {\n content: \"\\e070\";\n }\n .glyphicon-backward:before {\n content: \"\\e071\";\n }\n .glyphicon-play:before {\n content: \"\\e072\";\n }\n .glyphicon-pause:before {\n content: \"\\e073\";\n }\n .glyphicon-stop:before {\n content: \"\\e074\";\n }\n .glyphicon-forward:before {\n content: \"\\e075\";\n }\n .glyphicon-fast-forward:before {\n content: \"\\e076\";\n }\n .glyphicon-step-forward:before {\n content: \"\\e077\";\n }\n .glyphicon-eject:before {\n content: \"\\e078\";\n }\n .glyphicon-chevron-left:before {\n content: \"\\e079\";\n }\n .glyphicon-chevron-right:before {\n content: \"\\e080\";\n }\n .glyphicon-plus-sign:before {\n content: \"\\e081\";\n }\n .glyphicon-minus-sign:before {\n content: \"\\e082\";\n }\n .glyphicon-remove-sign:before {\n content: \"\\e083\";\n }\n .glyphicon-ok-sign:before {\n content: \"\\e084\";\n }\n .glyphicon-question-sign:before {\n content: \"\\e085\";\n }\n .glyphicon-info-sign:before {\n content: \"\\e086\";\n }\n .glyphicon-screenshot:before {\n content: \"\\e087\";\n }\n .glyphicon-remove-circle:before {\n content: \"\\e088\";\n }\n .glyphicon-ok-circle:before {\n content: \"\\e089\";\n }\n .glyphicon-ban-circle:before {\n content: \"\\e090\";\n }\n .glyphicon-arrow-left:before {\n content: \"\\e091\";\n }\n .glyphicon-arrow-right:before {\n content: \"\\e092\";\n }\n .glyphicon-arrow-up:before {\n content: \"\\e093\";\n }\n .glyphicon-arrow-down:before {\n content: \"\\e094\";\n }\n .glyphicon-share-alt:before {\n content: \"\\e095\";\n }\n .glyphicon-resize-full:before {\n content: \"\\e096\";\n }\n .glyphicon-resize-small:before {\n content: \"\\e097\";\n }\n .glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n }\n .glyphicon-gift:before {\n content: \"\\e102\";\n }\n .glyphicon-leaf:before {\n content: \"\\e103\";\n }\n .glyphicon-fire:before {\n content: \"\\e104\";\n }\n .glyphicon-eye-open:before {\n content: \"\\e105\";\n }\n .glyphicon-eye-close:before {\n content: \"\\e106\";\n }\n .glyphicon-warning-sign:before {\n content: \"\\e107\";\n }\n .glyphicon-plane:before {\n content: \"\\e108\";\n }\n .glyphicon-calendar:before {\n content: \"\\e109\";\n }\n .glyphicon-random:before {\n content: \"\\e110\";\n }\n .glyphicon-comment:before {\n content: \"\\e111\";\n }\n .glyphicon-magnet:before {\n content: \"\\e112\";\n }\n .glyphicon-chevron-up:before {\n content: \"\\e113\";\n }\n .glyphicon-chevron-down:before {\n content: \"\\e114\";\n }\n .glyphicon-retweet:before {\n content: \"\\e115\";\n }\n .glyphicon-shopping-cart:before {\n content: \"\\e116\";\n }\n .glyphicon-folder-close:before {\n content: \"\\e117\";\n }\n .glyphicon-folder-open:before {\n content: \"\\e118\";\n }\n .glyphicon-resize-vertical:before {\n content: \"\\e119\";\n }\n .glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n }\n .glyphicon-hdd:before {\n content: \"\\e121\";\n }\n .glyphicon-bullhorn:before {\n content: \"\\e122\";\n }\n .glyphicon-bell:before {\n content: \"\\e123\";\n }\n .glyphicon-certificate:before {\n content: \"\\e124\";\n }\n .glyphicon-thumbs-up:before {\n content: \"\\e125\";\n }\n .glyphicon-thumbs-down:before {\n content: \"\\e126\";\n }\n .glyphicon-hand-right:before {\n content: \"\\e127\";\n }\n .glyphicon-hand-left:before {\n content: \"\\e128\";\n }\n .glyphicon-hand-up:before {\n content: \"\\e129\";\n }\n .glyphicon-hand-down:before {\n content: \"\\e130\";\n }\n .glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n }\n .glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n }\n .glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n }\n .glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n }\n .glyphicon-globe:before {\n content: \"\\e135\";\n }\n .glyphicon-wrench:before {\n content: \"\\e136\";\n }\n .glyphicon-tasks:before {\n content: \"\\e137\";\n }\n .glyphicon-filter:before {\n content: \"\\e138\";\n }\n .glyphicon-briefcase:before {\n content: \"\\e139\";\n }\n .glyphicon-fullscreen:before {\n content: \"\\e140\";\n }\n .glyphicon-dashboard:before {\n content: \"\\e141\";\n }\n .glyphicon-paperclip:before {\n content: \"\\e142\";\n }\n .glyphicon-heart-empty:before {\n content: \"\\e143\";\n }\n .glyphicon-link:before {\n content: \"\\e144\";\n }\n .glyphicon-phone:before {\n content: \"\\e145\";\n }\n .glyphicon-pushpin:before {\n content: \"\\e146\";\n }\n .glyphicon-usd:before {\n content: \"\\e148\";\n }\n .glyphicon-gbp:before {\n content: \"\\e149\";\n }\n .glyphicon-sort:before {\n content: \"\\e150\";\n }\n .glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n }\n .glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n }\n .glyphicon-sort-by-order:before {\n content: \"\\e153\";\n }\n .glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n }\n .glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n }\n .glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n }\n .glyphicon-unchecked:before {\n content: \"\\e157\";\n }\n .glyphicon-expand:before {\n content: \"\\e158\";\n }\n .glyphicon-collapse-down:before {\n content: \"\\e159\";\n }\n .glyphicon-collapse-up:before {\n content: \"\\e160\";\n }\n .glyphicon-log-in:before {\n content: \"\\e161\";\n }\n .glyphicon-flash:before {\n content: \"\\e162\";\n }\n .glyphicon-log-out:before {\n content: \"\\e163\";\n }\n .glyphicon-new-window:before {\n content: \"\\e164\";\n }\n .glyphicon-record:before {\n content: \"\\e165\";\n }\n .glyphicon-save:before {\n content: \"\\e166\";\n }\n .glyphicon-open:before {\n content: \"\\e167\";\n }\n .glyphicon-saved:before {\n content: \"\\e168\";\n }\n .glyphicon-import:before {\n content: \"\\e169\";\n }\n .glyphicon-export:before {\n content: \"\\e170\";\n }\n .glyphicon-send:before {\n content: \"\\e171\";\n }\n .glyphicon-floppy-disk:before {\n content: \"\\e172\";\n }\n .glyphicon-floppy-saved:before {\n content: \"\\e173\";\n }\n .glyphicon-floppy-remove:before {\n content: \"\\e174\";\n }\n .glyphicon-floppy-save:before {\n content: \"\\e175\";\n }\n .glyphicon-floppy-open:before {\n content: \"\\e176\";\n }\n .glyphicon-credit-card:before {\n content: \"\\e177\";\n }\n .glyphicon-transfer:before {\n content: \"\\e178\";\n }\n .glyphicon-cutlery:before {\n content: \"\\e179\";\n }\n .glyphicon-header:before {\n content: \"\\e180\";\n }\n .glyphicon-compressed:before {\n content: \"\\e181\";\n }\n .glyphicon-earphone:before {\n content: \"\\e182\";\n }\n .glyphicon-phone-alt:before {\n content: \"\\e183\";\n }\n .glyphicon-tower:before {\n content: \"\\e184\";\n }\n .glyphicon-stats:before {\n content: \"\\e185\";\n }\n .glyphicon-sd-video:before {\n content: \"\\e186\";\n }\n .glyphicon-hd-video:before {\n content: \"\\e187\";\n }\n .glyphicon-subtitles:before {\n content: \"\\e188\";\n }\n .glyphicon-sound-stereo:before {\n content: \"\\e189\";\n }\n .glyphicon-sound-dolby:before {\n content: \"\\e190\";\n }\n .glyphicon-sound-5-1:before {\n content: \"\\e191\";\n }\n .glyphicon-sound-6-1:before {\n content: \"\\e192\";\n }\n .glyphicon-sound-7-1:before {\n content: \"\\e193\";\n }\n .glyphicon-copyright-mark:before {\n content: \"\\e194\";\n }\n .glyphicon-registration-mark:before {\n content: \"\\e195\";\n }\n .glyphicon-cloud-download:before {\n content: \"\\e197\";\n }\n .glyphicon-cloud-upload:before {\n content: \"\\e198\";\n }\n .glyphicon-tree-conifer:before {\n content: \"\\e199\";\n }\n .glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n }\n .glyphicon-cd:before {\n content: \"\\e201\";\n }\n .glyphicon-save-file:before {\n content: \"\\e202\";\n }\n .glyphicon-open-file:before {\n content: \"\\e203\";\n }\n .glyphicon-level-up:before {\n content: \"\\e204\";\n }\n .glyphicon-copy:before {\n content: \"\\e205\";\n }\n .glyphicon-paste:before {\n content: \"\\e206\";\n }\n .glyphicon-alert:before {\n content: \"\\e209\";\n }\n .glyphicon-equalizer:before {\n content: \"\\e210\";\n }\n .glyphicon-king:before {\n content: \"\\e211\";\n }\n .glyphicon-queen:before {\n content: \"\\e212\";\n }\n .glyphicon-pawn:before {\n content: \"\\e213\";\n }\n .glyphicon-bishop:before {\n content: \"\\e214\";\n }\n .glyphicon-knight:before {\n content: \"\\e215\";\n }\n .glyphicon-baby-formula:before {\n content: \"\\e216\";\n }\n .glyphicon-tent:before {\n content: \"\\26fa\";\n }\n .glyphicon-blackboard:before {\n content: \"\\e218\";\n }\n .glyphicon-bed:before {\n content: \"\\e219\";\n }\n .glyphicon-apple:before {\n content: \"\\f8ff\";\n }\n .glyphicon-erase:before {\n content: \"\\e221\";\n }\n .glyphicon-hourglass:before {\n content: \"\\231b\";\n }\n .glyphicon-lamp:before {\n content: \"\\e223\";\n }\n .glyphicon-duplicate:before {\n content: \"\\e224\";\n }\n .glyphicon-piggy-bank:before {\n content: \"\\e225\";\n }\n .glyphicon-scissors:before {\n content: \"\\e226\";\n }\n .glyphicon-bitcoin:before {\n content: \"\\e227\";\n }\n .glyphicon-btc:before {\n content: \"\\e227\";\n }\n .glyphicon-xbt:before {\n content: \"\\e227\";\n }\n .glyphicon-yen:before {\n content: \"\\00a5\";\n }\n .glyphicon-jpy:before {\n content: \"\\00a5\";\n }\n .glyphicon-ruble:before {\n content: \"\\20bd\";\n }\n .glyphicon-rub:before {\n content: \"\\20bd\";\n }\n .glyphicon-scale:before {\n content: \"\\e230\";\n }\n .glyphicon-ice-lolly:before {\n content: \"\\e231\";\n }\n .glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n }\n .glyphicon-education:before {\n content: \"\\e233\";\n }\n .glyphicon-option-horizontal:before {\n content: \"\\e234\";\n }\n .glyphicon-option-vertical:before {\n content: \"\\e235\";\n }\n .glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n }\n .glyphicon-modal-window:before {\n content: \"\\e237\";\n }\n .glyphicon-oil:before {\n content: \"\\e238\";\n }\n .glyphicon-grain:before {\n content: \"\\e239\";\n }\n .glyphicon-sunglasses:before {\n content: \"\\e240\";\n }\n .glyphicon-text-size:before {\n content: \"\\e241\";\n }\n .glyphicon-text-color:before {\n content: \"\\e242\";\n }\n .glyphicon-text-background:before {\n content: \"\\e243\";\n }\n .glyphicon-object-align-top:before {\n content: \"\\e244\";\n }\n .glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n }\n .glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n }\n .glyphicon-object-align-left:before {\n content: \"\\e247\";\n }\n .glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n }\n .glyphicon-object-align-right:before {\n content: \"\\e249\";\n }\n .glyphicon-triangle-right:before {\n content: \"\\e250\";\n }\n .glyphicon-triangle-left:before {\n content: \"\\e251\";\n }\n .glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n }\n .glyphicon-triangle-top:before {\n content: \"\\e253\";\n }\n .glyphicon-console:before {\n content: \"\\e254\";\n }\n .glyphicon-superscript:before {\n content: \"\\e255\";\n }\n .glyphicon-subscript:before {\n content: \"\\e256\";\n }\n .glyphicon-menu-left:before {\n content: \"\\e257\";\n }\n .glyphicon-menu-right:before {\n content: \"\\e258\";\n }\n .glyphicon-menu-down:before {\n content: \"\\e259\";\n }\n .glyphicon-menu-up:before {\n content: \"\\e260\";\n }\n * {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n *:before,\n *:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n html {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n }\n body {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n }\n input,\n button,\n select,\n textarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n }\n a {\n color: #337ab7;\n text-decoration: none;\n }\n a:hover,\n a:focus {\n color: #23527c;\n text-decoration: underline;\n }\n a:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n figure {\n margin: 0;\n }\n img {\n vertical-align: middle;\n }\n .img-responsive,\n .thumbnail > img,\n .thumbnail a > img,\n .carousel-inner > .item > img,\n .carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n }\n .img-rounded {\n border-radius: 6px;\n }\n .img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n }\n .img-circle {\n border-radius: 50%;\n }\n hr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n }\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n }\n .sr-only-focusable:active,\n .sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n [role=\"button\"] {\n cursor: pointer;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n }\n h1 small,\n h2 small,\n h3 small,\n h4 small,\n h5 small,\n h6 small,\n .h1 small,\n .h2 small,\n .h3 small,\n .h4 small,\n .h5 small,\n .h6 small,\n h1 .small,\n h2 .small,\n h3 .small,\n h4 .small,\n h5 .small,\n h6 .small,\n .h1 .small,\n .h2 .small,\n .h3 .small,\n .h4 .small,\n .h5 .small,\n .h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n }\n h1,\n .h1,\n h2,\n .h2,\n h3,\n .h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n }\n h1 small,\n .h1 small,\n h2 small,\n .h2 small,\n h3 small,\n .h3 small,\n h1 .small,\n .h1 .small,\n h2 .small,\n .h2 .small,\n h3 .small,\n .h3 .small {\n font-size: 65%;\n }\n h4,\n .h4,\n h5,\n .h5,\n h6,\n .h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n h4 small,\n .h4 small,\n h5 small,\n .h5 small,\n h6 small,\n .h6 small,\n h4 .small,\n .h4 .small,\n h5 .small,\n .h5 .small,\n h6 .small,\n .h6 .small {\n font-size: 75%;\n }\n h1,\n .h1 {\n font-size: 36px;\n }\n h2,\n .h2 {\n font-size: 30px;\n }\n h3,\n .h3 {\n font-size: 24px;\n }\n h4,\n .h4 {\n font-size: 18px;\n }\n h5,\n .h5 {\n font-size: 14px;\n }\n h6,\n .h6 {\n font-size: 12px;\n }\n p {\n margin: 0 0 10px;\n }\n .lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n }\n @media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n }\n small,\n .small {\n font-size: 85%;\n }\n mark,\n .mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n }\n .text-left {\n text-align: left;\n }\n .text-right {\n text-align: right;\n }\n .text-center {\n text-align: center;\n }\n .text-justify {\n text-align: justify;\n }\n .text-nowrap {\n white-space: nowrap;\n }\n .text-lowercase {\n text-transform: lowercase;\n }\n .text-uppercase {\n text-transform: uppercase;\n }\n .text-capitalize {\n text-transform: capitalize;\n }\n .text-muted {\n color: #777;\n }\n .text-primary {\n color: #337ab7;\n }\n a.text-primary:hover {\n color: #286090;\n }\n .text-success {\n color: #3c763d;\n }\n a.text-success:hover {\n color: #2b542c;\n }\n .text-info {\n color: #31708f;\n }\n a.text-info:hover {\n color: #245269;\n }\n .text-warning {\n color: #8a6d3b;\n }\n a.text-warning:hover {\n color: #66512c;\n }\n .text-danger {\n color: #a94442;\n }\n a.text-danger:hover {\n color: #843534;\n }\n .bg-primary {\n color: #fff;\n background-color: #337ab7;\n }\n a.bg-primary:hover {\n background-color: #286090;\n }\n .bg-success {\n background-color: #dff0d8;\n }\n a.bg-success:hover {\n background-color: #c1e2b3;\n }\n .bg-info {\n background-color: #d9edf7;\n }\n a.bg-info:hover {\n background-color: #afd9ee;\n }\n .bg-warning {\n background-color: #fcf8e3;\n }\n a.bg-warning:hover {\n background-color: #f7ecb5;\n }\n .bg-danger {\n background-color: #f2dede;\n }\n a.bg-danger:hover {\n background-color: #e4b9b9;\n }\n .page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n }\n ul,\n ol {\n margin-top: 0;\n margin-bottom: 10px;\n }\n ul ul,\n ol ul,\n ul ol,\n ol ol {\n margin-bottom: 0;\n }\n .list-unstyled {\n padding-left: 0;\n list-style: none;\n }\n .list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n }\n .list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n }\n dl {\n margin-top: 0;\n margin-bottom: 20px;\n }\n dt,\n dd {\n line-height: 1.42857143;\n }\n dt {\n font-weight: bold;\n }\n dd {\n margin-left: 0;\n }\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n }\n abbr[title],\n abbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n }\n .initialism {\n font-size: 90%;\n text-transform: uppercase;\n }\n blockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n }\n blockquote p:last-child,\n blockquote ul:last-child,\n blockquote ol:last-child {\n margin-bottom: 0;\n }\n blockquote footer,\n blockquote small,\n blockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n }\n blockquote footer:before,\n blockquote small:before,\n blockquote .small:before {\n content: \"\\2014 \\00A0\";\n }\n .blockquote-reverse,\n blockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n }\n .blockquote-reverse footer:before,\n blockquote.pull-right footer:before,\n .blockquote-reverse small:before,\n blockquote.pull-right small:before,\n .blockquote-reverse .small:before,\n blockquote.pull-right .small:before {\n content: \"\";\n }\n .blockquote-reverse footer:after,\n blockquote.pull-right footer:after,\n .blockquote-reverse small:after,\n blockquote.pull-right small:after,\n .blockquote-reverse .small:after,\n blockquote.pull-right .small:after {\n content: \"\\00A0 \\2014\";\n }\n address {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n }\n code,\n kbd,\n pre,\n samp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n }\n code {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n }\n kbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n }\n kbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n pre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n }\n pre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n .pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n }\n .container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n @media (min-width: 768px) {\n .container {\n width: 750px;\n }\n }\n @media (min-width: 992px) {\n .container {\n width: 970px;\n }\n }\n @media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n }\n .container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n }\n .row {\n margin-right: -15px;\n margin-left: -15px;\n }\n //.col-xs-1,\n //.col-sm-1,\n //.col-md-1,\n //.col-lg-1,\n //.col-xs-2,\n //.col-sm-2,\n //.col-md-2,\n //.col-lg-2,\n //.col-xs-3,\n //.col-sm-3,\n //.col-md-3,\n //.col-lg-3,\n //.col-xs-4,\n //.col-sm-4,\n //.col-md-4,\n //.col-lg-4,\n //.col-xs-5,\n //.col-sm-5,\n //.col-md-5,\n //.col-lg-5,\n //.col-xs-6,\n //.col-sm-6,\n //.col-md-6,\n //.col-lg-6,\n //.col-xs-7,\n //.col-sm-7,\n //.col-md-7,\n //.col-lg-7,\n //.col-xs-8,\n //.col-sm-8,\n //.col-md-8,\n //.col-lg-8,\n //.col-xs-9,\n //.col-sm-9,\n //.col-md-9,\n //.col-lg-9,\n //.col-xs-10,\n //.col-sm-10,\n //.col-md-10,\n //.col-lg-10,\n //.col-xs-11,\n //.col-sm-11,\n //.col-md-11,\n //.col-lg-11,\n //.col-xs-12,\n //.col-sm-12,\n //.col-md-12,\n //.col-lg-12 {\n // position: relative;\n // min-height: 1px;\n // padding-right: 15px;\n // padding-left: 15px;\n //}\n //.col-xs-1,\n //.col-xs-2,\n //.col-xs-3,\n //.col-xs-4,\n //.col-xs-5,\n //.col-xs-6,\n //.col-xs-7,\n //.col-xs-8,\n //.col-xs-9,\n //.col-xs-10,\n //.col-xs-11,\n //.col-xs-12 {\n // float: left;\n //}\n //.col-xs-12 {\n // width: 100%;\n //}\n //.col-xs-11 {\n // width: 91.66666667%;\n //}\n //.col-xs-10 {\n // width: 83.33333333%;\n //}\n //.col-xs-9 {\n // width: 75%;\n //}\n //.col-xs-8 {\n // width: 66.66666667%;\n //}\n //.col-xs-7 {\n // width: 58.33333333%;\n //}\n //.col-xs-6 {\n // width: 50%;\n //}\n //.col-xs-5 {\n // width: 41.66666667%;\n //}\n //.col-xs-4 {\n // width: 33.33333333%;\n //}\n //.col-xs-3 {\n // width: 25%;\n //}\n //.col-xs-2 {\n // width: 16.66666667%;\n //}\n //.col-xs-1 {\n // width: 8.33333333%;\n //}\n //.col-xs-pull-12 {\n // right: 100%;\n //}\n //.col-xs-pull-11 {\n // right: 91.66666667%;\n //}\n //.col-xs-pull-10 {\n // right: 83.33333333%;\n //}\n //.col-xs-pull-9 {\n // right: 75%;\n //}\n //.col-xs-pull-8 {\n // right: 66.66666667%;\n //}\n //.col-xs-pull-7 {\n // right: 58.33333333%;\n //}\n //.col-xs-pull-6 {\n // right: 50%;\n //}\n //.col-xs-pull-5 {\n // right: 41.66666667%;\n //}\n //.col-xs-pull-4 {\n // right: 33.33333333%;\n //}\n //.col-xs-pull-3 {\n // right: 25%;\n //}\n //.col-xs-pull-2 {\n // right: 16.66666667%;\n //}\n //.col-xs-pull-1 {\n // right: 8.33333333%;\n //}\n //.col-xs-pull-0 {\n // right: auto;\n //}\n //.col-xs-push-12 {\n // left: 100%;\n //}\n //.col-xs-push-11 {\n // left: 91.66666667%;\n //}\n //.col-xs-push-10 {\n // left: 83.33333333%;\n //}\n //.col-xs-push-9 {\n // left: 75%;\n //}\n //.col-xs-push-8 {\n // left: 66.66666667%;\n //}\n //.col-xs-push-7 {\n // left: 58.33333333%;\n //}\n //.col-xs-push-6 {\n // left: 50%;\n //}\n //.col-xs-push-5 {\n // left: 41.66666667%;\n //}\n //.col-xs-push-4 {\n // left: 33.33333333%;\n //}\n //.col-xs-push-3 {\n // left: 25%;\n //}\n //.col-xs-push-2 {\n // left: 16.66666667%;\n //}\n //.col-xs-push-1 {\n // left: 8.33333333%;\n //}\n //.col-xs-push-0 {\n // left: auto;\n //}\n //.col-xs-offset-12 {\n // margin-left: 100%;\n //}\n //.col-xs-offset-11 {\n // margin-left: 91.66666667%;\n //}\n //.col-xs-offset-10 {\n // margin-left: 83.33333333%;\n //}\n //.col-xs-offset-9 {\n // margin-left: 75%;\n //}\n //.col-xs-offset-8 {\n // margin-left: 66.66666667%;\n //}\n //.col-xs-offset-7 {\n // margin-left: 58.33333333%;\n //}\n //.col-xs-offset-6 {\n // margin-left: 50%;\n //}\n //.col-xs-offset-5 {\n // margin-left: 41.66666667%;\n //}\n //.col-xs-offset-4 {\n // margin-left: 33.33333333%;\n //}\n //.col-xs-offset-3 {\n // margin-left: 25%;\n //}\n //.col-xs-offset-2 {\n // margin-left: 16.66666667%;\n //}\n //.col-xs-offset-1 {\n // margin-left: 8.33333333%;\n //}\n //.col-xs-offset-0 {\n // margin-left: 0;\n //}\n //@media (min-width: 768px) {\n // .col-sm-1,\n // .col-sm-2,\n // .col-sm-3,\n // .col-sm-4,\n // .col-sm-5,\n // .col-sm-6,\n // .col-sm-7,\n // .col-sm-8,\n // .col-sm-9,\n // .col-sm-10,\n // .col-sm-11,\n // .col-sm-12 {\n // float: left;\n // }\n // .col-sm-12 {\n // width: 100%;\n // }\n // .col-sm-11 {\n // width: 91.66666667%;\n // }\n // .col-sm-10 {\n // width: 83.33333333%;\n // }\n // .col-sm-9 {\n // width: 75%;\n // }\n // .col-sm-8 {\n // width: 66.66666667%;\n // }\n // .col-sm-7 {\n // width: 58.33333333%;\n // }\n // .col-sm-6 {\n // width: 50%;\n // }\n // .col-sm-5 {\n // width: 41.66666667%;\n // }\n // .col-sm-4 {\n // width: 33.33333333%;\n // }\n // .col-sm-3 {\n // width: 25%;\n // }\n // .col-sm-2 {\n // width: 16.66666667%;\n // }\n // .col-sm-1 {\n // width: 8.33333333%;\n // }\n // .col-sm-pull-12 {\n // right: 100%;\n // }\n // .col-sm-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-sm-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-sm-pull-9 {\n // right: 75%;\n // }\n // .col-sm-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-sm-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-sm-pull-6 {\n // right: 50%;\n // }\n // .col-sm-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-sm-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-sm-pull-3 {\n // right: 25%;\n // }\n // .col-sm-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-sm-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-sm-pull-0 {\n // right: auto;\n // }\n // .col-sm-push-12 {\n // left: 100%;\n // }\n // .col-sm-push-11 {\n // left: 91.66666667%;\n // }\n // .col-sm-push-10 {\n // left: 83.33333333%;\n // }\n // .col-sm-push-9 {\n // left: 75%;\n // }\n // .col-sm-push-8 {\n // left: 66.66666667%;\n // }\n // .col-sm-push-7 {\n // left: 58.33333333%;\n // }\n // .col-sm-push-6 {\n // left: 50%;\n // }\n // .col-sm-push-5 {\n // left: 41.66666667%;\n // }\n // .col-sm-push-4 {\n // left: 33.33333333%;\n // }\n // .col-sm-push-3 {\n // left: 25%;\n // }\n // .col-sm-push-2 {\n // left: 16.66666667%;\n // }\n // .col-sm-push-1 {\n // left: 8.33333333%;\n // }\n // .col-sm-push-0 {\n // left: auto;\n // }\n // .col-sm-offset-12 {\n // margin-left: 100%;\n // }\n // .col-sm-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-sm-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-sm-offset-9 {\n // margin-left: 75%;\n // }\n // .col-sm-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-sm-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-sm-offset-6 {\n // margin-left: 50%;\n // }\n // .col-sm-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-sm-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-sm-offset-3 {\n // margin-left: 25%;\n // }\n // .col-sm-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-sm-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-sm-offset-0 {\n // margin-left: 0;\n // }\n //}\n //@media (min-width: 992px) {\n // .col-md-1,\n // .col-md-2,\n // .col-md-3,\n // .col-md-4,\n // .col-md-5,\n // .col-md-6,\n // .col-md-7,\n // .col-md-8,\n // .col-md-9,\n // .col-md-10,\n // .col-md-11,\n // .col-md-12 {\n // float: left;\n // }\n // .col-md-12 {\n // width: 100%;\n // }\n // .col-md-11 {\n // width: 91.66666667%;\n // }\n // .col-md-10 {\n // width: 83.33333333%;\n // }\n // .col-md-9 {\n // width: 75%;\n // }\n // .col-md-8 {\n // width: 66.66666667%;\n // }\n // .col-md-7 {\n // width: 58.33333333%;\n // }\n // .col-md-6 {\n // width: 50%;\n // }\n // .col-md-5 {\n // width: 41.66666667%;\n // }\n // .col-md-4 {\n // width: 33.33333333%;\n // }\n // .col-md-3 {\n // width: 25%;\n // }\n // .col-md-2 {\n // width: 16.66666667%;\n // }\n // .col-md-1 {\n // width: 8.33333333%;\n // }\n // .col-md-pull-12 {\n // right: 100%;\n // }\n // .col-md-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-md-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-md-pull-9 {\n // right: 75%;\n // }\n // .col-md-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-md-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-md-pull-6 {\n // right: 50%;\n // }\n // .col-md-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-md-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-md-pull-3 {\n // right: 25%;\n // }\n // .col-md-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-md-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-md-pull-0 {\n // right: auto;\n // }\n // .col-md-push-12 {\n // left: 100%;\n // }\n // .col-md-push-11 {\n // left: 91.66666667%;\n // }\n // .col-md-push-10 {\n // left: 83.33333333%;\n // }\n // .col-md-push-9 {\n // left: 75%;\n // }\n // .col-md-push-8 {\n // left: 66.66666667%;\n // }\n // .col-md-push-7 {\n // left: 58.33333333%;\n // }\n // .col-md-push-6 {\n // left: 50%;\n // }\n // .col-md-push-5 {\n // left: 41.66666667%;\n // }\n // .col-md-push-4 {\n // left: 33.33333333%;\n // }\n // .col-md-push-3 {\n // left: 25%;\n // }\n // .col-md-push-2 {\n // left: 16.66666667%;\n // }\n // .col-md-push-1 {\n // left: 8.33333333%;\n // }\n // .col-md-push-0 {\n // left: auto;\n // }\n // .col-md-offset-12 {\n // margin-left: 100%;\n // }\n // .col-md-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-md-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-md-offset-9 {\n // margin-left: 75%;\n // }\n // .col-md-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-md-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-md-offset-6 {\n // margin-left: 50%;\n // }\n // .col-md-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-md-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-md-offset-3 {\n // margin-left: 25%;\n // }\n // .col-md-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-md-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-md-offset-0 {\n // margin-left: 0;\n // }\n //}\n //@media (min-width: 1200px) {\n // .col-lg-1,\n // .col-lg-2,\n // .col-lg-3,\n // .col-lg-4,\n // .col-lg-5,\n // .col-lg-6,\n // .col-lg-7,\n // .col-lg-8,\n // .col-lg-9,\n // .col-lg-10,\n // .col-lg-11,\n // .col-lg-12 {\n // float: left;\n // }\n // .col-lg-12 {\n // width: 100%;\n // }\n // .col-lg-11 {\n // width: 91.66666667%;\n // }\n // .col-lg-10 {\n // width: 83.33333333%;\n // }\n // .col-lg-9 {\n // width: 75%;\n // }\n // .col-lg-8 {\n // width: 66.66666667%;\n // }\n // .col-lg-7 {\n // width: 58.33333333%;\n // }\n // .col-lg-6 {\n // width: 50%;\n // }\n // .col-lg-5 {\n // width: 41.66666667%;\n // }\n // .col-lg-4 {\n // width: 33.33333333%;\n // }\n // .col-lg-3 {\n // width: 25%;\n // }\n // .col-lg-2 {\n // width: 16.66666667%;\n // }\n // .col-lg-1 {\n // width: 8.33333333%;\n // }\n // .col-lg-pull-12 {\n // right: 100%;\n // }\n // .col-lg-pull-11 {\n // right: 91.66666667%;\n // }\n // .col-lg-pull-10 {\n // right: 83.33333333%;\n // }\n // .col-lg-pull-9 {\n // right: 75%;\n // }\n // .col-lg-pull-8 {\n // right: 66.66666667%;\n // }\n // .col-lg-pull-7 {\n // right: 58.33333333%;\n // }\n // .col-lg-pull-6 {\n // right: 50%;\n // }\n // .col-lg-pull-5 {\n // right: 41.66666667%;\n // }\n // .col-lg-pull-4 {\n // right: 33.33333333%;\n // }\n // .col-lg-pull-3 {\n // right: 25%;\n // }\n // .col-lg-pull-2 {\n // right: 16.66666667%;\n // }\n // .col-lg-pull-1 {\n // right: 8.33333333%;\n // }\n // .col-lg-pull-0 {\n // right: auto;\n // }\n // .col-lg-push-12 {\n // left: 100%;\n // }\n // .col-lg-push-11 {\n // left: 91.66666667%;\n // }\n // .col-lg-push-10 {\n // left: 83.33333333%;\n // }\n // .col-lg-push-9 {\n // left: 75%;\n // }\n // .col-lg-push-8 {\n // left: 66.66666667%;\n // }\n // .col-lg-push-7 {\n // left: 58.33333333%;\n // }\n // .col-lg-push-6 {\n // left: 50%;\n // }\n // .col-lg-push-5 {\n // left: 41.66666667%;\n // }\n // .col-lg-push-4 {\n // left: 33.33333333%;\n // }\n // .col-lg-push-3 {\n // left: 25%;\n // }\n // .col-lg-push-2 {\n // left: 16.66666667%;\n // }\n // .col-lg-push-1 {\n // left: 8.33333333%;\n // }\n // .col-lg-push-0 {\n // left: auto;\n // }\n // .col-lg-offset-12 {\n // margin-left: 100%;\n // }\n // .col-lg-offset-11 {\n // margin-left: 91.66666667%;\n // }\n // .col-lg-offset-10 {\n // margin-left: 83.33333333%;\n // }\n // .col-lg-offset-9 {\n // margin-left: 75%;\n // }\n // .col-lg-offset-8 {\n // margin-left: 66.66666667%;\n // }\n // .col-lg-offset-7 {\n // margin-left: 58.33333333%;\n // }\n // .col-lg-offset-6 {\n // margin-left: 50%;\n // }\n // .col-lg-offset-5 {\n // margin-left: 41.66666667%;\n // }\n // .col-lg-offset-4 {\n // margin-left: 33.33333333%;\n // }\n // .col-lg-offset-3 {\n // margin-left: 25%;\n // }\n // .col-lg-offset-2 {\n // margin-left: 16.66666667%;\n // }\n // .col-lg-offset-1 {\n // margin-left: 8.33333333%;\n // }\n // .col-lg-offset-0 {\n // margin-left: 0;\n // }\n //}\n table {\n background-color: transparent;\n }\n caption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n }\n th {\n text-align: left;\n }\n .table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n }\n .table > thead > tr > th,\n .table > tbody > tr > th,\n .table > tfoot > tr > th,\n .table > thead > tr > td,\n .table > tbody > tr > td,\n .table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n }\n .table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n }\n .table > caption + thead > tr:first-child > th,\n .table > colgroup + thead > tr:first-child > th,\n .table > thead:first-child > tr:first-child > th,\n .table > caption + thead > tr:first-child > td,\n .table > colgroup + thead > tr:first-child > td,\n .table > thead:first-child > tr:first-child > td {\n border-top: 0;\n }\n .table > tbody + tbody {\n border-top: 2px solid #ddd;\n }\n .table .table {\n background-color: #fff;\n }\n .table-condensed > thead > tr > th,\n .table-condensed > tbody > tr > th,\n .table-condensed > tfoot > tr > th,\n .table-condensed > thead > tr > td,\n .table-condensed > tbody > tr > td,\n .table-condensed > tfoot > tr > td {\n padding: 5px;\n }\n .table-bordered {\n border: 1px solid #ddd;\n }\n .table-bordered > thead > tr > th,\n .table-bordered > tbody > tr > th,\n .table-bordered > tfoot > tr > th,\n .table-bordered > thead > tr > td,\n .table-bordered > tbody > tr > td,\n .table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n }\n .table-bordered > thead > tr > th,\n .table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n }\n .table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n }\n .table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n }\n table col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n }\n table td[class*=\"col-\"],\n table th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n }\n .table > thead > tr > td.active,\n .table > tbody > tr > td.active,\n .table > tfoot > tr > td.active,\n .table > thead > tr > th.active,\n .table > tbody > tr > th.active,\n .table > tfoot > tr > th.active,\n .table > thead > tr.active > td,\n .table > tbody > tr.active > td,\n .table > tfoot > tr.active > td,\n .table > thead > tr.active > th,\n .table > tbody > tr.active > th,\n .table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n }\n .table-hover > tbody > tr > td.active:hover,\n .table-hover > tbody > tr > th.active:hover,\n .table-hover > tbody > tr.active:hover > td,\n .table-hover > tbody > tr:hover > .active,\n .table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n }\n .table > thead > tr > td.success,\n .table > tbody > tr > td.success,\n .table > tfoot > tr > td.success,\n .table > thead > tr > th.success,\n .table > tbody > tr > th.success,\n .table > tfoot > tr > th.success,\n .table > thead > tr.success > td,\n .table > tbody > tr.success > td,\n .table > tfoot > tr.success > td,\n .table > thead > tr.success > th,\n .table > tbody > tr.success > th,\n .table > tfoot > tr.success > th {\n background-color: #dff0d8;\n }\n .table-hover > tbody > tr > td.success:hover,\n .table-hover > tbody > tr > th.success:hover,\n .table-hover > tbody > tr.success:hover > td,\n .table-hover > tbody > tr:hover > .success,\n .table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n }\n .table > thead > tr > td.info,\n .table > tbody > tr > td.info,\n .table > tfoot > tr > td.info,\n .table > thead > tr > th.info,\n .table > tbody > tr > th.info,\n .table > tfoot > tr > th.info,\n .table > thead > tr.info > td,\n .table > tbody > tr.info > td,\n .table > tfoot > tr.info > td,\n .table > thead > tr.info > th,\n .table > tbody > tr.info > th,\n .table > tfoot > tr.info > th {\n background-color: #d9edf7;\n }\n .table-hover > tbody > tr > td.info:hover,\n .table-hover > tbody > tr > th.info:hover,\n .table-hover > tbody > tr.info:hover > td,\n .table-hover > tbody > tr:hover > .info,\n .table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n }\n .table > thead > tr > td.warning,\n .table > tbody > tr > td.warning,\n .table > tfoot > tr > td.warning,\n .table > thead > tr > th.warning,\n .table > tbody > tr > th.warning,\n .table > tfoot > tr > th.warning,\n .table > thead > tr.warning > td,\n .table > tbody > tr.warning > td,\n .table > tfoot > tr.warning > td,\n .table > thead > tr.warning > th,\n .table > tbody > tr.warning > th,\n .table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n }\n .table-hover > tbody > tr > td.warning:hover,\n .table-hover > tbody > tr > th.warning:hover,\n .table-hover > tbody > tr.warning:hover > td,\n .table-hover > tbody > tr:hover > .warning,\n .table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n }\n .table > thead > tr > td.danger,\n .table > tbody > tr > td.danger,\n .table > tfoot > tr > td.danger,\n .table > thead > tr > th.danger,\n .table > tbody > tr > th.danger,\n .table > tfoot > tr > th.danger,\n .table > thead > tr.danger > td,\n .table > tbody > tr.danger > td,\n .table > tfoot > tr.danger > td,\n .table > thead > tr.danger > th,\n .table > tbody > tr.danger > th,\n .table > tfoot > tr.danger > th {\n background-color: #f2dede;\n }\n .table-hover > tbody > tr > td.danger:hover,\n .table-hover > tbody > tr > th.danger:hover,\n .table-hover > tbody > tr.danger:hover > td,\n .table-hover > tbody > tr:hover > .danger,\n .table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n }\n .table-responsive {\n min-height: 0.01%;\n overflow-x: auto;\n }\n @media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n }\n fieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n }\n legend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n }\n label {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n }\n input[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n }\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n }\n input[type=\"file\"] {\n display: block;\n }\n input[type=\"range\"] {\n display: block;\n width: 100%;\n }\n select[multiple],\n select[size] {\n height: auto;\n }\n input[type=\"file\"]:focus,\n input[type=\"radio\"]:focus,\n input[type=\"checkbox\"]:focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n output {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n }\n //.form-control {\n // display: block;\n // width: 100%;\n // height: 34px;\n // padding: 6px 12px;\n // font-size: 14px;\n // line-height: 1.42857143;\n // color: #555;\n // background-color: #fff;\n // background-image: none;\n // border: 1px solid #ccc;\n // border-radius: 4px;\n // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n // -webkit-transition: border-color ease-in-out 0.15s, -webkit-box-shadow ease-in-out 0.15s;\n // -o-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n // transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n //}\n //.form-control:focus {\n // border-color: #66afe9;\n // outline: 0;\n // -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n // box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n //}\n //.form-control::-moz-placeholder {\n // color: #999;\n // opacity: 1;\n //}\n //.form-control:-ms-input-placeholder {\n // color: #999;\n //}\n //.form-control::-webkit-input-placeholder {\n // color: #999;\n //}\n //.form-control[disabled],\n //.form-control[readonly],\n //fieldset[disabled] .form-control {\n // background-color: #eee;\n // opacity: 1;\n //}\n //.form-control[disabled],\n //fieldset[disabled] .form-control {\n // cursor: not-allowed;\n //}\n //textarea.form-control {\n // height: auto;\n //}\n //input[type='search'] {\n // -webkit-appearance: none;\n //}\n // @media screen and (-webkit-min-device-pixel-ratio: 0) {\n // input[type='date'],\n // input[type='time'],\n // input[type='datetime-local'],\n // input[type='month'] {\n // line-height: 34px;\n // }\n // input[type='date'].input-sm,\n // input[type='time'].input-sm,\n // input[type='datetime-local'].input-sm,\n // input[type='month'].input-sm,\n // .input-group-sm input[type='date'],\n // .input-group-sm input[type='time'],\n // .input-group-sm input[type='datetime-local'],\n // .input-group-sm input[type='month'] {\n // line-height: 30px;\n // }\n // input[type='date'].input-lg,\n // input[type='time'].input-lg,\n // input[type='datetime-local'].input-lg,\n // input[type='month'].input-lg,\n // .input-group-lg input[type='date'],\n // .input-group-lg input[type='time'],\n // .input-group-lg input[type='datetime-local'],\n // .input-group-lg input[type='month'] {\n // line-height: 46px;\n // }\n // }\n //.form-group {\n // margin-bottom: 15px;\n //}\n .radio,\n .checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .radio label,\n .checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\n .radio input[type=\"radio\"],\n .radio-inline input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"],\n .checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n }\n .radio + .radio,\n .checkbox + .checkbox {\n margin-top: -5px;\n }\n .radio-inline,\n .checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n }\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n }\n input[type=\"radio\"][disabled],\n input[type=\"checkbox\"][disabled],\n input[type=\"radio\"].disabled,\n input[type=\"checkbox\"].disabled,\n fieldset[disabled] input[type=\"radio\"],\n fieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n }\n .radio-inline.disabled,\n .checkbox-inline.disabled,\n fieldset[disabled] .radio-inline,\n fieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n }\n .radio.disabled label,\n .checkbox.disabled label,\n fieldset[disabled] .radio label,\n fieldset[disabled] .checkbox label {\n cursor: not-allowed;\n }\n .form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n }\n .form-control-static.input-lg,\n .form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n }\n .input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.input-sm {\n height: 30px;\n line-height: 30px;\n }\n textarea.input-sm,\n select[multiple].input-sm {\n height: auto;\n }\n .form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n }\n textarea.form-group-sm .form-control,\n select[multiple].form-group-sm .form-control {\n height: auto;\n }\n .form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n }\n .input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.input-lg {\n height: 46px;\n line-height: 46px;\n }\n textarea.input-lg,\n select[multiple].input-lg {\n height: auto;\n }\n .form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n }\n textarea.form-group-lg .form-control,\n select[multiple].form-group-lg .form-control {\n height: auto;\n }\n .form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n }\n .has-feedback {\n position: relative;\n }\n .has-feedback .form-control {\n padding-right: 42.5px;\n }\n .form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n }\n .input-lg + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n }\n .input-sm + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n }\n .has-success .help-block,\n .has-success .control-label,\n .has-success .radio,\n .has-success .checkbox,\n .has-success .radio-inline,\n .has-success .checkbox-inline,\n .has-success.radio label,\n .has-success.checkbox label,\n .has-success.radio-inline label,\n .has-success.checkbox-inline label {\n color: #3c763d;\n }\n .has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n }\n .has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n }\n .has-success .form-control-feedback {\n color: #3c763d;\n }\n .has-warning .help-block,\n .has-warning .control-label,\n .has-warning .radio,\n .has-warning .checkbox,\n .has-warning .radio-inline,\n .has-warning .checkbox-inline,\n .has-warning.radio label,\n .has-warning.checkbox label,\n .has-warning.radio-inline label,\n .has-warning.checkbox-inline label {\n color: #8a6d3b;\n }\n .has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n }\n .has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n }\n .has-warning .form-control-feedback {\n color: #8a6d3b;\n }\n .has-error .help-block,\n .has-error .control-label,\n .has-error .radio,\n .has-error .checkbox,\n .has-error .radio-inline,\n .has-error .checkbox-inline,\n .has-error.radio label,\n .has-error.checkbox label,\n .has-error.radio-inline label,\n .has-error.checkbox-inline label {\n color: #a94442;\n }\n .has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n }\n .has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n }\n .has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n }\n .has-error .form-control-feedback {\n color: #a94442;\n }\n .has-feedback label ~ .form-control-feedback {\n top: 25px;\n }\n .has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n }\n .help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n }\n @media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n .form-horizontal .radio,\n .form-horizontal .checkbox,\n .form-horizontal .radio-inline,\n .form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n }\n .form-horizontal .radio,\n .form-horizontal .checkbox {\n min-height: 27px;\n }\n .form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n }\n .form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n }\n @media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 14.333333px;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n }\n }\n .btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .btn:focus,\n .btn:active:focus,\n .btn.active:focus,\n .btn.focus,\n .btn:active.focus,\n .btn.active.focus {\n outline: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n }\n .btn:hover,\n .btn:focus,\n .btn.focus {\n color: #333;\n text-decoration: none;\n }\n .btn:active,\n .btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n }\n .btn.disabled,\n .btn[disabled],\n fieldset[disabled] .btn {\n pointer-events: none;\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: 0.65;\n }\n .btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n }\n .btn-default:hover,\n .btn-default:focus,\n .btn-default.focus,\n .btn-default:active,\n .btn-default.active,\n .open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n }\n .btn-default:active,\n .btn-default.active,\n .open > .dropdown-toggle.btn-default {\n background-image: none;\n }\n .btn-default.disabled,\n .btn-default[disabled],\n fieldset[disabled] .btn-default,\n .btn-default.disabled:hover,\n .btn-default[disabled]:hover,\n fieldset[disabled] .btn-default:hover,\n .btn-default.disabled:focus,\n .btn-default[disabled]:focus,\n fieldset[disabled] .btn-default:focus,\n .btn-default.disabled.focus,\n .btn-default[disabled].focus,\n fieldset[disabled] .btn-default.focus,\n .btn-default.disabled:active,\n .btn-default[disabled]:active,\n fieldset[disabled] .btn-default:active,\n .btn-default.disabled.active,\n .btn-default[disabled].active,\n fieldset[disabled] .btn-default.active {\n background-color: #fff;\n border-color: #ccc;\n }\n .btn-default .badge {\n color: #fff;\n background-color: #333;\n }\n .btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n }\n .btn-primary:hover,\n .btn-primary:focus,\n .btn-primary.focus,\n .btn-primary:active,\n .btn-primary.active,\n .open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n }\n .btn-primary:active,\n .btn-primary.active,\n .open > .dropdown-toggle.btn-primary {\n background-image: none;\n }\n .btn-primary.disabled,\n .btn-primary[disabled],\n fieldset[disabled] .btn-primary,\n .btn-primary.disabled:hover,\n .btn-primary[disabled]:hover,\n fieldset[disabled] .btn-primary:hover,\n .btn-primary.disabled:focus,\n .btn-primary[disabled]:focus,\n fieldset[disabled] .btn-primary:focus,\n .btn-primary.disabled.focus,\n .btn-primary[disabled].focus,\n fieldset[disabled] .btn-primary.focus,\n .btn-primary.disabled:active,\n .btn-primary[disabled]:active,\n fieldset[disabled] .btn-primary:active,\n .btn-primary.disabled.active,\n .btn-primary[disabled].active,\n fieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n }\n .btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n }\n .btn-success:hover,\n .btn-success:focus,\n .btn-success.focus,\n .btn-success:active,\n .btn-success.active,\n .open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n }\n .btn-success:active,\n .btn-success.active,\n .open > .dropdown-toggle.btn-success {\n background-image: none;\n }\n .btn-success.disabled,\n .btn-success[disabled],\n fieldset[disabled] .btn-success,\n .btn-success.disabled:hover,\n .btn-success[disabled]:hover,\n fieldset[disabled] .btn-success:hover,\n .btn-success.disabled:focus,\n .btn-success[disabled]:focus,\n fieldset[disabled] .btn-success:focus,\n .btn-success.disabled.focus,\n .btn-success[disabled].focus,\n fieldset[disabled] .btn-success.focus,\n .btn-success.disabled:active,\n .btn-success[disabled]:active,\n fieldset[disabled] .btn-success:active,\n .btn-success.disabled.active,\n .btn-success[disabled].active,\n fieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n }\n .btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n }\n .btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n }\n .btn-info:hover,\n .btn-info:focus,\n .btn-info.focus,\n .btn-info:active,\n .btn-info.active,\n .open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n }\n .btn-info:active,\n .btn-info.active,\n .open > .dropdown-toggle.btn-info {\n background-image: none;\n }\n .btn-info.disabled,\n .btn-info[disabled],\n fieldset[disabled] .btn-info,\n .btn-info.disabled:hover,\n .btn-info[disabled]:hover,\n fieldset[disabled] .btn-info:hover,\n .btn-info.disabled:focus,\n .btn-info[disabled]:focus,\n fieldset[disabled] .btn-info:focus,\n .btn-info.disabled.focus,\n .btn-info[disabled].focus,\n fieldset[disabled] .btn-info.focus,\n .btn-info.disabled:active,\n .btn-info[disabled]:active,\n fieldset[disabled] .btn-info:active,\n .btn-info.disabled.active,\n .btn-info[disabled].active,\n fieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n }\n .btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n }\n .btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n }\n .btn-warning:hover,\n .btn-warning:focus,\n .btn-warning.focus,\n .btn-warning:active,\n .btn-warning.active,\n .open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n }\n .btn-warning:active,\n .btn-warning.active,\n .open > .dropdown-toggle.btn-warning {\n background-image: none;\n }\n .btn-warning.disabled,\n .btn-warning[disabled],\n fieldset[disabled] .btn-warning,\n .btn-warning.disabled:hover,\n .btn-warning[disabled]:hover,\n fieldset[disabled] .btn-warning:hover,\n .btn-warning.disabled:focus,\n .btn-warning[disabled]:focus,\n fieldset[disabled] .btn-warning:focus,\n .btn-warning.disabled.focus,\n .btn-warning[disabled].focus,\n fieldset[disabled] .btn-warning.focus,\n .btn-warning.disabled:active,\n .btn-warning[disabled]:active,\n fieldset[disabled] .btn-warning:active,\n .btn-warning.disabled.active,\n .btn-warning[disabled].active,\n fieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n }\n .btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n }\n .btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n }\n .btn-danger:hover,\n .btn-danger:focus,\n .btn-danger.focus,\n .btn-danger:active,\n .btn-danger.active,\n .open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n }\n .btn-danger:active,\n .btn-danger.active,\n .open > .dropdown-toggle.btn-danger {\n background-image: none;\n }\n .btn-danger.disabled,\n .btn-danger[disabled],\n fieldset[disabled] .btn-danger,\n .btn-danger.disabled:hover,\n .btn-danger[disabled]:hover,\n fieldset[disabled] .btn-danger:hover,\n .btn-danger.disabled:focus,\n .btn-danger[disabled]:focus,\n fieldset[disabled] .btn-danger:focus,\n .btn-danger.disabled.focus,\n .btn-danger[disabled].focus,\n fieldset[disabled] .btn-danger.focus,\n .btn-danger.disabled:active,\n .btn-danger[disabled]:active,\n fieldset[disabled] .btn-danger:active,\n .btn-danger.disabled.active,\n .btn-danger[disabled].active,\n fieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n }\n .btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n }\n .btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n }\n .btn-link,\n .btn-link:active,\n .btn-link.active,\n .btn-link[disabled],\n fieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .btn-link,\n .btn-link:hover,\n .btn-link:focus,\n .btn-link:active {\n border-color: transparent;\n }\n .btn-link:hover,\n .btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n }\n .btn-link[disabled]:hover,\n fieldset[disabled] .btn-link:hover,\n .btn-link[disabled]:focus,\n fieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n }\n .btn-lg,\n .btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n .btn-sm,\n .btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n .btn-xs,\n .btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n //.btn-block {\n // display: block;\n // width: 100%;\n //}\n //.btn-block + .btn-block {\n // margin-top: 5px;\n //}\n //input[type='submit'].btn-block,\n //input[type='reset'].btn-block,\n //input[type='button'].btn-block {\n // width: 100%;\n //}\n .fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n }\n .fade.in {\n opacity: 1;\n }\n .collapse {\n display: none;\n }\n .collapse.in {\n display: block;\n }\n tr.collapse.in {\n display: table-row;\n }\n tbody.collapse.in {\n display: table-row-group;\n }\n .collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: 0.35s;\n -o-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n }\n .caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n }\n .dropup,\n .dropdown {\n position: relative;\n }\n .dropdown-toggle:focus {\n outline: 0;\n }\n .dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n }\n .dropdown-menu.pull-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n }\n .dropdown-menu > li > a:hover,\n .dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .dropdown-menu > .active > a,\n .dropdown-menu > .active > a:hover,\n .dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n }\n .dropdown-menu > .disabled > a,\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n color: #777;\n }\n .dropdown-menu > .disabled > a:hover,\n .dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n }\n .open > .dropdown-menu {\n display: block;\n }\n .open > a {\n outline: 0;\n }\n .dropdown-menu-right {\n right: 0;\n left: auto;\n }\n .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n .dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n }\n .dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n }\n .pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n }\n .dropup .caret,\n .navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px solid;\n }\n .dropup .dropdown-menu,\n .navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n }\n .btn-group,\n .btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n }\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n position: relative;\n float: left;\n }\n .btn-group > .btn:hover,\n .btn-group-vertical > .btn:hover,\n .btn-group > .btn:focus,\n .btn-group-vertical > .btn:focus,\n .btn-group > .btn:active,\n .btn-group-vertical > .btn:active,\n .btn-group > .btn.active,\n .btn-group-vertical > .btn.active {\n z-index: 2;\n }\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-left: -1px;\n }\n .btn-toolbar {\n margin-left: -5px;\n }\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: left;\n }\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-left: 5px;\n }\n .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n }\n .btn-group > .btn:first-child {\n margin-left: 0;\n }\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group > .btn-group {\n float: left;\n }\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group .dropdown-toggle:active,\n .btn-group.open .dropdown-toggle {\n outline: 0;\n }\n .btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n }\n .btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n }\n .btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n }\n .btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .btn .caret {\n margin-left: 0;\n }\n .btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n }\n .dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n }\n .btn-group-vertical > .btn,\n .btn-group-vertical > .btn-group,\n .btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n .btn-group-vertical > .btn-group > .btn {\n float: none;\n }\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 4px;\n }\n .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n }\n .btn-group-justified > .btn,\n .btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n }\n .btn-group-justified > .btn-group .btn {\n width: 100%;\n }\n .btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n }\n [data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n [data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n [data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n }\n .input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n }\n .input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n }\n .input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n }\n .input-group-lg > .form-control,\n .input-group-lg > .input-group-addon,\n .input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n }\n select.input-group-lg > .form-control,\n select.input-group-lg > .input-group-addon,\n select.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n }\n textarea.input-group-lg > .form-control,\n textarea.input-group-lg > .input-group-addon,\n textarea.input-group-lg > .input-group-btn > .btn,\n select[multiple].input-group-lg > .form-control,\n select[multiple].input-group-lg > .input-group-addon,\n select[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n }\n .input-group-sm > .form-control,\n .input-group-sm > .input-group-addon,\n .input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n }\n select.input-group-sm > .form-control,\n select.input-group-sm > .input-group-addon,\n select.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n }\n textarea.input-group-sm > .form-control,\n textarea.input-group-sm > .input-group-addon,\n textarea.input-group-sm > .input-group-btn > .btn,\n select[multiple].input-group-sm > .form-control,\n select[multiple].input-group-sm > .input-group-addon,\n select[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n }\n .input-group-addon,\n .input-group-btn,\n .input-group .form-control {\n display: table-cell;\n }\n .input-group-addon:not(:first-child):not(:last-child),\n .input-group-btn:not(:first-child):not(:last-child),\n .input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n .input-group-addon,\n .input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n }\n .input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n }\n .input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n }\n .input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n }\n .input-group-addon input[type=\"radio\"],\n .input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n }\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n .input-group-addon:first-child {\n border-right: 0;\n }\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n .input-group-addon:last-child {\n border-left: 0;\n }\n .input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n }\n .input-group-btn > .btn {\n position: relative;\n }\n .input-group-btn > .btn + .btn {\n margin-left: -1px;\n }\n .input-group-btn > .btn:hover,\n .input-group-btn > .btn:focus,\n .input-group-btn > .btn:active {\n z-index: 2;\n }\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n }\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-left: -1px;\n }\n .nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n }\n .nav > li {\n position: relative;\n display: block;\n }\n .nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n }\n .nav > li > a:hover,\n .nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n }\n .nav > li.disabled > a {\n color: #777;\n }\n .nav > li.disabled > a:hover,\n .nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n }\n .nav .open > a,\n .nav .open > a:hover,\n .nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n }\n .nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n }\n .nav > li > a > img {\n max-width: none;\n }\n .nav-tabs {\n border-bottom: 1px solid #ddd;\n }\n .nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n }\n .nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n }\n .nav-tabs > li.active > a,\n .nav-tabs > li.active > a:hover,\n .nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n }\n .nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n }\n .nav-tabs.nav-justified > li {\n float: none;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n }\n .nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n @media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n }\n .nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n }\n @media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n }\n .nav-pills > li {\n float: left;\n }\n .nav-pills > li > a {\n border-radius: 4px;\n }\n .nav-pills > li + li {\n margin-left: 2px;\n }\n .nav-pills > li.active > a,\n .nav-pills > li.active > a:hover,\n .nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n }\n .nav-stacked > li {\n float: none;\n }\n .nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n }\n .nav-justified {\n width: 100%;\n }\n .nav-justified > li {\n float: none;\n }\n .nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n }\n .nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n @media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n }\n .nav-tabs-justified {\n border-bottom: 0;\n }\n .nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n }\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n }\n .tab-content > .tab-pane {\n display: none;\n }\n .tab-content > .active {\n display: block;\n }\n .nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n }\n @media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n }\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n }\n .navbar-collapse.in {\n overflow-y: auto;\n }\n @media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n }\n @media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n }\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n }\n @media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n }\n .navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n }\n @media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n }\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n }\n @media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n }\n .navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n }\n .navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n }\n .navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n }\n .navbar-brand:hover,\n .navbar-brand:focus {\n text-decoration: none;\n }\n .navbar-brand > img {\n display: block;\n }\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n }\n .navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .navbar-toggle:focus {\n outline: 0;\n }\n .navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n @media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n }\n .navbar-nav {\n margin: 7.5px -15px;\n }\n .navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n }\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n }\n .navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n }\n @media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n @media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n }\n .navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n .navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n }\n .navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n }\n .navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n }\n .navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n }\n .navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n }\n .navbar-default .navbar-brand {\n color: #777;\n }\n .navbar-default .navbar-brand:hover,\n .navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n }\n .navbar-default .navbar-text {\n color: #777;\n }\n .navbar-default .navbar-nav > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav > li > a:hover,\n .navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav > .active > a,\n .navbar-default .navbar-nav > .active > a:hover,\n .navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav > .disabled > a,\n .navbar-default .navbar-nav > .disabled > a:hover,\n .navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n .navbar-default .navbar-toggle {\n border-color: #ddd;\n }\n .navbar-default .navbar-toggle:hover,\n .navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n }\n .navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n }\n .navbar-default .navbar-collapse,\n .navbar-default .navbar-form {\n border-color: #e7e7e7;\n }\n .navbar-default .navbar-nav > .open > a,\n .navbar-default .navbar-nav > .open > a:hover,\n .navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n @media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n }\n .navbar-default .navbar-link {\n color: #777;\n }\n .navbar-default .navbar-link:hover {\n color: #333;\n }\n .navbar-default .btn-link {\n color: #777;\n }\n .navbar-default .btn-link:hover,\n .navbar-default .btn-link:focus {\n color: #333;\n }\n .navbar-default .btn-link[disabled]:hover,\n fieldset[disabled] .navbar-default .btn-link:hover,\n .navbar-default .btn-link[disabled]:focus,\n fieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n }\n .navbar-inverse {\n background-color: #222;\n border-color: #080808;\n }\n .navbar-inverse .navbar-brand {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-brand:hover,\n .navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-text {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav > li > a:hover,\n .navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav > .active > a,\n .navbar-inverse .navbar-nav > .active > a:hover,\n .navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav > .disabled > a,\n .navbar-inverse .navbar-nav > .disabled > a:hover,\n .navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n .navbar-inverse .navbar-toggle {\n border-color: #333;\n }\n .navbar-inverse .navbar-toggle:hover,\n .navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n }\n .navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n }\n .navbar-inverse .navbar-collapse,\n .navbar-inverse .navbar-form {\n border-color: #101010;\n }\n .navbar-inverse .navbar-nav > .open > a,\n .navbar-inverse .navbar-nav > .open > a:hover,\n .navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n }\n @media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n }\n .navbar-inverse .navbar-link {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-link:hover {\n color: #fff;\n }\n .navbar-inverse .btn-link {\n color: #9d9d9d;\n }\n .navbar-inverse .btn-link:hover,\n .navbar-inverse .btn-link:focus {\n color: #fff;\n }\n .navbar-inverse .btn-link[disabled]:hover,\n fieldset[disabled] .navbar-inverse .btn-link:hover,\n .navbar-inverse .btn-link[disabled]:focus,\n fieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n }\n .breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n }\n .breadcrumb > li {\n display: inline-block;\n }\n .breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n }\n .breadcrumb > .active {\n color: #777;\n }\n .pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n }\n .pagination > li {\n display: inline;\n }\n .pagination > li > a,\n .pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n }\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n .pagination > li > a:hover,\n .pagination > li > span:hover,\n .pagination > li > a:focus,\n .pagination > li > span:focus {\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n }\n .pagination > .active > a,\n .pagination > .active > span,\n .pagination > .active > a:hover,\n .pagination > .active > span:hover,\n .pagination > .active > a:focus,\n .pagination > .active > span:focus {\n z-index: 2;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .pagination > .disabled > span,\n .pagination > .disabled > span:hover,\n .pagination > .disabled > span:focus,\n .pagination > .disabled > a,\n .pagination > .disabled > a:hover,\n .pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n }\n .pagination-lg > li > a,\n .pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n }\n .pagination-lg > li:first-child > a,\n .pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n }\n .pagination-lg > li:last-child > a,\n .pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n }\n .pagination-sm > li > a,\n .pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n }\n .pagination-sm > li:first-child > a,\n .pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .pagination-sm > li:last-child > a,\n .pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n }\n .pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n }\n .pager li {\n display: inline;\n }\n .pager li > a,\n .pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n }\n .pager li > a:hover,\n .pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n }\n .pager .next > a,\n .pager .next > span {\n float: right;\n }\n .pager .previous > a,\n .pager .previous > span {\n float: left;\n }\n .pager .disabled > a,\n .pager .disabled > a:hover,\n .pager .disabled > a:focus,\n .pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n }\n .label {\n display: inline;\n padding: 0.2em 0.6em 0.3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: 0.25em;\n }\n a.label:hover,\n a.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n }\n .label:empty {\n display: none;\n }\n .btn .label {\n position: relative;\n top: -1px;\n }\n .label-default {\n background-color: #777;\n }\n .label-default[href]:hover,\n .label-default[href]:focus {\n background-color: #5e5e5e;\n }\n .label-primary {\n background-color: #337ab7;\n }\n .label-primary[href]:hover,\n .label-primary[href]:focus {\n background-color: #286090;\n }\n .label-success {\n background-color: #5cb85c;\n }\n .label-success[href]:hover,\n .label-success[href]:focus {\n background-color: #449d44;\n }\n .label-info {\n background-color: #5bc0de;\n }\n .label-info[href]:hover,\n .label-info[href]:focus {\n background-color: #31b0d5;\n }\n .label-warning {\n background-color: #f0ad4e;\n }\n .label-warning[href]:hover,\n .label-warning[href]:focus {\n background-color: #ec971f;\n }\n .label-danger {\n background-color: #d9534f;\n }\n .label-danger[href]:hover,\n .label-danger[href]:focus {\n background-color: #c9302c;\n }\n .badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n background-color: #777;\n border-radius: 10px;\n }\n .badge:empty {\n display: none;\n }\n .btn .badge {\n position: relative;\n top: -1px;\n }\n .btn-xs .badge,\n .btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n }\n a.badge:hover,\n a.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n }\n .list-group-item.active > .badge,\n .nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .list-group-item > .badge {\n float: right;\n }\n .list-group-item > .badge + .badge {\n margin-right: 5px;\n }\n .nav-pills > li > a > .badge {\n margin-left: 3px;\n }\n .jumbotron {\n padding: 30px 15px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n color: inherit;\n }\n .jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n }\n .jumbotron > hr {\n border-top-color: #d5d5d5;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n border-radius: 6px;\n }\n .jumbotron .container {\n max-width: 100%;\n }\n @media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n }\n .thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n }\n .thumbnail > img,\n .thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n }\n a.thumbnail:hover,\n a.thumbnail:focus,\n a.thumbnail.active {\n border-color: #337ab7;\n }\n .thumbnail .caption {\n padding: 9px;\n color: #333;\n }\n .alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n }\n .alert h4 {\n margin-top: 0;\n color: inherit;\n }\n .alert .alert-link {\n font-weight: bold;\n }\n .alert > p,\n .alert > ul {\n margin-bottom: 0;\n }\n .alert > p + p {\n margin-top: 5px;\n }\n .alert-dismissable,\n .alert-dismissible {\n padding-right: 35px;\n }\n .alert-dismissable .close,\n .alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n .alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n }\n .alert-success hr {\n border-top-color: #c9e2b3;\n }\n .alert-success .alert-link {\n color: #2b542c;\n }\n .alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n }\n .alert-info hr {\n border-top-color: #a6e1ec;\n }\n .alert-info .alert-link {\n color: #245269;\n }\n .alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n }\n .alert-warning hr {\n border-top-color: #f7e1b5;\n }\n .alert-warning .alert-link {\n color: #66512c;\n }\n .alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n }\n .alert-danger hr {\n border-top-color: #e4b9c0;\n }\n .alert-danger .alert-link {\n color: #843534;\n }\n //@-webkit-keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //@-o-keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //@keyframes progress-bar-stripes {\n // from {\n // background-position: 40px 0;\n // }\n // to {\n // background-position: 0 0;\n // }\n //}\n //.progress {\n // height: 20px;\n // margin-bottom: 20px;\n // overflow: hidden;\n // background-color: #f5f5f5;\n // border-radius: 4px;\n // -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n // box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n //}\n //.progress-bar {\n // float: left;\n // width: 0;\n // height: 100%;\n // font-size: 12px;\n // line-height: 20px;\n // color: #fff;\n // text-align: center;\n // background-color: #337ab7;\n // -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n // box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n // -webkit-transition: width 0.6s ease;\n // -o-transition: width 0.6s ease;\n // transition: width 0.6s ease;\n //}\n //.progress-striped .progress-bar,\n //.progress-bar-striped {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // -webkit-background-size: 40px 40px;\n // background-size: 40px 40px;\n //}\n //.progress.active .progress-bar,\n //.progress-bar.active {\n // -webkit-animation: progress-bar-stripes 2s linear infinite;\n // -o-animation: progress-bar-stripes 2s linear infinite;\n // animation: progress-bar-stripes 2s linear infinite;\n //}\n //.progress-bar-success {\n // background-color: #5cb85c;\n //}\n //.progress-striped .progress-bar-success {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-info {\n // background-color: #5bc0de;\n //}\n //.progress-striped .progress-bar-info {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-warning {\n // background-color: #f0ad4e;\n //}\n //.progress-striped .progress-bar-warning {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n //.progress-bar-danger {\n // background-color: #d9534f;\n //}\n //.progress-striped .progress-bar-danger {\n // background-image: -webkit-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: -o-linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n // background-image: linear-gradient(\n // 45deg,\n // rgba(255, 255, 255, 0.15) 25%,\n // transparent 25%,\n // transparent 50%,\n // rgba(255, 255, 255, 0.15) 50%,\n // rgba(255, 255, 255, 0.15) 75%,\n // transparent 75%,\n // transparent\n // );\n //}\n .media {\n margin-top: 15px;\n }\n .media:first-child {\n margin-top: 0;\n }\n .media,\n .media-body {\n overflow: hidden;\n zoom: 1;\n }\n .media-body {\n width: 10000px;\n }\n .media-object {\n display: block;\n }\n .media-right,\n .media > .pull-right {\n padding-left: 10px;\n }\n .media-left,\n .media > .pull-left {\n padding-right: 10px;\n }\n .media-left,\n .media-right,\n .media-body {\n display: table-cell;\n vertical-align: top;\n }\n .media-middle {\n vertical-align: middle;\n }\n .media-bottom {\n vertical-align: bottom;\n }\n .media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n }\n .media-list {\n padding-left: 0;\n list-style: none;\n }\n .list-group {\n padding-left: 0;\n margin-bottom: 20px;\n }\n .list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n }\n .list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n .list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n }\n a.list-group-item {\n color: #555;\n }\n a.list-group-item .list-group-item-heading {\n color: #333;\n }\n a.list-group-item:hover,\n a.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n }\n .list-group-item.disabled,\n .list-group-item.disabled:hover,\n .list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n }\n .list-group-item.disabled .list-group-item-heading,\n .list-group-item.disabled:hover .list-group-item-heading,\n .list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n }\n .list-group-item.disabled .list-group-item-text,\n .list-group-item.disabled:hover .list-group-item-text,\n .list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n }\n .list-group-item.active,\n .list-group-item.active:hover,\n .list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .list-group-item.active .list-group-item-heading,\n .list-group-item.active:hover .list-group-item-heading,\n .list-group-item.active:focus .list-group-item-heading,\n .list-group-item.active .list-group-item-heading > small,\n .list-group-item.active:hover .list-group-item-heading > small,\n .list-group-item.active:focus .list-group-item-heading > small,\n .list-group-item.active .list-group-item-heading > .small,\n .list-group-item.active:hover .list-group-item-heading > .small,\n .list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item.active .list-group-item-text,\n .list-group-item.active:hover .list-group-item-text,\n .list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n }\n .list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n }\n a.list-group-item-success {\n color: #3c763d;\n }\n a.list-group-item-success .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-success:hover,\n a.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n }\n a.list-group-item-success.active,\n a.list-group-item-success.active:hover,\n a.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n }\n .list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n }\n a.list-group-item-info {\n color: #31708f;\n }\n a.list-group-item-info .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-info:hover,\n a.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n }\n a.list-group-item-info.active,\n a.list-group-item-info.active:hover,\n a.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n }\n .list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n }\n a.list-group-item-warning {\n color: #8a6d3b;\n }\n a.list-group-item-warning .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-warning:hover,\n a.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n }\n a.list-group-item-warning.active,\n a.list-group-item-warning.active:hover,\n a.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n }\n .list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n }\n a.list-group-item-danger {\n color: #a94442;\n }\n a.list-group-item-danger .list-group-item-heading {\n color: inherit;\n }\n a.list-group-item-danger:hover,\n a.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n }\n a.list-group-item-danger.active,\n a.list-group-item-danger.active:hover,\n a.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n }\n .list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n }\n .list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n }\n .panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n }\n .panel-body {\n padding: 15px;\n }\n .panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n }\n .panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n }\n .panel-title > a,\n .panel-title > small,\n .panel-title > .small,\n .panel-title > small > a,\n .panel-title > .small > a {\n color: inherit;\n }\n .panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .list-group,\n .panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n }\n .panel > .list-group .list-group-item,\n .panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n .panel > .list-group:first-child .list-group-item:first-child,\n .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .list-group:last-child .list-group-item:last-child,\n .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n }\n .list-group + .panel-footer {\n border-top-width: 0;\n }\n .panel > .table,\n .panel > .table-responsive > .table,\n .panel > .panel-collapse > .table {\n margin-bottom: 0;\n }\n .panel > .table caption,\n .panel > .table-responsive > .table caption,\n .panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n }\n .panel > .table:first-child,\n .panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n }\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n }\n .panel > .table:last-child,\n .panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n }\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n }\n .panel > .panel-body + .table,\n .panel > .panel-body + .table-responsive,\n .panel > .table + .panel-body,\n .panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n }\n .panel > .table > tbody:first-child > tr:first-child th,\n .panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n .panel > .table-bordered,\n .panel > .table-responsive > .table-bordered {\n border: 0;\n }\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .panel > .table-bordered > thead > tr:first-child > td,\n .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n .panel > .table-bordered > tbody > tr:first-child > td,\n .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n .panel > .table-bordered > thead > tr:first-child > th,\n .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n .panel > .table-bordered > tbody > tr:first-child > th,\n .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n }\n .panel > .table-bordered > tbody > tr:last-child > td,\n .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .panel > .table-bordered > tfoot > tr:last-child > td,\n .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n .panel > .table-bordered > tbody > tr:last-child > th,\n .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .panel > .table-bordered > tfoot > tr:last-child > th,\n .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n }\n .panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n }\n .panel-group {\n margin-bottom: 20px;\n }\n .panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n }\n .panel-group .panel + .panel {\n margin-top: 5px;\n }\n .panel-group .panel-heading {\n border-bottom: 0;\n }\n .panel-group .panel-heading + .panel-collapse > .panel-body,\n .panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n }\n .panel-group .panel-footer {\n border-top: 0;\n }\n .panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n }\n .panel-default {\n border-color: #ddd;\n }\n .panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n }\n .panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n }\n .panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n }\n .panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n }\n .panel-primary {\n border-color: #337ab7;\n }\n .panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n }\n .panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n }\n .panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n }\n .panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n }\n .panel-success {\n border-color: #d6e9c6;\n }\n .panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n }\n .panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n }\n .panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n }\n .panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n }\n .panel-info {\n border-color: #bce8f1;\n }\n .panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n }\n .panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n }\n .panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n }\n .panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n }\n .panel-warning {\n border-color: #faebcc;\n }\n .panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n }\n .panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n }\n .panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n }\n .panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n }\n .panel-danger {\n border-color: #ebccd1;\n }\n .panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n }\n .panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n }\n .panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n }\n .panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n }\n .embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n }\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object,\n .embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n }\n .embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n .embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n .well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n }\n .well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n }\n .well-lg {\n padding: 24px;\n border-radius: 6px;\n }\n .well-sm {\n padding: 9px;\n border-radius: 3px;\n }\n .close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: 0.2;\n }\n .close:hover,\n .close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n button.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n }\n .modal-open {\n overflow: hidden;\n }\n .modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n }\n .modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n }\n .modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n }\n .modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n }\n .modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n }\n .modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n }\n .modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n }\n .modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n }\n .modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n .modal-header {\n min-height: 16.42857143px;\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n }\n .modal-header .close {\n margin-top: -2px;\n }\n .modal-title {\n margin: 0;\n line-height: 1.42857143;\n }\n //.modal-body {\n // position: relative;\n // padding: 15px;\n //}\n .modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n }\n .modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n }\n .modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n }\n .modal-footer .btn-block + .btn-block {\n margin-left: 0;\n }\n .modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n }\n @media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n }\n @media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n }\n .tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\n filter: alpha(opacity=0);\n opacity: 0;\n }\n .tooltip.in {\n filter: alpha(opacity=90);\n opacity: 0.9;\n }\n .tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n }\n .tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n }\n .tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n }\n .tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n }\n .tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n text-decoration: none;\n background-color: #000;\n border-radius: 4px;\n }\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n }\n .tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n }\n .tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n }\n .tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n }\n .popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n }\n .popover.top {\n margin-top: -10px;\n }\n .popover.right {\n margin-left: 10px;\n }\n .popover.bottom {\n margin-top: 10px;\n }\n .popover.left {\n margin-left: -10px;\n }\n .popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n }\n .popover-content {\n padding: 9px 14px;\n }\n .popover > .arrow,\n .popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n .popover > .arrow {\n border-width: 11px;\n }\n .popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n }\n .popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, 0.25);\n border-bottom-width: 0;\n }\n .popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n }\n .popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, 0.25);\n border-left-width: 0;\n }\n .popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n }\n .popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n }\n .popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n }\n .popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, 0.25);\n }\n .popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n }\n .carousel {\n position: relative;\n }\n .carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n }\n .carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n }\n .carousel-inner > .item > img,\n .carousel-inner > .item > a > img {\n line-height: 1;\n }\n @media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n }\n .carousel-inner > .active,\n .carousel-inner > .next,\n .carousel-inner > .prev {\n display: block;\n }\n .carousel-inner > .active {\n left: 0;\n }\n .carousel-inner > .next,\n .carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n .carousel-inner > .next {\n left: 100%;\n }\n .carousel-inner > .prev {\n left: -100%;\n }\n .carousel-inner > .next.left,\n .carousel-inner > .prev.right {\n left: 0;\n }\n .carousel-inner > .active.left {\n left: -100%;\n }\n .carousel-inner > .active.right {\n left: 100%;\n }\n .carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n filter: alpha(opacity=50);\n opacity: 0.5;\n }\n .carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.5)),\n to(rgba(0, 0, 0, 0.0001))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n }\n .carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -webkit-gradient(\n linear,\n left top,\n right top,\n from(rgba(0, 0, 0, 0.0001)),\n to(rgba(0, 0, 0, 0.5))\n );\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n }\n .carousel-control:hover,\n .carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: 0.9;\n }\n .carousel-control .icon-prev,\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n line-height: 1;\n }\n .carousel-control .icon-prev:before {\n content: \"\\2039\";\n }\n .carousel-control .icon-next:before {\n content: \"\\203a\";\n }\n .carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n }\n .carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n }\n .carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n }\n .carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n }\n .carousel-caption .btn {\n text-shadow: none;\n }\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n }\n .clearfix:before,\n .clearfix:after,\n .dl-horizontal dd:before,\n .dl-horizontal dd:after,\n .container:before,\n .container:after,\n .container-fluid:before,\n .container-fluid:after,\n .row:before,\n .row:after,\n .form-horizontal .form-group:before,\n .form-horizontal .form-group:after,\n .btn-toolbar:before,\n .btn-toolbar:after,\n .btn-group-vertical > .btn-group:before,\n .btn-group-vertical > .btn-group:after,\n .nav:before,\n .nav:after,\n .navbar:before,\n .navbar:after,\n .navbar-header:before,\n .navbar-header:after,\n .navbar-collapse:before,\n .navbar-collapse:after,\n .pager:before,\n .pager:after,\n .panel-body:before,\n .panel-body:after,\n .modal-footer:before,\n .modal-footer:after {\n display: table;\n content: \" \";\n }\n .clearfix:after,\n .dl-horizontal dd:after,\n .container:after,\n .container-fluid:after,\n .row:after,\n .form-horizontal .form-group:after,\n .btn-toolbar:after,\n .btn-group-vertical > .btn-group:after,\n .nav:after,\n .navbar:after,\n .navbar-header:after,\n .navbar-collapse:after,\n .pager:after,\n .panel-body:after,\n .modal-footer:after {\n clear: both;\n }\n .center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n }\n .pull-right {\n float: right !important;\n }\n .pull-left {\n float: left !important;\n }\n .hide {\n display: none !important;\n }\n .show {\n display: block !important;\n }\n .invisible {\n visibility: hidden;\n }\n .text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n }\n .hidden {\n display: none !important;\n }\n .affix {\n position: fixed;\n }\n @-ms-viewport {\n width: device-width;\n }\n .visible-xs,\n .visible-sm,\n .visible-md,\n .visible-lg {\n display: none !important;\n }\n .visible-xs-block,\n .visible-xs-inline,\n .visible-xs-inline-block,\n .visible-sm-block,\n .visible-sm-inline,\n .visible-sm-inline-block,\n .visible-md-block,\n .visible-md-inline,\n .visible-md-inline-block,\n .visible-lg-block,\n .visible-lg-inline,\n .visible-lg-inline-block {\n display: none !important;\n }\n @media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n }\n @media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n }\n @media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n }\n @media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n }\n @media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n }\n @media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n }\n @media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n }\n .visible-print {\n display: none !important;\n }\n @media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n }\n .visible-print-block {\n display: none !important;\n }\n @media print {\n .visible-print-block {\n display: block !important;\n }\n }\n .visible-print-inline {\n display: none !important;\n }\n @media print {\n .visible-print-inline {\n display: inline !important;\n }\n }\n .visible-print-inline-block {\n display: none !important;\n }\n @media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n }\n @media print {\n .hidden-print {\n display: none !important;\n }\n }\n}\n","/*******************************************************************************\n * bootstrap-rtl (version 3.3.4)\n * Author: Morteza Ansarinia (http://github.com/morteza)\n * Created on: August 13,2015\n * Project: bootstrap-rtl\n * Copyright: Unlicensed Public Domain\n *******************************************************************************/\n@mixin bootstrap-rtl() {\n [dir=\"rtl\"] {\n .flip.text-left {\n text-align: right;\n }\n\n .flip.text-right {\n text-align: left;\n }\n\n .list-unstyled {\n padding-right: 0;\n padding-left: initial;\n }\n\n .list-inline {\n padding-right: 0;\n padding-left: initial;\n margin-right: -5px;\n margin-left: 0;\n }\n\n dd {\n margin-right: 0;\n margin-left: initial;\n }\n\n @media (min-width: 768px) {\n .dl-horizontal dt {\n float: right;\n clear: right;\n text-align: left;\n }\n .dl-horizontal dd {\n margin-right: 180px;\n margin-left: 0;\n }\n }\n\n blockquote {\n border-right: 5px solid #eeeeee;\n border-left: 0;\n }\n\n .blockquote-reverse,\n blockquote.pull-left {\n padding-left: 15px;\n padding-right: 0;\n border-left: 5px solid #eeeeee;\n border-right: 0;\n text-align: left;\n }\n\n .col-xs-1,\n .col-sm-1,\n .col-md-1,\n .col-lg-1,\n .col-xs-2,\n .col-sm-2,\n .col-md-2,\n .col-lg-2,\n .col-xs-3,\n .col-sm-3,\n .col-md-3,\n .col-lg-3,\n .col-xs-4,\n .col-sm-4,\n .col-md-4,\n .col-lg-4,\n .col-xs-5,\n .col-sm-5,\n .col-md-5,\n .col-lg-5,\n .col-xs-6,\n .col-sm-6,\n .col-md-6,\n .col-lg-6,\n .col-xs-7,\n .col-sm-7,\n .col-md-7,\n .col-lg-7,\n .col-xs-8,\n .col-sm-8,\n .col-md-8,\n .col-lg-8,\n .col-xs-9,\n .col-sm-9,\n .col-md-9,\n .col-lg-9,\n .col-xs-10,\n .col-sm-10,\n .col-md-10,\n .col-lg-10,\n .col-xs-11,\n .col-sm-11,\n .col-md-11,\n .col-lg-11,\n .col-xs-12,\n .col-sm-12,\n .col-md-12,\n .col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .col-xs-1,\n .col-xs-2,\n .col-xs-3,\n .col-xs-4,\n .col-xs-5,\n .col-xs-6,\n .col-xs-7,\n .col-xs-8,\n .col-xs-9,\n .col-xs-10,\n .col-xs-11,\n .col-xs-12 {\n float: right;\n }\n\n .col-xs-12 {\n width: 100%;\n }\n\n .col-xs-11 {\n width: 91.66666667%;\n }\n\n .col-xs-10 {\n width: 83.33333333%;\n }\n\n .col-xs-9 {\n width: 75%;\n }\n\n .col-xs-8 {\n width: 66.66666667%;\n }\n\n .col-xs-7 {\n width: 58.33333333%;\n }\n\n .col-xs-6 {\n width: 50%;\n }\n\n .col-xs-5 {\n width: 41.66666667%;\n }\n\n .col-xs-4 {\n width: 33.33333333%;\n }\n\n .col-xs-3 {\n width: 25%;\n }\n\n .col-xs-2 {\n width: 16.66666667%;\n }\n\n .col-xs-1 {\n width: 8.33333333%;\n }\n\n .col-xs-pull-12 {\n left: 100%;\n right: auto;\n }\n\n .col-xs-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n\n .col-xs-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n\n .col-xs-pull-9 {\n left: 75%;\n right: auto;\n }\n\n .col-xs-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n\n .col-xs-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n\n .col-xs-pull-6 {\n left: 50%;\n right: auto;\n }\n\n .col-xs-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n\n .col-xs-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n\n .col-xs-pull-3 {\n left: 25%;\n right: auto;\n }\n\n .col-xs-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n\n .col-xs-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n\n .col-xs-pull-0 {\n left: auto;\n right: auto;\n }\n\n .col-xs-push-12 {\n right: 100%;\n left: 0;\n }\n\n .col-xs-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n\n .col-xs-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n\n .col-xs-push-9 {\n right: 75%;\n left: 0;\n }\n\n .col-xs-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n\n .col-xs-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n\n .col-xs-push-6 {\n right: 50%;\n left: 0;\n }\n\n .col-xs-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n\n .col-xs-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n\n .col-xs-push-3 {\n right: 25%;\n left: 0;\n }\n\n .col-xs-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n\n .col-xs-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n\n .col-xs-push-0 {\n right: auto;\n left: 0;\n }\n\n .col-xs-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n\n .col-xs-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n\n .col-xs-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n\n .col-xs-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n\n .col-xs-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n\n .col-xs-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n\n .col-xs-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n\n @media (min-width: 768px) {\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12 {\n float: right;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-sm-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-sm-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-sm-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-sm-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-sm-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-sm-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-sm-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-sm-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-sm-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-sm-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-sm-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-sm-pull-0 {\n left: auto;\n right: auto;\n }\n .col-sm-push-12 {\n right: 100%;\n left: 0;\n }\n .col-sm-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-sm-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-sm-push-9 {\n right: 75%;\n left: 0;\n }\n .col-sm-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-sm-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-sm-push-6 {\n right: 50%;\n left: 0;\n }\n .col-sm-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-sm-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-sm-push-3 {\n right: 25%;\n left: 0;\n }\n .col-sm-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-sm-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-sm-push-0 {\n right: auto;\n left: 0;\n }\n .col-sm-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-sm-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-sm-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-sm-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-sm-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-sm-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-sm-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 992px) {\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12 {\n float: right;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-md-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-md-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-md-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-md-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-md-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-md-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-md-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-md-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-md-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-md-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-md-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-md-pull-0 {\n left: auto;\n right: auto;\n }\n .col-md-push-12 {\n right: 100%;\n left: 0;\n }\n .col-md-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-md-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-md-push-9 {\n right: 75%;\n left: 0;\n }\n .col-md-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-md-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-md-push-6 {\n right: 50%;\n left: 0;\n }\n .col-md-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-md-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-md-push-3 {\n right: 25%;\n left: 0;\n }\n .col-md-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-md-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-md-push-0 {\n right: auto;\n left: 0;\n }\n .col-md-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-md-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-md-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-md-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-md-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-md-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-md-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-md-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-md-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-md-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-md-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-md-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-md-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n @media (min-width: 1200px) {\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12 {\n float: right;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n left: 100%;\n right: auto;\n }\n .col-lg-pull-11 {\n left: 91.66666667%;\n right: auto;\n }\n .col-lg-pull-10 {\n left: 83.33333333%;\n right: auto;\n }\n .col-lg-pull-9 {\n left: 75%;\n right: auto;\n }\n .col-lg-pull-8 {\n left: 66.66666667%;\n right: auto;\n }\n .col-lg-pull-7 {\n left: 58.33333333%;\n right: auto;\n }\n .col-lg-pull-6 {\n left: 50%;\n right: auto;\n }\n .col-lg-pull-5 {\n left: 41.66666667%;\n right: auto;\n }\n .col-lg-pull-4 {\n left: 33.33333333%;\n right: auto;\n }\n .col-lg-pull-3 {\n left: 25%;\n right: auto;\n }\n .col-lg-pull-2 {\n left: 16.66666667%;\n right: auto;\n }\n .col-lg-pull-1 {\n left: 8.33333333%;\n right: auto;\n }\n .col-lg-pull-0 {\n left: auto;\n right: auto;\n }\n .col-lg-push-12 {\n right: 100%;\n left: 0;\n }\n .col-lg-push-11 {\n right: 91.66666667%;\n left: 0;\n }\n .col-lg-push-10 {\n right: 83.33333333%;\n left: 0;\n }\n .col-lg-push-9 {\n right: 75%;\n left: 0;\n }\n .col-lg-push-8 {\n right: 66.66666667%;\n left: 0;\n }\n .col-lg-push-7 {\n right: 58.33333333%;\n left: 0;\n }\n .col-lg-push-6 {\n right: 50%;\n left: 0;\n }\n .col-lg-push-5 {\n right: 41.66666667%;\n left: 0;\n }\n .col-lg-push-4 {\n right: 33.33333333%;\n left: 0;\n }\n .col-lg-push-3 {\n right: 25%;\n left: 0;\n }\n .col-lg-push-2 {\n right: 16.66666667%;\n left: 0;\n }\n .col-lg-push-1 {\n right: 8.33333333%;\n left: 0;\n }\n .col-lg-push-0 {\n right: auto;\n left: 0;\n }\n .col-lg-offset-12 {\n margin-right: 100%;\n margin-left: 0;\n }\n .col-lg-offset-11 {\n margin-right: 91.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-10 {\n margin-right: 83.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-9 {\n margin-right: 75%;\n margin-left: 0;\n }\n .col-lg-offset-8 {\n margin-right: 66.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-7 {\n margin-right: 58.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-6 {\n margin-right: 50%;\n margin-left: 0;\n }\n .col-lg-offset-5 {\n margin-right: 41.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-4 {\n margin-right: 33.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-3 {\n margin-right: 25%;\n margin-left: 0;\n }\n .col-lg-offset-2 {\n margin-right: 16.66666667%;\n margin-left: 0;\n }\n .col-lg-offset-1 {\n margin-right: 8.33333333%;\n margin-left: 0;\n }\n .col-lg-offset-0 {\n margin-right: 0%;\n margin-left: 0;\n }\n }\n\n caption {\n text-align: right;\n }\n\n th:not(.mx-left-aligned) {\n text-align: right;\n }\n\n @media screen and (max-width: 767px) {\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: initial;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-left: 0;\n border-right: initial;\n }\n }\n\n .radio label,\n .checkbox label {\n padding-right: 20px;\n padding-left: initial;\n }\n\n .radio input[type=\"radio\"],\n .radio-inline input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"],\n .checkbox-inline input[type=\"checkbox\"] {\n margin-right: -20px;\n margin-left: auto;\n }\n\n .radio-inline,\n .checkbox-inline {\n padding-right: 20px;\n padding-left: 0;\n }\n\n .radio-inline + .radio-inline,\n .checkbox-inline + .checkbox-inline {\n margin-right: 10px;\n margin-left: 0;\n }\n\n .has-feedback .form-control {\n padding-left: 42.5px;\n padding-right: 12px;\n }\n\n .form-control-feedback {\n left: 0;\n right: auto;\n }\n\n @media (min-width: 768px) {\n .form-inline label {\n padding-right: 0;\n padding-left: initial;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n margin-right: 0;\n margin-left: auto;\n }\n }\n @media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: left;\n }\n }\n\n .form-horizontal .has-feedback .form-control-feedback {\n left: 15px;\n right: auto;\n }\n\n .caret {\n margin-right: 2px;\n margin-left: 0;\n }\n\n .dropdown-menu {\n right: 0;\n left: auto;\n float: left;\n text-align: right;\n }\n\n .dropdown-menu.pull-right {\n left: 0;\n right: auto;\n float: right;\n }\n\n .dropdown-menu-right {\n left: auto;\n right: 0;\n }\n\n .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n\n @media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n }\n\n .btn-group > .btn,\n .btn-group-vertical > .btn {\n float: right;\n }\n\n .btn-group .btn + .btn,\n .btn-group .btn + .btn-group,\n .btn-group .btn-group + .btn,\n .btn-group .btn-group + .btn-group {\n margin-right: -1px;\n margin-left: 0px;\n }\n\n .btn-toolbar {\n margin-right: -5px;\n margin-left: 0px;\n }\n\n .btn-toolbar .btn-group,\n .btn-toolbar .input-group {\n float: right;\n }\n\n .btn-toolbar > .btn,\n .btn-toolbar > .btn-group,\n .btn-toolbar > .input-group {\n margin-right: 5px;\n margin-left: 0px;\n }\n\n .btn-group > .btn:first-child {\n margin-right: 0;\n }\n\n .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .btn-group > .btn:last-child:not(:first-child),\n .btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .btn-group > .btn-group {\n float: right;\n }\n\n .btn-group.btn-group-justified > .btn,\n .btn-group.btn-group-justified > .btn-group {\n float: none;\n }\n\n .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n }\n\n .btn-group > .btn-group:first-child > .btn:last-child,\n .btn-group > .btn-group:first-child > .dropdown-toggle {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .btn-group > .btn-group:last-child > .btn:first-child {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .btn .caret {\n margin-right: 0;\n }\n\n .btn-group-vertical > .btn + .btn,\n .btn-group-vertical > .btn + .btn-group,\n .btn-group-vertical > .btn-group + .btn,\n .btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-right: 0;\n }\n\n .input-group .form-control {\n float: right;\n }\n\n .input-group .form-control:first-child,\n .input-group-addon:first-child,\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group > .btn,\n .input-group-btn:first-child > .dropdown-toggle,\n .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .input-group-addon:first-child {\n border-left: 0px;\n border-right: 1px solid;\n }\n\n .input-group .form-control:last-child,\n .input-group-addon:last-child,\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group > .btn,\n .input-group-btn:last-child > .dropdown-toggle,\n .input-group-btn:first-child > .btn:not(:first-child),\n .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .input-group-addon:last-child {\n border-left-width: 1px;\n border-left-style: solid;\n border-right: 0px;\n }\n\n .input-group-btn > .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .input-group-btn:first-child > .btn,\n .input-group-btn:first-child > .btn-group {\n margin-left: -1px;\n margin-right: auto;\n }\n\n .input-group-btn:last-child > .btn,\n .input-group-btn:last-child > .btn-group {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .nav {\n padding-right: 0;\n padding-left: initial;\n }\n\n .nav-tabs > li {\n float: right;\n }\n\n .nav-tabs > li > a {\n margin-left: auto;\n margin-right: -2px;\n border-radius: 4px 4px 0 0;\n }\n\n .nav-pills > li {\n float: right;\n }\n\n .nav-pills > li > a {\n border-radius: 4px;\n }\n\n .nav-pills > li + li {\n margin-right: 2px;\n margin-left: auto;\n }\n\n .nav-stacked > li {\n float: none;\n }\n\n .nav-stacked > li + li {\n margin-right: 0;\n margin-left: auto;\n }\n\n .nav-justified > .dropdown .dropdown-menu {\n right: auto;\n }\n\n .nav-tabs-justified > li > a {\n margin-left: 0;\n margin-right: auto;\n }\n\n @media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-radius: 4px 4px 0 0;\n }\n }\n @media (min-width: 768px) {\n .navbar-header {\n float: right;\n }\n }\n\n .navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n }\n\n .navbar-brand {\n float: right;\n }\n\n @media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-right: -15px;\n margin-left: auto;\n }\n }\n\n .navbar-toggle {\n float: left;\n margin-left: 15px;\n margin-right: auto;\n }\n\n @media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 25px 5px 15px;\n }\n }\n @media (min-width: 768px) {\n .navbar-nav {\n float: right;\n }\n .navbar-nav > li {\n float: right;\n }\n }\n @media (min-width: 768px) {\n .navbar-left.flip {\n float: right !important;\n }\n .navbar-right:last-child {\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right.flip {\n float: left !important;\n margin-left: -15px;\n margin-right: auto;\n }\n .navbar-right .dropdown-menu {\n left: 0;\n right: auto;\n }\n }\n @media (min-width: 768px) {\n .navbar-text {\n float: right;\n }\n .navbar-text.navbar-right:last-child {\n margin-left: 0;\n margin-right: auto;\n }\n }\n\n .pagination {\n padding-right: 0;\n }\n\n .pagination > li > a,\n .pagination > li > span {\n float: right;\n margin-right: -1px;\n margin-left: 0px;\n }\n\n .pagination > li:first-child > a,\n .pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n\n .pagination > li:last-child > a,\n .pagination > li:last-child > span {\n margin-right: -1px;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n }\n\n .pager {\n padding-right: 0;\n padding-left: initial;\n }\n\n .pager .next > a,\n .pager .next > span {\n float: left;\n }\n\n .pager .previous > a,\n .pager .previous > span {\n float: right;\n }\n\n .nav-pills > li > a > .badge {\n margin-left: 0px;\n margin-right: 3px;\n }\n\n .list-group-item > .badge {\n float: left;\n }\n\n .list-group-item > .badge + .badge {\n margin-left: 5px;\n margin-right: auto;\n }\n\n .alert-dismissable,\n .alert-dismissible {\n padding-left: 35px;\n padding-right: 15px;\n }\n\n .alert-dismissable .close,\n .alert-dismissible .close {\n right: auto;\n left: -21px;\n }\n\n .progress-bar {\n float: right;\n }\n\n .media > .pull-left {\n margin-right: 10px;\n }\n\n .media > .pull-left.flip {\n margin-right: 0;\n margin-left: 10px;\n }\n\n .media > .pull-right {\n margin-left: 10px;\n }\n\n .media > .pull-right.flip {\n margin-left: 0;\n margin-right: 10px;\n }\n\n .media-right,\n .media > .pull-right {\n padding-right: 10px;\n padding-left: initial;\n }\n\n .media-left,\n .media > .pull-left {\n padding-left: 10px;\n padding-right: initial;\n }\n\n .media-list {\n padding-right: 0;\n padding-left: initial;\n list-style: none;\n }\n\n .list-group {\n padding-right: 0;\n padding-left: initial;\n }\n\n .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n .panel\n > .table-responsive:first-child\n > .table:first-child\n > tbody:first-child\n > tr:first-child\n th:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 0;\n }\n\n .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 0;\n }\n\n .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n border-top-right-radius: 0;\n }\n\n .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n border-top-left-radius: 0;\n }\n\n .panel > .table-bordered > thead > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n .panel > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .panel > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .panel > .table-bordered > thead > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n .panel > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .panel > .table-bordered > tfoot > tr > td:first-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-right: 0;\n border-left: none;\n }\n\n .panel > .table-bordered > thead > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n .panel > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .panel > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .panel > .table-bordered > thead > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n .panel > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .panel > .table-bordered > tfoot > tr > td:last-child,\n .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: none;\n border-left: 0;\n }\n\n .embed-responsive .embed-responsive-item,\n .embed-responsive iframe,\n .embed-responsive embed,\n .embed-responsive object {\n right: 0;\n left: auto;\n }\n\n .close {\n float: left;\n }\n\n .modal-footer {\n text-align: left;\n }\n\n .modal-footer.flip {\n text-align: right;\n }\n\n .modal-footer .btn + .btn {\n margin-left: auto;\n margin-right: 5px;\n }\n\n .modal-footer .btn-group .btn + .btn {\n margin-right: -1px;\n margin-left: auto;\n }\n\n .modal-footer .btn-block + .btn-block {\n margin-right: 0;\n margin-left: auto;\n }\n\n .popover {\n left: auto;\n text-align: right;\n }\n\n .popover.top > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n\n .popover.top > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n\n .popover.bottom > .arrow {\n right: 50%;\n left: auto;\n margin-right: -11px;\n margin-left: auto;\n }\n\n .popover.bottom > .arrow:after {\n margin-right: -10px;\n margin-left: auto;\n }\n\n .carousel-control {\n right: 0;\n bottom: 0;\n }\n\n .carousel-control.left {\n right: auto;\n left: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.5) 0%),\n color-stop(rgba(0, 0, 0, 0.0001) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n }\n\n .carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(\n left,\n color-stop(rgba(0, 0, 0, 0.0001) 0%),\n color-stop(rgba(0, 0, 0, 0.5) 100%)\n );\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n }\n\n .carousel-control .icon-prev,\n .carousel-control .glyphicon-chevron-left {\n left: 50%;\n right: auto;\n margin-right: -10px;\n }\n\n .carousel-control .icon-next,\n .carousel-control .glyphicon-chevron-right {\n right: 50%;\n left: auto;\n margin-left: -10px;\n }\n\n .carousel-indicators {\n right: 50%;\n left: 0;\n margin-right: -30%;\n margin-left: 0;\n padding-left: 0;\n }\n\n @media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-left: 0;\n margin-right: -15px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n }\n\n .pull-right.flip {\n float: left !important;\n }\n\n .pull-left.flip {\n float: right !important;\n }\n }\n}\n","/* @preserve\n Copyright (c) 2005-2016, Mendix bv. All rights reserved.\n See mxclientsystem/licenses.txt for third party licenses that apply.\n*/\n\n/*\n\tEssential styles that themes can inherit.\n\tIn other words, works but doesn't look great.\n*/\n\n@mixin mxui() {\n /****\n\t\tGENERIC PIECES\n ****/\n\n .dijitReset {\n /* Use this style to null out padding, margin, border in your template elements\n\t\tso that page specific styles don't break them.\n\t\t- Use in all TABLE, TR and TD tags.\n\t*/\n margin: 0;\n border: 0;\n padding: 0;\n font: inherit;\n line-height: normal;\n color: inherit;\n }\n .dj_a11y .dijitReset {\n -moz-appearance: none; /* remove predefined high-contrast styling in Firefox */\n }\n\n .dijitInline {\n /* To inline block elements.\n\t\tSimilar to InlineBox below, but this has fewer side-effects in Moz.\n\t\tAlso, apparently works on a DIV as well as a FIELDSET.\n\t*/\n display: inline-block; /* webkit and FF3 */\n border: 0;\n padding: 0;\n vertical-align: middle;\n }\n\n table.dijitInline {\n /* To inline tables with a given width set */\n display: inline-table;\n box-sizing: content-box;\n }\n\n .dijitHidden {\n /* To hide unselected panes in StackContainer etc. */\n position: absolute; /* remove from normal document flow to simulate display: none */\n visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */\n }\n .dijitHidden * {\n visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */\n }\n\n .dijitVisible {\n /* To show selected pane in StackContainer etc. */\n display: block !important; /* override user's display:none setting via style setting or indirectly via class */\n position: relative; /* to support setting width/height, see #2033 */\n visibility: visible;\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n /* for positioning of placeHolder */\n overflow: hidden;\n float: none !important; /* needed to squeeze the INPUT in */\n position: relative;\n }\n .dj_ie7 .dijitInputContainer {\n float: left !important; /* needed by IE to squeeze the INPUT in */\n clear: left;\n display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */\n }\n\n .dj_ie .dijitSelect input,\n .dj_ie input.dijitTextBox,\n .dj_ie .dijitTextBox input {\n font-size: 100%;\n }\n .dijitSelect .dijitButtonText {\n float: left;\n vertical-align: top;\n }\n table.dijitSelect {\n padding: 0 !important; /* messes up border alignment */\n border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */\n }\n .dijitTextBox .dijitSpinnerButtonContainer,\n .dijitTextBox .dijitArrowButtonContainer,\n .dijitValidationTextBox .dijitValidationContainer {\n float: right;\n text-align: center;\n }\n .dijitSelect input.dijitInputField,\n .dijitTextBox input.dijitInputField {\n /* override unreasonable user styling of buttons and icons */\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .dijitValidationTextBox .dijitValidationContainer {\n display: none;\n }\n\n .dijitTeeny {\n font-size: 1px;\n line-height: 1px;\n }\n\n .dijitOffScreen {\n /* these class attributes should supersede any inline positioning style */\n position: absolute !important;\n left: -10000px !important;\n top: -10000px !important;\n }\n\n /*\n * Popup items have a wrapper div (dijitPopup)\n * with the real popup inside, and maybe an iframe too\n */\n .dijitPopup {\n position: absolute;\n background-color: transparent;\n margin: 0;\n border: 0;\n padding: 0;\n -webkit-overflow-scrolling: touch;\n }\n\n .dijitPositionOnly {\n /* Null out all position-related properties */\n padding: 0 !important;\n border: 0 !important;\n background-color: transparent !important;\n background-image: none !important;\n height: auto !important;\n width: auto !important;\n }\n\n .dijitNonPositionOnly {\n /* Null position-related properties */\n float: none !important;\n position: static !important;\n margin: 0 0 0 0 !important;\n vertical-align: middle !important;\n }\n\n .dijitBackgroundIframe {\n /* iframe used to prevent problems with PDF or other applets overlaying menus etc */\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .dijitDisplayNone {\n /* hide something. Use this as a class rather than element.style so another class can override */\n display: none !important;\n }\n\n .dijitContainer {\n /* for all layout containers */\n overflow: hidden; /* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */\n }\n\n /****\n\t\tA11Y\n ****/\n .dj_a11y .dijitIcon,\n .dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner? if so, it should be deleted */\n .dj_a11y span.dijitArrowButtonInner,\n .dj_a11y img.dijitArrowButtonInner,\n .dj_a11y .dijitCalendarIncrementControl,\n .dj_a11y .dijitTreeExpando {\n /* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents\n\t * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */\n display: none;\n }\n .dijitSpinner div.dijitArrowButtonInner {\n display: block; /* override previous rule */\n }\n\n .dj_a11y .dijitA11ySideArrow {\n display: inline !important; /* display text instead */\n cursor: pointer;\n }\n\n /*\n * Since we can't use shading in a11y mode, and since the underline indicates today's date,\n * use a border to show the selected date.\n * Avoid screen jitter when switching selected date by compensating for the selected node's\n * border w/padding on other nodes.\n */\n .dj_a11y .dijitCalendarDateLabel {\n padding: 1px;\n border: 0px !important;\n }\n .dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {\n border-style: solid !important;\n border-width: 1px !important;\n padding: 0;\n }\n .dj_a11y .dijitCalendarDateTemplate {\n padding-bottom: 0.1em !important; /* otherwise bottom border doesn't appear on IE */\n border: 0px !important;\n }\n .dj_a11y .dijitButtonNode {\n border: black outset medium !important;\n\n /* In claro, hovering a toolbar button reduces padding and adds a border.\n\t * Not needed in a11y mode since Toolbar buttons always have a border.\n\t */\n padding: 0 !important;\n }\n .dj_a11y .dijitArrowButton {\n padding: 0 !important;\n }\n\n .dj_a11y .dijitButtonContents {\n margin: 0.15em; /* Margin needed to make focus outline visible */\n }\n\n .dj_a11y .dijitTextBoxReadOnly .dijitInputField,\n .dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {\n border-style: outset !important;\n border-width: medium !important;\n border-color: #999 !important;\n color: #999 !important;\n }\n\n /* button inner contents - labels, icons etc. */\n .dijitButtonNode * {\n vertical-align: middle;\n }\n .dijitSelect .dijitArrowButtonInner,\n .dijitButtonNode .dijitArrowButtonInner {\n /* the arrow icon node */\n background: no-repeat center;\n width: 12px;\n height: 12px;\n direction: ltr; /* needed by IE/RTL */\n }\n\n /****\n\t3-element borders: ( dijitLeft + dijitStretch + dijitRight )\n\tThese were added for rounded corners on dijit.form.*Button but never actually used.\n ****/\n\n .dijitLeft {\n /* Left part of a 3-element border */\n background-position: left top;\n background-repeat: no-repeat;\n }\n\n .dijitStretch {\n /* Middle (stretchy) part of a 3-element border */\n white-space: nowrap; /* MOW: move somewhere else */\n background-repeat: repeat-x;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n background-position: right top;\n background-repeat: no-repeat;\n }\n\n /* Buttons */\n .dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {\n opacity: 0.5;\n }\n\n .dijitToggleButton,\n .dijitButton,\n .dijitDropDownButton,\n .dijitComboButton {\n /* outside of button */\n margin: 0.2em;\n vertical-align: middle;\n }\n\n .dijitButtonContents {\n display: block; /* to make focus border rectangular */\n }\n td.dijitButtonContents {\n display: table-cell; /* but don't affect Select, ComboButton */\n }\n\n .dijitButtonNode img {\n /* make text and images line up cleanly */\n vertical-align: middle;\n /*margin-bottom:.2em;*/\n }\n\n .dijitToolbar .dijitComboButton {\n /* because Toolbar only draws a border around the hovered thing */\n border-collapse: separate;\n }\n\n .dijitToolbar .dijitToggleButton,\n .dijitToolbar .dijitButton,\n .dijitToolbar .dijitDropDownButton,\n .dijitToolbar .dijitComboButton {\n margin: 0;\n }\n\n .dijitToolbar .dijitButtonContents {\n /* just because it used to be this way */\n padding: 1px 2px;\n }\n\n .dj_webkit .dijitToolbar .dijitDropDownButton {\n padding-left: 0.3em;\n }\n .dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {\n padding: 0;\n }\n\n .dijitSelect {\n border: 1px solid gray;\n }\n .dijitButtonNode {\n /* Node that is acting as a button -- may or may not be a BUTTON element */\n border: 1px solid gray;\n margin: 0;\n line-height: normal;\n vertical-align: middle;\n text-align: center;\n white-space: nowrap;\n }\n .dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {\n /* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)\n\tcan be different than just a single line-height:normal, visible in InlineEditBox/Spinner */\n line-height: inherit;\n }\n .dijitTextBox .dijitButtonNode {\n border-width: 0;\n }\n\n .dijitSelect,\n .dijitSelect *,\n .dijitButtonNode,\n .dijitButtonNode * {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dj_ie .dijitButtonNode {\n /* ensure hasLayout */\n zoom: 1;\n }\n\n .dj_ie .dijitButtonNode button {\n /*\n\t\tdisgusting hack to get rid of spurious padding around button elements\n\t\ton IE. MSIE is truly the web's boat anchor.\n\t*/\n overflow: visible;\n }\n\n div.dijitArrowButton {\n float: right;\n }\n\n /******\n\tTextBox related.\n\tEverything that has an \n*******/\n\n .dijitTextBox {\n border: solid black 1px;\n width: 15em; /* need to set default size on outer node since inner nodes say and
    . user can override */\n vertical-align: middle;\n }\n\n .dijitTextBoxReadOnly,\n .dijitTextBoxDisabled {\n color: gray;\n }\n .dj_safari .dijitTextBoxDisabled input {\n color: #b0b0b0; /* because Safari lightens disabled input/textarea no matter what color you specify */\n }\n .dj_safari textarea.dijitTextAreaDisabled {\n color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */\n }\n .dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */\n .dj_gecko .dijitTextBoxDisabled input {\n -moz-user-input: none; /* prevent focus of disabled textbox buttons */\n }\n\n .dijitPlaceHolder {\n /* hint text that appears in a textbox until user starts typing */\n color: #aaaaaa;\n font-style: italic;\n position: absolute;\n top: 0;\n left: 0;\n white-space: nowrap;\n pointer-events: none; /* so cut/paste context menu shows up when right clicking */\n }\n\n .dijitTimeTextBox {\n width: 8em;\n }\n\n /* rules for webkit to deal with fuzzy blue focus border */\n .dijitTextBox input:focus {\n outline: none; /* blue fuzzy line looks wrong on combobox or something w/validation icon showing */\n }\n .dijitTextBoxFocused {\n outline: 5px -webkit-focus-ring-color;\n }\n\n .dijitSelect input,\n .dijitTextBox input {\n float: left; /* needed by IE to remove secret margin */\n }\n .dj_ie6 input.dijitTextBox,\n .dj_ie6 .dijitTextBox input {\n float: none;\n }\n .dijitInputInner {\n /* for when an is embedded inside an inline-block
    with a size and border */\n border: 0 !important;\n background-color: transparent !important;\n width: 100% !important;\n /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */\n padding-left: 0 !important;\n padding-right: 0 !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .dj_a11y .dijitTextBox input {\n margin: 0 !important;\n }\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n /* used to display arrow icon/validation icon, or in arrow character in high contrast mode.\n\t * The css below is a trick to hide the character in non-high-contrast mode\n\t */\n text-indent: -2em !important;\n direction: ltr !important;\n text-align: left !important;\n height: auto !important;\n }\n .dj_ie .dijitSelect input,\n .dj_ie .dijitTextBox input,\n .dj_ie input.dijitTextBox {\n overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */\n line-height: normal; /* strict mode */\n }\n .dijitSelect .dijitSelectLabel span {\n line-height: 100%;\n }\n .dj_ie .dijitSelect .dijitSelectLabel {\n line-height: normal;\n }\n .dj_ie6 .dijitSelect .dijitSelectLabel,\n .dj_ie7 .dijitSelect .dijitSelectLabel,\n .dj_ie8 .dijitSelect .dijitSelectLabel,\n .dj_iequirks .dijitSelect .dijitSelectLabel,\n .dijitSelect td,\n .dj_ie6 .dijitSelect input,\n .dj_iequirks .dijitSelect input,\n .dj_ie6 .dijitSelect .dijitValidationContainer,\n .dj_ie6 .dijitTextBox input,\n .dj_ie6 input.dijitTextBox,\n .dj_iequirks .dijitTextBox input.dijitValidationInner,\n .dj_iequirks .dijitTextBox input.dijitArrowButtonInner,\n .dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,\n .dj_iequirks .dijitTextBox input.dijitInputInner,\n .dj_iequirks input.dijitTextBox {\n line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */\n }\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n /* (in high contrast mode) revert rules from above so character displays */\n text-indent: 0 !important;\n width: 1em !important;\n color: black !important;\n }\n .dijitValidationTextBoxError .dijitValidationContainer {\n display: inline;\n cursor: default;\n }\n\n /* ComboBox & Spinner */\n\n .dijitSpinner .dijitSpinnerButtonContainer,\n .dijitComboBox .dijitArrowButtonContainer {\n /* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n border-width: 0 0 0 1px !important; /* !important needed due to wayward \".theme .dijitButtonNode\" rules */\n }\n .dj_a11y .dijitSelect .dijitArrowButtonContainer,\n .dijitToolbar .dijitComboBox .dijitArrowButtonContainer {\n /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */\n border-width: 0 !important;\n }\n\n .dijitComboBoxMenu {\n /* Drop down menu is implemented as
    • ... but we don't want circles before each item */\n list-style-type: none;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n /* dividing line between input area and up/down button(s) for ComboBox and Spinner */\n border-width: 0;\n }\n .dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {\n clear: both; /* IE workaround */\n }\n\n .dj_ie .dijitToolbar .dijitComboBox {\n /* make combobox buttons align properly with other buttons in a toolbar */\n vertical-align: middle;\n }\n\n /* Spinner */\n\n .dijitTextBox .dijitSpinnerButtonContainer {\n width: 1em;\n position: relative !important;\n overflow: hidden;\n }\n .dijitSpinner .dijitSpinnerButtonInner {\n width: 1em;\n visibility: hidden !important; /* just a sizing element */\n overflow-x: hidden;\n }\n .dijitComboBox .dijitButtonNode,\n .dijitSpinnerButtonContainer .dijitButtonNode {\n border-width: 0;\n }\n .dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {\n border-width: 0px !important;\n border-style: solid !important;\n }\n .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,\n .dj_a11y .dijitSpinner .dijitArrowButtonInner,\n .dj_a11y .dijitSpinnerButtonContainer input {\n width: 1em !important;\n }\n .dj_a11y .dijitSpinner .dijitArrowButtonInner {\n margin: 0 auto !important; /* should auto-center */\n }\n .dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n padding-left: 0.3em !important;\n padding-right: 0.3em !important;\n margin-left: 0.3em !important;\n margin-right: 0.3em !important;\n width: 1.4em !important;\n }\n .dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */\n padding-right: 0 !important;\n width: 1em !important;\n }\n .dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n margin-left: 0.1em !important;\n margin-right: 0.1em !important;\n width: 1em !important;\n }\n .dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n margin-left: 0 !important;\n margin-right: 0 !important;\n width: 2em !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings\n\t * for dijit.form.Button\n\t */\n padding: 0;\n position: absolute !important;\n right: 0;\n float: none;\n height: 50%;\n width: 100%;\n bottom: auto;\n left: 0;\n right: auto;\n }\n .dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: auto;\n }\n .dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {\n overflow: visible !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {\n top: 50%;\n border-top-width: 1px !important;\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n top: 0;\n }\n .dijitSpinner .dijitArrowButtonInner {\n margin: auto;\n overflow-x: hidden;\n height: 100% !important;\n }\n .dj_iequirks .dijitSpinner .dijitArrowButtonInner {\n height: auto !important;\n }\n .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n transform: scale(0.5);\n transform-origin: left top;\n padding-top: 0;\n padding-bottom: 0;\n padding-left: 0 !important;\n padding-right: 0 !important;\n width: 100%;\n visibility: hidden;\n }\n .dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n zoom: 50%; /* emulate transform: scale(0.5) */\n }\n .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {\n overflow: hidden;\n }\n\n .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: 100%;\n }\n .dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {\n width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */\n }\n .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {\n vertical-align: top;\n visibility: visible;\n }\n .dj_a11y .dijitSpinnerButtonContainer {\n width: 1em;\n }\n\n /****\n\t\tdijit.form.CheckBox\n \t &\n \t\tdijit.form.RadioButton\n ****/\n\n .dijitCheckBox,\n .dijitRadio,\n .dijitCheckBoxInput {\n padding: 0;\n border: 0;\n width: 16px;\n height: 16px;\n background-position: center center;\n background-repeat: no-repeat;\n overflow: hidden;\n }\n\n .dijitCheckBox input,\n .dijitRadio input {\n margin: 0;\n padding: 0;\n display: block;\n }\n\n .dijitCheckBoxInput {\n /* place the actual input on top, but invisible */\n opacity: 0;\n }\n\n .dj_ie .dijitCheckBoxInput {\n filter: alpha(opacity=0);\n }\n\n .dj_a11y .dijitCheckBox,\n .dj_a11y .dijitRadio {\n /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */\n width: auto !important;\n height: auto !important;\n }\n .dj_a11y .dijitCheckBoxInput {\n opacity: 1;\n filter: none;\n width: auto;\n height: auto;\n }\n\n .dj_a11y .dijitFocusedLabel {\n /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/\n border: 1px dotted;\n outline: 0px !important;\n }\n\n /****\n\t\tdijit.ProgressBar\n ****/\n\n .dijitProgressBar {\n z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */\n }\n .dijitProgressBarEmpty {\n /* outer container and background of the bar that's not finished yet*/\n position: relative;\n overflow: hidden;\n border: 1px solid black; /* a11y: border necessary for high-contrast mode */\n z-index: 0; /* establish a stacking context for this progress bar */\n }\n\n .dijitProgressBarFull {\n /* outer container for background of bar that is finished */\n position: absolute;\n overflow: hidden;\n z-index: -1;\n top: 0;\n width: 100%;\n }\n .dj_ie6 .dijitProgressBarFull {\n height: 1.6em;\n }\n\n .dijitProgressBarTile {\n /* inner container for finished portion */\n position: absolute;\n overflow: hidden;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: 0;\n padding: 0;\n width: 100%; /* needed for IE/quirks */\n height: auto;\n background-color: #aaa;\n background-attachment: fixed;\n }\n\n .dj_a11y .dijitProgressBarTile {\n /* a11y: The border provides visibility in high-contrast mode */\n border-width: 2px;\n border-style: solid;\n background-color: transparent !important;\n }\n\n .dj_ie6 .dijitProgressBarTile {\n /* width:auto works in IE6 with position:static but not position:absolute */\n position: static;\n /* height:auto or 100% does not work in IE6 */\n height: 1.6em;\n }\n\n .dijitProgressBarIndeterminate .dijitProgressBarTile {\n /* animated gif for 'indeterminate' mode */\n }\n\n .dijitProgressBarIndeterminateHighContrastImage {\n display: none;\n }\n\n .dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n height: auto;\n }\n\n .dijitProgressBarLabel {\n display: block;\n position: static;\n width: 100%;\n text-align: center;\n background-color: transparent !important;\n }\n\n /****\n\t\tdijit.Tooltip\n ****/\n\n .dijitTooltip {\n position: absolute;\n z-index: 2000;\n display: block;\n /* make visible but off screen */\n left: 0;\n top: -10000px;\n overflow: visible;\n }\n\n .dijitTooltipContainer {\n border: solid black 2px;\n background: #b8b5b5;\n color: black;\n font-size: small;\n }\n\n .dijitTooltipFocusNode {\n padding: 2px 2px 2px 2px;\n }\n\n .dijitTooltipConnector {\n position: absolute;\n }\n .dj_a11y .dijitTooltipConnector {\n display: none; /* won't show b/c it's background-image; hide to avoid border gap */\n }\n\n .dijitTooltipData {\n display: none;\n }\n\n /* Layout widgets. This is essential CSS to make layout work (it isn't \"styling\" CSS)\n make sure that the position:absolute in dijitAlign* overrides other classes */\n\n .dijitLayoutContainer {\n position: relative;\n display: block;\n overflow: hidden;\n }\n\n .dijitAlignTop,\n .dijitAlignBottom,\n .dijitAlignLeft,\n .dijitAlignRight {\n position: absolute;\n overflow: hidden;\n }\n\n body .dijitAlignClient {\n position: absolute;\n }\n\n /*\n * BorderContainer\n *\n * .dijitBorderContainer is a stylized layout where panes have border and margin.\n * .dijitBorderContainerNoGutter is a raw layout.\n */\n .dijitBorderContainer,\n .dijitBorderContainerNoGutter {\n position: relative;\n overflow: hidden;\n z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */\n }\n\n .dijitBorderContainerPane,\n .dijitBorderContainerNoGutterPane {\n position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */\n z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */\n }\n\n .dijitBorderContainer > .dijitTextArea {\n /* On Safari, for SimpleTextArea inside a BorderContainer,\n\t\tdon't want to display the grip to resize */\n resize: none;\n }\n\n .dijitGutter {\n /* gutter is just a place holder for empty space between panes in BorderContainer */\n position: absolute;\n font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */\n }\n\n /* SplitContainer\n\n\t'V' == container that splits vertically (up/down)\n\t'H' = horizontal (left/right)\n*/\n\n .dijitSplitter {\n position: absolute;\n overflow: hidden;\n z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/\n background-color: #fff;\n border-color: gray;\n border-style: solid;\n border-width: 0;\n }\n .dj_ie .dijitSplitter {\n z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */\n }\n\n .dijitSplitterActive {\n z-index: 11 !important;\n }\n\n .dijitSplitterCover {\n position: absolute;\n z-index: -1;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n\n .dijitSplitterCoverActive {\n z-index: 3 !important;\n }\n\n /* #6945: stop mouse events */\n .dj_ie .dijitSplitterCover {\n background: white;\n opacity: 0;\n }\n .dj_ie6 .dijitSplitterCover,\n .dj_ie7 .dijitSplitterCover,\n .dj_ie8 .dijitSplitterCover {\n filter: alpha(opacity=0);\n }\n\n .dijitSplitterH {\n height: 7px;\n border-top: 1px;\n border-bottom: 1px;\n cursor: row-resize;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitSplitterV {\n width: 7px;\n border-left: 1px;\n border-right: 1px;\n cursor: col-resize;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitSplitContainer {\n position: relative;\n overflow: hidden;\n display: block;\n }\n\n .dijitSplitPane {\n position: absolute;\n }\n\n .dijitSplitContainerSizerH,\n .dijitSplitContainerSizerV {\n position: absolute;\n font-size: 1px;\n background-color: ThreeDFace;\n border: 1px solid;\n border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight;\n margin: 0;\n }\n\n .dijitSplitContainerSizerH .thumb,\n .dijitSplitterV .dijitSplitterThumb {\n overflow: hidden;\n position: absolute;\n top: 49%;\n }\n\n .dijitSplitContainerSizerV .thumb,\n .dijitSplitterH .dijitSplitterThumb {\n position: absolute;\n left: 49%;\n }\n\n .dijitSplitterShadow,\n .dijitSplitContainerVirtualSizerH,\n .dijitSplitContainerVirtualSizerV {\n font-size: 1px;\n background-color: ThreeDShadow;\n opacity: 0.5;\n margin: 0;\n }\n\n .dijitSplitContainerSizerH,\n .dijitSplitContainerVirtualSizerH {\n cursor: col-resize;\n }\n\n .dijitSplitContainerSizerV,\n .dijitSplitContainerVirtualSizerV {\n cursor: row-resize;\n }\n\n .dj_a11y .dijitSplitterH {\n border-top: 1px solid #d3d3d3 !important;\n border-bottom: 1px solid #d3d3d3 !important;\n }\n .dj_a11y .dijitSplitterV {\n border-left: 1px solid #d3d3d3 !important;\n border-right: 1px solid #d3d3d3 !important;\n }\n\n /* ContentPane */\n\n .dijitContentPane {\n display: block;\n overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */\n -webkit-overflow-scrolling: touch;\n }\n\n .dijitContentPaneSingleChild {\n /*\n\t * if the ContentPane holds a single layout widget child which is being sized to match the content pane,\n\t * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449\n\t */\n overflow: hidden;\n }\n\n .dijitContentPaneLoading .dijitIconLoading,\n .dijitContentPaneError .dijitIconError {\n margin-right: 9px;\n }\n\n /* TitlePane and Fieldset */\n\n .dijitTitlePane {\n display: block;\n overflow: hidden;\n }\n .dijitFieldset {\n border: 1px solid gray;\n }\n .dijitTitlePaneTitle,\n .dijitFieldsetTitle {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitTitlePaneTitleFixedOpen,\n .dijitTitlePaneTitleFixedClosed,\n .dijitFieldsetTitleFixedOpen,\n .dijitFieldsetTitleFixedClosed {\n /* TitlePane or Fieldset that cannot be toggled */\n cursor: default;\n }\n .dijitTitlePaneTitle * {\n vertical-align: middle;\n }\n .dijitTitlePane .dijitArrowNodeInner,\n .dijitFieldset .dijitArrowNodeInner {\n /* normally, hide arrow text in favor of icon */\n display: none;\n }\n .dj_a11y .dijitTitlePane .dijitArrowNodeInner,\n .dj_a11y .dijitFieldset .dijitArrowNodeInner {\n /* ... except in a11y mode, then show text arrow */\n display: inline;\n font-family: monospace; /* because - and + are different widths */\n }\n .dj_a11y .dijitTitlePane .dijitArrowNode,\n .dj_a11y .dijitFieldset .dijitArrowNode {\n /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */\n display: none;\n }\n .dijitTitlePaneTitleFixedOpen .dijitArrowNode,\n .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,\n .dijitTitlePaneTitleFixedClosed .dijitArrowNode,\n .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,\n .dijitFieldsetTitleFixedOpen .dijitArrowNode,\n .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,\n .dijitFieldsetTitleFixedClosed .dijitArrowNode,\n .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {\n /* don't show the open close icon or text arrow; it makes the user think the pane is closable */\n display: none !important; /* !important to override above a11y rules to show text arrow */\n }\n\n .dj_ie6 .dijitTitlePaneContentOuter,\n .dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {\n /* force hasLayout to ensure borders etc, show up */\n zoom: 1;\n }\n\n /* Color Palette\n * Sizes designed so that table cell positions match icons in underlying image,\n * which appear at 20x20 intervals.\n */\n\n .dijitColorPalette {\n border: 1px solid #999;\n background: #fff;\n position: relative;\n }\n\n .dijitColorPalette .dijitPaletteTable {\n /* Table that holds the palette cells, and overlays image file with color swatches.\n\t * padding/margin to align table with image.\n\t */\n padding: 2px 3px 3px 3px;\n position: relative;\n overflow: hidden;\n outline: 0;\n border-collapse: separate;\n }\n .dj_ie6 .dijitColorPalette .dijitPaletteTable,\n .dj_ie7 .dijitColorPalette .dijitPaletteTable,\n .dj_iequirks .dijitColorPalette .dijitPaletteTable {\n /* using padding above so that focus border isn't cutoff on moz/webkit,\n\t * but using margin on IE because padding doesn't seem to work\n\t */\n padding: 0;\n margin: 2px 3px 3px 3px;\n }\n\n .dijitColorPalette .dijitPaletteCell {\n /*
    in the */\n font-size: 1px;\n vertical-align: middle;\n text-align: center;\n background: none;\n }\n .dijitColorPalette .dijitPaletteImg {\n /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */\n padding: 1px; /* white area between gray border and color swatch */\n border: 1px solid #999;\n margin: 2px 1px;\n cursor: default;\n font-size: 1px; /* prevent from getting bigger just to hold a character */\n }\n .dj_gecko .dijitColorPalette .dijitPaletteImg {\n padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */\n }\n .dijitColorPalette .dijitColorPaletteSwatch {\n /* the actual part where the color is */\n width: 14px;\n height: 12px;\n }\n .dijitPaletteTable td {\n padding: 0;\n }\n .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {\n /* hovered color swatch */\n border: 1px solid #000;\n }\n\n .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,\n .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {\n border: 2px solid #000;\n margin: 1px 0; /* reduce margin to compensate for increased border */\n }\n\n .dj_a11y .dijitColorPalette .dijitPaletteTable,\n .dj_a11y .dijitColorPalette .dijitPaletteTable * {\n /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */\n background-color: transparent !important;\n }\n\n /* AccordionContainer */\n\n .dijitAccordionContainer {\n border: 1px solid #b7b7b7;\n border-top: 0 !important;\n }\n .dijitAccordionTitle {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitAccordionTitleSelected {\n cursor: default;\n }\n\n /* images off, high-contrast mode styles */\n .dijitAccordionTitle .arrowTextUp,\n .dijitAccordionTitle .arrowTextDown {\n display: none;\n font-size: 0.65em;\n font-weight: normal !important;\n }\n\n .dj_a11y .dijitAccordionTitle .arrowTextUp,\n .dj_a11y .dijitAccordionTitleSelected .arrowTextDown {\n display: inline;\n }\n\n .dj_a11y .dijitAccordionTitleSelected .arrowTextUp {\n display: none;\n }\n\n .dijitAccordionChildWrapper {\n /* this is the node whose height is adjusted */\n overflow: hidden;\n }\n\n /* Calendar */\n\n .dijitCalendarContainer table {\n width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */\n clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */\n }\n .dijitCalendarContainer th,\n .dijitCalendarContainer td {\n padding: 0;\n vertical-align: middle;\n }\n\n .dijitCalendarMonthContainer {\n text-align: center;\n }\n .dijitCalendarDecrementArrow {\n float: left;\n }\n .dijitCalendarIncrementArrow {\n float: right;\n }\n\n .dijitCalendarYearLabel {\n white-space: nowrap; /* make sure previous, current, and next year appear on same row */\n }\n\n .dijitCalendarNextYear {\n margin: 0 0 0 0.55em;\n }\n\n .dijitCalendarPreviousYear {\n margin: 0 0.55em 0 0;\n }\n\n .dijitCalendarIncrementControl {\n vertical-align: middle;\n }\n\n .dijitCalendarIncrementControl,\n .dijitCalendarDateTemplate,\n .dijitCalendarMonthLabel,\n .dijitCalendarPreviousYear,\n .dijitCalendarNextYear {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitCalendarDisabledDate {\n color: gray;\n text-decoration: line-through;\n cursor: default;\n }\n\n .dijitSpacer {\n /* don't display it, but make it affect the width */\n position: relative;\n height: 1px;\n overflow: hidden;\n visibility: hidden;\n }\n\n /* Styling for month drop down list */\n\n .dijitCalendarMonthMenu .dijitCalendarMonthLabel {\n text-align: center;\n }\n\n /* Menu */\n\n .dijitMenu {\n border: 1px solid black;\n background-color: white;\n }\n .dijitMenuTable {\n border-collapse: collapse;\n border-width: 0;\n background-color: white;\n }\n\n /* workaround for webkit bug #8427, remove this when it is fixed upstream */\n .dj_webkit .dijitMenuTable td[colspan=\"2\"] {\n border-right: hidden;\n }\n\n .dijitMenuItem {\n text-align: left;\n white-space: nowrap;\n padding: 0.1em 0.2em;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n /*\nNo need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected\nrule below that handles the high contrast case when there's no shading.\nHiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779.\n*/\n .dijitMenuItem:focus {\n outline: none;\n }\n\n .dijitMenuPassive .dijitMenuItemHover,\n .dijitMenuItemSelected {\n /*\n\t * dijitMenuItemHover refers to actual mouse over\n\t * dijitMenuItemSelected is used after a menu has been \"activated\" by\n\t * clicking it, tabbing into it, or being opened from a parent menu,\n\t * and denotes that the menu item has focus or that focus is on a child\n\t * menu\n\t */\n background-color: black;\n color: white;\n }\n\n .dijitMenuItemIcon,\n .dijitMenuExpand {\n background-repeat: no-repeat;\n }\n\n .dijitMenuItemDisabled * {\n /* for a disabled menu item, just set it to mostly transparent */\n opacity: 0.5;\n cursor: default;\n }\n .dj_ie .dj_a11y .dijitMenuItemDisabled,\n .dj_ie .dj_a11y .dijitMenuItemDisabled *,\n .dj_ie .dijitMenuItemDisabled * {\n color: gray;\n filter: alpha(opacity=35);\n }\n\n .dijitMenuItemLabel {\n vertical-align: middle;\n }\n\n .dj_a11y .dijitMenuItemSelected {\n border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */\n }\n\n .dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {\n border-width: 1px;\n border-style: solid;\n }\n .dj_ie8 .dj_a11y .dijitMenuItemLabel {\n position: static;\n }\n\n .dijitMenuExpandA11y {\n display: none;\n }\n .dj_a11y .dijitMenuExpandA11y {\n display: inline;\n }\n\n .dijitMenuSeparator td {\n border: 0;\n padding: 0;\n }\n\n /* separator can be two pixels -- set border of either one to 0 to have only one */\n .dijitMenuSeparatorTop {\n height: 50%;\n margin: 0;\n margin-top: 3px;\n font-size: 1px;\n }\n\n .dijitMenuSeparatorBottom {\n height: 50%;\n margin: 0;\n margin-bottom: 3px;\n font-size: 1px;\n }\n\n /* CheckedMenuItem and RadioMenuItem */\n .dijitMenuItemIconChar {\n display: none; /* don't display except in high contrast mode */\n visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */\n }\n .dj_a11y .dijitMenuItemIconChar {\n display: inline; /* display character in high contrast mode, since icon doesn't show */\n }\n .dijitCheckedMenuItemChecked .dijitMenuItemIconChar,\n .dijitRadioMenuItemChecked .dijitMenuItemIconChar {\n visibility: visible; /* menuitem is checked */\n }\n .dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {\n /* so bottom border of MenuBar appears on IE7 in high-contrast mode */\n margin: 0;\n }\n\n /* StackContainer */\n\n .dijitStackController .dijitToggleButtonChecked * {\n cursor: default; /* because pressing it has no effect */\n }\n\n /***\nTabContainer\n\nMain class hierarchy:\n\n.dijitTabContainer - the whole TabContainer\n .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons\n\t .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width)\n\t\t.nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width)\n .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs\n***/\n\n .dijitTabContainer {\n z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */\n overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */\n }\n .dj_ie6 .dijitTabContainer {\n /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */\n overflow: hidden;\n }\n .dijitTabContainerNoLayout {\n width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */\n }\n\n .dijitTabContainerBottom-tabs,\n .dijitTabContainerTop-tabs,\n .dijitTabContainerLeft-tabs,\n .dijitTabContainerRight-tabs {\n z-index: 1;\n overflow: visible !important; /* so tabs can cover up border adjacent to container */\n }\n\n .dijitTabController {\n z-index: 1;\n }\n .dijitTabContainerBottom-container,\n .dijitTabContainerTop-container,\n .dijitTabContainerLeft-container,\n .dijitTabContainerRight-container {\n z-index: 0;\n overflow: hidden;\n border: 1px solid black;\n }\n .nowrapTabStrip {\n width: 50000px;\n display: block;\n position: relative;\n text-align: left; /* just in case ancestor has non-standard setting */\n z-index: 1;\n }\n .dijitTabListWrapper {\n overflow: hidden;\n z-index: 1;\n }\n\n .dj_a11y .tabStripButton img {\n /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */\n display: none;\n }\n\n .dijitTabContainerTop-tabs {\n border-bottom: 1px solid black;\n }\n .dijitTabContainerTop-container {\n border-top: 0;\n }\n\n .dijitTabContainerLeft-tabs {\n border-right: 1px solid black;\n float: left; /* needed for IE7 RTL mode */\n }\n .dijitTabContainerLeft-container {\n border-left: 0;\n }\n\n .dijitTabContainerBottom-tabs {\n border-top: 1px solid black;\n }\n .dijitTabContainerBottom-container {\n border-bottom: 0;\n }\n\n .dijitTabContainerRight-tabs {\n border-left: 1px solid black;\n float: left; /* needed for IE7 RTL mode */\n }\n .dijitTabContainerRight-container {\n border-right: 0;\n }\n\n div.dijitTabDisabled,\n .dj_ie div.dijitTabDisabled {\n cursor: auto;\n }\n\n .dijitTab {\n position: relative;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n white-space: nowrap;\n z-index: 3;\n }\n .dijitTab * {\n /* make tab icons and close icon line up w/text */\n vertical-align: middle;\n }\n .dijitTabChecked {\n cursor: default; /* because clicking will have no effect */\n }\n\n .dijitTabContainerTop-tabs .dijitTab {\n top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */\n }\n .dijitTabContainerBottom-tabs .dijitTab {\n top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */\n }\n .dijitTabContainerLeft-tabs .dijitTab {\n left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */\n }\n .dijitTabContainerRight-tabs .dijitTab {\n left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n /* Inline-block */\n display: inline-block; /* webkit and FF3 */\n }\n\n .tabStripButton {\n z-index: 12;\n }\n\n .dijitTabButtonDisabled .tabStripButton {\n display: none;\n }\n\n .dijitTabCloseButton {\n margin-left: 1em;\n }\n\n .dijitTabCloseText {\n display: none;\n }\n\n .dijitTab .tabLabel {\n /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font.\n\t * assumes <=15px height for close button icon.\n\t */\n min-height: 15px;\n display: inline-block;\n }\n .dijitNoIcon {\n /* applied to / node when there is no icon specified */\n display: none;\n }\n .dj_ie6 .dijitTab .dijitNoIcon {\n /* because min-height (on .tabLabel, above) doesn't work on IE6 */\n display: inline;\n height: 15px;\n width: 1px;\n }\n\n /* images off, high-contrast mode styles */\n\n .dj_a11y .dijitTabCloseButton {\n background-image: none !important;\n width: auto !important;\n height: auto !important;\n }\n\n .dj_a11y .dijitTabCloseText {\n display: inline;\n }\n\n .dijitTabPane,\n .dijitStackContainer-child,\n .dijitAccordionContainer-child {\n /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders\n\t * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself.\n\t */\n border: none !important;\n }\n\n /* InlineEditBox */\n .dijitInlineEditBoxDisplayMode {\n border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */\n cursor: text;\n }\n\n .dj_a11y .dijitInlineEditBoxDisplayMode,\n .dj_ie6 .dijitInlineEditBoxDisplayMode {\n /* except that IE6 doesn't support transparent borders, nor does high contrast mode */\n border: none;\n }\n\n .dijitInlineEditBoxDisplayModeHover,\n .dj_a11y .dijitInlineEditBoxDisplayModeHover,\n .dj_ie6 .dijitInlineEditBoxDisplayModeHover {\n /* An InlineEditBox in view mode (click this to edit the text) */\n background-color: #e2ebf2;\n border: solid 1px black;\n }\n\n .dijitInlineEditBoxDisplayModeDisabled {\n cursor: default;\n }\n\n /* Tree */\n .dijitTree {\n overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitTreeContainer {\n float: left; /* for correct highlighting during horizontal scroll, see #16132 */\n }\n\n .dijitTreeIndent {\n /* amount to indent each tree node (relative to parent node) */\n width: 19px;\n }\n\n .dijitTreeRow,\n .dijitTreeContent {\n white-space: nowrap;\n }\n\n .dj_ie .dijitTreeLabel:focus {\n /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */\n outline: 1px dotted black;\n }\n\n .dijitTreeRow img {\n /* make the expando and folder icons line up with the label */\n vertical-align: middle;\n }\n\n .dijitTreeContent {\n cursor: default;\n }\n\n .dijitExpandoText {\n display: none;\n }\n\n .dj_a11y .dijitExpandoText {\n display: inline;\n padding-left: 10px;\n padding-right: 10px;\n font-family: monospace;\n border-style: solid;\n border-width: thin;\n cursor: pointer;\n }\n\n .dijitTreeLabel {\n margin: 0 4px;\n }\n\n /* Dialog */\n\n .dijitDialog {\n position: absolute;\n z-index: 999;\n overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */\n }\n\n .dijitDialogTitleBar {\n cursor: move;\n }\n .dijitDialogFixed .dijitDialogTitleBar {\n cursor: default;\n }\n .dijitDialogCloseIcon {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitDialogPaneContent {\n -webkit-overflow-scrolling: touch;\n }\n .dijitDialogUnderlayWrapper {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 998;\n display: none;\n background: transparent !important;\n }\n\n .dijitDialogUnderlay {\n background: #eee;\n opacity: 0.5;\n }\n\n .dj_ie .dijitDialogUnderlay {\n filter: alpha(opacity=50);\n }\n\n /* images off, high-contrast mode styles */\n .dj_a11y .dijitSpinnerButtonContainer,\n .dj_a11y .dijitDialog {\n opacity: 1 !important;\n background-color: white !important;\n }\n\n .dijitDialog .closeText {\n display: none;\n /* for the onhover border in high contrast on IE: */\n position: absolute;\n }\n\n .dj_a11y .dijitDialog .closeText {\n display: inline;\n }\n\n /* Slider */\n\n .dijitSliderMoveable {\n z-index: 99;\n position: absolute !important;\n display: block;\n vertical-align: middle;\n }\n\n .dijitSliderMoveableH {\n right: 0;\n }\n .dijitSliderMoveableV {\n right: 50%;\n }\n\n .dj_a11y div.dijitSliderImageHandle,\n .dijitSliderImageHandle {\n margin: 0;\n padding: 0;\n position: relative !important;\n border: 8px solid gray;\n width: 0;\n height: 0;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dj_iequirks .dj_a11y .dijitSliderImageHandle {\n font-size: 0;\n }\n .dj_ie7 .dijitSliderImageHandle {\n overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */\n }\n .dj_ie7 .dj_a11y .dijitSliderImageHandle {\n overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */\n }\n .dj_a11y .dijitSliderFocused .dijitSliderImageHandle {\n border: 4px solid #000;\n height: 8px;\n width: 8px;\n }\n\n .dijitSliderImageHandleV {\n top: -8px;\n right: -50%;\n }\n\n .dijitSliderImageHandleH {\n left: 50%;\n top: -5px;\n vertical-align: top;\n }\n\n .dijitSliderBar {\n border-style: solid;\n border-color: black;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitSliderBarContainerV {\n position: relative;\n height: 100%;\n z-index: 1;\n }\n\n .dijitSliderBarContainerH {\n position: relative;\n z-index: 1;\n }\n\n .dijitSliderBarH {\n height: 4px;\n border-width: 1px 0;\n }\n\n .dijitSliderBarV {\n width: 4px;\n border-width: 0 1px;\n }\n\n .dijitSliderProgressBar {\n background-color: red;\n z-index: 1;\n }\n\n .dijitSliderProgressBarV {\n position: static !important;\n height: 0;\n vertical-align: top;\n text-align: left;\n }\n\n .dijitSliderProgressBarH {\n position: absolute !important;\n width: 0;\n vertical-align: middle;\n overflow: visible;\n }\n\n .dijitSliderRemainingBar {\n overflow: hidden;\n background-color: transparent;\n z-index: 1;\n }\n\n .dijitSliderRemainingBarV {\n height: 100%;\n text-align: left;\n }\n\n .dijitSliderRemainingBarH {\n width: 100% !important;\n }\n\n /* the slider bumper is the space consumed by the slider handle when it hangs over an edge */\n .dijitSliderBumper {\n overflow: hidden;\n z-index: 1;\n }\n\n .dijitSliderBumperV {\n width: 4px;\n height: 8px;\n border-width: 0 1px;\n }\n\n .dijitSliderBumperH {\n width: 8px;\n height: 4px;\n border-width: 1px 0;\n }\n\n .dijitSliderBottomBumper,\n .dijitSliderLeftBumper {\n background-color: red;\n }\n\n .dijitSliderTopBumper,\n .dijitSliderRightBumper {\n background-color: transparent;\n }\n\n .dijitSliderDecoration {\n text-align: center;\n }\n\n .dijitSliderDecorationC,\n .dijitSliderDecorationV {\n position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */\n }\n\n .dijitSliderDecorationH {\n width: 100%;\n }\n\n .dijitSliderDecorationV {\n height: 100%;\n white-space: nowrap;\n }\n\n .dijitSliderButton {\n font-family: monospace;\n margin: 0;\n padding: 0;\n display: block;\n }\n\n .dj_a11y .dijitSliderButtonInner {\n visibility: visible !important;\n }\n\n .dijitSliderButtonContainer {\n text-align: center;\n height: 0; /* ??? */\n }\n .dijitSliderButtonContainer * {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n\n .dijitSlider .dijitButtonNode {\n padding: 0;\n display: block;\n }\n\n .dijitRuleContainer {\n position: relative;\n overflow: visible;\n }\n\n .dijitRuleContainerV {\n height: 100%;\n line-height: 0;\n float: left;\n text-align: left;\n }\n\n .dj_opera .dijitRuleContainerV {\n line-height: 2%;\n }\n\n .dj_ie .dijitRuleContainerV {\n line-height: normal;\n }\n\n .dj_gecko .dijitRuleContainerV {\n margin: 0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */\n }\n\n .dijitRuleMark {\n position: absolute;\n border: 1px solid black;\n line-height: 0;\n height: 100%;\n }\n\n .dijitRuleMarkH {\n width: 0;\n border-top-width: 0 !important;\n border-bottom-width: 0 !important;\n border-left-width: 0 !important;\n }\n\n .dijitRuleLabelContainer {\n position: absolute;\n }\n\n .dijitRuleLabelContainerH {\n text-align: center;\n display: inline-block;\n }\n\n .dijitRuleLabelH {\n position: relative;\n left: -50%;\n }\n\n .dijitRuleLabelV {\n /* so that long labels don't overflow to multiple rows, or overwrite slider itself */\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .dijitRuleMarkV {\n height: 0;\n border-right-width: 0 !important;\n border-bottom-width: 0 !important;\n border-left-width: 0 !important;\n width: 100%;\n left: 0;\n }\n\n .dj_ie .dijitRuleLabelContainerV {\n margin-top: -0.55em;\n }\n\n .dj_a11y .dijitSliderReadOnly,\n .dj_a11y .dijitSliderDisabled {\n opacity: 0.6;\n }\n .dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,\n .dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {\n filter: alpha(opacity=40);\n }\n\n /* + and - Slider buttons: override theme settings to display icons */\n .dj_a11y .dijitSlider .dijitSliderButtonContainer div {\n font-family: monospace; /* otherwise hyphen is larger and more vertically centered */\n font-size: 1em;\n line-height: 1em;\n height: auto;\n width: auto;\n margin: 0 4px;\n }\n\n /* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */\n .dj_a11y .dijitButtonContents .dijitButtonText,\n .dj_a11y .dijitTab .tabLabel {\n display: inline !important;\n }\n .dj_a11y .dijitSelect .dijitButtonText {\n display: inline-block !important;\n }\n\n /* TextArea, SimpleTextArea */\n .dijitTextArea {\n width: 100%;\n overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */\n }\n .dijitTextArea[cols] {\n width: auto; /* SimpleTextArea cols */\n }\n .dj_ie .dijitTextAreaCols {\n width: auto;\n }\n\n .dijitExpandingTextArea {\n /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */\n resize: none;\n }\n\n /* Toolbar\n * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file.\n */\n\n .dijitToolbarSeparator {\n height: 18px;\n width: 5px;\n padding: 0 1px;\n margin: 0;\n }\n\n /* Editor */\n .dijitIEFixedToolbar {\n position: absolute;\n /* top:0; */\n top: expression(eval((document.documentElement||document.body) .scrollTop));\n }\n\n .dijitEditor {\n display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */\n }\n\n .dijitEditorDisabled,\n .dijitEditorReadOnly {\n color: gray;\n }\n\n /* TimePicker */\n\n .dijitTimePicker {\n background-color: white;\n }\n .dijitTimePickerItem {\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n }\n .dijitTimePickerItemHover {\n background-color: gray;\n color: white;\n }\n .dijitTimePickerItemSelected {\n font-weight: bold;\n color: #333;\n background-color: #b7cdee;\n }\n .dijitTimePickerItemDisabled {\n color: gray;\n text-decoration: line-through;\n }\n\n .dijitTimePickerItemInner {\n text-align: center;\n border: 0;\n padding: 2px 8px 2px 8px;\n }\n\n .dijitTimePickerTick,\n .dijitTimePickerMarker {\n border-bottom: 1px solid gray;\n }\n\n .dijitTimePicker .dijitDownArrowButton {\n border-top: none !important;\n }\n\n .dijitTimePickerTick {\n color: #ccc;\n }\n\n .dijitTimePickerMarker {\n color: black;\n background-color: #ccc;\n }\n\n .dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {\n border: solid 4px black;\n }\n .dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {\n border: dashed 4px black;\n }\n\n .dijitToggleButtonIconChar {\n /* character (instead of icon) to show that ToggleButton is checked */\n display: none !important;\n }\n .dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {\n display: inline !important;\n visibility: hidden;\n }\n .dj_ie6 .dijitToggleButtonIconChar,\n .dj_ie6 .tabStripButton .dijitButtonText {\n font-family: \"Arial Unicode MS\"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */\n }\n .dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {\n display: inline !important; /* In high contrast mode, display the check symbol */\n visibility: visible !important;\n }\n\n .dijitArrowButtonChar {\n display: none !important;\n }\n .dj_a11y .dijitArrowButtonChar {\n display: inline !important;\n }\n\n .dj_a11y .dijitDropDownButton .dijitArrowButtonInner,\n .dj_a11y .dijitComboButton .dijitArrowButtonInner {\n display: none !important;\n }\n\n /* Select */\n .dj_a11y .dijitSelect {\n border-collapse: separate !important;\n border-width: 1px;\n border-style: solid;\n }\n .dj_ie .dijitSelect {\n vertical-align: middle; /* Set this back for what we hack in dijit inline */\n }\n .dj_ie6 .dijitSelect .dijitValidationContainer,\n .dj_ie8 .dijitSelect .dijitButtonText {\n vertical-align: top;\n }\n .dj_ie6 .dijitTextBox .dijitInputContainer,\n .dj_iequirks .dijitTextBox .dijitInputContainer,\n .dj_ie6 .dijitTextBox .dijitArrowButtonInner,\n .dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,\n .dijitSelect .dijitSelectLabel {\n vertical-align: baseline;\n }\n\n .dijitNumberTextBox {\n text-align: left;\n direction: ltr;\n }\n\n .dijitNumberTextBox .dijitInputInner {\n text-align: inherit; /* input */\n }\n\n .dijitNumberTextBox input.dijitInputInner,\n .dijitCurrencyTextBox input.dijitInputInner,\n .dijitSpinner input.dijitInputInner {\n text-align: right;\n }\n\n .dj_ie8 .dijitNumberTextBox input.dijitInputInner,\n .dj_ie9 .dijitNumberTextBox input.dijitInputInner,\n .dj_ie8 .dijitCurrencyTextBox input.dijitInputInner,\n .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,\n .dj_ie8 .dijitSpinner input.dijitInputInner,\n .dj_ie9 .dijitSpinner input.dijitInputInner {\n /* workaround bug where caret invisible in empty textboxes */\n padding-right: 1px !important;\n }\n\n .dijitToolbar .dijitSelect {\n margin: 0;\n }\n .dj_webkit .dijitToolbar .dijitSelect {\n padding-left: 0.3em;\n }\n .dijitSelect .dijitButtonContents {\n padding: 0;\n white-space: nowrap;\n text-align: left;\n border-style: none solid none none;\n border-width: 1px;\n }\n .dijitSelectFixedWidth .dijitButtonContents {\n width: 100%;\n }\n\n .dijitSelectMenu .dijitMenuItemIcon {\n /* avoid blank area in left side of menu (since we have no icons) */\n display: none;\n }\n .dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,\n .dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {\n /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */\n position: static;\n }\n\n /* Fix the baseline of our label (for multi-size font elements) */\n .dijitSelectLabel * {\n vertical-align: baseline;\n }\n\n /* Styling for the currently-selected option (rich text can mess this up) */\n .dijitSelectSelectedOption * {\n font-weight: bold;\n }\n\n /* Fix the styling of the dropdown menu to be more combobox-like */\n .dijitSelectMenu {\n border-width: 1px;\n }\n\n /* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */\n .dijitForceStatic {\n position: static !important;\n }\n\n /**** Disabled cursor *****/\n .dijitReadOnly *,\n .dijitDisabled *,\n .dijitReadOnly,\n .dijitDisabled {\n /* a region the user would be able to click on, but it's disabled */\n cursor: default;\n }\n\n /* Drag and Drop */\n .dojoDndItem {\n padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */\n\n /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */\n -webkit-touch-callout: none;\n -webkit-user-select: none; /* Disable selection/Copy of UIWebView */\n }\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline-block;\n }\n\n .dojoDndItemBefore,\n .dojoDndItemAfter {\n border: 0px solid #369;\n }\n .dojoDndItemBefore {\n border-width: 2px 0 0 0;\n padding: 0 2px 2px 2px;\n }\n .dojoDndItemAfter {\n border-width: 0 0 2px 0;\n padding: 2px 2px 0 2px;\n }\n .dojoDndHorizontal .dojoDndItemBefore {\n border-width: 0 0 0 2px;\n padding: 2px 2px 2px 0;\n }\n .dojoDndHorizontal .dojoDndItemAfter {\n border-width: 0 2px 0 0;\n padding: 2px 0 2px 2px;\n }\n\n .dojoDndItemOver {\n cursor: pointer;\n }\n .dj_gecko .dijitArrowButtonInner input,\n .dj_gecko input.dijitArrowButtonInner {\n -moz-user-focus: ignore;\n }\n .dijitFocused .dijitMenuItemShortcutKey {\n text-decoration: underline;\n }\n\n /* Dijit custom styling */\n .dijitBorderContainer {\n height: 350px;\n }\n .dijitTooltipContainer {\n background: #fff;\n border: 1px solid #ccc;\n border-radius: 6px;\n }\n .dijitContentPane {\n box-sizing: content-box;\n overflow: auto !important;\n /* Widgets like the data grid pass their scroll\n offset to the parent if there is not enough room to display a scroll bar\n in the widget itself, so do not hide the overflow. */\n }\n\n /* Global Bootstrap changes */\n\n /* Client defaults and helpers */\n .mx-dataview-content,\n .mx-tabcontainer-content,\n .mx-grid-content {\n -webkit-overflow-scrolling: touch;\n }\n html,\n body,\n #content,\n #root {\n height: 100%;\n }\n #content > .mx-page,\n #root > .mx-page {\n width: 100%;\n min-height: 100%;\n }\n\n .mx-left-aligned {\n text-align: left;\n }\n .mx-right-aligned {\n text-align: right;\n }\n .mx-center-aligned {\n text-align: center;\n }\n\n .mx-table {\n width: 100%;\n }\n .mx-table th,\n .mx-table td {\n padding: 8px;\n vertical-align: top;\n }\n .mx-table th.nopadding,\n .mx-table td.nopadding {\n padding: 0;\n }\n\n .mx-offscreen {\n /* When position relative is not set IE doesn't properly render when this class is removed\n * with the effect that elements are not displayed or are not clickable.\n */\n position: relative;\n height: 0;\n overflow: hidden;\n }\n\n .mx-ie-event-shield {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n }\n\n .mx-swipe-navigation-progress {\n position: absolute;\n height: 54px;\n width: 54px;\n top: calc(50% - 27px);\n left: calc(50% - 27px);\n background: url(resources/swipe-progress.gif);\n }\n\n /* Bacause we use checkboxes without labels, align them with other widgets. */\n input[type=\"checkbox\"] {\n margin: 9px 0;\n }\n\n .mx-checkbox input[type=\"checkbox\"] {\n margin-left: 0;\n margin-right: 8px;\n position: static;\n }\n\n .form-vertical .form-group.mx-checkbox input[type=\"checkbox\"] {\n display: block;\n }\n\n .form-vertical .form-group.mx-checkbox.label-after input[type=\"checkbox\"] {\n display: inline-block;\n }\n\n .form-horizontal .form-group.no-columns {\n padding-left: 15px;\n padding-right: 15px;\n }\n\n .mx-radiobuttons.inline .radio {\n display: inline-block;\n margin-right: 20px;\n }\n\n .mx-radiobuttons .radio input[type=\"radio\"] {\n /* Reset bootstrap rules */\n position: static;\n margin-right: 8px;\n margin-left: 0;\n }\n\n .mx-radiobuttons .radio label {\n /* Reset bootstrap rules */\n padding-left: 0;\n }\n\n .alert {\n margin-top: 8px;\n margin-bottom: 10px;\n white-space: pre-line;\n }\n\n //.mx-compound-control {\n // display: flex;\n //}\n\n //.mx-compound-control button {\n // margin-left: 5px;\n //}\n //\n //[dir=\"rtl\"] .mx-compound-control button {\n // margin-left: 0;\n // margin-right: 5px;\n //}\n\n .mx-tooltip {\n margin: 10px;\n }\n .mx-tooltip-content {\n width: 400px;\n overflow-y: auto;\n }\n .mx-tooltip-prepare {\n height: 24px;\n padding: 8px;\n background: transparent url(resources/ttp.gif) no-repeat scroll center center;\n }\n .mx-tooltip-content .table th,\n .mx-tooltip-content .table td {\n padding: 2px 8px;\n }\n\n .mx-tabcontainer-pane {\n height: 100%;\n }\n .mx-tabcontainer-content.loading {\n min-height: 48px;\n background: url(resources/tabcontainer-loading.gif) no-repeat center center;\n background-size: 32px 32px;\n }\n .mx-tabcontainer-tabs {\n margin-bottom: 8px;\n }\n .mx-tabcontainer-tabs li {\n position: relative;\n }\n .mx-tabcontainer-indicator {\n position: absolute;\n background: #f2dede;\n border-radius: 8px;\n color: #b94a48;\n top: 0px;\n right: -5px;\n width: 16px;\n height: 16px;\n line-height: 16px;\n text-align: center;\n vertical-align: middle;\n font-size: 10px;\n font-weight: 600;\n z-index: 1; /* indicator should not hide behind other tab */\n }\n\n /* base structure */\n .mx-grid {\n padding: 8px;\n overflow: hidden; /* to prevent any margin from escaping grid and foobaring our size calculations */\n }\n .mx-grid-controlbar,\n .mx-grid-searchbar {\n display: flex;\n justify-content: space-between;\n flex-wrap: wrap;\n }\n .mx-grid-controlbar .mx-button,\n .mx-grid-search-controls .mx-button {\n margin-bottom: 8px;\n }\n\n .mx-grid-search-controls .mx-button + .mx-button,\n .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0.3em;\n }\n\n [dir=\"rtl\"] .mx-grid-search-controls .mx-button + .mx-button,\n [dir=\"rtl\"] .mx-grid-controlbar .mx-button + .mx-button {\n margin-left: 0;\n margin-right: 0.3em;\n }\n\n .mx-grid-pagingbar,\n .mx-grid-search-controls {\n display: flex;\n white-space: nowrap;\n align-items: baseline;\n margin-left: auto;\n }\n\n .mx-grid-toolbar,\n .mx-grid-search-inputs {\n margin-right: 5px;\n flex: 1;\n }\n\n [dir=\"rtl\"] .mx-grid-toolbar,\n [dir=\"rtl\"] .mx-grid-search-inputs {\n margin-left: 5px;\n margin-right: 0px;\n }\n [dir=\"rtl\"] .mx-grid-pagingbar,\n [dir=\"rtl\"] .mx-grid-search-controls {\n margin-left: 0px;\n margin-right: auto;\n }\n\n .mx-grid-paging-status {\n padding: 0 8px 5px;\n }\n\n /* search fields */\n .mx-grid-search-item {\n display: inline-block;\n vertical-align: top;\n margin-bottom: 8px;\n }\n .mx-grid-search-label {\n width: 110px;\n padding: 0 5px;\n text-align: right;\n display: inline-block;\n vertical-align: top;\n overflow: hidden;\n }\n [dir=\"rtl\"] .mx-grid-search-label {\n text-align: left;\n }\n .mx-grid-search-input {\n width: 150px;\n padding: 0 5px;\n display: inline-block;\n vertical-align: top;\n }\n .mx-grid-search-message {\n flex-basis: 100%;\n }\n\n /* widget combinations */\n .mx-dataview .mx-grid {\n border: 1px solid #ddd;\n border-radius: 3px;\n }\n\n .mx-calendar {\n z-index: 1000;\n }\n\n .mx-calendar-month-dropdown-options {\n position: absolute;\n }\n\n .mx-calendar,\n .mx-calendar-month-dropdown {\n user-select: none;\n }\n\n .mx-calendar-month-current {\n display: inline-block;\n }\n\n .mx-calendar-month-spacer {\n position: relative;\n height: 0px;\n overflow: hidden;\n visibility: hidden;\n }\n\n .mx-calendar,\n .mx-calendar-month-dropdown-options {\n border: 1px solid lightgrey;\n background-color: white;\n }\n\n .mx-datagrid tr {\n cursor: pointer;\n }\n\n .mx-datagrid tr.mx-datagrid-row-empty {\n cursor: default;\n }\n\n .mx-datagrid table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n }\n\n .mx-datagrid th,\n .mx-datagrid td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n }\n\n /* head */\n .mx-datagrid th {\n position: relative; /* Required for the positioning of the column resizers */\n border-bottom-width: 2px;\n }\n .mx-datagrid-head-caption {\n overflow: hidden;\n white-space: nowrap;\n }\n .mx-datagrid-sort-icon {\n float: right;\n padding-left: 5px;\n }\n [dir=\"rtl\"] .mx-datagrid-sort-icon {\n float: left;\n padding: 0 5px 0 0;\n }\n .mx-datagrid-column-resizer {\n position: absolute;\n top: 0;\n left: -6px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n }\n [dir=\"rtl\"] .mx-datagrid-column-resizer {\n left: auto;\n right: -6px;\n }\n\n /* body */\n .mx-datagrid tbody tr:first-child td {\n border-top: none;\n }\n //.mx-datagrid tbody tr:nth-child(2n+1) td {\n // background-color: #f9f9f9;\n //}\n .mx-datagrid tbody .selected td {\n background-color: #eee;\n }\n .mx-datagrid-data-wrapper {\n overflow: hidden;\n white-space: nowrap;\n }\n .mx-datagrid tbody img {\n max-width: 16px;\n max-height: 16px;\n }\n .mx-datagrid input,\n .mx-datagrid select,\n .mx-datagrid textarea {\n cursor: auto;\n }\n\n /* foot */\n .mx-datagrid tfoot th,\n .mx-datagrid tfoot td {\n padding: 3px 8px;\n }\n .mx-datagrid tfoot th {\n border-top: 1px solid #ddd;\n }\n .mx-datagrid.mx-content-loading .mx-content-loader {\n display: inline-block;\n width: 90%;\n animation: placeholderGradient 1s linear infinite;\n border-radius: 4px;\n background: #f5f5f5;\n background: repeating-linear-gradient(to right, #f5f5f5 0%, #f5f5f5 5%, #f9f9f9 50%, #f5f5f5 95%, #f5f5f5 100%);\n background-size: 200px 100px;\n animation-fill-mode: both;\n }\n @keyframes placeholderGradient {\n 0% {\n background-position: 100px 0;\n }\n 100% {\n background-position: -100px 0;\n }\n }\n\n .mx-datagrid-table-resizing th,\n .mx-datagrid-table-resizing td {\n cursor: col-resize !important;\n }\n\n .mx-templategrid-content-wrapper {\n display: table;\n width: 100%;\n border-collapse: collapse;\n box-sizing: border-box;\n }\n .mx-templategrid-row {\n display: table-row;\n }\n .mx-templategrid-item {\n padding: 5px;\n display: table-cell;\n border: 1px solid #ddd;\n cursor: pointer;\n box-sizing: border-box;\n }\n .mx-templategrid-empty {\n display: table-cell;\n }\n .mx-templategrid-item.selected {\n background-color: #f5f5f5;\n }\n .mx-templategrid-item .mx-table th,\n .mx-templategrid-item .mx-table td {\n padding: 2px 8px;\n }\n\n .mx-navbar-item img,\n .mx-navbar-subitem img {\n height: 16px;\n }\n\n .mx-navigationtree .navbar-inner {\n padding-left: 0;\n padding-right: 0;\n }\n .mx-navigationtree ul {\n list-style: none;\n }\n //.mx-navigationtree ul li {\n // border-bottom: 1px solid #dfe6ea;\n //}\n //.mx-navigationtree li:last-child {\n // border-style: none;\n //}\n .mx-navigationtree a {\n display: block;\n padding: 5px 10px;\n color: #777;\n text-shadow: 0 1px 0 #fff;\n text-decoration: none;\n }\n .mx-navigationtree a.active {\n color: #fff;\n text-shadow: none;\n background: #3498db;\n border-radius: 3px;\n }\n .mx-navigationtree .mx-navigationtree-collapsed ul {\n display: none;\n }\n .mx-navigationtree ul {\n margin: 0;\n padding: 0;\n }\n //.mx-navigationtree ul li {\n // padding: 5px 0;\n //}\n .mx-navigationtree ul li ul {\n padding: 0;\n margin-left: 10px;\n }\n .mx-navigationtree ul li ul li {\n margin-left: 8px;\n padding: 5px 0;\n }\n [dir=\"rtl\"] .mx-navigationtree ul li ul li {\n margin-left: auto;\n margin-right: 8px;\n }\n .mx-navigationtree ul li ul li ul li {\n font-size: 10px;\n padding-top: 3px;\n padding-bottom: 3px;\n }\n .mx-navigationtree ul li ul li ul li img {\n vertical-align: top;\n }\n\n .mx-link img,\n .mx-button img {\n height: 16px;\n }\n .mx-link {\n padding: 6px 12px;\n display: inline-block;\n cursor: pointer;\n }\n\n .mx-groupbox {\n margin-bottom: 10px;\n }\n .mx-groupbox-header {\n margin: 0;\n padding: 10px 15px;\n color: #eee;\n background: #333;\n font-size: inherit;\n line-height: inherit;\n border-radius: 4px 4px 0 0;\n }\n .mx-groupbox-collapsible > .mx-groupbox-header {\n cursor: pointer;\n }\n .mx-groupbox.collapsed > .mx-groupbox-header {\n border-radius: 4px;\n }\n .mx-groupbox-body {\n padding: 8px;\n border: 1px solid #ddd;\n border-radius: 4px;\n }\n .mx-groupbox.collapsed > .mx-groupbox-body {\n display: none;\n }\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n border-radius: 0 0 4px 4px;\n }\n .mx-groupbox-collapse-icon {\n float: right;\n }\n [dir=\"rtl\"] .mx-groupbox-collapse-icon {\n float: left;\n }\n\n .mx-dataview {\n position: relative;\n }\n .mx-dataview-controls {\n padding: 19px 20px 12px;\n background-color: #f5f5f5;\n border-top: 1px solid #eee;\n }\n\n .mx-dataview-controls .mx-button {\n margin-bottom: 8px;\n }\n\n .mx-dataview-controls .mx-button + .mx-button {\n margin-left: 0.3em;\n }\n\n .mx-dataview-message {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n .mx-dataview-message > div {\n display: table;\n width: 100%;\n height: 100%;\n }\n .mx-dataview-message > div > p {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n }\n\n /* Top-level data view in window is a special case, handle it as such. */\n .mx-window-view .mx-window-body {\n padding: 0;\n }\n .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-content,\n .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 15px;\n }\n .mx-window-view .mx-window-body > .mx-dataview > .mx-dataview-controls,\n .mx-window-view .mx-window-body > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n border-radius: 0px 0px 6px 6px;\n }\n\n .mx-dialog {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 500px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n }\n .mx-dialog-header {\n cursor: move;\n }\n .mx-dialog-body {\n overflow: auto;\n }\n\n .mx-window {\n position: fixed;\n left: auto;\n right: auto;\n padding: 0;\n width: 600px;\n /* If the margin is set to auto, IE9 reports the calculated value of the\n * margin as the actual value. Other browsers will just report 0. Eliminate\n * this difference by setting margin to 0 for every browser. */\n margin: 0;\n }\n .mx-window-content {\n height: 100%;\n overflow: hidden;\n }\n .mx-window-active .mx-window-header {\n background-color: #f5f5f5;\n border-radius: 6px 6px 0 0;\n }\n .mx-window-header {\n cursor: move;\n }\n .mx-window-body {\n overflow: auto;\n }\n\n .mx-dropdown-list * {\n cursor: pointer;\n }\n .mx-dropdown-list img {\n width: 35px;\n vertical-align: middle;\n margin-right: 10px;\n }\n [dir=\"rtl\"] .mx-dropdown-list img {\n margin-left: 10px;\n margin-right: auto;\n }\n\n .mx-dropdown-list {\n padding: 0;\n list-style: none;\n }\n .mx-dropdown-list > li {\n padding: 5px 10px 10px;\n border: 1px #ddd;\n border-style: solid solid none;\n background-color: #fff;\n }\n .mx-dropdown-list > li:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n .mx-dropdown-list > li:last-child {\n border-bottom-style: solid;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n }\n .mx-dropdown-list-striped > li:nth-child(2n + 1) {\n background: #f9f9f9;\n }\n .mx-dropdown-list > li:hover {\n background: #f5f5f5;\n }\n\n .mx-header {\n position: relative;\n padding: 9px;\n background: #333;\n text-align: center;\n }\n .mx-header-center {\n display: inline-block;\n color: #eee;\n line-height: 30px; /* height of buttons */\n }\n body[dir=\"ltr\"] .mx-header-left,\n body[dir=\"rtl\"] .mx-header-right {\n position: absolute;\n top: 9px;\n left: 9px;\n }\n body[dir=\"ltr\"] .mx-header-right,\n body[dir=\"rtl\"] .mx-header-left {\n position: absolute;\n top: 9px;\n right: 9px;\n }\n\n .mx-title {\n margin-bottom: 0px;\n margin-top: 0px;\n }\n\n .mx-listview {\n padding: 8px;\n }\n .mx-listview > ul {\n padding: 0px;\n list-style: none;\n }\n // .mx-listview > ul > li {\n // padding: 5px 10px 10px;\n // border: 1px #ddd;\n // border-style: solid solid none;\n // background-color: #fff;\n // outline: none;\n // }\n // .mx-listview > ul > li:first-child {\n // border-top-left-radius: 4px;\n // border-top-right-radius: 4px;\n // }\n // .mx-listview > ul > li:last-child {\n // border-bottom-style: solid;\n // border-bottom-left-radius: 4px;\n // border-bottom-right-radius: 4px;\n // }\n //.mx-listview li:nth-child(2n+1) {\n // background: #f9f9f9;\n //}\n //.mx-listview li:nth-child(2n+1):hover {\n // background: #f5f5f5;\n //}\n .mx-listview > ul > li.selected {\n // background: #eee;\n }\n .mx-listview-clickable > ul > li {\n cursor: pointer;\n }\n .mx-listview-empty {\n color: #999;\n text-align: center;\n }\n .mx-listview .mx-listview-loading {\n padding: 10px;\n line-height: 0;\n text-align: center;\n }\n .mx-listview-searchbar {\n display: flex;\n margin-bottom: 10px;\n }\n .mx-listview-searchbar > input {\n width: 100%;\n }\n .mx-listview-searchbar > button {\n margin-left: 5px;\n }\n [dir=\"rtl\"] .mx-listview-searchbar > button {\n margin-left: 0;\n margin-right: 5px;\n }\n .mx-listview-selection {\n display: table-cell;\n vertical-align: middle;\n padding: 0 15px 0 5px;\n }\n [dir=\"rtl\"] .mx-listview-selection {\n padding: 0 5px 0 15px;\n }\n .mx-listview-selectable .mx-listview-content {\n display: table-cell;\n vertical-align: middle;\n width: 100%;\n }\n .mx-listview .selected {\n background: #def;\n }\n .mx-listview .mx-table th,\n .mx-listview .mx-table td {\n padding: 2px;\n }\n\n .mx-login .form-control {\n margin-top: 10px;\n }\n\n .mx-menubar {\n padding: 8px;\n }\n .mx-menubar-icon {\n height: 16px;\n }\n .mx-menubar-more-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background: url(resources/menubar-more-icon.png) no-repeat center center;\n background-size: 16px 16px;\n vertical-align: middle;\n }\n\n .mx-navigationlist {\n padding: 8px;\n }\n .mx-navigationlist li:hover,\n .mx-navigationlist li:focus,\n .mx-navigationlist li.active {\n color: #fff;\n background-color: #3498db;\n }\n .mx-navigationlist * {\n cursor: pointer;\n }\n .mx-navigationlist .table th,\n .mx-navigationlist .table td {\n padding: 2px;\n }\n\n .mx-progress {\n position: fixed;\n top: 30%;\n left: 0;\n right: 0;\n margin: auto;\n width: 250px;\n max-width: 90%;\n background: #333;\n opacity: 0.8;\n z-index: 5000;\n border-radius: 4px;\n padding: 20px 15px;\n transition: opacity 0.4s ease-in-out;\n }\n .mx-progress-hidden {\n opacity: 0;\n }\n .mx-progress-message {\n color: #fff;\n text-align: center;\n margin-bottom: 15px;\n }\n .mx-progress-empty .mx-progress-message {\n display: none;\n }\n .mx-progress-indicator {\n width: 70px;\n height: 10px;\n margin: auto;\n background: url(resources/progress-indicator.gif);\n }\n\n .mx-reload-notification {\n position: fixed;\n z-index: 1001;\n top: 0;\n width: 100%;\n padding: 1rem;\n\n border: 1px solid hsl(200, 96%, 41%);\n background-color: hsl(200, 96%, 44%);\n\n box-shadow: 0 5px 20px rgba(1, 37, 55, 0.16);\n color: white;\n\n text-align: center;\n font-size: 14px;\n }\n\n .mx-resizer-n,\n .mx-resizer-s {\n position: absolute;\n left: 0;\n width: 100%;\n height: 10px;\n }\n .mx-resizer-n {\n top: -5px;\n cursor: n-resize;\n }\n .mx-resizer-s {\n bottom: -5px;\n cursor: s-resize;\n }\n\n .mx-resizer-e,\n .mx-resizer-w {\n position: absolute;\n top: 0;\n width: 10px;\n height: 100%;\n }\n .mx-resizer-e {\n right: -5px;\n cursor: e-resize;\n }\n .mx-resizer-w {\n left: -5px;\n cursor: w-resize;\n }\n\n .mx-resizer-nw,\n .mx-resizer-ne,\n .mx-resizer-sw,\n .mx-resizer-se {\n position: absolute;\n width: 20px;\n height: 20px;\n }\n\n .mx-resizer-nw,\n .mx-resizer-ne {\n top: -5px;\n }\n .mx-resizer-sw,\n .mx-resizer-se {\n bottom: -5px;\n }\n .mx-resizer-nw,\n .mx-resizer-sw {\n left: -5px;\n }\n .mx-resizer-ne,\n .mx-resizer-se {\n right: -5px;\n }\n\n .mx-resizer-nw {\n cursor: nw-resize;\n }\n .mx-resizer-ne {\n cursor: ne-resize;\n }\n .mx-resizer-sw {\n cursor: sw-resize;\n }\n .mx-resizer-se {\n cursor: se-resize;\n }\n\n .mx-text {\n white-space: pre-line;\n }\n\n .mx-textarea textarea {\n resize: none;\n overflow-y: hidden;\n }\n .mx-textarea .mx-textarea-noresize {\n height: auto;\n resize: vertical;\n overflow-y: auto;\n }\n .mx-textarea .mx-textarea-counter {\n font-size: smaller;\n }\n .mx-textarea .form-control-static {\n white-space: pre-line;\n }\n\n .mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #333;\n }\n\n .mx-imagezoom {\n position: absolute;\n display: table;\n width: 100%;\n height: 100%;\n background-color: #999;\n }\n .mx-imagezoom-wrapper {\n display: table-cell;\n text-align: center;\n vertical-align: middle;\n }\n .mx-imagezoom-image {\n max-width: none;\n }\n\n .mx-dropdown li {\n padding: 3px 20px;\n cursor: pointer;\n }\n .mx-dropdown label {\n padding: 0;\n color: #333;\n white-space: nowrap;\n cursor: pointer;\n }\n .mx-dropdown input {\n margin: 0;\n vertical-align: middle;\n cursor: pointer;\n }\n .mx-dropdown .selected {\n background: #f8f8f8;\n }\n //.mx-selectbox {\n // text-align: left;\n //}\n //.mx-selectbox-caret-wrapper {\n // float: right;\n // height: 100%;\n //}\n\n .mx-demouserswitcher {\n position: fixed;\n top: 0;\n right: 0;\n width: 360px;\n height: 100%;\n z-index: 20000;\n box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);\n }\n .mx-demouserswitcher-content {\n padding: 80px 40px 20px;\n height: 100%;\n color: #387ea2;\n font-size: 14px;\n overflow: auto;\n background: url(resources/switcher.png) top right no-repeat #1b3149;\n /* background-attachement local is not supported on IE8\n * when this is part of background the complete background is ignored */\n background-attachment: local;\n }\n .mx-demouserswitcher ul {\n padding: 0;\n margin-top: 25px;\n list-style-type: none;\n border-top: 1px solid #496076;\n }\n .mx-demouserswitcher a {\n display: block;\n padding: 10px 0;\n color: #387ea2;\n border-bottom: 1px solid #496076;\n }\n .mx-demouserswitcher h2 {\n margin: 20px 0 5px;\n color: #5bc4fe;\n font-size: 28px;\n }\n .mx-demouserswitcher h3 {\n margin: 0 0 2px;\n color: #5bc4fe;\n font-size: 18px;\n font-weight: normal;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .mx-demouserswitcher .active h3 {\n color: #11efdb;\n }\n .mx-demouserswitcher p {\n margin-bottom: 0;\n }\n .mx-demouserswitcher-toggle {\n position: absolute;\n top: 25%;\n left: -35px;\n width: 35px;\n height: 38px;\n margin-top: -40px;\n cursor: pointer;\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n box-shadow: -1px 0 5px rgba(28, 59, 86, 0.2);\n background: url(resources/switcher-toggle.png) center center no-repeat #1b3149;\n }\n\n /* master details screen for mobile */\n .mx-master-detail-screen {\n top: 0;\n left: 0;\n overflow: auto;\n width: 100%;\n height: 100%;\n position: absolute;\n background-color: white;\n will-change: transform;\n }\n\n .mx-master-detail-screen .mx-master-detail-details {\n padding: 15px;\n }\n\n .mx-master-detail-screen-header {\n position: relative;\n overflow: auto;\n border-bottom: 1px solid #ccc;\n background-color: #f7f7f7;\n }\n\n .mx-master-detail-screen-header-caption {\n text-align: center;\n font-size: 17px;\n line-height: 24px;\n font-weight: 600;\n }\n\n .mx-master-detail-screen-header-close {\n position: absolute;\n left: 0;\n top: 0;\n height: 100%;\n width: 50px;\n border: none;\n background: transparent;\n color: #007aff;\n }\n\n body[dir=\"rtl\"] .mx-master-detail-screen-header-close {\n right: 0;\n left: auto;\n }\n\n .mx-master-detail-screen-header-close::before {\n content: \"\\2039\";\n font-size: 52px;\n line-height: 24px;\n }\n\n /* classes for content page */\n .mx-master-detail-content-fix {\n height: 100vh;\n overflow: hidden;\n }\n\n .mx-master-detail-content-hidden {\n transform: translateX(-200%);\n }\n\n body[dir=\"rtl\"] .mx-master-detail-content-hidden {\n transform: translateX(200%);\n }\n .reportingReport {\n padding: 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n }\n\n .reportingReportParameter th {\n text-align: right;\n }\n\n .reportingDateRange table {\n width: 100%;\n table-layout: fixed;\n }\n .reportingDateRange th {\n padding: 5px;\n text-align: right;\n background-color: #eee;\n }\n .reportingDateRange td {\n padding: 5px;\n }\n\n .mx-reportmatrix table {\n width: 100%;\n max-width: 100%;\n table-layout: fixed;\n margin-bottom: 0;\n }\n\n .mx-reportmatrix th,\n .mx-reportmatrix td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: bottom;\n border: 1px solid #ddd;\n }\n\n .mx-reportmatrix tbody tr:first-child td {\n border-top: none;\n }\n\n .mx-reportmatrix tbody tr:nth-child(2n + 1) td {\n background-color: #f9f9f9;\n }\n\n .mx-reportmatrix tbody img {\n max-width: 16px;\n max-height: 16px;\n }\n\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n .dijitInline {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display: inline; /* don't use .dj_ie since that increases the priority */\n vertical-align: auto; /* makes TextBox,Button line up w/native counterparts on IE6 */\n }\n\n .dj_ie6 .dijitComboBox .dijitInputContainer,\n .dijitInputContainer {\n zoom: 1;\n }\n\n .dijitRight {\n /* Right part of a 3-element border */\n display: inline; /* IE7 sizes to outer size w/o this */\n }\n\n .dijitButtonNode {\n vertical-align: auto;\n }\n\n .dijitTextBox {\n overflow: hidden; /* #6027, #6067 */\n }\n\n .dijitPlaceHolder {\n filter: \"\"; /* make this show up in IE6 after the rendering of the widget */\n }\n\n .dijitValidationTextBoxError input.dijitValidationInner,\n .dijitSelect input,\n .dijitTextBox input.dijitArrowButtonInner {\n text-indent: 0 !important;\n letter-spacing: -5em !important;\n text-align: right !important;\n }\n\n .dj_a11y input.dijitValidationInner,\n .dj_a11y input.dijitArrowButtonInner {\n text-align: left !important;\n }\n\n .dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {\n bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */\n }\n\n .dijitTabContainerTop-tabs .dijitTab,\n .dijitTabContainerBottom-tabs .dijitTab {\n zoom: 1; /* set hasLayout:true to mimic inline-block */\n display: inline; /* don't use .dj_ie since that increases the priority */\n }\n\n .dojoDndHorizontal .dojoDndItem {\n /* make contents of horizontal container be side by side, rather than vertical */\n display: inline;\n }\n }\n}\n\n/* WARNING: IE9 limits nested imports to three levels deep: http://jorgealbaladejo.com/2011/05/28/internet-explorer-limits-nested-import-css-statements */\n\n/* dijit base */\n\n/* mendix base */\n\n/* widgets */\n\n/* reporting */\n\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9kb2pvL2Rpaml0L3RoZW1lcy9kaWppdC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS9iYXNlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL2Zvcm1zLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Ub29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9UYWJDb250YWluZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L19HcmlkLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9DYWxlbmRhci5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGF0YUdyaWQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RlbXBsYXRlR3JpZC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvU2Nyb2xsQ29udGFpbmVyLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9OYXZiYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25UcmVlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9CdXR0b24uY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0dyb3VwQm94LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9EYXRhVmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvRGlhbG9nLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9XaW5kb3cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0Ryb3BEb3duLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9IZWFkZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RpdGxlLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9MaXN0Vmlldy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvTG9naW5EaWFsb2cuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01lbnVCYXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L05hdmlnYXRpb25MaXN0LmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9Qcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvUmVsb2FkTm90aWZpY2F0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9SZXNpemFibGUuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHQuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L1RleHRBcmVhLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9VbmRlcmxheS5jc3MiLCJ3ZWJwYWNrOi8vLy4vbXh1aS91aS93aWRnZXQvSW1hZ2Vab29tLmNzcyIsIndlYnBhY2s6Ly8vLi9teHVpL3VpL3dpZGdldC9TZWxlY3RCb3guY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L0RlbW9Vc2VyU3dpdGNoZXIuY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvd2lkZ2V0L01hc3RlckRldGFpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnQuY3NzIiwid2VicGFjazovLy8uL3JlcG9ydGluZy91aS93aWRnZXQvUmVwb3J0UGFyYW1ldGVyLmNzcyIsIndlYnBhY2s6Ly8vLi9yZXBvcnRpbmcvdWkvd2lkZ2V0L0RhdGVSYW5nZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vcmVwb3J0aW5nL3VpL3dpZGdldC9SZXBvcnRNYXRyaXguY3NzIiwid2VicGFjazovLy8uL214dWkvdWkvbXh1aS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7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QUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkIsd0JBQXdCO0FBQ3hCLFdBQVc7QUFDWDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHlDQUF5QztBQUN4RDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHdCQUF3QixvQkFBb0I7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQsMEJBQTBCO0FBQzFCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsYUFBYTtBQUNiLGFBQWEsd0RBQXdEO0FBQ3JFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esd0JBQXdCO0FBQ3hCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0I7QUFDbEI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTs7QUFFQTtBQUNBLGdCQUFnQjtBQUNoQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQztBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFCQUFxQjtBQUNyQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdnNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7O0FDOUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUN6REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0M7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmOztBQzdCQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JGQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQzFCQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLDhCQUE4QjtBQUN0QyxVQUFVLCtCQUErQjtBQUN6Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7OztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JFQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUM7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQzs7QUMvREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDO0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekJBOztBQUVBOztBQUVBOztBQUVBOztBQUVBIiwiZmlsZSI6Im14dWkvdWkvbXh1aS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuXHRFc3NlbnRpYWwgc3R5bGVzIHRoYXQgdGhlbWVzIGNhbiBpbmhlcml0LlxuXHRJbiBvdGhlciB3b3Jkcywgd29ya3MgYnV0IGRvZXNuJ3QgbG9vayBncmVhdC5cbiovXG5cblxuXG4vKioqKlxuXHRcdEdFTkVSSUMgUElFQ0VTXG4gKioqKi9cblxuLmRpaml0UmVzZXQge1xuXHQvKiBVc2UgdGhpcyBzdHlsZSB0byBudWxsIG91dCBwYWRkaW5nLCBtYXJnaW4sIGJvcmRlciBpbiB5b3VyIHRlbXBsYXRlIGVsZW1lbnRzXG5cdFx0c28gdGhhdCBwYWdlIHNwZWNpZmljIHN0eWxlcyBkb24ndCBicmVhayB0aGVtLlxuXHRcdC0gVXNlIGluIGFsbCBUQUJMRSwgVFIgYW5kIFREIHRhZ3MuXG5cdCovXG5cdG1hcmdpbjowO1xuXHRib3JkZXI6MDtcblx0cGFkZGluZzowO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDpub3JtYWw7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuLmRqX2ExMXkgLmRpaml0UmVzZXQge1xuXHQtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIHJlbW92ZSBwcmVkZWZpbmVkIGhpZ2gtY29udHJhc3Qgc3R5bGluZyBpbiBGaXJlZm94ICovXG59XG5cbi5kaWppdElubGluZSB7XG5cdC8qICBUbyBpbmxpbmUgYmxvY2sgZWxlbWVudHMuXG5cdFx0U2ltaWxhciB0byBJbmxpbmVCb3ggYmVsb3csIGJ1dCB0aGlzIGhhcyBmZXdlciBzaWRlLWVmZmVjdHMgaW4gTW96LlxuXHRcdEFsc28sIGFwcGFyZW50bHkgd29ya3Mgb24gYSBESVYgYXMgd2VsbCBhcyBhIEZJRUxEU0VULlxuXHQqL1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcdFx0XHQvKiB3ZWJraXQgYW5kIEZGMyAqL1xuXHQjem9vbTogMTsgLyogc2V0IGhhc0xheW91dDp0cnVlIHRvIG1pbWljIGlubGluZS1ibG9jayAqL1xuXHQjZGlzcGxheTppbmxpbmU7IC8qIGRvbid0IHVzZSAuZGpfaWUgc2luY2UgdGhhdCBpbmNyZWFzZXMgdGhlIHByaW9yaXR5ICovXG5cdGJvcmRlcjowO1xuXHRwYWRkaW5nOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1x0LyogbWFrZXMgVGV4dEJveCxCdXR0b24gbGluZSB1cCB3L25hdGl2ZSBjb3VudGVycGFydHMgb24gSUU2ICovXG59XG5cbnRhYmxlLmRpaml0SW5saW5lIHtcblx0LyogVG8gaW5saW5lIHRhYmxlcyB3aXRoIGEgZ2l2ZW4gd2lkdGggc2V0ICovXG5cdGRpc3BsYXk6aW5saW5lLXRhYmxlO1xuXHRib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuLmRpaml0SGlkZGVuIHtcblx0LyogVG8gaGlkZSB1bnNlbGVjdGVkIHBhbmVzIGluIFN0YWNrQ29udGFpbmVyIGV0Yy4gKi9cblx0cG9zaXRpb246IGFic29sdXRlOyAvKiByZW1vdmUgZnJvbSBub3JtYWwgZG9jdW1lbnQgZmxvdyB0byBzaW11bGF0ZSBkaXNwbGF5OiBub25lICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjsgLyogaGlkZSBlbGVtZW50IGZyb20gdmlldywgYnV0IGRvbid0IGJyZWFrIHNjcm9sbGluZywgc2VlICMxODYxMiAqL1xufVxuLmRpaml0SGlkZGVuICoge1xuXHR2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgLyogaGlkZSB2aXNpYmlsaXR5OnZpc2libGUgZGVzY2VuZGFudHMgb2YgY2xhc3M9ZGlqaXRIaWRkZW4gbm9kZXMsIHNlZSAjMTg3OTkgKi9cbn1cblxuLmRpaml0VmlzaWJsZSB7XG5cdC8qIFRvIHNob3cgc2VsZWN0ZWQgcGFuZSBpbiBTdGFja0NvbnRhaW5lciBldGMuICovXG5cdGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHQvKiBvdmVycmlkZSB1c2VyJ3MgZGlzcGxheTpub25lIHNldHRpbmcgdmlhIHN0eWxlIHNldHRpbmcgb3IgaW5kaXJlY3RseSB2aWEgY2xhc3MgKi9cblx0cG9zaXRpb246IHJlbGF0aXZlO1x0XHRcdC8qIHRvIHN1cHBvcnQgc2V0dGluZyB3aWR0aC9oZWlnaHQsIHNlZSAjMjAzMyAqL1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uZGpfaWU2IC5kaWppdENvbWJvQm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRpaml0SW5wdXRDb250YWluZXIge1xuXHQvKiBmb3IgcG9zaXRpb25pbmcgb2YgcGxhY2VIb2xkZXIgKi9cblx0I3pvb206IDE7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IC8qIG5lZWRlZCB0byBzcXVlZXplIHRoZSBJTlBVVCBpbiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZGpfaWU3IC5kaWppdElucHV0Q29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgLyogbmVlZGVkIGJ5IElFIHRvIHNxdWVlemUgdGhlIElOUFVUIGluICovXG5cdGNsZWFyOiBsZWZ0O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgLyogdG8gZml4IHdyb25nIHRleHQgYWxpZ25tZW50IGluIHRleHRkaXI9cnRsIHRleHQgYm94ICovXG59XG5cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgaW5wdXQuZGlqaXRUZXh0Qm94LFxuLmRqX2llIC5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmb250LXNpemU6IDEwMCU7XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGZsb2F0OiBsZWZ0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuVEFCTEUuZGlqaXRTZWxlY3Qge1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IC8qIG1lc3NlcyB1cCBib3JkZXIgYWxpZ25tZW50ICovXG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IC8qIHNvIGpzZmlkZGxlIHdvcmtzIHdpdGggTm9ybWFsaXplZCBDU1MgY2hlY2tlZCAqL1xufVxuLmRpaml0VGV4dEJveCAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyLFxuLmRpaml0VGV4dEJveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lcixcbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRmbG9hdDogcmlnaHQ7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdFNlbGVjdCBpbnB1dC5kaWppdElucHV0RmllbGQsXG4uZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRGaWVsZCB7XG5cdC8qIG92ZXJyaWRlIHVucmVhc29uYWJsZSB1c2VyIHN0eWxpbmcgb2YgYnV0dG9ucyBhbmQgaWNvbnMgKi9cblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cbi5kaWppdFZhbGlkYXRpb25UZXh0Qm94IC5kaWppdFZhbGlkYXRpb25Db250YWluZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUZWVueSB7XG5cdGZvbnQtc2l6ZToxcHg7XG5cdGxpbmUtaGVpZ2h0OjFweDtcbn1cblxuLmRpaml0T2ZmU2NyZWVuIHsgLyogdGhlc2UgY2xhc3MgYXR0cmlidXRlcyBzaG91bGQgc3VwZXJzZWRlIGFueSBpbmxpbmUgcG9zaXRpb25pbmcgc3R5bGUgKi9cblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdGxlZnQ6IC0xMDAwMHB4ICFpbXBvcnRhbnQ7XG5cdHRvcDogLTEwMDAwcHggIWltcG9ydGFudDtcbn1cblxuLypcbiAqIFBvcHVwIGl0ZW1zIGhhdmUgYSB3cmFwcGVyIGRpdiAoZGlqaXRQb3B1cClcbiAqIHdpdGggdGhlIHJlYWwgcG9wdXAgaW5zaWRlLCBhbmQgbWF5YmUgYW4gaWZyYW1lIHRvb1xuICovXG4uZGlqaXRQb3B1cCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHQtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi5kaWppdFBvc2l0aW9uT25seSB7XG5cdC8qIE51bGwgb3V0IGFsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0d2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRpaml0Tm9uUG9zaXRpb25Pbmx5IHtcblx0LyogTnVsbCBwb3NpdGlvbi1yZWxhdGVkIHByb3BlcnRpZXMgKi9cblx0ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDtcblx0cG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuXHRtYXJnaW46IDAgMCAwIDAgIWltcG9ydGFudDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50O1xufVxuXG4uZGlqaXRCYWNrZ3JvdW5kSWZyYW1lIHtcblx0LyogaWZyYW1lIHVzZWQgdG8gcHJldmVudCBwcm9ibGVtcyB3aXRoIFBERiBvciBvdGhlciBhcHBsZXRzIG92ZXJsYXlpbmcgbWVudXMgZXRjICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiAwO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHR6LWluZGV4OiAtMTtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdERpc3BsYXlOb25lIHtcblx0LyogaGlkZSBzb21ldGhpbmcuICBVc2UgdGhpcyBhcyBhIGNsYXNzIHJhdGhlciB0aGFuIGVsZW1lbnQuc3R5bGUgc28gYW5vdGhlciBjbGFzcyBjYW4gb3ZlcnJpZGUgKi9cblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbnRhaW5lciB7XG5cdC8qIGZvciBhbGwgbGF5b3V0IGNvbnRhaW5lcnMgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcdC8qIG5lZWQgb24gSUUgc28gc29tZXRoaW5nIGNhbiBiZSByZWR1Y2VkIGluIHNpemUsIGFuZCBzbyBzY3JvbGxiYXJzIGFyZW4ndCB0ZW1wb3JhcmlseSBkaXNwbGF5ZWQgd2hlbiByZXNpemluZyAqL1xufVxuXG4vKioqKlxuXHRcdEExMVlcbiAqKioqL1xuLmRqX2ExMXkgLmRpaml0SWNvbixcbi5kal9hMTF5IGRpdi5kaWppdEFycm93QnV0dG9uSW5uZXIsIC8qIGlzIHRoaXMgb25seSBmb3IgU3Bpbm5lcj8gIGlmIHNvLCBpdCBzaG91bGQgYmUgZGVsZXRlZCAqL1xuLmRqX2ExMXkgc3Bhbi5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSBpbWcuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJJbmNyZW1lbnRDb250cm9sLFxuLmRqX2ExMXkgLmRpaml0VHJlZUV4cGFuZG8ge1xuXHQvKiBoaWRlIGljb24gbm9kZXMgaW4gaGlnaCBjb250cmFzdCBtb2RlOyB3aGVuIG5lY2Vzc2FyeSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgYnkgY2hhcmFjdGVyIGVxdWl2YWxlbnRzXG5cdCAqIGV4Y2VwdGlvbiBmb3IgaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyLCBiZWNhdXNlIHRoZSBpY29uIGFuZCBjaGFyYWN0ZXIgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIHNhbWUgbm9kZSAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRpaml0U3Bpbm5lciBkaXYuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0ZGlzcGxheTogYmxvY2s7IC8qIG92ZXJyaWRlIHByZXZpb3VzIHJ1bGUgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0QTExeVNpZGVBcnJvdyB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBkaXNwbGF5IHRleHQgaW5zdGVhZCAqL1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qXG4gKiBTaW5jZSB3ZSBjYW4ndCB1c2Ugc2hhZGluZyBpbiBhMTF5IG1vZGUsIGFuZCBzaW5jZSB0aGUgdW5kZXJsaW5lIGluZGljYXRlcyB0b2RheSdzIGRhdGUsXG4gKiB1c2UgYSBib3JkZXIgdG8gc2hvdyB0aGUgc2VsZWN0ZWQgZGF0ZS5cbiAqIEF2b2lkIHNjcmVlbiBqaXR0ZXIgd2hlbiBzd2l0Y2hpbmcgc2VsZWN0ZWQgZGF0ZSBieSBjb21wZW5zYXRpbmcgZm9yIHRoZSBzZWxlY3RlZCBub2RlJ3NcbiAqIGJvcmRlciB3L3BhZGRpbmcgb24gb3RoZXIgbm9kZXMuXG4gKi9cbi5kal9hMTF5IC5kaWppdENhbGVuZGFyRGF0ZUxhYmVsIHtcblx0cGFkZGluZzogMXB4O1xuXHRib3JkZXI6IDBweCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2FsZW5kYXJTZWxlY3RlZERhdGUgLmRpaml0Q2FsZW5kYXJEYXRlTGFiZWwge1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmc6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRDYWxlbmRhckRhdGVUZW1wbGF0ZSB7XG5cdHBhZGRpbmctYm90dG9tOiAwLjFlbSAhaW1wb3J0YW50O1x0Lyogb3RoZXJ3aXNlIGJvdHRvbSBib3JkZXIgZG9lc24ndCBhcHBlYXIgb24gSUUgKi9cblx0Ym9yZGVyOiAwcHggIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXI6IGJsYWNrIG91dHNldCBtZWRpdW0gIWltcG9ydGFudDtcblxuXHQvKiBJbiBjbGFybywgaG92ZXJpbmcgYSB0b29sYmFyIGJ1dHRvbiByZWR1Y2VzIHBhZGRpbmcgYW5kIGFkZHMgYSBib3JkZXIuXG5cdCAqIE5vdCBuZWVkZWQgaW4gYTExeSBtb2RlIHNpbmNlIFRvb2xiYXIgYnV0dG9ucyBhbHdheXMgaGF2ZSBhIGJvcmRlci5cblx0ICovXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cbi5kal9hMTF5IC5kaWppdEFycm93QnV0dG9uIHtcblx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRCdXR0b25Db250ZW50cyB7XG5cdG1hcmdpbjogMC4xNWVtOyAvKiBNYXJnaW4gbmVlZGVkIHRvIG1ha2UgZm9jdXMgb3V0bGluZSB2aXNpYmxlICovXG59XG5cbi5kal9hMTF5IC5kaWppdFRleHRCb3hSZWFkT25seSAuZGlqaXRJbnB1dEZpZWxkLFxuLmRqX2ExMXkgLmRpaml0VGV4dEJveFJlYWRPbmx5IC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItc3R5bGU6IG91dHNldCFpbXBvcnRhbnQ7XG5cdGJvcmRlci13aWR0aDogbWVkaXVtIWltcG9ydGFudDtcblx0Ym9yZGVyLWNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiM5OTkgIWltcG9ydGFudDtcbn1cblxuLyogYnV0dG9uIGlubmVyIGNvbnRlbnRzIC0gbGFiZWxzLCBpY29ucyBldGMuICovXG4uZGlqaXRCdXR0b25Ob2RlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0U2VsZWN0IC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGlqaXRCdXR0b25Ob2RlIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHQvKiB0aGUgYXJyb3cgaWNvbiBub2RlICovXG5cdGJhY2tncm91bmQ6IG5vLXJlcGVhdCBjZW50ZXI7XG5cdHdpZHRoOiAxMnB4O1xuXHRoZWlnaHQ6IDEycHg7XG5cdGRpcmVjdGlvbjogbHRyOyAvKiBuZWVkZWQgYnkgSUUvUlRMICovXG59XG5cbi8qKioqXG5cdDMtZWxlbWVudCBib3JkZXJzOiAgKCBkaWppdExlZnQgKyBkaWppdFN0cmV0Y2ggKyBkaWppdFJpZ2h0IClcblx0VGhlc2Ugd2VyZSBhZGRlZCBmb3Igcm91bmRlZCBjb3JuZXJzIG9uIGRpaml0LmZvcm0uKkJ1dHRvbiBidXQgbmV2ZXIgYWN0dWFsbHkgdXNlZC5cbiAqKioqL1xuXG4uZGlqaXRMZWZ0IHtcblx0LyogTGVmdCBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi5kaWppdFN0cmV0Y2gge1xuXHQvKiBNaWRkbGUgKHN0cmV0Y2h5KSBwYXJ0IG9mIGEgMy1lbGVtZW50IGJvcmRlciAqL1xuXHR3aGl0ZS1zcGFjZTpub3dyYXA7XHRcdFx0LyogTU9XOiBtb3ZlIHNvbWV3aGVyZSBlbHNlICovXG5cdGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14O1xufVxuXG4uZGlqaXRSaWdodCB7XG5cdC8qIFJpZ2h0IHBhcnQgb2YgYSAzLWVsZW1lbnQgYm9yZGVyICovXG5cdCNkaXNwbGF5OmlubGluZTtcdFx0XHRcdC8qIElFNyBzaXplcyB0byBvdXRlciBzaXplIHcvbyB0aGlzICovXG5cdGJhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7XG59XG5cbi8qIEJ1dHRvbnMgKi9cbi5kal9nZWNrbyAuZGpfYTExeSAuZGlqaXRCdXR0b25EaXNhYmxlZCAuZGlqaXRCdXR0b25Ob2RlIHtcblx0b3BhY2l0eTogMC41O1xufVxuXG4uZGlqaXRUb2dnbGVCdXR0b24sXG4uZGlqaXRCdXR0b24sXG4uZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdENvbWJvQnV0dG9uIHtcblx0Lyogb3V0c2lkZSBvZiBidXR0b24gKi9cblx0bWFyZ2luOiAwLjJlbTtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiBibG9jaztcdFx0LyogdG8gbWFrZSBmb2N1cyBib3JkZXIgcmVjdGFuZ3VsYXIgKi9cbn1cbnRkLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRkaXNwbGF5OiB0YWJsZS1jZWxsO1x0LyogYnV0IGRvbid0IGFmZmVjdCBTZWxlY3QsIENvbWJvQnV0dG9uICovXG59XG5cbi5kaWppdEJ1dHRvbk5vZGUgaW1nIHtcblx0LyogbWFrZSB0ZXh0IGFuZCBpbWFnZXMgbGluZSB1cCBjbGVhbmx5ICovXG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0LyptYXJnaW4tYm90dG9tOi4yZW07Ki9cbn1cblxuLmRpaml0VG9vbGJhciAuZGlqaXRDb21ib0J1dHRvbiB7XG5cdC8qIGJlY2F1c2UgVG9vbGJhciBvbmx5IGRyYXdzIGEgYm9yZGVyIGFyb3VuZCB0aGUgaG92ZXJlZCB0aGluZyAqL1xuXHRib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xufVxuXG4uZGlqaXRUb29sYmFyIC5kaWppdFRvZ2dsZUJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uLFxuLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbixcbi5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9CdXR0b24ge1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHQvKiBqdXN0IGJlY2F1c2UgaXQgdXNlZCB0byBiZSB0aGlzIHdheSAqL1xuXHRwYWRkaW5nOiAxcHggMnB4O1xufVxuXG5cbi5kal93ZWJraXQgLmRpaml0VG9vbGJhciAuZGlqaXREcm9wRG93bkJ1dHRvbiB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGpfZ2Vja28gLmRpaml0VG9vbGJhciAuZGlqaXRCdXR0b25Ob2RlOjotbW96LWZvY3VzLWlubmVyIHtcblx0cGFkZGluZzowO1xufVxuXG4uZGlqaXRTZWxlY3Qge1xuXHRib3JkZXI6MXB4IHNvbGlkIGdyYXk7XG59XG4uZGlqaXRCdXR0b25Ob2RlIHtcblx0LyogTm9kZSB0aGF0IGlzIGFjdGluZyBhcyBhIGJ1dHRvbiAtLSBtYXkgb3IgbWF5IG5vdCBiZSBhIEJVVFRPTiBlbGVtZW50ICovXG5cdGJvcmRlcjoxcHggc29saWQgZ3JheTtcblx0bWFyZ2luOjA7XG5cdGxpbmUtaGVpZ2h0Om5vcm1hbDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0I3ZlcnRpY2FsLWFsaWduOiBhdXRvO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5kal93ZWJraXQgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0LyogYXBwYXJlbnQgV2ViS2l0IGJ1ZyB3aGVyZSBtZXNzaW5nIHdpdGggdGhlIGZvbnQgY291cGxlZCB3aXRoIGxpbmUtaGVpZ2h0Om5vcm1hbCBYIDIgKGRpaml0UmVzZXQgJiBkaWppdEJ1dHRvbk5vZGUpXG5cdGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBqdXN0IGEgc2luZ2xlIGxpbmUtaGVpZ2h0Om5vcm1hbCwgdmlzaWJsZSBpbiBJbmxpbmVFZGl0Qm94L1NwaW5uZXIgKi9cblx0bGluZS1oZWlnaHQ6aW5oZXJpdDtcbn1cbi5kaWppdFRleHRCb3ggLmRpaml0QnV0dG9uTm9kZSB7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cblxuLmRpaml0U2VsZWN0LFxuLmRpaml0U2VsZWN0ICosXG4uZGlqaXRCdXR0b25Ob2RlLFxuLmRpaml0QnV0dG9uTm9kZSAqIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGpfaWUgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGVuc3VyZSBoYXNMYXlvdXQgKi9cblx0em9vbTogMTtcbn1cblxuLmRqX2llIC5kaWppdEJ1dHRvbk5vZGUgYnV0dG9uIHtcblx0Lypcblx0XHRkaXNndXN0aW5nIGhhY2sgdG8gZ2V0IHJpZCBvZiBzcHVyaW91cyBwYWRkaW5nIGFyb3VuZCBidXR0b24gZWxlbWVudHNcblx0XHRvbiBJRS4gTVNJRSBpcyB0cnVseSB0aGUgd2ViJ3MgYm9hdCBhbmNob3IuXG5cdCovXG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5kaXYuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdGZsb2F0OiByaWdodDtcbn1cblxuLyoqKioqKlxuXHRUZXh0Qm94IHJlbGF0ZWQuXG5cdEV2ZXJ5dGhpbmcgdGhhdCBoYXMgYW4gPGlucHV0PlxuKioqKioqKi9cblxuLmRpaml0VGV4dEJveCB7XG5cdGJvcmRlcjogc29saWQgYmxhY2sgMXB4O1xuXHQjb3ZlcmZsb3c6IGhpZGRlbjsgLyogIzYwMjcsICM2MDY3ICovXG5cdHdpZHRoOiAxNWVtO1x0LyogbmVlZCB0byBzZXQgZGVmYXVsdCBzaXplIG9uIG91dGVyIG5vZGUgc2luY2UgaW5uZXIgbm9kZXMgc2F5IDxpbnB1dCBzdHlsZT1cIndpZHRoOjEwMCVcIj4gYW5kIDx0ZCB3aWR0aD0xMDAlPi4gIHVzZXIgY2FuIG92ZXJyaWRlICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdFRleHRCb3hSZWFkT25seSxcbi5kaWppdFRleHRCb3hEaXNhYmxlZCB7XG5cdGNvbG9yOiBncmF5O1xufVxuLmRqX3NhZmFyaSAuZGlqaXRUZXh0Qm94RGlzYWJsZWQgaW5wdXQge1xuXHRjb2xvcjogI0IwQjBCMDsgLyogYmVjYXVzZSBTYWZhcmkgbGlnaHRlbnMgZGlzYWJsZWQgaW5wdXQvdGV4dGFyZWEgbm8gbWF0dGVyIHdoYXQgY29sb3IgeW91IHNwZWNpZnkgKi9cbn1cbi5kal9zYWZhcmkgdGV4dGFyZWEuZGlqaXRUZXh0QXJlYURpc2FibGVkIHtcblx0Y29sb3I6ICMzMzM7IC8qIGJlY2F1c2UgU2FmYXJpIGxpZ2h0ZW5zIGRpc2FibGVkIGlucHV0L3RleHRhcmVhIG5vIG1hdHRlciB3aGF0IGNvbG9yIHlvdSBzcGVjaWZ5ICovXG59XG4uZGpfZ2Vja28gLmRpaml0VGV4dEJveFJlYWRPbmx5IGlucHV0LmRpaml0SW5wdXRGaWVsZCwgLyogZGlzYWJsZSBhcnJvdyBhbmQgdmFsaWRhdGlvbiBwcmVzZW50YXRpb24gaW5wdXRzIGJ1dCBhbGxvdyByZWFsIGlucHV0IGZvciB0ZXh0IHNlbGVjdGlvbiAqL1xuLmRqX2dlY2tvIC5kaWppdFRleHRCb3hEaXNhYmxlZCBpbnB1dCB7XG5cdC1tb3otdXNlci1pbnB1dDogbm9uZTsgLyogcHJldmVudCBmb2N1cyBvZiBkaXNhYmxlZCB0ZXh0Ym94IGJ1dHRvbnMgKi9cbn1cblxuLmRpaml0UGxhY2VIb2xkZXIge1xuXHQvKiBoaW50IHRleHQgdGhhdCBhcHBlYXJzIGluIGEgdGV4dGJveCB1bnRpbCB1c2VyIHN0YXJ0cyB0eXBpbmcgKi9cblx0Y29sb3I6ICNBQUFBQUE7XG5cdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdCNmaWx0ZXI6IFwiXCI7IC8qIG1ha2UgdGhpcyBzaG93IHVwIGluIElFNiBhZnRlciB0aGUgcmVuZGVyaW5nIG9mIHRoZSB3aWRnZXQgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7ICAgLyogc28gY3V0L3Bhc3RlIGNvbnRleHQgbWVudSBzaG93cyB1cCB3aGVuIHJpZ2h0IGNsaWNraW5nICovXG59XG5cbi5kaWppdFRpbWVUZXh0Qm94IHtcblx0d2lkdGg6IDhlbTtcbn1cblxuLyogcnVsZXMgZm9yIHdlYmtpdCB0byBkZWFsIHdpdGggZnV6enkgYmx1ZSBmb2N1cyBib3JkZXIgKi9cbi5kaWppdFRleHRCb3ggaW5wdXQ6Zm9jdXMge1xuXHRvdXRsaW5lOiBub25lO1x0LyogYmx1ZSBmdXp6eSBsaW5lIGxvb2tzIHdyb25nIG9uIGNvbWJvYm94IG9yIHNvbWV0aGluZyB3L3ZhbGlkYXRpb24gaWNvbiBzaG93aW5nICovXG59XG4uZGlqaXRUZXh0Qm94Rm9jdXNlZCB7XG5cdG91dGxpbmU6IDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQge1xuXHRmbG9hdDogbGVmdDsgLyogbmVlZGVkIGJ5IElFIHRvIHJlbW92ZSBzZWNyZXQgbWFyZ2luICovXG59XG4uZGpfaWU2IGlucHV0LmRpaml0VGV4dEJveCxcbi5kal9pZTYgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdGZsb2F0OiBub25lO1xufVxuLmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIGZvciB3aGVuIGFuIDxpbnB1dD4gaXMgZW1iZWRkZWQgaW5zaWRlIGFuIGlubGluZS1ibG9jayA8ZGl2PiB3aXRoIGEgc2l6ZSBhbmQgYm9yZGVyICovXG5cdGJvcmRlcjowICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xuXHQvKiBJRSBkaXNsaWtlcyBob3Jpem9udGFsIHR3ZWFraW5nIGNvbWJpbmVkIHdpdGggd2lkdGg6MTAwJSBzbyBwdW5pc2ggZXZlcnlvbmUgZm9yIGNvbnNpc3RlbmN5ICovXG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VGV4dEJveCBpbnB1dCB7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kaWppdFNlbGVjdCBpbnB1dCxcbi5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0LyogPGlucHV0PiB1c2VkIHRvIGRpc3BsYXkgYXJyb3cgaWNvbi92YWxpZGF0aW9uIGljb24sIG9yIGluIGFycm93IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUuXG5cdCAqIFRoZSBjc3MgYmVsb3cgaXMgYSB0cmljayB0byBoaWRlIHRoZSBjaGFyYWN0ZXIgaW4gbm9uLWhpZ2gtY29udHJhc3QgbW9kZVxuXHQgKi9cblx0dGV4dC1pbmRlbnQ6IC0yZW0gIWltcG9ydGFudDtcblx0ZGlyZWN0aW9uOiBsdHIgIWltcG9ydGFudDtcblx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcblx0I3RleHQtaW5kZW50OiAwICFpbXBvcnRhbnQ7XG5cdCNsZXR0ZXItc3BhY2luZzogLTVlbSAhaW1wb3J0YW50O1xuXHQjdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDtcbn1cbi5kal9pZSAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWUgLmRpaml0VGV4dEJveCBpbnB1dCxcbi5kal9pZSBpbnB1dC5kaWppdFRleHRCb3gge1xuXHRvdmVyZmxvdy15OiB2aXNpYmxlOyAvKiBpbnB1dHMgbmVlZCBoZWxwIGV4cGFuZGluZyB3aGVuIHBhZGRpbmcgaXMgYWRkZWQgb3IgbGluZS1oZWlnaHQgaXMgYWRqdXN0ZWQgKi9cblx0bGluZS1oZWlnaHQ6IG5vcm1hbDsgLyogc3RyaWN0IG1vZGUgKi9cbn1cbi5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCBzcGFuIHtcblx0bGluZS1oZWlnaHQ6IDEwMCU7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsIHtcblx0bGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cbi5kal9pZTYgLmRpaml0U2VsZWN0IC5kaWppdFNlbGVjdExhYmVsLFxuLmRqX2llNyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGpfaWU4IC5kaWppdFNlbGVjdCAuZGlqaXRTZWxlY3RMYWJlbCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwsXG4uZGlqaXRTZWxlY3QgdGQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCBpbnB1dCxcbi5kal9pZXF1aXJrcyAuZGlqaXRTZWxlY3QgaW5wdXQsXG4uZGpfaWU2IC5kaWppdFNlbGVjdCAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyLFxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IGlucHV0LFxuLmRqX2llNiBpbnB1dC5kaWppdFRleHRCb3gsXG4uZGpfaWVxdWlya3MgLmRpaml0VGV4dEJveCBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZXF1aXJrcyAuZGlqaXRUZXh0Qm94IGlucHV0LmRpaml0U3Bpbm5lckJ1dHRvbklubmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llcXVpcmtzIGlucHV0LmRpaml0VGV4dEJveCB7XG5cdGxpbmUtaGVpZ2h0OiAxMDAlOyAvKiBJRTcgcHJvYmxlbSB3aGVyZSB0aGUgaWNvbiBpcyB2ZXJ0aWNhbGx5IHdheSB0b28gbG93IHcvbyB0aGlzICovXG59XG4uZGpfYTExeSBpbnB1dC5kaWppdFZhbGlkYXRpb25Jbm5lcixcbi5kal9hMTF5IGlucHV0LmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC8qIChpbiBoaWdoIGNvbnRyYXN0IG1vZGUpIHJldmVydCBydWxlcyBmcm9tIGFib3ZlIHNvIGNoYXJhY3RlciBkaXNwbGF5cyAqL1xuXHR0ZXh0LWluZGVudDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG5cdCN0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuLmRpaml0VmFsaWRhdGlvblRleHRCb3hFcnJvciAuZGlqaXRWYWxpZGF0aW9uQ29udGFpbmVyIHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qIENvbWJvQm94ICYgU3Bpbm5lciAqL1xuXG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGlqaXRDb21ib0JveCAuZGlqaXRBcnJvd0J1dHRvbkNvbnRhaW5lciB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwIDAgMCAxcHggIWltcG9ydGFudDsgLyogIWltcG9ydGFudCBuZWVkZWQgZHVlIHRvIHdheXdhcmQgXCIudGhlbWUgLmRpaml0QnV0dG9uTm9kZVwiIHJ1bGVzICovXG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QXJyb3dCdXR0b25Db250YWluZXIsXG4uZGlqaXRUb29sYmFyIC5kaWppdENvbWJvQm94IC5kaWppdEFycm93QnV0dG9uQ29udGFpbmVyIHtcblx0Lyogb3ZlcnJpZGVzIGFib3ZlIHJ1bGUgcGx1cyBtaXJyb3ItaW1hZ2UgcnVsZSBpbiBkaWppdF9ydGwuY3NzIHRvIGhhdmUgbm8gZGl2aWRlciB3aGVuIENvbWJvQm94IGluIFRvb2xiYXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdENvbWJvQm94TWVudSB7XG5cdC8qIERyb3AgZG93biBtZW51IGlzIGltcGxlbWVudGVkIGFzIDx1bD4gPGxpLz4gPGxpLz4gLi4uIGJ1dCB3ZSBkb24ndCB3YW50IGNpcmNsZXMgYmVmb3JlIGVhY2ggaXRlbSAqL1xuXHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QnV0dG9uTm9kZSB7XG5cdC8qIGRpdmlkaW5nIGxpbmUgYmV0d2VlbiBpbnB1dCBhcmVhIGFuZCB1cC9kb3duIGJ1dHRvbihzKSBmb3IgQ29tYm9Cb3ggYW5kIFNwaW5uZXIgKi9cblx0Ym9yZGVyLXdpZHRoOiAwO1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRCdXR0b25Ob2RlIHtcblx0Y2xlYXI6IGJvdGg7IC8qIElFIHdvcmthcm91bmQgKi9cbn1cblxuLmRqX2llIC5kaWppdFRvb2xiYXIgLmRpaml0Q29tYm9Cb3gge1xuXHQvKiBtYWtlIGNvbWJvYm94IGJ1dHRvbnMgYWxpZ24gcHJvcGVybHkgd2l0aCBvdGhlciBidXR0b25zIGluIGEgdG9vbGJhciAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vKiBTcGlubmVyICovXG5cbi5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciB7XG5cdHdpZHRoOiAxZW07XG5cdHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIge1xuXHR3aWR0aDoxZW07XG5cdHZpc2liaWxpdHk6aGlkZGVuICFpbXBvcnRhbnQ7IC8qIGp1c3QgYSBzaXppbmcgZWxlbWVudCAqL1xuXHRvdmVyZmxvdy14OmhpZGRlbjtcbn1cbi5kaWppdENvbWJvQm94IC5kaWppdEJ1dHRvbk5vZGUsXG4uZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDA7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRib3JkZXItd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRUZXh0Qm94IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIsXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIGlucHV0IHtcblx0d2lkdGg6IDFlbSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0bWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsgLyogc2hvdWxkIGF1dG8tY2VudGVyICovXG59XG4uZGpfaWUgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRwYWRkaW5nLWxlZnQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwLjNlbSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAuM2VtICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxLjRlbSAhaW1wb3J0YW50O1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyAvKiBtYW51YWxseSBjZW50ZXIgSU5QVVQ6IGNoYXJhY3RlciBpcyAuNWVtIGFuZCB0b3RhbCB3aWR0aCA9IDFlbSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxZW0gIWltcG9ydGFudDtcbn1cbi5kal9pZTYgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMC4xZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAwLjFlbSAhaW1wb3J0YW50O1xuXHR3aWR0aDogMWVtICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHRtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcblx0d2lkdGg6IDJlbSAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uIHtcblx0Lyogbm90ZTogLmRpaml0SW5wdXRMYXlvdXRDb250YWluZXIgbWFrZXMgdGhpcyBydWxlIG92ZXJyaWRlIC5kaWppdEFycm93QnV0dG9uIHNldHRpbmdzXG5cdCAqIGZvciBkaWppdC5mb3JtLkJ1dHRvblxuXHQgKi9cblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHJpZ2h0OiAwO1xuXHRmbG9hdDogbm9uZTtcblx0aGVpZ2h0OiA1MCU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IGF1dG87XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiBhdXRvO1xufVxuLmRqX2llcXVpcmtzIC5kaWppdFNwaW5uZXIgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdHdpZHRoOiBhdXRvO1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciAuZGlqaXRBcnJvd0J1dHRvbiB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0RG93bkFycm93QnV0dG9uIHtcblx0dG9wOiA1MCU7XG5cdGJvcmRlci10b3Atd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdFVwQXJyb3dCdXR0b24ge1xuXHQjYm90dG9tOiA1MCU7XHQvKiBvdGhlcndpc2UgKG9uIHNvbWUgbWFjaGluZXMpIHRvcCBhcnJvdyBpY29uIHRvbyBjbG9zZSB0byBzcGxpdHRlciBib3JkZXIgKElFNi83KSAqL1xuXHR0b3A6IDA7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRtYXJnaW46IGF1dG87XG5cdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0aGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIHtcblx0aGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG4uZGlqaXRTcGlubmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIgLmRpaml0SW5wdXRGaWVsZCB7XG5cdC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtbW96LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHQtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdC1vLXRyYW5zZm9ybTogc2NhbGUoMC41KTtcblx0LW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIHRvcDtcblx0dHJhbnNmb3JtOiBzY2FsZSgwLjUpO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0cGFkZGluZy10b3A6IDA7XG5cdHBhZGRpbmctYm90dG9tOiAwO1xuXHRwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR3aWR0aDogMTAwJTtcblx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmRqX2llIC5kaWppdFNwaW5uZXIgLmRpaml0QXJyb3dCdXR0b25Jbm5lciAuZGlqaXRJbnB1dEZpZWxkIHtcblx0em9vbTogNTAlOyAvKiBlbXVsYXRlIHRyYW5zZm9ybTogc2NhbGUoMC41KSAqL1xufVxuLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIC5kaWppdEFycm93QnV0dG9uSW5uZXIge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMTAwJTtcbn1cbi5kal9pZXF1aXJrcyAuZGpfYTExeSAuZGlqaXRTcGlubmVyIC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIgLmRpaml0QXJyb3dCdXR0b24ge1xuXHR3aWR0aDogMWVtOyAvKiBtYXRjaGVzIC5kal9hMTF5IC5kaWppdFRleHRCb3ggLmRpaml0U3Bpbm5lckJ1dHRvbkNvbnRhaW5lciBydWxlIC0gMTAwJSBpcyB0aGUgd2hvbGUgc2NyZWVuIHdpZHRoIGluIHF1aXJrcyAqL1xufVxuLmRqX2ExMXkgLmRpaml0U3Bpbm5lciAuZGlqaXRBcnJvd0J1dHRvbklubmVyIC5kaWppdElucHV0RmllbGQge1xuXHR2ZXJ0aWNhbC1hbGlnbjp0b3A7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4uZGpfYTExeSAuZGlqaXRTcGlubmVyQnV0dG9uQ29udGFpbmVyIHtcblx0d2lkdGg6IDFlbTtcbn1cblxuLyoqKipcblx0XHRkaWppdC5mb3JtLkNoZWNrQm94XG4gXHQgJlxuICBcdFx0ZGlqaXQuZm9ybS5SYWRpb0J1dHRvblxuICoqKiovXG5cbi5kaWppdENoZWNrQm94LFxuLmRpaml0UmFkaW8sXG4uZGlqaXRDaGVja0JveElucHV0IHtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0Q2hlY2tCb3ggaW5wdXQsXG4uZGlqaXRSYWRpbyBpbnB1dCB7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5kaWppdENoZWNrQm94SW5wdXQge1xuXHQvKiBwbGFjZSB0aGUgYWN0dWFsIGlucHV0IG9uIHRvcCwgYnV0IGludmlzaWJsZSAqL1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uZGpfaWUgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTtcbn1cblxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3gsXG4uZGpfYTExeSAuZGlqaXRSYWRpbyB7XG5cdC8qIGluIGExMXkgbW9kZSB3ZSBkaXNwbGF5IHRoZSBuYXRpdmUgY2hlY2tib3ggKG5vdCB0aGUgaWNvbiksIHNvIGRvbid0IHJlc3RyaWN0IHRoZSBzaXplICovXG5cdHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG5cdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0Q2hlY2tCb3hJbnB1dCB7XG5cdG9wYWNpdHk6IDE7XG5cdGZpbHRlcjogbm9uZTtcblx0d2lkdGg6IGF1dG87XG5cdGhlaWdodDogYXV0bztcbn1cblxuLmRqX2ExMXkgLmRpaml0Rm9jdXNlZExhYmVsIHtcblx0LyogZm9yIGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHVzZSBib3JkZXIgcmF0aGVyIHRoYW4gb3V0bGluZSB0byBpbmRpY2F0ZSBmb2N1cyAob3V0bGluZSBkb2VzIG5vdCB3b3JrIGluIEZGKSovXG5cdGJvcmRlcjogMXB4IGRvdHRlZDtcblx0b3V0bGluZTogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi8qKioqXG5cdFx0ZGlqaXQuUHJvZ3Jlc3NCYXJcbiAqKioqL1xuXG4uZGlqaXRQcm9ncmVzc0JhciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBQcm9ncmVzc0JhciAqL1xufVxuLmRpaml0UHJvZ3Jlc3NCYXJFbXB0eSB7XG5cdC8qIG91dGVyIGNvbnRhaW5lciBhbmQgYmFja2dyb3VuZCBvZiB0aGUgYmFyIHRoYXQncyBub3QgZmluaXNoZWQgeWV0Ki9cblx0cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrOyBcdC8qIGExMXk6IGJvcmRlciBuZWNlc3NhcnkgZm9yIGhpZ2gtY29udHJhc3QgbW9kZSAqL1xuXHR6LWluZGV4OjA7XHRcdFx0LyogZXN0YWJsaXNoIGEgc3RhY2tpbmcgY29udGV4dCBmb3IgdGhpcyBwcm9ncmVzcyBiYXIgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJGdWxsIHtcblx0Lyogb3V0ZXIgY29udGFpbmVyIGZvciBiYWNrZ3JvdW5kIG9mIGJhciB0aGF0IGlzIGZpbmlzaGVkICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRvdmVyZmxvdzpoaWRkZW47XG5cdHotaW5kZXg6LTE7XG5cdHRvcDowO1xuXHR3aWR0aDoxMDAlO1xufVxuLmRqX2llNiAuZGlqaXRQcm9ncmVzc0JhckZ1bGwge1xuXHRoZWlnaHQ6MS42ZW07XG59XG5cbi5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGlubmVyIGNvbnRhaW5lciBmb3IgZmluaXNoZWQgcG9ydGlvbiAqL1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHRib3R0b206MDtcblx0cmlnaHQ6MDtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0d2lkdGg6IDEwMCU7ICAgIC8qIG5lZWRlZCBmb3IgSUUvcXVpcmtzICovXG5cdGhlaWdodDphdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNhYWE7XG5cdGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGExMXk6ICBUaGUgYm9yZGVyIHByb3ZpZGVzIHZpc2liaWxpdHkgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdGJvcmRlci13aWR0aDoycHg7XG5cdGJvcmRlci1zdHlsZTpzb2xpZDtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGpfaWU2IC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIHdpZHRoOmF1dG8gd29ya3MgaW4gSUU2IHdpdGggcG9zaXRpb246c3RhdGljIGJ1dCBub3QgcG9zaXRpb246YWJzb2x1dGUgKi9cblx0cG9zaXRpb246c3RhdGljO1xuXHQvKiBoZWlnaHQ6YXV0byBvciAxMDAlIGRvZXMgbm90IHdvcmsgaW4gSUU2ICovXG5cdGhlaWdodDoxLjZlbTtcbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlIC5kaWppdFByb2dyZXNzQmFyVGlsZSB7XG5cdC8qIGFuaW1hdGVkIGdpZiBmb3IgJ2luZGV0ZXJtaW5hdGUnIG1vZGUgKi9cbn1cblxuLmRpaml0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlSGlnaENvbnRyYXN0SW1hZ2Uge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdFByb2dyZXNzQmFySW5kZXRlcm1pbmF0ZSAuZGlqaXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVIaWdoQ29udHJhc3RJbWFnZSB7XG5cdGRpc3BsYXk6YmxvY2s7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR0b3A6MDtcblx0Ym90dG9tOjA7XG5cdG1hcmdpbjowO1xuXHRwYWRkaW5nOjA7XG5cdHdpZHRoOjEwMCU7XG5cdGhlaWdodDphdXRvO1xufVxuXG4uZGlqaXRQcm9ncmVzc0JhckxhYmVsIHtcblx0ZGlzcGxheTpibG9jaztcblx0cG9zaXRpb246c3RhdGljO1xuXHR3aWR0aDoxMDAlO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKioqKlxuXHRcdGRpaml0LlRvb2x0aXBcbiAqKioqL1xuXG4uZGlqaXRUb29sdGlwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAyMDAwO1xuXHRkaXNwbGF5OiBibG9jaztcblx0LyogbWFrZSB2aXNpYmxlIGJ1dCBvZmYgc2NyZWVuICovXG5cdGxlZnQ6IDA7XG5cdHRvcDogLTEwMDAwcHg7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcblx0Ym9yZGVyOiBzb2xpZCBibGFjayAycHg7XG5cdGJhY2tncm91bmQ6ICNiOGI1YjU7XG5cdGNvbG9yOiBibGFjaztcblx0Zm9udC1zaXplOiBzbWFsbDtcbn1cblxuLmRpaml0VG9vbHRpcEZvY3VzTm9kZSB7XG5cdHBhZGRpbmc6IDJweCAycHggMnB4IDJweDtcbn1cblxuLmRpaml0VG9vbHRpcENvbm5lY3RvciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbi5kal9hMTF5IC5kaWppdFRvb2x0aXBDb25uZWN0b3Ige1xuXHRkaXNwbGF5OiBub25lO1x0Lyogd29uJ3Qgc2hvdyBiL2MgaXQncyBiYWNrZ3JvdW5kLWltYWdlOyBoaWRlIHRvIGF2b2lkIGJvcmRlciBnYXAgKi9cbn1cblxuLmRpaml0VG9vbHRpcERhdGEge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi8qIExheW91dCB3aWRnZXRzLiBUaGlzIGlzIGVzc2VudGlhbCBDU1MgdG8gbWFrZSBsYXlvdXQgd29yayAoaXQgaXNuJ3QgXCJzdHlsaW5nXCIgQ1NTKVxuICAgbWFrZSBzdXJlIHRoYXQgdGhlIHBvc2l0aW9uOmFic29sdXRlIGluIGRpaml0QWxpZ24qIG92ZXJyaWRlcyBvdGhlciBjbGFzc2VzICovXG5cbi5kaWppdExheW91dENvbnRhaW5lciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaWppdEFsaWduVG9wLFxuLmRpaml0QWxpZ25Cb3R0b20sXG4uZGlqaXRBbGlnbkxlZnQsXG4uZGlqaXRBbGlnblJpZ2h0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5IC5kaWppdEFsaWduQ2xpZW50IHsgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi8qXG4gKiBCb3JkZXJDb250YWluZXJcbiAqXG4gKiAuZGlqaXRCb3JkZXJDb250YWluZXIgaXMgYSBzdHlsaXplZCBsYXlvdXQgd2hlcmUgcGFuZXMgaGF2ZSBib3JkZXIgYW5kIG1hcmdpbi5cbiAqIC5kaWppdEJvcmRlckNvbnRhaW5lck5vR3V0dGVyIGlzIGEgcmF3IGxheW91dC5cbiAqL1xuLmRpaml0Qm9yZGVyQ29udGFpbmVyLCAuZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlciB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDA7IC8qIHNvIHotaW5kZXggc2V0dGluZ3MgYmVsb3cgaGF2ZSBubyBlZmZlY3Qgb3V0c2lkZSBvZiB0aGUgQm9yZGVyQ29udGFpbmVyICovXG59XG5cbi5kaWppdEJvcmRlckNvbnRhaW5lclBhbmUsXG4uZGlqaXRCb3JkZXJDb250YWluZXJOb0d1dHRlclBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgcG9zaXRpb246cmVsYXRpdmUgaW4gZGlqaXRUYWJDb250YWluZXIgZXRjLiAqL1xuXHR6LWluZGV4OiAyO1x0XHQvKiBhYm92ZSB0aGUgc3BsaXR0ZXJzIHNvIHRoYXQgb2ZmLWJ5LW9uZSBicm93c2VyIGVycm9ycyBkb24ndCBjb3ZlciB1cCBib3JkZXIgb2YgcGFuZSAqL1xufVxuXG4uZGlqaXRCb3JkZXJDb250YWluZXIgPiAuZGlqaXRUZXh0QXJlYSB7XG5cdC8qIE9uIFNhZmFyaSwgZm9yIFNpbXBsZVRleHRBcmVhIGluc2lkZSBhIEJvcmRlckNvbnRhaW5lcixcblx0XHRkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuLmRpaml0R3V0dGVyIHtcblx0LyogZ3V0dGVyIGlzIGp1c3QgYSBwbGFjZSBob2xkZXIgZm9yIGVtcHR5IHNwYWNlIGJldHdlZW4gcGFuZXMgaW4gQm9yZGVyQ29udGFpbmVyICovXG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIG5lZWRlZCBieSBJRTYgZXZlbiB0aG91Z2ggZGl2IGlzIGVtcHR5LCBvdGhlcndpc2UgZ29lcyB0byAxNXB4ICovXG59XG5cbi8qIFNwbGl0Q29udGFpbmVyXG5cblx0J1YnID09IGNvbnRhaW5lciB0aGF0IHNwbGl0cyB2ZXJ0aWNhbGx5ICh1cC9kb3duKVxuXHQnSCcgPSBob3Jpem9udGFsIChsZWZ0L3JpZ2h0KVxuKi9cblxuLmRpaml0U3BsaXR0ZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHotaW5kZXg6IDEwO1x0XHQvKiBhYm92ZSB0aGUgcGFuZXMgc28gdGhhdCBzcGxpdHRlciBmb2N1cyBpcyB2aXNpYmxlIG9uIEZGLCBzZWUgIzc1ODMqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRib3JkZXItY29sb3I6IGdyYXk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogMDtcbn1cbi5kal9pZSAuZGlqaXRTcGxpdHRlciB7XG5cdHotaW5kZXg6IDE7XHQvKiBiZWhpbmQgdGhlIHBhbmVzIHNvIHRoYXQgcGFuZSBib3JkZXJzIGFyZW4ndCBvYnNjdXJlZCBzZWUgdGVzdF9HdWkuaHRtbC9bMTQzOTJdICovXG59XG5cbi5kaWppdFNwbGl0dGVyQWN0aXZlIHtcblx0ei1pbmRleDogMTEgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHR6LWluZGV4Oi0xO1xuXHR0b3A6MDtcblx0bGVmdDowO1xuXHR3aWR0aDoxMDAlO1xuXHRoZWlnaHQ6MTAwJTtcbn1cblxuLmRpaml0U3BsaXR0ZXJDb3ZlckFjdGl2ZSB7XG5cdHotaW5kZXg6MyAhaW1wb3J0YW50O1xufVxuXG4vKiAjNjk0NTogc3RvcCBtb3VzZSBldmVudHMgKi9cbi5kal9pZSAuZGlqaXRTcGxpdHRlckNvdmVyIHtcblx0YmFja2dyb3VuZDogd2hpdGU7XG5cdG9wYWNpdHk6IDA7XG59XG4uZGpfaWU2IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU3IC5kaWppdFNwbGl0dGVyQ292ZXIsXG4uZGpfaWU4IC5kaWppdFNwbGl0dGVyQ292ZXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MCk7XG59XG5cbi5kaWppdFNwbGl0dGVySCB7XG5cdGhlaWdodDogN3B4O1xuXHRib3JkZXItdG9wOjFweDtcblx0Ym9yZGVyLWJvdHRvbToxcHg7XG5cdGN1cnNvcjogcm93LXJlc2l6ZTtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdFNwbGl0dGVyViB7XG5cdHdpZHRoOiA3cHg7XG5cdGJvcmRlci1sZWZ0OjFweDtcblx0Ym9yZGVyLXJpZ2h0OjFweDtcblx0Y3Vyc29yOiBjb2wtcmVzaXplO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0U3BsaXRDb250YWluZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZGlqaXRTcGxpdFBhbmUge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILFxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0Zm9udC1zaXplOiAxcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IFRocmVlREZhY2U7XG5cdGJvcmRlcjogMXB4IHNvbGlkO1xuXHRib3JkZXItY29sb3I6IFRocmVlREhpZ2hsaWdodCBUaHJlZURTaGFkb3cgVGhyZWVEU2hhZG93IFRocmVlREhpZ2hsaWdodDtcblx0bWFyZ2luOiAwO1xufVxuXG4uZGlqaXRTcGxpdENvbnRhaW5lclNpemVySCAudGh1bWIsIC5kaWppdFNwbGl0dGVyViAuZGlqaXRTcGxpdHRlclRodW1iIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcblx0dG9wOjQ5JTtcbn1cblxuLmRpaml0U3BsaXRDb250YWluZXJTaXplclYgLnRodW1iLCAuZGlqaXRTcGxpdHRlckggLmRpaml0U3BsaXR0ZXJUaHVtYiB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHRsZWZ0OjQ5JTtcbn1cblxuLmRpaml0U3BsaXR0ZXJTaGFkb3csXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgsXG4uZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRmb250LXNpemU6IDFweDtcblx0YmFja2dyb3VuZC1jb2xvcjogVGhyZWVEU2hhZG93O1xuXHQtbW96LW9wYWNpdHk6IDAuNTtcblx0b3BhY2l0eTogMC41O1xuXHRmaWx0ZXI6IEFscGhhKE9wYWNpdHk9NTApO1xuXHRtYXJnaW46IDA7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJILCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplckgge1xuXHRjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5cbi5kaWppdFNwbGl0Q29udGFpbmVyU2l6ZXJWLCAuZGlqaXRTcGxpdENvbnRhaW5lclZpcnR1YWxTaXplclYge1xuXHRjdXJzb3I6IHJvdy1yZXNpemU7XG59XG5cbi5kal9hMTF5IC5kaWppdFNwbGl0dGVySCB7XG5cdGJvcmRlci10b3A6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2QzZDNkMyAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0U3BsaXR0ZXJWIHtcblx0Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNkM2QzZDMgIWltcG9ydGFudDtcblx0Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZDNkM2QzICFpbXBvcnRhbnQ7XG59XG5cbi8qIENvbnRlbnRQYW5lICovXG5cbi5kaWppdENvbnRlbnRQYW5lIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG92ZXJmbG93OiBhdXRvO1x0LyogaWYgd2UgZG9uJ3QgaGF2ZSB0aGlzIChvciBvdmVyZmxvdzpoaWRkZW4pLCB0aGVuIFdpZGdldC5yZXNpemVUbygpIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3IgQ29udGVudFBhbmUgKi9cblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZVNpbmdsZUNoaWxkIHtcblx0Lypcblx0ICogaWYgdGhlIENvbnRlbnRQYW5lIGhvbGRzIGEgc2luZ2xlIGxheW91dCB3aWRnZXQgY2hpbGQgd2hpY2ggaXMgYmVpbmcgc2l6ZWQgdG8gbWF0Y2ggdGhlIGNvbnRlbnQgcGFuZSxcblx0ICogdGhlbiB0aGUgQ29udGVudFBhbmUgc2hvdWxkIG5ldmVyIGdldCBhIHNjcm9sbGJhciAoYnV0IGl0IGRvZXMgZHVlIHRvIGJyb3dzZXIgYnVncywgc2VlICM5NDQ5XG5cdCAqL1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZGlqaXRDb250ZW50UGFuZUxvYWRpbmcgLmRpaml0SWNvbkxvYWRpbmcsXG4uZGlqaXRDb250ZW50UGFuZUVycm9yIC5kaWppdEljb25FcnJvciB7XG5cdG1hcmdpbi1yaWdodDogOXB4O1xufVxuXG4vKiBUaXRsZVBhbmUgYW5kIEZpZWxkc2V0ICovXG5cbi5kaWppdFRpdGxlUGFuZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xufVxuLmRpaml0RmllbGRzZXQge1xuXHRib3JkZXI6IDFweCBzb2xpZCBncmF5O1xufVxuLmRpaml0VGl0bGVQYW5lVGl0bGUsIC5kaWppdEZpZWxkc2V0VGl0bGUge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkT3BlbiwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCxcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4sIC5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZENsb3NlZCB7XG5cdC8qIFRpdGxlUGFuZSBvciBGaWVsZHNldCB0aGF0IGNhbm5vdCBiZSB0b2dnbGVkICovXG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlICoge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIG5vcm1hbGx5LCBoaWRlIGFycm93IHRleHQgaW4gZmF2b3Igb2YgaWNvbiAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZUlubmVyLCAuZGpfYTExeSAuZGlqaXRGaWVsZHNldCAuZGlqaXRBcnJvd05vZGVJbm5lciB7XG5cdC8qIC4uLiBleGNlcHQgaW4gYTExeSBtb2RlLCB0aGVuIHNob3cgdGV4dCBhcnJvdyAqL1xuXHRkaXNwbGF5OiBpbmxpbmU7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XHRcdC8qIGJlY2F1c2UgLSBhbmQgKyBhcmUgZGlmZmVyZW50IHdpZHRocyAqL1xufVxuLmRqX2ExMXkgLmRpaml0VGl0bGVQYW5lIC5kaWppdEFycm93Tm9kZSwgLmRqX2ExMXkgLmRpaml0RmllbGRzZXQgLmRpaml0QXJyb3dOb2RlIHtcblx0LyogLi4uIGFuZCBoaWRlIGljb24gKFRPRE86IGp1c3QgcG9pbnQgZGlqaXRJY29uIGNsYXNzIG9uIHRoZSBpY29uLCBhbmQgaXQgaGlkZXMgYXV0b21hdGljYWxseSkgKi9cblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kaWppdFRpdGxlUGFuZVRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlSW5uZXIsXG4uZGlqaXRUaXRsZVBhbmVUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0VGl0bGVQYW5lVGl0bGVGaXhlZENsb3NlZCAuZGlqaXRBcnJvd05vZGVJbm5lcixcbi5kaWppdEZpZWxkc2V0VGl0bGVGaXhlZE9wZW4gLmRpaml0QXJyb3dOb2RlLCAuZGlqaXRGaWVsZHNldFRpdGxlRml4ZWRPcGVuIC5kaWppdEFycm93Tm9kZUlubmVyLFxuLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZSwgLmRpaml0RmllbGRzZXRUaXRsZUZpeGVkQ2xvc2VkIC5kaWppdEFycm93Tm9kZUlubmVyIHtcblx0LyogZG9uJ3Qgc2hvdyB0aGUgb3BlbiBjbG9zZSBpY29uIG9yIHRleHQgYXJyb3c7IGl0IG1ha2VzIHRoZSB1c2VyIHRoaW5rIHRoZSBwYW5lIGlzIGNsb3NhYmxlICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcdC8qICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgYWJvdmUgYTExeSBydWxlcyB0byBzaG93IHRleHQgYXJyb3cgKi9cbn1cblxuLmRqX2llNiAuZGlqaXRUaXRsZVBhbmVDb250ZW50T3V0ZXIsXG4uZGpfaWU2IC5kaWppdFRpdGxlUGFuZSAuZGlqaXRUaXRsZVBhbmVUaXRsZSB7XG5cdC8qIGZvcmNlIGhhc0xheW91dCB0byBlbnN1cmUgYm9yZGVycyBldGMsIHNob3cgdXAgKi9cblx0em9vbTogMTtcbn1cblxuLyogQ29sb3IgUGFsZXR0ZVxuICogU2l6ZXMgZGVzaWduZWQgc28gdGhhdCB0YWJsZSBjZWxsIHBvc2l0aW9ucyBtYXRjaCBpY29ucyBpbiB1bmRlcmx5aW5nIGltYWdlLFxuICogd2hpY2ggYXBwZWFyIGF0IDIweDIwIGludGVydmFscy5cbiAqL1xuXG4uZGlqaXRDb2xvclBhbGV0dGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUge1xuXHQvKiBUYWJsZSB0aGF0IGhvbGRzIHRoZSBwYWxldHRlIGNlbGxzLCBhbmQgb3ZlcmxheXMgaW1hZ2UgZmlsZSB3aXRoIGNvbG9yIHN3YXRjaGVzLlxuXHQgKiBwYWRkaW5nL21hcmdpbiB0byBhbGlnbiB0YWJsZSB3aXRoIGltYWdlLlxuXHQgKi9cblx0cGFkZGluZzogMnB4IDNweCAzcHggM3B4O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdG91dGxpbmU6IDA7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7XG59XG4uZGpfaWU2IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWU3IC5kaWppdENvbG9yUGFsZXR0ZSAuZGlqaXRQYWxldHRlVGFibGUsXG4uZGpfaWVxdWlya3MgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSB7XG5cdC8qIHVzaW5nIHBhZGRpbmcgYWJvdmUgc28gdGhhdCBmb2N1cyBib3JkZXIgaXNuJ3QgY3V0b2ZmIG9uIG1vei93ZWJraXQsXG5cdCAqIGJ1dCB1c2luZyBtYXJnaW4gb24gSUUgYmVjYXVzZSBwYWRkaW5nIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG5cdCAqL1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDJweCAzcHggM3B4IDNweDtcbn1cblxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsIHtcblx0LyogPHRkPiBpbiB0aGUgPHRhYmxlPiAqL1xuXHRmb250LXNpemU6IDFweDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBDYWxsZWQgZGlqaXRQYWxldHRlSW1nIGZvciBiYWNrLWNvbXBhdCwgdGhpcyBhY3R1YWxseSB3cmFwcyB0aGUgY29sb3Igc3dhdGNoIHdpdGggYSBib3JkZXIgYW5kIHBhZGRpbmcgKi9cblx0cGFkZGluZzogMXB4O1x0XHQvKiB3aGl0ZSBhcmVhIGJldHdlZW4gZ3JheSBib3JkZXIgYW5kIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuXHRtYXJnaW46IDJweCAxcHg7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0Zm9udC1zaXplOiAxcHg7XHRcdC8qIHByZXZlbnQgPHNwYW4+IGZyb20gZ2V0dGluZyBiaWdnZXIganVzdCB0byBob2xkIGEgY2hhcmFjdGVyICovXG59XG4uZGpfZ2Vja28gLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVJbWcge1xuXHRwYWRkaW5nLWJvdHRvbTogMDtcdC8qIHdvcmthcm91bmQgcmVuZGVyaW5nIGdsaXRjaCBvbiBGRiwgaXQgYWRkcyBhbiBleHRyYSBwaXhlbCBhdCB0aGUgYm90dG9tICovXG59XG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0Q29sb3JQYWxldHRlU3dhdGNoIHtcblx0LyogdGhlIGFjdHVhbCBwYXJ0IHdoZXJlIHRoZSBjb2xvciBpcyAqL1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxMnB4O1xufVxuLmRpaml0UGFsZXR0ZVRhYmxlIHRkIHtcblx0XHRwYWRkaW5nOiAwO1xufVxuLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVDZWxsOmhvdmVyIC5kaWppdFBhbGV0dGVJbWcge1xuXHQvKiBob3ZlcmVkIGNvbG9yIHN3YXRjaCAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xufVxuXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZUNlbGw6YWN0aXZlIC5kaWppdFBhbGV0dGVJbWcsXG4uZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlIC5kaWppdFBhbGV0dGVDZWxsU2VsZWN0ZWQgLmRpaml0UGFsZXR0ZUltZyB7XG5cdGJvcmRlcjogMnB4IHNvbGlkICMwMDA7XG5cdG1hcmdpbjogMXB4IDA7XHQvKiByZWR1Y2UgbWFyZ2luIHRvIGNvbXBlbnNhdGUgZm9yIGluY3JlYXNlZCBib3JkZXIgKi9cbn1cblxuXG4uZGpfYTExeSAuZGlqaXRDb2xvclBhbGV0dGUgLmRpaml0UGFsZXR0ZVRhYmxlLFxuLmRqX2ExMXkgLmRpaml0Q29sb3JQYWxldHRlIC5kaWppdFBhbGV0dGVUYWJsZSAqIHtcblx0LyogdGFibGUgY2VsbHMgYXJlIHRvIGNhdGNoIGV2ZW50cywgYnV0IHRoZSBzd2F0Y2hlcyBhcmUgaW4gdGhlIFBhbGV0dGVJbWcgYmVoaW5kIHRoZSB0YWJsZSAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4vKiBBY2NvcmRpb25Db250YWluZXIgKi9cblxuLmRpaml0QWNjb3JkaW9uQ29udGFpbmVyIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjYjdiN2I3O1xuXHRib3JkZXItdG9wOjAgIWltcG9ydGFudDtcbn1cbi5kaWppdEFjY29yZGlvblRpdGxlIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0QWNjb3JkaW9uVGl0bGVTZWxlY3RlZCB7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogaW1hZ2VzIG9mZiwgaGlnaC1jb250cmFzdCBtb2RlIHN0eWxlcyAqL1xuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dFVwLFxuLmRpaml0QWNjb3JkaW9uVGl0bGUgLmFycm93VGV4dERvd24ge1xuXHRkaXNwbGF5OiBub25lO1xuXHRmb250LXNpemU6IDAuNjVlbTtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZSAuYXJyb3dUZXh0VXAsXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHREb3duIHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGpfYTExeSAuZGlqaXRBY2NvcmRpb25UaXRsZVNlbGVjdGVkIC5hcnJvd1RleHRVcCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kaWppdEFjY29yZGlvbkNoaWxkV3JhcHBlciB7XG5cdC8qIHRoaXMgaXMgdGhlIG5vZGUgd2hvc2UgaGVpZ2h0IGlzIGFkanVzdGVkICovXG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIENhbGVuZGFyICovXG5cbi5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRhYmxlIHtcblx0d2lkdGg6IGF1dG87XHQvKiBpbiBjYXNlIHVzZXIgaGFzIHNwZWNpZmllZCBhIHdpZHRoIGZvciB0aGUgVEFCTEUgbm9kZXMsIHNlZSAjMTA1NTMgKi9cblx0Y2xlYXI6IGJvdGg7ICAgIC8qIGNsZWFyIG1hcmdpbiBjcmVhdGVkIGZvciBsZWZ0L3JpZ2h0IG1vbnRoIGFycm93czsgbmVlZGVkIG9uIElFMTAgZm9yIENhbGVuZGFyTGl0ZSAqL1xufVxuLmRpaml0Q2FsZW5kYXJDb250YWluZXIgdGgsIC5kaWppdENhbGVuZGFyQ29udGFpbmVyIHRkIHtcblx0cGFkZGluZzogMDtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLmRpaml0Q2FsZW5kYXJNb250aENvbnRhaW5lciB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5kaWppdENhbGVuZGFyRGVjcmVtZW50QXJyb3cge1xuXHRmbG9hdDogbGVmdDtcbn1cbi5kaWppdENhbGVuZGFySW5jcmVtZW50QXJyb3cge1xuXHRmbG9hdDogcmlnaHQ7XG59XG5cbi5kaWppdENhbGVuZGFyWWVhckxhYmVsIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyAgICAvKiBtYWtlIHN1cmUgcHJldmlvdXMsIGN1cnJlbnQsIGFuZCBuZXh0IHllYXIgYXBwZWFyIG9uIHNhbWUgcm93ICovXG59XG5cbi5kaWppdENhbGVuZGFyTmV4dFllYXIge1xuXHRtYXJnaW46MCAwIDAgMC41NWVtO1xufVxuXG4uZGlqaXRDYWxlbmRhclByZXZpb3VzWWVhciB7XG5cdG1hcmdpbjowIDAuNTVlbSAwIDA7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kaWppdENhbGVuZGFySW5jcmVtZW50Q29udHJvbCxcbi5kaWppdENhbGVuZGFyRGF0ZVRlbXBsYXRlLFxuLmRpaml0Q2FsZW5kYXJNb250aExhYmVsLFxuLmRpaml0Q2FsZW5kYXJQcmV2aW91c1llYXIsXG4uZGlqaXRDYWxlbmRhck5leHRZZWFyIHtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRDYWxlbmRhckRpc2FibGVkRGF0ZSB7XG5cdGNvbG9yOiBncmF5O1xuXHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRTcGFjZXIge1xuXHQvKiBkb24ndCBkaXNwbGF5IGl0LCBidXQgbWFrZSBpdCBhZmZlY3QgdGhlIHdpZHRoICovXG4gIFx0cG9zaXRpb246IHJlbGF0aXZlO1xuICBcdGhlaWdodDogMXB4O1xuICBcdG92ZXJmbG93OiBoaWRkZW47XG4gIFx0dmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4vKiBTdHlsaW5nIGZvciBtb250aCBkcm9wIGRvd24gbGlzdCAqL1xuXG4uZGlqaXRDYWxlbmRhck1vbnRoTWVudSAuZGlqaXRDYWxlbmRhck1vbnRoTGFiZWwge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLyogTWVudSAqL1xuXG4uZGlqaXRNZW51IHtcblx0Ym9yZGVyOjFweCBzb2xpZCBibGFjaztcblx0YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtcbn1cbi5kaWppdE1lbnVUYWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcblx0Ym9yZGVyLXdpZHRoOjA7XG5cdGJhY2tncm91bmQtY29sb3I6d2hpdGU7XG59XG5cbi8qIHdvcmthcm91bmQgZm9yIHdlYmtpdCBidWcgIzg0MjcsIHJlbW92ZSB0aGlzIHdoZW4gaXQgaXMgZml4ZWQgdXBzdHJlYW0gKi9cbi5kal93ZWJraXQgLmRpaml0TWVudVRhYmxlIHRkW2NvbHNwYW49XCIyXCJde1xuXHRib3JkZXItcmlnaHQ6aGlkZGVuO1xufVxuXG4uZGlqaXRNZW51SXRlbSB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdHBhZGRpbmc6LjFlbSAuMmVtO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLypcbk5vIG5lZWQgdG8gc2hvdyBhIGZvY3VzIGJvcmRlciBzaW5jZSBpdCdzIG9idmlvdXMgZnJvbSB0aGUgc2hhZGluZywgYW5kIHRoZXJlJ3MgYSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbVNlbGVjdGVkXG5ydWxlIGJlbG93IHRoYXQgaGFuZGxlcyB0aGUgaGlnaCBjb250cmFzdCBjYXNlIHdoZW4gdGhlcmUncyBubyBzaGFkaW5nLlxuSGlkaW5nIHRoZSBmb2N1cyBib3JkZXIgYWxzbyB3b3JrcyBhcm91bmQgd2Via2l0IGJ1ZyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTI1Nzc5LlxuKi9cbi5kaWppdE1lbnVJdGVtOmZvY3VzIHtcblx0b3V0bGluZTogbm9uZVxufVxuXG4uZGlqaXRNZW51UGFzc2l2ZSAuZGlqaXRNZW51SXRlbUhvdmVyLFxuLmRpaml0TWVudUl0ZW1TZWxlY3RlZCB7XG5cdC8qXG5cdCAqIGRpaml0TWVudUl0ZW1Ib3ZlciByZWZlcnMgdG8gYWN0dWFsIG1vdXNlIG92ZXJcblx0ICogZGlqaXRNZW51SXRlbVNlbGVjdGVkIGlzIHVzZWQgYWZ0ZXIgYSBtZW51IGhhcyBiZWVuIFwiYWN0aXZhdGVkXCIgYnlcblx0ICogY2xpY2tpbmcgaXQsIHRhYmJpbmcgaW50byBpdCwgb3IgYmVpbmcgb3BlbmVkIGZyb20gYSBwYXJlbnQgbWVudSxcblx0ICogYW5kIGRlbm90ZXMgdGhhdCB0aGUgbWVudSBpdGVtIGhhcyBmb2N1cyBvciB0aGF0IGZvY3VzIGlzIG9uIGEgY2hpbGRcblx0ICogbWVudVxuXHQgKi9cblx0YmFja2dyb3VuZC1jb2xvcjpibGFjaztcblx0Y29sb3I6d2hpdGU7XG59XG5cbi5kaWppdE1lbnVJdGVtSWNvbiwgLmRpaml0TWVudUV4cGFuZCB7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG59XG5cbi5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKiB7XG5cdC8qIGZvciBhIGRpc2FibGVkIG1lbnUgaXRlbSwganVzdCBzZXQgaXQgdG8gbW9zdGx5IHRyYW5zcGFyZW50ICovXG5cdG9wYWNpdHk6MC41O1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kal9pZSAuZGpfYTExeSAuZGlqaXRNZW51SXRlbURpc2FibGVkLFxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVJdGVtRGlzYWJsZWQgKixcbi5kal9pZSAuZGlqaXRNZW51SXRlbURpc2FibGVkICoge1xuXHRjb2xvcjogZ3JheTtcblx0ZmlsdGVyOiBhbHBoYShvcGFjaXR5PTM1KTtcbn1cblxuLmRpaml0TWVudUl0ZW1MYWJlbCB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtU2VsZWN0ZWQge1xuXHRib3JkZXI6IDFweCBkb3R0ZWQgYmxhY2sgIWltcG9ydGFudDtcdC8qIGZvciAyLjAgdXNlIG91dGxpbmUgaW5zdGVhZCwgdG8gcHJldmVudCBqaXR0ZXIgKi9cbn1cblxuLmRqX2ExMXkgLmRpaml0TWVudUl0ZW1TZWxlY3RlZCAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWU4IC5kal9hMTF5IC5kaWppdE1lbnVJdGVtTGFiZWwge1xuXHRwb3NpdGlvbjpzdGF0aWM7XG59XG5cbi5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5kal9hMTF5IC5kaWppdE1lbnVFeHBhbmRBMTF5IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRNZW51U2VwYXJhdG9yIHRkIHtcblx0Ym9yZGVyOiAwO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKiBzZXBhcmF0b3IgY2FuIGJlIHR3byBwaXhlbHMgLS0gc2V0IGJvcmRlciBvZiBlaXRoZXIgb25lIHRvIDAgdG8gaGF2ZSBvbmx5IG9uZSAqL1xuLmRpaml0TWVudVNlcGFyYXRvclRvcCB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi10b3A6M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLmRpaml0TWVudVNlcGFyYXRvckJvdHRvbSB7XG5cdGhlaWdodDogNTAlO1xuXHRtYXJnaW46IDA7XG5cdG1hcmdpbi1ib3R0b206M3B4O1xuXHRmb250LXNpemU6IDFweDtcbn1cblxuLyogQ2hlY2tlZE1lbnVJdGVtIGFuZCBSYWRpb01lbnVJdGVtICovXG4uZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0ZGlzcGxheTogbm9uZTtcdFx0LyogZG9uJ3QgZGlzcGxheSBleGNlcHQgaW4gaGlnaCBjb250cmFzdCBtb2RlICovXG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcdC8qIGZvciBoaWdoIGNvbnRyYXN0IG1vZGUgd2hlbiBtZW51aXRlbSBpcyB1bmNoZWNrZWQ6IGxlYXZlIHNwYWNlIGZvciB3aGVuIGl0IGlzIGNoZWNrZWQgKi9cbn1cbi5kal9hMTF5IC5kaWppdE1lbnVJdGVtSWNvbkNoYXIge1xuXHRkaXNwbGF5OiBpbmxpbmU7XHQvKiBkaXNwbGF5IGNoYXJhY3RlciBpbiBoaWdoIGNvbnRyYXN0IG1vZGUsIHNpbmNlIGljb24gZG9lc24ndCBzaG93ICovXG59XG4uZGlqaXRDaGVja2VkTWVudUl0ZW1DaGVja2VkIC5kaWppdE1lbnVJdGVtSWNvbkNoYXIsXG4uZGlqaXRSYWRpb01lbnVJdGVtQ2hlY2tlZCAuZGlqaXRNZW51SXRlbUljb25DaGFyIHtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTsgLyogbWVudWl0ZW0gaXMgY2hlY2tlZCAqL1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdE1lbnVCYXIgLmRpaml0TWVudUl0ZW0ge1xuXHQvKiBzbyBib3R0b20gYm9yZGVyIG9mIE1lbnVCYXIgYXBwZWFycyBvbiBJRTcgaW4gaGlnaC1jb250cmFzdCBtb2RlICovXG5cdG1hcmdpbjogMDtcbn1cblxuLyogU3RhY2tDb250YWluZXIgKi9cblxuLmRpaml0U3RhY2tDb250cm9sbGVyIC5kaWppdFRvZ2dsZUJ1dHRvbkNoZWNrZWQgKiB7XG5cdGN1cnNvcjogZGVmYXVsdDtcdC8qIGJlY2F1c2UgcHJlc3NpbmcgaXQgaGFzIG5vIGVmZmVjdCAqL1xufVxuXG4vKioqXG5UYWJDb250YWluZXJcblxuTWFpbiBjbGFzcyBoaWVyYXJjaHk6XG5cbi5kaWppdFRhYkNvbnRhaW5lciAtIHRoZSB3aG9sZSBUYWJDb250YWluZXJcbiAgIC5kaWppdFRhYkNvbnRyb2xsZXIgLyAuZGlqaXRUYWJMaXN0Q29udGFpbmVyLXRvcCAtIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zLCBzY3JvbGwgYnV0dG9uc1xuXHQgLmRpaml0VGFiTGlzdFdyYXBwZXIgLyAuZGlqaXRUYWJDb250YWluZXJUb3BTdHJpcCAtIG91dGVyIHdyYXBwZXIgZm9yIHRhYiBidXR0b25zIChub3JtYWwgd2lkdGgpXG5cdFx0Lm5vd3JhcFRhYlN0cmlwIC8gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLSBpbm5lciB3cmFwcGVyIGZvciB0YWIgYnV0dG9ucyAoNTBLIHdpZHRoKVxuICAgLmRpaml0VGFiUGFuZVdyYXBwZXIgLSB3cmFwcGVyIGZvciBjb250ZW50IHBhbmVzLCBoYXMgYWxsIGJvcmRlcnMgZXhjZXB0IHRoZSBvbmUgYmV0d2VlbiBjb250ZW50IGFuZCB0YWJzXG4qKiovXG5cbi5kaWppdFRhYkNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMDsgLyogc28gei1pbmRleCBzZXR0aW5ncyBiZWxvdyBoYXZlIG5vIGVmZmVjdCBvdXRzaWRlIG9mIHRoZSBUYWJDb250YWluZXIgKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogcHJldmVudCBvZmYtYnktb25lLXBpeGVsIGVycm9ycyBmcm9tIGhpZGluZyBib3R0b20gYm9yZGVyIChvcHBvc2l0ZSB0YWIgbGFiZWxzKSAqL1xufVxuLmRqX2llNiAuZGlqaXRUYWJDb250YWluZXIge1xuICAgIC8qIHdvcmthcm91bmQgSUU2IHByb2JsZW0gd2hlbiB0YWxsIGNvbnRlbnQgb3ZlcmZsb3dzIFRhYkNvbnRhaW5lciwgc2VlIGVkaXRvci90ZXN0X0Z1bGxTY3JlZW4uaHRtbCAqL1xuICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxufVxuLmRpaml0VGFiQ29udGFpbmVyTm9MYXlvdXQge1xuXHR3aWR0aDogMTAwJTtcdC8qIG90aGVyd2lzZSBTY3JvbGxpbmdUYWJDb250cm9sbGVyIGdvZXMgdG8gNTBLIHBpeGVscyB3aWRlICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzLFxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMsXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcbiAgICB6LWluZGV4OiAxO1xuXHRvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OyAgLyogc28gdGFicyBjYW4gY292ZXIgdXAgYm9yZGVyIGFkamFjZW50IHRvIGNvbnRhaW5lciAqL1xufVxuXG4uZGlqaXRUYWJDb250cm9sbGVyIHtcbiAgICB6LWluZGV4OiAxO1xufVxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIsXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lcixcbi5kaWppdFRhYkNvbnRhaW5lclJpZ2h0LWNvbnRhaW5lciB7XG5cdHotaW5kZXg6MDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XG59XG4ubm93cmFwVGFiU3RyaXAge1xuXHR3aWR0aDogNTAwMDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAgLyoganVzdCBpbiBjYXNlIGFuY2VzdG9yIGhhcyBub24tc3RhbmRhcmQgc2V0dGluZyAqL1xuICAgIHotaW5kZXg6IDE7XG59XG4uZGlqaXRUYWJMaXN0V3JhcHBlciB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcbn1cblxuLmRqX2ExMXkgLnRhYlN0cmlwQnV0dG9uIGltZyB7XG5cdC8qIGhpZGUgdGhlIGljb25zIChvciByYXRoZXIgdGhlIGVtcHR5IHNwYWNlIHdoZXJlIHRoZXkgbm9ybWFsbHkgYXBwZWFyKSBiZWNhdXNlIHRleHQgd2lsbCBhcHBlYXIgaW5zdGVhZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJUb3AtdGFicyB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lclRvcC1jb250YWluZXIge1xuXHRib3JkZXItdG9wOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMge1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LWNvbnRhaW5lciB7XG5cdGJvcmRlci1sZWZ0OiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJCb3R0b20tdGFicyB7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCBibGFjaztcbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS1jb250YWluZXIge1xuXHRib3JkZXItYm90dG9tOiAwO1xufVxuXG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIHtcblx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCBibGFjaztcblx0ZmxvYXQ6IGxlZnQ7ICAgIC8qIG5lZWRlZCBmb3IgSUU3IFJUTCBtb2RlICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC1jb250YWluZXIge1xuXHRib3JkZXItcmlnaHQ6IDA7XG59XG5cbmRpdi5kaWppdFRhYkRpc2FibGVkLCAuZGpfaWUgZGl2LmRpaml0VGFiRGlzYWJsZWQge1xuXHRjdXJzb3I6IGF1dG87XG59XG5cbi5kaWppdFRhYiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRjdXJzb3I6cG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcblx0d2hpdGUtc3BhY2U6bm93cmFwO1xuXHR6LWluZGV4OjM7XG59XG4uZGlqaXRUYWIgKiB7XG5cdC8qIG1ha2UgdGFiIGljb25zIGFuZCBjbG9zZSBpY29uIGxpbmUgdXAgdy90ZXh0ICovXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uZGlqaXRUYWJDaGVja2VkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1x0LyogYmVjYXVzZSBjbGlja2luZyB3aWxsIGhhdmUgbm8gZWZmZWN0ICovXG59XG5cbi5kaWppdFRhYkNvbnRhaW5lclRvcC10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgKi9cbn1cbi5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzIC5kaWppdFRhYiB7XG5cdHRvcDogLTFweDtcdC8qIHRvIG92ZXJsYXAgYm9yZGVyIG9uIC5kaWppdFRhYkNvbnRhaW5lckJvdHRvbS10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJMZWZ0LXRhYnMgLmRpaml0VGFiIHtcblx0bGVmdDogMXB4O1x0LyogdG8gb3ZlcmxhcCBib3JkZXIgb24gLmRpaml0VGFiQ29udGFpbmVyTGVmdC10YWJzICovXG59XG4uZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzIC5kaWppdFRhYiB7XG5cdGxlZnQ6IC0xcHg7XHQvKiB0byBvdmVybGFwIGJvcmRlciBvbiAuZGlqaXRUYWJDb250YWluZXJSaWdodC10YWJzICovXG59XG5cblxuLmRpaml0VGFiQ29udGFpbmVyVG9wLXRhYnMgLmRpaml0VGFiLFxuLmRpaml0VGFiQ29udGFpbmVyQm90dG9tLXRhYnMgLmRpaml0VGFiIHtcblx0LyogSW5saW5lLWJsb2NrICovXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1x0XHRcdC8qIHdlYmtpdCBhbmQgRkYzICovXG5cdCN6b29tOiAxOyAvKiBzZXQgaGFzTGF5b3V0OnRydWUgdG8gbWltaWMgaW5saW5lLWJsb2NrICovXG5cdCNkaXNwbGF5OmlubGluZTsgLyogZG9uJ3QgdXNlIC5kal9pZSBzaW5jZSB0aGF0IGluY3JlYXNlcyB0aGUgcHJpb3JpdHkgKi9cbn1cblxuLnRhYlN0cmlwQnV0dG9uIHtcblx0ei1pbmRleDogMTI7XG59XG5cbi5kaWppdFRhYkJ1dHRvbkRpc2FibGVkIC50YWJTdHJpcEJ1dHRvbiB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cblxuLmRpaml0VGFiQ2xvc2VCdXR0b24ge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xufVxuXG4uZGlqaXRUYWJDbG9zZVRleHQge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cbi5kaWppdFRhYiAudGFiTGFiZWwge1xuXHQvKiBtYWtlIHN1cmUgdGFicyB3L2Nsb3NlIGJ1dHRvbiBhbmQgdy9vdXQgY2xvc2UgYnV0dG9uIGFyZSBzYW1lIGhlaWdodCwgZXZlbiB3L3NtYWxsICg8MTVweCkgZm9udC5cblx0ICogYXNzdW1lcyA8PTE1cHggaGVpZ2h0IGZvciBjbG9zZSBidXR0b24gaWNvbi5cblx0ICovXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5kaWppdE5vSWNvbiB7XG5cdC8qIGFwcGxpZWQgdG8gPGltZz4vPHNwYW4+IG5vZGUgd2hlbiB0aGVyZSBpcyBubyBpY29uIHNwZWNpZmllZCAqL1xuXHRkaXNwbGF5OiBub25lO1xufVxuLmRqX2llNiAuZGlqaXRUYWIgLmRpaml0Tm9JY29uIHtcblx0LyogYmVjYXVzZSBtaW4taGVpZ2h0IChvbiAudGFiTGFiZWwsIGFib3ZlKSBkb2Vzbid0IHdvcmsgb24gSUU2ICovXG5cdGRpc3BsYXk6IGlubGluZTtcblx0aGVpZ2h0OiAxNXB4O1xuXHR3aWR0aDogMXB4O1xufVxuXG4vKiBpbWFnZXMgb2ZmLCBoaWdoLWNvbnRyYXN0IG1vZGUgc3R5bGVzICovXG5cbi5kal9hMTF5IC5kaWppdFRhYkNsb3NlQnV0dG9uIHtcblx0YmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuXHR3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLmRqX2ExMXkgLmRpaml0VGFiQ2xvc2VUZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xufVxuXG4uZGlqaXRUYWJQYW5lLFxuLmRpaml0U3RhY2tDb250YWluZXItY2hpbGQsXG4uZGlqaXRBY2NvcmRpb25Db250YWluZXItY2hpbGQge1xuXHQvKiBjaGlsZHJlbiBvZiBUYWJDb250YWluZXIsIFN0YWNrQ29udGFpbmVyLCBhbmQgQWNjb3JkaW9uQ29udGFpbmVyIHNob3VsZG4ndCBoYXZlIGJvcmRlcnNcblx0ICogYi9jIGEgYm9yZGVyIGlzIGFscmVhZHkgdGhlcmUgZnJvbSB0aGUgVGFiQ29udGFpbmVyL1N0YWNrQ29udGFpbmVyL0FjY29yZGlvbkNvbnRhaW5lciBpdHNlbGYuXG5cdCAqL1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBJbmxpbmVFZGl0Qm94ICovXG4uZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcdC8qIHNvIGtleWxpbmUgKGJvcmRlcikgb24gaG92ZXIgY2FuIGFwcGVhciB3aXRob3V0IHNjcmVlbiBqdW1wICovXG5cdGN1cnNvcjogdGV4dDtcbn1cblxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlLFxuLmRqX2llNiAuZGlqaXRJbmxpbmVFZGl0Qm94RGlzcGxheU1vZGUge1xuXHQvKiBleGNlcHQgdGhhdCBJRTYgZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW50IGJvcmRlcnMsIG5vciBkb2VzIGhpZ2ggY29udHJhc3QgbW9kZSAqL1xuXHRib3JkZXI6IG5vbmU7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyLFxuLmRqX2ExMXkgLmRpaml0SW5saW5lRWRpdEJveERpc3BsYXlNb2RlSG92ZXIsXG4uZGpfaWU2IC5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZUhvdmVyIHtcblx0LyogQW4gSW5saW5lRWRpdEJveCBpbiB2aWV3IG1vZGUgKGNsaWNrIHRoaXMgdG8gZWRpdCB0aGUgdGV4dCkgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2UyZWJmMjtcblx0Ym9yZGVyOiBzb2xpZCAxcHggYmxhY2s7XG59XG5cbi5kaWppdElubGluZUVkaXRCb3hEaXNwbGF5TW9kZURpc2FibGVkIHtcblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBUcmVlICovXG4uZGlqaXRUcmVlIHtcblx0b3ZlcmZsb3c6IGF1dG87XHQvKiBmb3Igc2Nyb2xsYmFycyB3aGVuIFRyZWUgaGFzIGEgaGVpZ2h0IHNldHRpbmcsIGFuZCB0byBwcmV2ZW50IHdyYXBwaW5nIGFyb3VuZCBmbG9hdCBlbGVtZW50cywgc2VlICMxMTQ5MSAqL1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlqaXRUcmVlQ29udGFpbmVyIHtcblx0ZmxvYXQ6IGxlZnQ7XHQvKiBmb3IgY29ycmVjdCBoaWdobGlnaHRpbmcgZHVyaW5nIGhvcml6b250YWwgc2Nyb2xsLCBzZWUgIzE2MTMyICovXG59XG5cbi5kaWppdFRyZWVJbmRlbnQge1xuXHQvKiBhbW91bnQgdG8gaW5kZW50IGVhY2ggdHJlZSBub2RlIChyZWxhdGl2ZSB0byBwYXJlbnQgbm9kZSkgKi9cblx0d2lkdGg6IDE5cHg7XG59XG5cbi5kaWppdFRyZWVSb3csIC5kaWppdFRyZWVDb250ZW50IHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmRqX2llIC5kaWppdFRyZWVMYWJlbDpmb2N1cyB7XG5cdC8qIHdvcmthcm91bmQgSUU5IGJlaGF2aW9yIHdoZXJlIGRvd24gYXJyb3dpbmcgdGhyb3VnaCBUcmVlTm9kZXMgZG9lc24ndCBzaG93IGZvY3VzIG91dGxpbmUgKi9cblx0b3V0bGluZTogMXB4IGRvdHRlZCBibGFjaztcbn1cblxuLmRpaml0VHJlZVJvdyBpbWcge1xuXHQvKiBtYWtlIHRoZSBleHBhbmRvIGFuZCBmb2xkZXIgaWNvbnMgbGluZSB1cCB3aXRoIHRoZSBsYWJlbCAqL1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4uZGlqaXRUcmVlQ29udGVudCB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4uZGlqaXRFeHBhbmRvVGV4dCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi5kal9hMTF5IC5kaWppdEV4cGFuZG9UZXh0IHtcblx0ZGlzcGxheTogaW5saW5lO1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG5cdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci13aWR0aDogdGhpbjtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uZGlqaXRUcmVlTGFiZWwge1xuXHRtYXJnaW46IDAgNHB4O1xufVxuXG4vKiBEaWFsb2cgKi9cblxuLmRpaml0RGlhbG9nIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiA5OTk7XG5cdG92ZXJmbG93OiBoaWRkZW47XHQvKiBvdmVycmlkZSBvdmVyZmxvdzogYXV0bzsgZnJvbSBDb250ZW50UGFuZSB0byBtYWtlIGRyYWdnaW5nIHNtb290aGVyICovXG59XG5cbi5kaWppdERpYWxvZ1RpdGxlQmFyIHtcblx0Y3Vyc29yOiBtb3ZlO1xufVxuLmRpaml0RGlhbG9nRml4ZWQgLmRpaml0RGlhbG9nVGl0bGVCYXIge1xuXHRjdXJzb3I6ZGVmYXVsdDtcbn1cbi5kaWppdERpYWxvZ0Nsb3NlSWNvbiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kaWppdERpYWxvZ1BhbmVDb250ZW50IHtcblx0LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLmRpaml0RGlhbG9nVW5kZXJsYXlXcmFwcGVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsZWZ0OiAwO1xuXHR0b3A6IDA7XG5cdHotaW5kZXg6IDk5ODtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmRpaml0RGlhbG9nVW5kZXJsYXkge1xuXHRiYWNrZ3JvdW5kOiAjZWVlO1xuXHRvcGFjaXR5OiAwLjU7XG59XG5cbi5kal9pZSAuZGlqaXREaWFsb2dVbmRlcmxheSB7XG5cdGZpbHRlcjogYWxwaGEob3BhY2l0eT01MCk7XG59XG5cbi8qIGltYWdlcyBvZmYsIGhpZ2gtY29udHJhc3QgbW9kZSBzdHlsZXMgKi9cbi5kal9hMTF5IC5kaWppdFNwaW5uZXJCdXR0b25Db250YWluZXIsXG4uZGpfYTExeSAuZGlqaXREaWFsb2cge1xuXHRvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdERpYWxvZyAuY2xvc2VUZXh0IHtcblx0ZGlzcGxheTpub25lO1xuXHQvKiBmb3IgdGhlIG9uaG92ZXIgYm9yZGVyIGluIGhpZ2ggY29udHJhc3Qgb24gSUU6ICovXG5cdHBvc2l0aW9uOmFic29sdXRlO1xufVxuXG4uZGpfYTExeSAuZGlqaXREaWFsb2cgLmNsb3NlVGV4dCB7XG5cdGRpc3BsYXk6aW5saW5lO1xufVxuXG4vKiBTbGlkZXIgKi9cblxuLmRpaml0U2xpZGVyTW92ZWFibGUge1xuXHR6LWluZGV4Ojk5O1xuXHRwb3NpdGlvbjphYnNvbHV0ZSAhaW1wb3J0YW50O1xuXHRkaXNwbGF5OmJsb2NrO1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG59XG5cbi5kaWppdFNsaWRlck1vdmVhYmxlSCB7XG5cdHJpZ2h0OjA7XG59XG4uZGlqaXRTbGlkZXJNb3ZlYWJsZVYge1xuXHRyaWdodDo1MCU7XG59XG5cbi5kal9hMTF5IGRpdi5kaWppdFNsaWRlckltYWdlSGFuZGxlLFxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRtYXJnaW46MDtcblx0cGFkZGluZzowO1xuXHRwb3NpdGlvbjpyZWxhdGl2ZSAhaW1wb3J0YW50O1xuXHRib3JkZXI6OHB4IHNvbGlkIGdyYXk7XG5cdHdpZHRoOjA7XG5cdGhlaWdodDowO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uZGpfaWVxdWlya3MgLmRqX2ExMXkgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRmb250LXNpemU6IDA7XG59XG4uZGpfaWU3IC5kaWppdFNsaWRlckltYWdlSGFuZGxlIHtcblx0b3ZlcmZsb3c6IGhpZGRlbjsgLyogSUU3IHdvcmthcm91bmQgdG8gbWFrZSBzbGlkZXIgaGFuZGxlIFZJU0lCTEUgaW4gbm9uLWExMXkgbW9kZSAqL1xufVxuLmRqX2llNyAuZGpfYTExeSAuZGlqaXRTbGlkZXJJbWFnZUhhbmRsZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlOyAvKiBJRTcgd29ya2Fyb3VuZCB0byBtYWtlIHNsaWRlciBoYW5kbGUgVklTSUJMRSBpbiBhMTF5IG1vZGUgKi9cbn1cbi5kal9hMTF5IC5kaWppdFNsaWRlckZvY3VzZWQgLmRpaml0U2xpZGVySW1hZ2VIYW5kbGUge1xuXHRib3JkZXI6NHB4IHNvbGlkICMwMDA7XG5cdGhlaWdodDo4cHg7XG5cdHdpZHRoOjhweDtcbn1cblxuLmRpaml0U2xpZGVySW1hZ2VIYW5kbGVWIHtcblx0dG9wOi04cHg7XG5cdHJpZ2h0OiAtNTAlO1xufVxuXG4uZGlqaXRTbGlkZXJJbWFnZUhhbmRsZUgge1xuXHRsZWZ0OjUwJTtcblx0dG9wOi01cHg7XG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcbn1cblxuLmRpaml0U2xpZGVyQmFyIHtcblx0Ym9yZGVyLXN0eWxlOnNvbGlkO1xuXHRib3JkZXItY29sb3I6YmxhY2s7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyQmFyQ29udGFpbmVyViB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRoZWlnaHQ6MTAwJTtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCYXJDb250YWluZXJIIHtcblx0cG9zaXRpb246cmVsYXRpdmU7XG5cdHotaW5kZXg6MTtcbn1cblxuLmRpaml0U2xpZGVyQmFySCB7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQmFyViB7XG5cdHdpZHRoOjRweDtcblx0Ym9yZGVyLXdpZHRoOjAgMXB4O1xufVxuXG4uZGlqaXRTbGlkZXJQcm9ncmVzc0JhciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFyViB7XG5cdHBvc2l0aW9uOnN0YXRpYyAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6MDtcblx0dmVydGljYWwtYWxpZ246dG9wO1xuXHR0ZXh0LWFsaWduOmxlZnQ7XG59XG5cbi5kaWppdFNsaWRlclByb2dyZXNzQmFySCB7XG5cdHBvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjA7XG5cdHZlcnRpY2FsLWFsaWduOm1pZGRsZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0U2xpZGVyUmVtYWluaW5nQmFyIHtcblx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O1xuXHR6LWluZGV4OjE7XG59XG5cbi5kaWppdFNsaWRlclJlbWFpbmluZ0JhclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGlqaXRTbGlkZXJSZW1haW5pbmdCYXJIIHtcblx0d2lkdGg6MTAwJSAhaW1wb3J0YW50O1xufVxuXG4vKiB0aGUgc2xpZGVyIGJ1bXBlciBpcyB0aGUgc3BhY2UgY29uc3VtZWQgYnkgdGhlIHNsaWRlciBoYW5kbGUgd2hlbiBpdCBoYW5ncyBvdmVyIGFuIGVkZ2UgKi9cbi5kaWppdFNsaWRlckJ1bXBlciB7XG5cdG92ZXJmbG93OmhpZGRlbjtcblx0ei1pbmRleDoxO1xufVxuXG4uZGlqaXRTbGlkZXJCdW1wZXJWIHtcblx0d2lkdGg6NHB4O1xuXHRoZWlnaHQ6OHB4O1xuXHRib3JkZXItd2lkdGg6MCAxcHg7XG59XG5cbi5kaWppdFNsaWRlckJ1bXBlckgge1xuXHR3aWR0aDo4cHg7XG5cdGhlaWdodDo0cHg7XG5cdGJvcmRlci13aWR0aDoxcHggMDtcbn1cblxuLmRpaml0U2xpZGVyQm90dG9tQnVtcGVyLFxuLmRpaml0U2xpZGVyTGVmdEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6cmVkO1xufVxuXG4uZGlqaXRTbGlkZXJUb3BCdW1wZXIsXG4uZGlqaXRTbGlkZXJSaWdodEJ1bXBlciB7XG5cdGJhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7XG59XG5cbi5kaWppdFNsaWRlckRlY29yYXRpb24ge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkMsXG4uZGlqaXRTbGlkZXJEZWNvcmF0aW9uViB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTsgLyogbmVlZGVkIGZvciBJRStxdWlya3MrUlRMK3ZlcnRpY2FsIChyZW5kZXJpbmcgYnVnKSBidXQgYWRkIGV2ZXJ5d2hlcmUgZm9yIGN1c3RvbSBzdHlsaW5nIGNvbnNpc3RlbmN5IGJ1dCB0aGlzIG1lc3NlcyB1cCBJRSBob3Jpem9udGFsIHNsaWRlcnMgKi9cbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvbkgge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2xpZGVyRGVjb3JhdGlvblYge1xuXHRoZWlnaHQ6IDEwMCU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5kaWppdFNsaWRlckJ1dHRvbiB7XG5cdGZvbnQtZmFtaWx5Om1vbm9zcGFjZTtcblx0bWFyZ2luOjA7XG5cdHBhZGRpbmc6MDtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyQnV0dG9uSW5uZXIge1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIHtcblx0dGV4dC1hbGlnbjpjZW50ZXI7XG5cdGhlaWdodDowO1x0LyogPz8/ICovXG59XG4uZGlqaXRTbGlkZXJCdXR0b25Db250YWluZXIgKiB7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmRpaml0U2xpZGVyIC5kaWppdEJ1dHRvbk5vZGUge1xuXHRwYWRkaW5nOjA7XG5cdGRpc3BsYXk6YmxvY2s7XG59XG5cbi5kaWppdFJ1bGVDb250YWluZXIge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0b3ZlcmZsb3c6dmlzaWJsZTtcbn1cblxuLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRoZWlnaHQ6MTAwJTtcblx0bGluZS1oZWlnaHQ6MDtcblx0ZmxvYXQ6bGVmdDtcblx0dGV4dC1hbGlnbjpsZWZ0O1xufVxuXG4uZGpfb3BlcmEgLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRsaW5lLWhlaWdodDoyJTtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVDb250YWluZXJWIHtcblx0bGluZS1oZWlnaHQ6bm9ybWFsO1xufVxuXG4uZGpfZ2Vja28gLmRpaml0UnVsZUNvbnRhaW5lclYge1xuXHRtYXJnaW46MCAwIDFweCAwOyAvKiBtb3ppbGxhIGJ1ZyB3b3JrYXJvdW5kIGZvciBmbG9hdDpsZWZ0LGhlaWdodDoxMDAlIGJsb2NrIGVsZW1lbnRzICovXG59XG5cbi5kaWppdFJ1bGVNYXJrIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG5cdGJvcmRlcjoxcHggc29saWQgYmxhY2s7XG5cdGxpbmUtaGVpZ2h0OjA7XG5cdGhlaWdodDoxMDAlO1xufVxuXG4uZGlqaXRSdWxlTWFya0gge1xuXHR3aWR0aDowO1xuXHRib3JkZXItdG9wLXdpZHRoOjAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1sZWZ0LXdpZHRoOjAgIWltcG9ydGFudDtcbn1cblxuLmRpaml0UnVsZUxhYmVsQ29udGFpbmVyIHtcblx0cG9zaXRpb246YWJzb2x1dGU7XG59XG5cbi5kaWppdFJ1bGVMYWJlbENvbnRhaW5lckgge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cbi5kaWppdFJ1bGVMYWJlbEgge1xuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0bGVmdDotNTAlO1xufVxuXG4uZGlqaXRSdWxlTGFiZWxWIHtcblx0Lyogc28gdGhhdCBsb25nIGxhYmVscyBkb24ndCBvdmVyZmxvdyB0byBtdWx0aXBsZSByb3dzLCBvciBvdmVyd3JpdGUgc2xpZGVyIGl0c2VsZiAqL1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRpaml0UnVsZU1hcmtWIHtcblx0aGVpZ2h0OjA7XG5cdGJvcmRlci1yaWdodC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1ib3R0b20td2lkdGg6MCAhaW1wb3J0YW50O1xuXHRib3JkZXItbGVmdC13aWR0aDowICFpbXBvcnRhbnQ7XG5cdHdpZHRoOjEwMCU7XG5cdGxlZnQ6MDtcbn1cblxuLmRqX2llIC5kaWppdFJ1bGVMYWJlbENvbnRhaW5lclYge1xuXHRtYXJnaW4tdG9wOi0uNTVlbTtcbn1cblxuLmRqX2ExMXkgLmRpaml0U2xpZGVyUmVhZE9ubHksXG4uZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCB7XG5cdG9wYWNpdHk6MC42O1xufVxuLmRqX2llIC5kal9hMTF5IC5kaWppdFNsaWRlclJlYWRPbmx5IC5kaWppdFNsaWRlckJhcixcbi5kal9pZSAuZGpfYTExeSAuZGlqaXRTbGlkZXJEaXNhYmxlZCAuZGlqaXRTbGlkZXJCYXIge1xuXHRmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApO1xufVxuXG4vKiArIGFuZCAtIFNsaWRlciBidXR0b25zOiBvdmVycmlkZSB0aGVtZSBzZXR0aW5ncyB0byBkaXNwbGF5IGljb25zICovXG4uZGpfYTExeSAuZGlqaXRTbGlkZXIgLmRpaml0U2xpZGVyQnV0dG9uQ29udGFpbmVyIGRpdiB7XG5cdGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IC8qIG90aGVyd2lzZSBoeXBoZW4gaXMgbGFyZ2VyIGFuZCBtb3JlIHZlcnRpY2FsbHkgY2VudGVyZWQgKi9cblx0Zm9udC1zaXplOiAxZW07XG5cdGxpbmUtaGVpZ2h0OiAxZW07XG5cdGhlaWdodDogYXV0bztcblx0d2lkdGg6IGF1dG87XG5cdG1hcmdpbjogMCA0cHg7XG59XG5cbi8qIEljb24tb25seSBidXR0b25zIChvZnRlbiBpbiB0b29sYmFycykgc3RpbGwgZGlzcGxheSB0aGUgdGV4dCBpbiBoaWdoLWNvbnRyYXN0IG1vZGUgKi9cbi5kal9hMTF5IC5kaWppdEJ1dHRvbkNvbnRlbnRzIC5kaWppdEJ1dHRvblRleHQsXG4uZGpfYTExeSAuZGlqaXRUYWIgLnRhYkxhYmVsIHtcblx0ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uVGV4dCB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50O1xufVxuXG4vKiBUZXh0QXJlYSwgU2ltcGxlVGV4dEFyZWEgKi9cbi5kaWppdFRleHRBcmVhIHtcblx0d2lkdGg6MTAwJTtcblx0b3ZlcmZsb3cteTogYXV0bztcdC8qIHcvb3V0IHRoaXMgSUUncyBTaW1wbGVUZXh0QXJlYSBnb2VzIHRvIG92ZXJmbG93OiBzY3JvbGwgKi9cbn1cbi5kaWppdFRleHRBcmVhW2NvbHNdIHtcblx0d2lkdGg6YXV0bzsgLyogU2ltcGxlVGV4dEFyZWEgY29scyAqL1xufVxuLmRqX2llIC5kaWppdFRleHRBcmVhQ29scyB7XG5cdHdpZHRoOmF1dG87XG59XG5cbi5kaWppdEV4cGFuZGluZ1RleHRBcmVhIHtcblx0LyogZm9yIGF1dG8gZXhhbmRpbmcgdGV4dGFyZWEgKGNhbGxlZCBUZXh0YXJlYSBjdXJyZW50bHksIHJlbmFtZSBmb3IgMi4wKSBkb24ndCB3YW50IHRvIGRpc3BsYXkgdGhlIGdyaXAgdG8gcmVzaXplICovXG5cdHJlc2l6ZTogbm9uZTtcbn1cblxuXG4vKiBUb29sYmFyXG4gKiBOb3RlIHRoYXQgb3RoZXIgdG9vbGJhciBydWxlcyAoZm9yIG9iamVjdHMgaW4gdG9vbGJhcnMpIGFyZSBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGlzIGZpbGUuXG4gKi9cblxuLmRpaml0VG9vbGJhclNlcGFyYXRvciB7XG5cdGhlaWdodDogMThweDtcblx0d2lkdGg6IDVweDtcblx0cGFkZGluZzogMCAxcHg7XG5cdG1hcmdpbjogMDtcbn1cblxuLyogRWRpdG9yICovXG4uZGlqaXRJRUZpeGVkVG9vbGJhciB7XG5cdHBvc2l0aW9uOmFic29sdXRlO1xuXHQvKiB0b3A6MDsgKi9cblx0dG9wOiBleHByZXNzaW9uKGV2YWwoKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsVG9wKSk7XG59XG5cbi5kaWppdEVkaXRvciB7XG5cdGRpc3BsYXk6IGJsb2NrO1x0LyogcHJldmVudHMgZ2xpdGNoIG9uIEZGIHdpdGggSW5saW5lRWRpdEJveCwgc2VlICM4NDA0ICovXG59XG5cbi5kaWppdEVkaXRvckRpc2FibGVkLFxuLmRpaml0RWRpdG9yUmVhZE9ubHkge1xuXHRjb2xvcjogZ3JheTtcbn1cblxuLyogVGltZVBpY2tlciAqL1xuXG4uZGlqaXRUaW1lUGlja2VyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbSB7XG5cdGN1cnNvcjpwb2ludGVyO1xuXHQtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1Ib3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6Z3JheTtcblx0Y29sb3I6d2hpdGU7XG59XG4uZGlqaXRUaW1lUGlja2VySXRlbVNlbGVjdGVkIHtcblx0Zm9udC13ZWlnaHQ6Ym9sZDtcblx0Y29sb3I6IzMzMztcblx0YmFja2dyb3VuZC1jb2xvcjojYjdjZGVlO1xufVxuLmRpaml0VGltZVBpY2tlckl0ZW1EaXNhYmxlZCB7XG5cdGNvbG9yOmdyYXk7XG5cdHRleHQtZGVjb3JhdGlvbjpsaW5lLXRocm91Z2g7XG59XG5cbi5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0Ym9yZGVyOjA7XG5cdHBhZGRpbmc6MnB4IDhweCAycHggOHB4O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyVGljayxcbi5kaWppdFRpbWVQaWNrZXJNYXJrZXIge1xuXHRib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O1xufVxuXG4uZGlqaXRUaW1lUGlja2VyIC5kaWppdERvd25BcnJvd0J1dHRvbiB7XG5cdGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0VGltZVBpY2tlclRpY2sge1xuXHRjb2xvcjojQ0NDO1xufVxuXG4uZGlqaXRUaW1lUGlja2VyTWFya2VyIHtcblx0Y29sb3I6YmxhY2s7XG5cdGJhY2tncm91bmQtY29sb3I6I0NDQztcbn1cblxuLmRqX2ExMXkgLmRpaml0VGltZVBpY2tlckl0ZW1TZWxlY3RlZCAuZGlqaXRUaW1lUGlja2VySXRlbUlubmVyIHtcblx0Ym9yZGVyOiBzb2xpZCA0cHggYmxhY2s7XG59XG4uZGpfYTExeSAuZGlqaXRUaW1lUGlja2VySXRlbUhvdmVyIC5kaWppdFRpbWVQaWNrZXJJdGVtSW5uZXIge1xuXHRib3JkZXI6IGRhc2hlZCA0cHggYmxhY2s7XG59XG5cblxuLmRpaml0VG9nZ2xlQnV0dG9uSWNvbkNoYXIge1xuXHQvKiBjaGFyYWN0ZXIgKGluc3RlYWQgb2YgaWNvbikgdG8gc2hvdyB0aGF0IFRvZ2dsZUJ1dHRvbiBpcyBjaGVja2VkICovXG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uIC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyIHtcblx0ZGlzcGxheTppbmxpbmUgIWltcG9ydGFudDtcblx0dmlzaWJpbGl0eTpoaWRkZW47XG59XG4uZGpfaWU2IC5kaWppdFRvZ2dsZUJ1dHRvbkljb25DaGFyLCAuZGpfaWU2IC50YWJTdHJpcEJ1dHRvbiAuZGlqaXRCdXR0b25UZXh0IHtcblx0Zm9udC1mYW1pbHk6IFwiQXJpYWwgVW5pY29kZSBNU1wiO1x0Lyogb3RoZXJ3aXNlIHRoZSBhMTF5IGNoYXJhY3RlciAoY2hlY2ttYXJrLCBhcnJvdywgZXRjLikgYXBwZWFycyBhcyBhIGJveCAqL1xufVxuLmRqX2ExMXkgLmRpaml0VG9nZ2xlQnV0dG9uQ2hlY2tlZCAuZGlqaXRUb2dnbGVCdXR0b25JY29uQ2hhciB7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyAvKiBJbiBoaWdoIGNvbnRyYXN0IG1vZGUsIGRpc3BsYXkgdGhlIGNoZWNrIHN5bWJvbCAqL1xuXHR2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtcbn1cblxuLmRpaml0QXJyb3dCdXR0b25DaGFyIHtcblx0ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7XG59XG4uZGpfYTExeSAuZGlqaXRBcnJvd0J1dHRvbkNoYXIge1xuXHRkaXNwbGF5OmlubGluZSAhaW1wb3J0YW50O1xufVxuXG4uZGpfYTExeSAuZGlqaXREcm9wRG93bkJ1dHRvbiAuZGlqaXRBcnJvd0J1dHRvbklubmVyLFxuLmRqX2ExMXkgLmRpaml0Q29tYm9CdXR0b24gLmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdGRpc3BsYXk6bm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBTZWxlY3QgKi9cbi5kal9hMTF5IC5kaWppdFNlbGVjdCB7XG5cdGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG59XG4uZGpfaWUgLmRpaml0U2VsZWN0IHtcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogU2V0IHRoaXMgYmFjayBmb3Igd2hhdCB3ZSBoYWNrIGluIGRpaml0IGlubGluZSAqL1xufVxuLmRqX2llNiAuZGlqaXRTZWxlY3QgLmRpaml0VmFsaWRhdGlvbkNvbnRhaW5lcixcbi5kal9pZTggLmRpaml0U2VsZWN0IC5kaWppdEJ1dHRvblRleHQge1xuXHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLmRqX2llNiAuZGlqaXRUZXh0Qm94IC5kaWppdElucHV0Q29udGFpbmVyLFxuLmRqX2llcXVpcmtzIC5kaWppdFRleHRCb3ggLmRpaml0SW5wdXRDb250YWluZXIsXG4uZGpfaWU2IC5kaWppdFRleHRCb3ggLmRpaml0QXJyb3dCdXR0b25Jbm5lcixcbi5kal9pZTYgLmRpaml0U3Bpbm5lciAuZGlqaXRTcGlubmVyQnV0dG9uSW5uZXIsXG4uZGlqaXRTZWxlY3QgLmRpaml0U2VsZWN0TGFiZWwge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi5kaWppdE51bWJlclRleHRCb3gge1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRkaXJlY3Rpb246IGx0cjtcbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCAuZGlqaXRJbnB1dElubmVyIHtcblx0dGV4dC1hbGlnbjogaW5oZXJpdDsgLyogaW5wdXQgKi9cbn1cblxuLmRpaml0TnVtYmVyVGV4dEJveCBpbnB1dC5kaWppdElucHV0SW5uZXIsXG4uZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRpaml0U3Bpbm5lciBpbnB1dC5kaWppdElucHV0SW5uZXIge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLmRqX2llOCAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXROdW1iZXJUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lcixcbi5kal9pZTggLmRpaml0Q3VycmVuY3lUZXh0Qm94IGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRDdXJyZW5jeVRleHRCb3ggaW5wdXQuZGlqaXRJbnB1dElubmVyLFxuLmRqX2llOCAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciwgLmRqX2llOSAuZGlqaXRTcGlubmVyIGlucHV0LmRpaml0SW5wdXRJbm5lciB7XG5cdC8qIHdvcmthcm91bmQgYnVnIHdoZXJlIGNhcmV0IGludmlzaWJsZSBpbiBlbXB0eSB0ZXh0Ym94ZXMgKi9cblx0cGFkZGluZy1yaWdodDogMXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5kaWppdFRvb2xiYXIgLmRpaml0U2VsZWN0IHtcblx0bWFyZ2luOiAwO1xufVxuLmRqX3dlYmtpdCAuZGlqaXRUb29sYmFyIC5kaWppdFNlbGVjdCB7XG5cdHBhZGRpbmctbGVmdDogMC4zZW07XG59XG4uZGlqaXRTZWxlY3QgLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHRwYWRkaW5nOiAwO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRib3JkZXItc3R5bGU6IG5vbmUgc29saWQgbm9uZSBub25lO1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbi5kaWppdFNlbGVjdEZpeGVkV2lkdGggLmRpaml0QnV0dG9uQ29udGVudHMge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUljb24ge1xuXHQvKiBhdm9pZCBibGFuayBhcmVhIGluIGxlZnQgc2lkZSBvZiBtZW51IChzaW5jZSB3ZSBoYXZlIG5vIGljb25zKSAqL1xuXHRkaXNwbGF5Om5vbmU7XG59XG4uZGpfaWU2IC5kaWppdFNlbGVjdE1lbnUgLmRpaml0TWVudUl0ZW1MYWJlbCxcbi5kal9pZTcgLmRpaml0U2VsZWN0TWVudSAuZGlqaXRNZW51SXRlbUxhYmVsIHtcblx0LyogU2V0IGJhY2sgdG8gc3RhdGljIGR1ZSB0byBidWcgaW4gaWU2L2llNyAtIFNlZSBCdWcgIzk2NTEgKi9cblx0cG9zaXRpb246IHN0YXRpYztcbn1cblxuLyogRml4IHRoZSBiYXNlbGluZSBvZiBvdXIgbGFiZWwgKGZvciBtdWx0aS1zaXplIGZvbnQgZWxlbWVudHMpICovXG4uZGlqaXRTZWxlY3RMYWJlbCAqXG57XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogU3R5bGluZyBmb3IgdGhlIGN1cnJlbnRseS1zZWxlY3RlZCBvcHRpb24gKHJpY2ggdGV4dCBjYW4gbWVzcyB0aGlzIHVwKSAqL1xuLmRpaml0U2VsZWN0U2VsZWN0ZWRPcHRpb24gKiB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBGaXggdGhlIHN0eWxpbmcgb2YgdGhlIGRyb3Bkb3duIG1lbnUgdG8gYmUgbW9yZSBjb21ib2JveC1saWtlICovXG4uZGlqaXRTZWxlY3RNZW51IHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG59XG5cbi8qIFVzZWQgaW4gY2FzZXMsIHN1Y2ggYXMgRnVsbFNjcmVlbiBwbHVnaW4sIHdoZW4gd2UgbmVlZCB0byBmb3JjZSBzdHVmZiB0byBzdGF0aWMgcG9zaXRpb25pbmcuICovXG4uZGlqaXRGb3JjZVN0YXRpYyB7XG5cdHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDtcbn1cblxuLyoqKiogRGlzYWJsZWQgY3Vyc29yICoqKioqL1xuLmRpaml0UmVhZE9ubHkgKixcbi5kaWppdERpc2FibGVkICosXG4uZGlqaXRSZWFkT25seSxcbi5kaWppdERpc2FibGVkIHtcblx0LyogYSByZWdpb24gdGhlIHVzZXIgd291bGQgYmUgYWJsZSB0byBjbGljayBvbiwgYnV0IGl0J3MgZGlzYWJsZWQgKi9cblx0Y3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKiBEcmFnIGFuZCBEcm9wICovXG4uZG9qb0RuZEl0ZW0ge1xuICAgIHBhZGRpbmc6IDJweDsgIC8qIHdpbGwgYmUgcmVwbGFjZWQgYnkgYm9yZGVyIGR1cmluZyBkcmFnIG92ZXIgKGRvam9EbmRJdGVtQmVmb3JlLCBkb2pvRG5kSXRlbUFmdGVyKSAqL1xuXG5cdC8qIFByZXZlbnQgbWFnbmlmeWluZy1nbGFzcyB0ZXh0IHNlbGVjdGlvbiBpY29uIHRvIGFwcGVhciBvbiBtb2JpbGUgd2Via2l0IGFzIGl0IGNhdXNlcyBhIHRvdWNob3V0IGV2ZW50ICovXG5cdC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcblx0LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLyogRGlzYWJsZSBzZWxlY3Rpb24vQ29weSBvZiBVSVdlYlZpZXcgKi9cbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW0ge1xuICAgIC8qIG1ha2UgY29udGVudHMgb2YgaG9yaXpvbnRhbCBjb250YWluZXIgYmUgc2lkZSBieSBzaWRlLCByYXRoZXIgdGhhbiB2ZXJ0aWNhbCAqL1xuICAgICNkaXNwbGF5OiBpbmxpbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZG9qb0RuZEl0ZW1CZWZvcmUsXG4uZG9qb0RuZEl0ZW1BZnRlciB7XG5cdGJvcmRlcjogMHB4IHNvbGlkICMzNjk7XG59XG4uZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMnB4IDAgMCAwO1xuICAgIHBhZGRpbmc6IDAgMnB4IDJweCAycHg7XG59XG4uZG9qb0RuZEl0ZW1BZnRlciB7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDAgMnB4IDA7XG4gICAgcGFkZGluZzogMnB4IDJweCAwIDJweDtcbn1cbi5kb2pvRG5kSG9yaXpvbnRhbCAuZG9qb0RuZEl0ZW1CZWZvcmUge1xuICAgIGJvcmRlci13aWR0aDogMCAwIDAgMnB4O1xuICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDA7XG59XG4uZG9qb0RuZEhvcml6b250YWwgLmRvam9EbmRJdGVtQWZ0ZXIge1xuICAgIGJvcmRlci13aWR0aDogMCAycHggMCAwO1xuICAgIHBhZGRpbmc6IDJweCAwIDJweCAycHg7XG59XG5cbi5kb2pvRG5kSXRlbU92ZXIge1xuXHRjdXJzb3I6cG9pbnRlcjtcbn1cbi5kal9nZWNrbyAuZGlqaXRBcnJvd0J1dHRvbklubmVyIElOUFVULFxuLmRqX2dlY2tvIElOUFVULmRpaml0QXJyb3dCdXR0b25Jbm5lciB7XG5cdC1tb3otdXNlci1mb2N1czppZ25vcmU7XG59XG4uZGlqaXRGb2N1c2VkIC5kaWppdE1lbnVJdGVtU2hvcnRjdXRLZXkge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cbiIsIi8qIERpaml0IGN1c3RvbSBzdHlsaW5nICovXG4uZGlqaXRCb3JkZXJDb250YWluZXIge1xuICAgIGhlaWdodDogMzUwcHg7XG59XG4uZGlqaXRUb29sdGlwQ29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xufVxuLmRpaml0Q29udGVudFBhbmUge1xuICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFdpZGdldHMgbGlrZSB0aGUgZGF0YSBncmlkIHBhc3MgdGhlaXIgc2Nyb2xsXG4gICAgb2Zmc2V0IHRvIHRoZSBwYXJlbnQgaWYgdGhlcmUgaXMgbm90IGVub3VnaCByb29tIHRvIGRpc3BsYXkgYSBzY3JvbGwgYmFyXG4gICAgaW4gdGhlIHdpZGdldCBpdHNlbGYsIHNvIGRvIG5vdCBoaWRlIHRoZSBvdmVyZmxvdy4gKi9cbn1cblxuLyogR2xvYmFsIEJvb3RzdHJhcCBjaGFuZ2VzICovXG5cbi8qIENsaWVudCBkZWZhdWx0cyBhbmQgaGVscGVycyAqL1xuLm14LWRhdGF2aWV3LWNvbnRlbnQsIC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcjpub3QoLm14LXNjcm9sbGNvbnRhaW5lci1uZXN0ZWQpLCAubXgtdGFiY29udGFpbmVyLWNvbnRlbnQsIC5teC1ncmlkLWNvbnRlbnQge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbmh0bWwsIGJvZHksICNjb250ZW50IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4jY29udGVudCA+IC5teC1wYWdlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4ubXgtbGVmdC1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXJpZ2h0LWFsaWduZWQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLm14LWNlbnRlci1hbGlnbmVkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5teC10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtdGFibGUgdGgsXG4ubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm14LXRhYmxlIHRoLm5vcGFkZGluZyxcbi5teC10YWJsZSB0ZC5ub3BhZGRpbmcge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4ubXgtb2Zmc2NyZWVuIHtcbiAgICAvKiBXaGVuIHBvc2l0aW9uIHJlbGF0aXZlIGlzIG5vdCBzZXQgSUUgZG9lc24ndCBwcm9wZXJseSByZW5kZXIgd2hlbiB0aGlzIGNsYXNzIGlzIHJlbW92ZWRcbiAgICAgKiB3aXRoIHRoZSBlZmZlY3QgdGhhdCBlbGVtZW50cyBhcmUgbm90IGRpc3BsYXllZCBvciBhcmUgbm90IGNsaWNrYWJsZS5cbiAgICAqL1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm14LWllLWV2ZW50LXNoaWVsZCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAtMTtcbn1cblxuLm14LXN3aXBlLW5hdmlnYXRpb24tcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gICAgd2lkdGg6IDU0cHg7XG4gICAgdG9wOiBjYWxjKDUwJSAtIDI3cHgpO1xuICAgIGxlZnQ6IGNhbGMoNTAlIC0gMjdweCk7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KTtcbn1cblxuIiwiLyogQmFjYXVzZSB3ZSB1c2UgY2hlY2tib3hlcyB3aXRob3V0IGxhYmVscywgYWxpZ24gdGhlbSB3aXRoIG90aGVyIHdpZGdldHMuICovXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbjogOXB4IDA7XG59XG5cbi5teC1jaGVja2JveCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94IGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5mb3JtLXZlcnRpY2FsIC5mb3JtLWdyb3VwLm14LWNoZWNrYm94LmxhYmVsLWFmdGVyIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uZm9ybS1ob3Jpem9udGFsIC5mb3JtLWdyb3VwLm5vLWNvbHVtbnMge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xufVxuXG4ubXgtcmFkaW9idXR0b25zLmlubGluZSAucmFkaW8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG59XG5cbi5teC1yYWRpb2J1dHRvbnMgLnJhZGlvIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgLyogUmVzZXQgYm9vdHN0cmFwIHJ1bGVzICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbn1cblxuLm14LXJhZGlvYnV0dG9ucyAucmFkaW8gbGFiZWwge1xuICAgIC8qIFJlc2V0IGJvb3RzdHJhcCBydWxlcyAqL1xuICAgIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmFsZXJ0IHtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG59XG5cbi5teC1jb21wb3VuZC1jb250cm9sIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xufVxuXG4ubXgtY29tcG91bmQtY29udHJvbCBidXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG5cbltkaXI9XCJydGxcIl0gLm14LWNvbXBvdW5kLWNvbnRyb2wgYnV0dG9uIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbiIsIi5teC10b29sdGlwIHtcbiAgICBtYXJnaW46IDEwcHg7XG59XG4ubXgtdG9vbHRpcC1jb250ZW50IHtcbiAgICB3aWR0aDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cbi5teC10b29sdGlwLXByZXBhcmUge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaEdBQVlBTVFkQUtYWjhuZkY2NFRMN1F1WDNGZTQ1emFxNGhPYjNmTDYvZnI5L3JyaTlkWHQrWnJVOEN5bTRVbXk1Y0hsOXVQeisySzg2T2oxL056dytyRGQ5TTNxK0pEUTcyckE2aU9pMyszNC9FQ3U0OGpvOXgyZjNnV1YyLy8vL3dBQUFBQUFBQ0gvQzA1RlZGTkRRVkJGTWk0d0F3RUFBQUFoL3d0WVRWQWdSR0YwWVZoTlVEdy9lSEJoWTJ0bGRDQmlaV2RwYmowaTc3dS9JaUJwWkQwaVZ6Vk5NRTF3UTJWb2FVaDZjbVZUZWs1VVkzcHJZemxrSWo4K0lEeDRPbmh0Y0cxbGRHRWdlRzFzYm5NNmVEMGlZV1J2WW1VNmJuTTZiV1YwWVM4aUlIZzZlRzF3ZEdzOUlrRmtiMkpsSUZoTlVDQkRiM0psSURVdU5pMWpNVFF3SURjNUxqRTJNRFExTVN3Z01qQXhOeTh3TlM4d05pMHdNVG93T0RveU1TQWdJQ0FnSUNBZ0lqNGdQSEprWmpwU1JFWWdlRzFzYm5NNmNtUm1QU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh4T1RrNUx6QXlMekl5TFhKa1ppMXplVzUwWVhndGJuTWpJajRnUEhKa1pqcEVaWE5qY21sd2RHbHZiaUJ5WkdZNllXSnZkWFE5SWlJZ2VHMXNibk02ZUcxd1BTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM2hoY0M4eExqQXZJaUI0Yld4dWN6cDRiWEJOVFQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wyMXRMeUlnZUcxc2JuTTZjM1JTWldZOUltaDBkSEE2THk5dWN5NWhaRzlpWlM1amIyMHZlR0Z3THpFdU1DOXpWSGx3WlM5U1pYTnZkWEpqWlZKbFppTWlJSGh0Y0RwRGNtVmhkRzl5Vkc5dmJEMGlRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRnZ0tFMWhZMmx1ZEc5emFDa2lJSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUTlJbmh0Y0M1cGFXUTZSVUpGTmtVNE5FWkNORVZETVRGRk9EazNNREJCTlVVMVJVTTRRamczUVRVaUlIaHRjRTFOT2tSdlkzVnRaVzUwU1VROUluaHRjQzVrYVdRNlJVSkZOa1U0TlRCQ05FVkRNVEZGT0RrM01EQkJOVVUxUlVNNFFqZzNRVFVpUGlBOGVHMXdUVTA2UkdWeWFYWmxaRVp5YjIwZ2MzUlNaV1k2YVc1emRHRnVZMlZKUkQwaWVHMXdMbWxwWkRwRlFrVTJSVGcwUkVJMFJVTXhNVVU0T1Rjd01FRTFSVFZGUXpoQ09EZEJOU0lnYzNSU1pXWTZaRzlqZFcxbGJuUkpSRDBpZUcxd0xtUnBaRHBGUWtVMlJUZzBSVUkwUlVNeE1VVTRPVGN3TUVFMVJUVkZRemhDT0RkQk5TSXZQaUE4TDNKa1pqcEVaWE5qY21sd2RHbHZiajRnUEM5eVpHWTZVa1JHUGlBOEwzZzZlRzF3YldWMFlUNGdQRDk0Y0dGamEyVjBJR1Z1WkQwaWNpSS9QZ0gvL3YzOCsvcjUrUGYyOWZUejh2SHc3Kzd0N092cTZlam41dVhrNCtMaDROL2UzZHpiMnRuWTE5YlYxTlBTMGREUHpzM015OHJKeU1mR3hjVER3c0hBdjc2OXZMdTZ1YmkzdHJXMHM3S3hzSyt1cmF5cnFxbW9wNmFscEtPaW9hQ2ZucDJjbTVxWm1KZVdsWlNUa3BHUWo0Nk5qSXVLaVlpSGhvV0VnNEtCZ0g5K2ZYeDdlbmw0ZDNaMWRITnljWEJ2Ym0xc2EycHBhR2RtWldSalltRmdYMTVkWEZ0YVdWaFhWbFZVVTFKUlVFOU9UVXhMU2tsSVIwWkZSRU5DUVVBL1BqMDhPem81T0RjMk5UUXpNakV3THk0dExDc3FLU2duSmlVa0l5SWhJQjhlSFJ3Ykdoa1lGeFlWRkJNU0VSQVBEZzBNQ3dvSkNBY0dCUVFEQWdFQUFDSDVCQVVFQUIwQUxBQUFBQUFZQUJnQUFBVWNZQ2VPWkdtZWFLcXViT3UrY0N6UGRHM2ZlSzd2Zk8vL3dPQXJCQUFoK1FRRkJBQWRBQ3dBQUFBQUFRQUJBQUFGQTJBWEFnQWgrUVFGQkFBZEFDd1VBQXdBQVFBQ0FBQUZBeURUaEFBaCtRUUZCQUFkQUN3VEFBc0FBZ0FHQUFBRkMyQVhkRnhuZE1UUU1WMElBQ0g1QkFVRUFCMEFMQkVBQ3dBRUFBZ0FBQVVSWUNjMllpbHlvcldkVm1jTnA4aTBYUWdBSWZrRUJRUUFIUUFzRHdBT0FBWUFCZ0FBQlE5Z0ozYUJNWjRqaDQ0V0I0bkZjSVlBSWZrRUNRUUFIUUFzRFFBUEFBZ0FCZ0FBQlJGZ0o0NGRSSGJCcVlvcEdRd2NPUmhxQ0FBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRkxXQW5qbVJwbm1pcXJtenJ2bkFzejNSdDMzaXVrOEpnRHdRYlIyaWhCVGlOV1c4WTR6aDlHaGxnUnkyRkFBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZNMkFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6YzN0U0M3emFZT2VvY1NBMFlNWlZJUWtHd1JhUVE2VjJpaklBYnFzS0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZObUFuam1ScG5taXFybXpydm5Bc3ozUnQzMmh6Yy90VVY3eWFJV01MMGppRVZRVUZMS3dDSEVPcFlqQ3lNcHlzbGloYjRMNnJFQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGT21BbmptUnBubWlxcm16cnZuQXN6M1J0MzJoemN6dFFWN3phcG1BTG1vQXNqZzdGTUI0NWpGV0RzeWxWTnM1VmdjUHRFbU8rQ202c0NnRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVDlnSjQ1a2FaNW9xcTVzNjc1d0xNOTBiZDhvY1hPQ3plMm14c2ExWVp4K0xRN2cxRUNxT0prVWc3TkljWXlxNXJDMGdicW1uSENZc1lRdGU3aDBLZ1FBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVSZ0o0NWthWjVvcXE1czY3NXdMTTkwYmQ4b1lRWXdKNVNjbmluNElwSVlGOWNsV1ZvWVY1ekZLZk5FY1RLcFN4WElURkc3SXkyMnhlQ1l6eGNwVFBxajRONm9FQUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGU21BbmptUnBubWlxcm16cnZuQXN6M1ROYm5iQXdZUzV2NXdBcWZKekZVZEhWckt6WWJnWU9OK2t4YW1jQ2dQV29KRGFaRk9EYUtyQWNaWVlIRzVydzJtN04xWllSUmkzMlZjaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlBZQ2VPWkdtZWFLcXViT3UrY0N6UDVVYlFJb2QzZ3I3N3JodkpBbXh4TEtVaVM5bmhURjVNQThQRk1KaDZMbzdneEJpd0JsUFV4cHNhYkZZTVRwaVVYcXNFQm81OGJ0akN0aGI3YnI4S0FRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZVMkFuam1ScG5taXFybXpydmpETFhERXBjRFZwWlBtSTk1MGJVUFJ6UVVxUVlvdHpKQ2xaejhsenhabVVEQVZYd1hDYW9yeWRDM2Rsb0tFTTQzTWFkZUZrU3dXT2VSVXdjTzU0UXlBbU9BcUdnQzBoQUNINUJBVUVBQjBBTEFBQUFBQVlBQmdBQUFWWFlDZU9aR21lYUtxdWJMdHVsbnNhaG14dXRVMEduRjRPRFIrcEp4VHhpaUpDemhYNzJRYUVIZEUxSFZWWkhNQXY0OG9NVE1jV0ozRENzUXliMUdBNSs2bzJIRzRwdzBtekFnTU9aNURmazIwQlVYOUloQzBoQUNINUJBa0VBQjBBTEFJQUF3QVVBQk1BQUFVL1lDZUsxdENNYUpweWhPcU93L2JPOUd6VmM0dnY5YzJuc2w5QVpQaDFpajZqY3JRUW5YYlBEc1E0SFFWcFYxUld0VTFGUjE5WDlWZ1VqV20rWkNvRUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVmJZQ2VPWkdtZWFLcU9GckdpeE1CeHpHc2FuR3VidzdhZkJ0K3ZST0FNVGJsanlhaGtNWnVkaG5BWEtFbUhtOFp5K0JRdHVpL09ZcWw3RlUvZ1ZQSTJUVzBNcVo1cU0xamh5cU1pM0R6amJEWjllRFlRRFZwalVJZy9JUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWUdBbmptUnBubWlxaWxXWFpjUnFFaHczWE5jZ2t3WUg3U2ZPQlhneURJa2xHdExrVzVZNFRoSkJGeFZsamtCQjZZcThaRXBVWUpnRkpYSmFwT1lPVXBhMlY1eVl5U2k3R0ZKQzFlVmRWSlBZZHpJME5qZ0ROWEpFQkYrSVZZMUFJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGWldBbmptUnBubWlxaWtKWEZNUnFOaHhuTUlWUngvTEFXYWFBck1OaERGRUQ0M0hHV1o1K3pwS2dHUzBacXFTQ2Npa2NhWjA0RXVHNk5QQkcxR01hRFJ4YTFpS2F1bkZLeWhpRFZGSEZnSnQ4YlNSdmVUSTBOZ3dNT2h4MFRnUXZIUzFZa2xFaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVm1ZQ2VPWkdtZWFLcUtRY01VeldwbUhMZDF4VlpuY2pjTUFWUGdwMXB3Q2lyR0RUVkE5azZad1JQRm1aNENWV3Vwc2RTT1h0cmdWMXRna0xqV1RZeVVmYlpISExFTU81UDJCanhUVTFhd240NHFCVzhtQzBSQ2hpczBOZ1U1TzFZdFptdGVrNU1oQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWbllDZU9aR21lYUtxS1FYWmQyV29XSEhkMURWTVhjc1VOSjRHQnMrTHdVclFLeWlpam5RcEFXY2R3NGdTa3FBQVJlM0p4VDdkdngwS0NmYjBqTk5aTTJtTGRJeXRXTzR2S0JzY1NjK1ZjNXA5d1ZYWWtBUU9CS0RRMkdTNDdYeTB2SFZkaWs1UWlJUUFoK1FRRkJBQWRBQ3dBQUFBQUdBQVlBQUFGYm1BbmptUnBubWlxaWxheGJjVnFNaHpIZEExdHl3Sm5uQUlEUjZEaVpGUVpUc29vUzU0WVAxbkhjQ3NOcFNJbHlhTEZjZ0trUWhWcjJwQkZpOUttY1c2WVIrSXpJMGJxU3UxWm9qZFJnbUtwSjB3clRpaUNLSVFvUFZFbFFYZ29PZ3dOT1RWalVpMW1kR2VhbXlVaEFDSDVCQVVFQUIwQUxBSUFBZ0FVQUJRQUFBVmJZQ2VPa01HZG5BR05MSWx5dy9DdWJjZWNXWjJkVEhzYk5aYXBKNEtrZ2kwVDdZU3NNWTI1Sm10WDRraWRKdXVWaFJwc1dUTFlkeFRXamsrbXNTZ0ZIVk03ekcvY0NMd3FSei9wMElmVDhZSkdYV1VjTkVoVktDbzFJUUFoK1FRRkJBQWRBQ3dCQUFFQUZnQVdBQUFGWjJBbmptUFZCV1NxbmdaSGNnYTZqc2JyMG5OMTEyVEZjNmFVNnpZYnBtckVXY2ZGTzRrRXloSFUyYWsxbzlYc0VydHlCYm1xWUpKN1E0MnhMaG00MlBsaVRUc3QxeXBTYzZkcUpGa3VHazVWQWtZcE9pSlhiVDlLVnh4Smhpb0JMUytOVVNaMktpRUFJZmtFQ1FRQUhRQXNBUUFCQUJZQUZnQUFCV3BnSjQ2aWxWMVgxazFrUzE2Y3kxMHUyY1MxeURVMU0zSUVFZ0hYOGRsR3dWcXl3L3ZsY2tSYVovbE1TbVBFcDY0VHM0aW8ycVJKcXoyUm42aHpMcVd1cWI1dEtyWTk3MGpCU3BHVTI5Nk9tbE01UzRBaVJseFVReU9HTmxreWhDNHdNbnRrSmlncUxDNGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYrWUNlT1pHbWVwVlZjVjlaTjZMbHhkRTF2OGRqWWZOM0VEQnVFQkxFeFRqdmE4RlNrL1VxMW5DaEttbkdXdVNadVJKVjJ1aGFsbDh1eGlESzBNZG5WdWFUVlg4NUY1T2JBNC9NTzJnNm5zZU5ZVWsxbVUyOWVYUjFXZ1NoYUpBdUlLSkFkU1ZlTVBpZEJrRTAwUnlpVVBaZFNWajFiYWhZWkxCbUVkM0FoQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFXQllDZU9aR21lcFZWY1Y5Rk42TGx4ZEUxdjhkallmTjNFakpyQlpLZ3hUanRhVE9BejFYS2lKMm5HRVVDakhOeUlOcngyaXB5UlJlbnRNRGtXVVlGY3ByazZGN2FYZGhIRncrVU9YUzIvdXJkVlpXY2tYR1ZnVTMweE55UUxVamsxQ3lWSmdTZG5IRDhtUVlVa0FtQWNSeWlUUFUxUVZEMWFaU29zQldsNXJoMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVdDWUNlT1pHbWVwVlZjVjlGTjZMbHhkRTF2OGRqWWZOM0VqTnJGZEtreFRqdk9JRGVnL1VxMFphN1Q1SlJtMXFub1JxSU50WjFpdG1PaGdVYzBpNmhnUG5kb3JuRDc3QldKM1cvT2x6MEd3OUY5VXdCcEloTjFZSGNqV0hRY09GMUtXbFVtU1FNQU1WVlBKVUdISXdCaUhFY29TVDAybVRGWVBZNW5LaXd1TUhodUlRQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZlbUFuam1ScG5xV1ZNVXlHdmhjbnovTDFqZzJ0ejgxYnpLNVNabFk0NVRpR20wSFdLOG1TdDg2U1U0cFJvNklhU1JiRURxOGRpd3k3NVZoRVgvS0lLMktNMVIwWm8vMVd5OUYxTWpzTDF2ZjNYaklUSTFaMkhEWmxVRXA1SWtlS0oxTk5KVCtBSTE4Y1JTaEhPelNTTUp5SGNHRXJMUjJEb25BaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjlZQ2VPWkdtZVpkQXdUSU8rRnlmUDh2V09CRDFjMTBBVHI4SU1Zb0xNQ3FjY3h3YVRBVXUxbXlqR0tWR2xvMmlXUThSMmpGVlJRT2JkQmtRTnpxQXM4bzBZUzNZbnhoREJtV1Y2ZHMzMnVUcGpZV1ZrVzExWVlDUlhYbHBiZUUyQ09Jd25WRThsUWpLR0kyQWNTQzg2UEQ0elhsUTBrbGhuTEg5eWNpRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCWDFnSjQ1a2FaNWwwQlJGZzc0TUo4OHk4NDRFZlhYWlJST3ZqR3h3RWd4a21WT09rd3pLZ0NYa1RTVGtsR0xFcWVob0c4bTBwSzhvSUFaM1pBRlJnN016ZDN5akF0UE40eFJFY25yOUxtTFQ0V05sWUdoZUhBSnVnbGhtWEZGelUxVW1TMDBvVlZBbFZWa2xSbEl2T2hrOU5HQXhORE5kWmlvZExYcDZJUUFoK1FRSkJBQWRBQ3dBQUFBQUdBQVlBQUFGZ0dBbmptUnBucVhRRkZrbm9HakJ6ZlJjd0NORUR4M1JaUU1hQk5hWWJWQ2JXZU9rNCtCNnM5UE05K3hFU2JKanRaTzhqYTViQUZqQTRXMUZ3WmVJMHpyL25LSU1oK3BteCtGdWdoM2FQc3ZwWlc0ZFFTUmdXNFpaWjEwbFUxVjZlRG1OTUk5REprVWNXaVpKa0ZJekF4aytRRUpWTWpVMFhtY3ZHYUNDclIwaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVjZZQ2VPWkdtZXBkQmxHWUcrR1NmUGN2YU8xcnk1UWJmTmxoZEJWa0FWWks2VDdOWUpMRTJ5SHJQekhNV0swODdSTnFwbXF3TE9KanY2cVVTY0pIbG81WkJKSEc1TVNuWnkyZThPSGoxK203dHViMTVYWkZzbFVWK0JKRG1LS0U0Y1FTWkRIRmdtUjJrM09qd0VQMTR3TkRSY1pDb3NIV2Q1YnlFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJYcGdKNDVrYVo1bDFXVk5wNkpueHMzMG5NRmpRQmR1RnhTMEFJd3dHeFpSbkFGT05PQUlTOGRsSnlxU0VhUWk0bTFFbFVZckhCNVdCQ1J4eG1hSXFNRjVqY0d0RGh2TmpVK2ZZOTBJTEI2WHVXZG9WRlpqV2xDQlhvaG1Ta3ROZUNSRUhGY25rWk1uT2pNOEtqOUJVakkxTkZ0b0VBMHRiblJqSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmdHQW5qbVJwbmlaRWRCYnFObHdzeDQwN0NyR3hkbE5IR0RHQkM4SVp1QUlEam90anNJbUF3bExST1VxV1lBR3FLTUNwalpqYUVaREUyWVU3U3BFbGZhNXdXajcydVN3aXlNTjBFYWR5N3JoSEMzZGFIQXRmVFdkakkxaGhYRjVmUmxwV0ptQk9pU2xGV1NkSUhCQXVPRXc3UFQ4eFdqQXpNbzVoRml0d2ZYMGhBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVYxWUNlT1pHbWVwa1YwQWVvU1hDekhxeXRXOFVWTzNSWGJIWTdCWnVCWVRqZ2QwSGNTQWtmRkV1dzVXbkJxSW82UzJ1T1FPQzF1ZGhUd2lqc1RzR2g2RG1MTlozaTVIUXpYei9PUjlzd2NzYmxYSlU1VVVTVkpUejRWS0VJTEtBdEZSeWc0ZXlNOFBuQTJNRE15V0Z3QkJDc0FkR0loQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFWellDZU9aR21lWmdCMUFlb1NBeWZQQStHU2NWWldHVGZjQWM3bGR1RzBUaHpkclZQZ25BYkRwZWp5SXhHYzBoSEhOaG9vczUxTVZZUUZrMGRCcy9ZSUtaczVxN082QXhlbDUyNU9SVjF4ZTlWaVZtNVNXeVZRWUZSSUJWSk5LRUZSS0VWSEtEazdQV00zTURNMFhHWXFjWE5xSVFBaCtRUUpCQUFkQUN3QUFBQUFHQUFZQUFBRmQyQW5qbVJwbm1iUVdkMkVvdERBY1lZeEQ5QkxEZ05oRWp4ZGdKUFJaVGlxRThlbkUzRk9nMkpUbEJtVVl0TmRidFRMam9Da3AzY2s3Z2pLWTQ1Z1pCaXpSNWEydTJOZ09lZWQ4Z1R0NWJoRVhXTmdPMjQ0SlZGZVZTWUxTMU1FZkdGU0tFZE5QRXdrUUZaVE1UTTFOMXRqYXl4L2VGa2hBQ0g1QkFrRUFCMEFMQUFBQUFBWUFCZ0FBQVZvWUNlT1pHbWVwdEFGYU50WkJtY3dUR3hZN21nWXA3QzdBZzdFQmVHMGpMa1ZzbVFZSmpzUUhnbjIxT0YwVlpKVXRNd3VmVm1kU3NRSWswZUJzcG5CRW0yejcyNjFheGhYd1NNcTNOU3NSazl5UnloQlRpaEZkaWMvS1lvNU1ESTBObVlkS20yU1dTRUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCV3hnSjQ1a2FaNW0xUVZvdXhvYzB6UU1aN0N1YURBb1k3Z1ZUazRnUkJWekhjN0VaQkFnUllJZktjQjdpcW9qcVZWSE9tNlBGZXlXb1JJMXRxT3pDSWZ1cUsvdERubmt0WG9OaTdaMjFXYXdkVTVQVVNkMUxZVWlRWUVvUkRrN1BYc3RBVEF5TkRaL1ZwZHhUeUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQldOZ0o0NWthWjVtMVFsbzJ3V2IwWFJRWTJ5Qk8yN3oyV3c2ZzY0alJCa2NRK0xFQkV5S21xTkF6emw5T2tsUTRuVlVGRldwcXRWMkJCa0p5bU8wZDl5cGRxL3ZyRE1yM1g2MThOUGJaVmlhRm50NkN5NDhLRDlKTURJME5qaGpLaXhzV3lFQUlma0VDUVFBSFFBc0FBQUFBQmdBR0FBQUJWaGdKNDVrYVo3bTBnbG91MjdGMmxuRjVwSTJhdVV0M3dNb24wc29JZzVMQXN1dHBNUXRUYjdZa3lRVk5hZldFUXRMMnNxNDN5ejQycWxpemNhYmtMeGtkOUxCRTd5VUJzeUxhcmYxUG9JcFdUVmdJaXdxZ2xnaEFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVlpZQ2VPWkdtZXA5QUJhTnN4aE5xcGpPeSt0c25jeGQzMUtLQlBTTnI1UnNaUjdyaE1Ia1ZPd3BQVUlDMmZyT21wSXVKcVI5N1pWenlTZnF2SXNaTThiV3JYSXFKTFRxS2I3TVdyU0FCSHdUb0xZbjArWGdwalV5RUFJZmtFQ1FRQUhRQXNBQUFBQUJnQUdBQUFCVkZnSjQ1a2FaNW5oYTVqWm9sSloyVXNTYVBBdlJKMXg2Ty9YdERXSTVZQVJaS3FsVFNLWHMxb2JTSmFTcSttbUlpSzVjcXVVSkd1T2NhYXlqVzBMemtzdFUvdmtwclpxOUNRSFdURzJ1U2JleUVBSWZrRUNRUUFIUUFzQUFBQUFCZ0FHQUFBQlVsZ0o0NWthWjVuaGE0anBJcE9CN0Vrd2Rwc1FIYzYydSsvMms0NExNcU1MZVF1cHV4TVJJdW05QlNGVGErZGwyaW01R0pMdUdLWUZNeXR5dEt4U2IzeWlpcnU0clA2WllVQUFDSDVCQWtFQUIwQUxBQUFBQUFZQUJnQUFBVTVZQ2VPWkdtZUo0Q3VZMUNxS2l1Nk1ydlVkNjJiOU43dnRaOFBTQ3dtUkxHaU1yVkVKWnZMMzdNcGxGV2hwWnpOaW0zeGxxcGpseFVDQUNINUJBa0VBQjBBTEFBQUFBQVlBQmdBQUFVM1lDZU9aR21lNklTdTRtSzY3RmpGTkoyc2Q2M0g4MTdEUHFCdlNDeUtWRVdrY1lrUzZweE1VUys2azFCWDAxT1dCWVhxbE5kVENBQWgrUVFKQkFBZEFDd0FBQUFBR0FBWUFBQUZMR0Fuam1ScG5taXFvdFBxdm5Bc3oySkxxL2F0Ny96cDlNRGdLQmNqQ284OHhVdXBNNmFjVHRnUGFRb0JBQ0g1QkFVRUFCMEFMQUFBQUFBWUFCZ0FBQVVqWUNlT1pHbWVhS3F1Yk91K2NMeFNjbTNmZUk3VGV0L3p2cUJ3eUFLV2pDOGtNUVFBT3c9PSkgbm8tcmVwZWF0IHNjcm9sbCBjZW50ZXIgY2VudGVyO1xufVxuLm14LXRvb2x0aXAtY29udGVudCAudGFibGUgdGgsXG4ubXgtdG9vbHRpcC1jb250ZW50IC50YWJsZSB0ZCB7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbn1cbiIsIi5teC10YWJjb250YWluZXItcGFuZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXRhYmNvbnRhaW5lci1jb250ZW50LmxvYWRpbmcge1xuICAgIG1pbi1oZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvZ2lmO2Jhc2U2NCxSMGxHT0RsaE5nQTJBUE1BQVAvLy93QUFBSGg0ZUJ3Y0hBNE9EdGpZMkZSVVZOemMzTVRFeEVoSVNJcUtpZ0FBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQWtLQUFBQUlmNGFRM0psWVhSbFpDQjNhWFJvSUdGcVlYaHNiMkZrTG1sdVptOEFJZjhMVGtWVVUwTkJVRVV5TGpBREFRQUFBQ3dBQUFBQU5nQTJBQUFFeXhESVNhdTlPT3ZOdS85Z0tJNWt5U0VKUVNTSTZVcUtLaFBLV3lMejNOcGltcXNKbnVnM0U0YUlNaVBJOXdzcVBUamlUbGt3cUF3RlRDeFhleFlHczBIMmdnSk9MWUxCUURDeTVnd213WXg5SkpyQXNzSFFYc0tyOUNGdU0zQWxjakowSUFkK0JBTUhMbWxySkFkdUJvNVBsNWlabXB1Y25aNmZjV3FJbUpDamFIT1poaXFtRkl1QWw2NFpzWml6RjZvRXJFSzN1Uk9sbTc2Z3djTER4TVhHeDhYQWo2SWt1NCtvSXJVazBoL1UwV0Vqem5IUUlzcWhrY2pCM3NuY3hkYkM1K0xseWN6aDdrOFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRNRU1oSnE3MDQ2ODI3LzJBb2ptUnBubVZoRUlSUm9HY3hzT3p3d3VSS3N3Wk83anZmQ0VnVGluUzduaEYwbU5FR2h3c2l3VW9nbHBTRHpoQzFLSWlLa1dBd0VKZ1FSTllWSk5pWlNkUjBJdVNzbGRKRlVKMHd1T01KSVcwMGJ5TnhSSE9CWklRamFHbHJXQnhmUUdHUUhsTlZqNVdhbTV5ZG5wOUxZMldib29zV2dpeW1RcWdFcWhON2ZaQ3dHYk95TzdFWHJLNDR1aHFscElxZ3dzUEV4Y2JIeU1lL0tNc2l2U2JQZExjbnRkSlAxTlBPYmlmUmlhUE13Y25DemNyYnlOWEc2TVhkeHVUaTd6NFJBQ0g1QkFrS0FBQUFMQUFBQUFBMkFEWUFBQVRPRU1oSnE3MDQ2ODI3LzJBb2ptUnBubWlxQXNJd0NLc3BFRFFCeCtOUUV3T2U3ejFmYUZhN0NVR3QxMUZZTU5BTUJWTFNTQ3JvYW9Qb2NFY1ZPWGNFZytoS0M1TEF0VEhRaEthSmlMUnU2THNUdjEzeTBJSE1PeXc5QjE4R2ZuK0Zob2VJaVlvWkNBazBDUWlMRmdwb0NobFRSd2h0QkpFV2NEWkNqbTBKRjN4bU1adHVGcVpDcVFRWG4za29vbWlrc0hpWm01MlNBSlJnbHJ3VGpZKzd3Y2JIeU1uS0U1Z296VzljSjdFL1dDZXNhdFVtMTF0RjB0RWp6eks0eTRuaHh0UEkyOGJxd2VqSTV1VHhKaEVBSWZrRUNRb0FBQUFzQUFBQUFEWUFOZ0FBQk1zUXlFbXJ2VGpyemJ2L1lDaU9aR21lYUtvQ3dqQUlxeWtRTkFISDQxQVRBNTd2UFY5b1Zyc0pRYTNYY1lsS0dtV3VKM0luRlJGcDFZNnVGaXh0YVYzUWwzY2FoejlYMnltZDdUaFRiNlo4VHEvYjcvaTh2R0NnR1FvYWNVSUZab0FYYkVkOU93UUdHR1pIaXpXT1FKQ1JCQmlJUW9vN2paaFJTd2RtQjNvVUI0b0dvNlNxcTZ5dE1RZ0pOQWtJckFxUkNpT0NJd2lXQkxSVFJTV3hsZ2toanlTOU5NYVV5TWxEVk1LOXhVT2ZKYnlXdjNxMmk3aEx1aFd3c3RsQ21hdkg1c3lyNWVyVnJ1NDRFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWlaY2dVR05BWUZKSk1pQldhZ1E0TWxuVHNFQmlLTElxczFya0Ftc1RSV3FDU3FPNjFXa1JrSUNUUUpDQmNIWmdkSENyRUt4cW9HeVVJSXRnVEZlc0syQ1h2VXQzcmNCSHZZc2RwNjA3Yldlc3VyelpYQncrZ2lFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2ditMd2VFMS8yTDJ4K1ZCbG1TNFVZaDBLSkZvRkhqWHhSY245N2xKV1dsNWdTQ0FrMENRaVdDanMwQ3BRSW9qV2ZKWk1kbktjRUNhcURJSzQxWGtBaHREUzJYQ0d0cDdBa2p4Nm1ycW5Ca1NLaG9xUVhCUVkwQmdWTG01M0dGUVZtMHBUUG9nYVZ0Tit1bGR3NzNwUUhaZ2VXQjl3RzZwa29FUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3bEJyZGR4aVVvYVphNG5jaWNWRVduVmpxNFdMRzFwWGRDWGR4cUhQMWZiS1ozdE9GTnZwbnhPcjl2dktVU0Nsa0RnTFFvN05BcC9Fd2lDTlg1Q2NSWjdpQVFKaTFRWGp6VkNacFNWQkpkQUY0NklrVDVzRjRlUGlxSlJHWUdDaElXR2puMnVzck8wdFhZRkJqUUdCYlFGWnJ4UVNpSzVnZ1l5a3lHVkpwakpqOHVkSWNRN3hpV2pJUWRtQjJ1cEl3ZkVCdHEySG95ejFyUE01OURseUxUazR1OHBFUUFoK1FRSkNnQUFBQ3dBQUFBQU5nQTJBQUFFekJESVNhdTlPT3ZOdS85Z0tJNWthWjVvcWdMQ01BaXJLUkEwQWNmalVCTURudTg5WDJoV3V3a1JDVm9Db1dtOWhCTEZqcWFBZGhEVEdyUGtOSDZTV1VLQ3UvTjJ3cldTcmhiOG9HbHFZQWljSFpPSU5ETUhHOTdlWFhvZFVsTlZWbGRnUzRhS2k0eU5qbzhGQmpRR0JZOFhCV3MwQTVWUVhSbVNVd2FkWlJob1VKazhwV0duY2hlZ082SkNlRFlZQjZnREIxYWVHUWVnQnJtV3djTER4TVhHeDF5QUtic2lzNEVnemo5c0o3ZlNtdFN0UTZReTI4M0tLTXpJamVIRTBjYlY1OW5sM2NYazR1OG9FUUE3KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMycHggMzJweDtcbn1cbi5teC10YWJjb250YWluZXItdGFicyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LXRhYmNvbnRhaW5lci10YWJzIGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubXgtdGFiY29udGFpbmVyLWluZGljYXRvciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6ICNmMmRlZGU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGNvbG9yOiAjYjk0YTQ4O1xuICAgIHRvcDogMHB4O1xuICAgIHJpZ2h0OiAtNXB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB6LWluZGV4OiAxOyAvKiBpbmRpY2F0b3Igc2hvdWxkIG5vdCBoaWRlIGJlaGluZCBvdGhlciB0YWIgKi9cbn1cbiIsIi8qIGJhc2Ugc3RydWN0dXJlICovXG4ubXgtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47IC8qIHRvIHByZXZlbnQgYW55IG1hcmdpbiBmcm9tIGVzY2FwaW5nIGdyaWQgYW5kIGZvb2JhcmluZyBvdXIgc2l6ZSBjYWxjdWxhdGlvbnMgKi9cbn1cbi5teC1ncmlkLWNvbnRyb2xiYXIsIC5teC1ncmlkLXNlYXJjaGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIC5teC1idXR0b24gKyAubXgtYnV0dG9uLFxuLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM2VtO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1jb250cm9scyAubXgtYnV0dG9uICsgLm14LWJ1dHRvbixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtY29udHJvbGJhciAubXgtYnV0dG9uICsgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cblxuLm14LWdyaWQtcGFnaW5nYmFyLFxuLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4ubXgtZ3JpZC10b29sYmFyLCAubXgtZ3JpZC1zZWFyY2gtaW5wdXRzIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICBmbGV4OiAxO1xufVxuXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXNlYXJjaC1pbnB1dHMge1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncmlkLXBhZ2luZ2JhcixcbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWNvbnRyb2xzIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm14LWdyaWQtcGFnaW5nLXN0YXR1cyB7XG4gICAgcGFkZGluZzogMCA4cHggNXB4O1xufVxuXG4vKiBzZWFyY2ggZmllbGRzICovXG4ubXgtZ3JpZC1zZWFyY2gtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB3aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbltkaXI9XCJydGxcIl0gLm14LWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcGFkZGluZzogMCA1cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubXgtZ3JpZC1zZWFyY2gtbWVzc2FnZSB7XG4gICAgZmxleC1iYXNpczogMTAwJTtcbn1cblxuLyogd2lkZ2V0IGNvbWJpbmF0aW9ucyAqL1xuLm14LWRhdGF2aWV3IC5teC1ncmlkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5teC1jYWxlbmRhciB7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuLm14LWNhbGVuZGFyLCAubXgtY2FsZW5kYXItbW9udGgtZHJvcGRvd24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtY3VycmVudCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4ubXgtY2FsZW5kYXItbW9udGgtc3BhY2VyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5teC1jYWxlbmRhciwgLm14LWNhbGVuZGFyLW1vbnRoLWRyb3Bkb3duLW9wdGlvbnMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbn1cbiIsIi5teC1kYXRhZ3JpZCB0ciB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubXgtZGF0YWdyaWQgdHIubXgtZGF0YWdyaWQtcm93LWVtcHR5IHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi5teC1kYXRhZ3JpZCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LWRhdGFncmlkIHRoLCAubXgtZGF0YWdyaWQgdGQge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qIGhlYWQgKi9cbi5teC1kYXRhZ3JpZCB0aCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBSZXF1aXJlZCBmb3IgdGhlIHBvc2l0aW9uaW5nIG9mIHRoZSBjb2x1bW4gcmVzaXplcnMgKi9cbiAgICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7XG59XG4ubXgtZGF0YWdyaWQtaGVhZC1jYXB0aW9uIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMDtcbn1cbi5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtNnB4O1xuICAgIHdpZHRoOiAxMHB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBjdXJzb3I6IGNvbC1yZXNpemU7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kYXRhZ3JpZC1jb2x1bW4tcmVzaXplciB7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogLTZweDtcbn1cblxuLyogYm9keSAqL1xuLm14LWRhdGFncmlkIHRib2R5IHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItdG9wOiBub25lO1xufVxuLm14LWRhdGFncmlkIHRib2R5IHRyOm50aC1jaGlsZCgybisxKSB0ZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmOTtcbn1cbi5teC1kYXRhZ3JpZCB0Ym9keSAuc2VsZWN0ZWQgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG59XG4ubXgtZGF0YWdyaWQtZGF0YS13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4ubXgtZGF0YWdyaWQgdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbi5teC1kYXRhZ3JpZCBpbnB1dCxcbi5teC1kYXRhZ3JpZCBzZWxlY3QsXG4ubXgtZGF0YWdyaWQgdGV4dGFyZWEge1xuICAgIGN1cnNvcjogYXV0bztcbn1cblxuLyogZm9vdCAqL1xuLm14LWRhdGFncmlkIHRmb290IHRoLFxuLm14LWRhdGFncmlkIHRmb290IHRkIHtcbiAgICBwYWRkaW5nOiAzcHggOHB4O1xufVxuLm14LWRhdGFncmlkIHRmb290IHRoIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RkZDtcbn1cbi5teC1kYXRhZ3JpZC5teC1jb250ZW50LWxvYWRpbmcgLm14LWNvbnRlbnQtbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBhbmltYXRpb246IHBsYWNlaG9sZGVyR3JhZGllbnQgMXMgbGluZWFyIGluZmluaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiAjRjVGNUY1O1xuICAgIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNGNUY1RjUgMCUsICNGNUY1RjUgNSUsICNGOUY5RjkgNTAlLCAjRjVGNUY1IDk1JSwgI0Y1RjVGNSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4O1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5Aa2V5ZnJhbWVzIHBsYWNlaG9sZGVyR3JhZGllbnQge1xuICAgIDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwcHggMDsgfVxuICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTAwcHggMDsgfVxufVxuXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGgsXG4ubXgtZGF0YWdyaWQtdGFibGUtcmVzaXppbmcgdGQge1xuICAgIGN1cnNvcjogY29sLXJlc2l6ZSAhaW1wb3J0YW50O1xufVxuIiwiLm14LXRlbXBsYXRlZ3JpZC1jb250ZW50LXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5teC10ZW1wbGF0ZWdyaWQtcm93IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG59XG4ubXgtdGVtcGxhdGVncmlkLWl0ZW0ge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4ubXgtdGVtcGxhdGVncmlkLWVtcHR5IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xufVxuLm14LXRlbXBsYXRlZ3JpZC1pdGVtIC5teC10YWJsZSB0aCxcbi5teC10ZW1wbGF0ZWdyaWQtaXRlbSAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG59XG4iLCIubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLWhvcml6b250YWwgPiBkaXYge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItbmVzdGVkIHtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbWlkZGxlID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyLFxuLm14LXNjcm9sbGNvbnRhaW5lci1maXhlZCA+IC5teC1zY3JvbGxjb250YWluZXItbGVmdCA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLWNlbnRlciA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlcixcbi5teC1zY3JvbGxjb250YWluZXItZml4ZWQgPiAubXgtc2Nyb2xsY29udGFpbmVyLXJpZ2h0ID4gLm14LXNjcm9sbGNvbnRhaW5lci13cmFwcGVyIHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLWluIHtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDI1MG1zIGVhc2Utb3V0O1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1tb3ZlLW91dCB7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAyNTBtcyBlYXNlLWluO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB3aWR0aDtcbn1cblxuLm14LXNjcm9sbGNvbnRhaW5lci10b2dnbGVhYmxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zbGlkZSA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSA+IC5teC1zY3JvbGxjb250YWluZXItd3JhcHBlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LXNjcm9sbGNvbnRhaW5lci1zaHJpbmsgPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubXgtc2Nyb2xsY29udGFpbmVyLXB1c2gubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiBkaXYsXG4ubXgtc2Nyb2xsY29udGFpbmVyLXNsaWRlLm14LXNjcm9sbGNvbnRhaW5lci1vcGVuID4gZGl2IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5teC1zY3JvbGxjb250YWluZXItcHVzaC5teC1zY3JvbGxjb250YWluZXItb3BlbiA+IC5teC1zY3JvbGxjb250YWluZXItdG9nZ2xlYWJsZSxcbi5teC1zY3JvbGxjb250YWluZXItc2xpZGUubXgtc2Nyb2xsY29udGFpbmVyLW9wZW4gPiAubXgtc2Nyb2xsY29udGFpbmVyLXRvZ2dsZWFibGUge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuIiwiLm14LW5hdmJhci1pdGVtIGltZyxcbi5teC1uYXZiYXItc3ViaXRlbSBpbWcge1xuICAgIGhlaWdodDogMTZweDtcbn1cblxuIiwiLm14LW5hdmlnYXRpb250cmVlIC5uYXZiYXItaW5uZXIge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZTZlYTtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSBsaTpsYXN0LWNoaWxkIHtcbiAgICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgY29sb3I6ICM3Nzc7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgYS5hY3RpdmUge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMzNDk4REI7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xufVxuLm14LW5hdmlnYXRpb250cmVlIC5teC1uYXZpZ2F0aW9udHJlZS1jb2xsYXBzZWQgdWwge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtbmF2aWdhdGlvbnRyZWUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbn1cbltkaXI9XCJydGxcIl0gLm14LW5hdmlnYXRpb250cmVlIHVsIGxpIHVsIGxpIHtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcbn1cbi5teC1uYXZpZ2F0aW9udHJlZSB1bCBsaSB1bCBsaSB1bCBsaSBpbWcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4iLCIubXgtbGluayBpbWcsXG4ubXgtYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAxNnB4O1xufVxuLm14LWxpbmsge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbiIsIi5teC1ncm91cGJveCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7XG4gICAgY29sb3I6ICNlZWU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7XG59XG4ubXgtZ3JvdXBib3gtY29sbGFwc2libGUgPiAubXgtZ3JvdXBib3gtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZ3JvdXBib3guY29sbGFwc2VkID4gLm14LWdyb3VwYm94LWhlYWRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm14LWdyb3VwYm94LWJvZHkge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cbi5teC1ncm91cGJveC5jb2xsYXBzZWQgPiAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi5teC1ncm91cGJveC1oZWFkZXIgKyAubXgtZ3JvdXBib3gtYm9keSB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbn1cbi5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG5bZGlyPVwicnRsXCJdIC5teC1ncm91cGJveC1jb2xsYXBzZS1pY29uIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiIsIi5teC1kYXRhdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm14LWRhdGF2aWV3LWNvbnRyb2xzIHtcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMTJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4ubXgtZGF0YXZpZXctY29udHJvbHMgLm14LWJ1dHRvbiArIC5teC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAwLjNlbTtcbn1cblxuLm14LWRhdGF2aWV3LW1lc3NhZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbn1cbi5teC1kYXRhdmlldy1tZXNzYWdlID4gZGl2IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4ubXgtZGF0YXZpZXctbWVzc2FnZSA+IGRpdiA+IHAge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRvcC1sZXZlbCBkYXRhIHZpZXcgaW4gd2luZG93IGlzIGEgc3BlY2lhbCBjYXNlLCBoYW5kbGUgaXQgYXMgc3VjaC4gKi9cbi5teC13aW5kb3ctdmlldyAubXgtd2luZG93LWJvZHkge1xuICAgIHBhZGRpbmc6IDA7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQsXG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LXBsYWNlaG9sZGVyID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IDE1cHg7XG59XG4ubXgtd2luZG93LXZpZXcgLm14LXdpbmRvdy1ib2R5ID4gLm14LWRhdGF2aWV3ID4gLm14LWRhdGF2aWV3LWNvbnRyb2xzLFxuLm14LXdpbmRvdy12aWV3IC5teC13aW5kb3ctYm9keSA+IC5teC1wbGFjZWhvbGRlciA+IC5teC1kYXRhdmlldyA+IC5teC1kYXRhdmlldy1jb250cm9scyB7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCA2cHggNnB4O1xufVxuIiwiLm14LWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogNTAwcHg7XG4gICAgLyogSWYgdGhlIG1hcmdpbiBpcyBzZXQgdG8gYXV0bywgSUU5IHJlcG9ydHMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUgb2YgdGhlXG4gICAgICogbWFyZ2luIGFzIHRoZSBhY3R1YWwgdmFsdWUuIE90aGVyIGJyb3dzZXJzIHdpbGwganVzdCByZXBvcnQgMC4gRWxpbWluYXRlXG4gICAgICogdGhpcyBkaWZmZXJlbmNlIGJ5IHNldHRpbmcgbWFyZ2luIHRvIDAgZm9yIGV2ZXJ5IGJyb3dzZXIuICovXG4gICAgbWFyZ2luOiAwO1xufVxuLm14LWRpYWxvZy1oZWFkZXIge1xuICAgIGN1cnNvcjogbW92ZTtcbn1cbi5teC1kaWFsb2ctYm9keSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG59XG4iLCIubXgtd2luZG93IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgbGVmdDogYXV0bztcbiAgICByaWdodDogYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA2MDBweDtcbiAgICAvKiBJZiB0aGUgbWFyZ2luIGlzIHNldCB0byBhdXRvLCBJRTkgcmVwb3J0cyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBtYXJnaW4gYXMgdGhlIGFjdHVhbCB2YWx1ZS4gT3RoZXIgYnJvd3NlcnMgd2lsbCBqdXN0IHJlcG9ydCAwLiBFbGltaW5hdGVcbiAgICAgKiB0aGlzIGRpZmZlcmVuY2UgYnkgc2V0dGluZyBtYXJnaW4gdG8gMCBmb3IgZXZlcnkgYnJvd3Nlci4gKi9cbiAgICBtYXJnaW46IDA7XG59XG4ubXgtd2luZG93LWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm14LXdpbmRvdy1hY3RpdmUgLm14LXdpbmRvdy1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4IDZweCAwIDA7XG59XG4ubXgtd2luZG93LWhlYWRlciB7XG4gICAgY3Vyc29yOiBtb3ZlO1xufVxuLm14LXdpbmRvdy1ib2R5IHtcbiAgICBvdmVyZmxvdzogYXV0bztcbn1cbiIsIi5teC1kcm9wZG93bi1saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1kcm9wZG93bi1saXN0IGltZyB7XG4gICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4ubXgtZHJvcGRvd24tbGlzdCB7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuLm14LWRyb3Bkb3duLWxpc3QgPiBsaTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtZHJvcGRvd24tbGlzdCA+IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkO1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuLm14LWRyb3Bkb3duLWxpc3Qtc3RyaXBlZCA+IGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbn1cbi5teC1kcm9wZG93bi1saXN0ID4gbGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG59XG4iLCIubXgtaGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogOXB4O1xuICAgIGJhY2tncm91bmQ6ICMzMzM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWhlYWRlci1jZW50ZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogI2VlZTtcbiAgICBsaW5lLWhlaWdodDogMzBweDsgLyogaGVpZ2h0IG9mIGJ1dHRvbnMgKi9cbn1cbmJvZHlbZGlyPVwibHRyXCJdIC5teC1oZWFkZXItbGVmdCxcbmJvZHlbZGlyPVwicnRsXCJdIC5teC1oZWFkZXItcmlnaHQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDlweDtcbiAgICBsZWZ0OiA5cHg7XG59XG5ib2R5W2Rpcj1cImx0clwiXSAubXgtaGVhZGVyLXJpZ2h0LFxuYm9keVtkaXI9XCJydGxcIl0gLm14LWhlYWRlci1sZWZ0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA5cHg7XG4gICAgcmlnaHQ6IDlweDtcbn1cbiIsIi5teC10aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgIG1hcmdpbi10b3A6IDBweDtcbn1cbiIsIi5teC1saXN0dmlldyB7XG4gICAgcGFkZGluZzogOHB4O1xufVxuLm14LWxpc3R2aWV3ID4gdWwge1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuLm14LWxpc3R2aWV3ID4gdWwgPiBsaSB7XG4gICAgcGFkZGluZzogNXB4IDEwcHggMTBweDtcbiAgICBib3JkZXI6IDFweCAjZGRkO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQgc29saWQgbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4ubXgtbGlzdHZpZXcgPiB1bCA+IGxpOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGk6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XG59XG4ubXgtbGlzdHZpZXcgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xufVxuLm14LWxpc3R2aWV3IGxpOm50aC1jaGlsZCgybisxKTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbn1cbi5teC1saXN0dmlldyA+IHVsID4gbGkuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlZWU7XG59XG4ubXgtbGlzdHZpZXctY2xpY2thYmxlIHVsICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1saXN0dmlldy1lbXB0eSB7XG4gICAgY29sb3I6ICM5OTk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm14LWxpc3R2aWV3IC5teC1saXN0dmlldy1sb2FkaW5nIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbi5teC1saXN0dmlldy1zZWFyY2hiYXIgPiBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xufVxuW2Rpcj1cInJ0bFwiXSAubXgtbGlzdHZpZXctc2VhcmNoYmFyID4gYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwYWRkaW5nOiAwIDE1cHggMCA1cHg7XG59XG5bZGlyPVwicnRsXCJdIC5teC1saXN0dmlldy1zZWxlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAgNXB4IDAgMTVweDtcbn1cbi5teC1saXN0dmlldy1zZWxlY3RhYmxlIC5teC1saXN0dmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgd2lkdGg6IDEwMCU7XG59XG4ubXgtbGlzdHZpZXcgLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZGVmO1xufVxuLm14LWxpc3R2aWV3IC5teC10YWJsZSB0aCxcbi5teC1saXN0dmlldyAubXgtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDJweDtcbn1cbiIsIi5teC1sb2dpbiAuZm9ybS1jb250cm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuIiwiLm14LW1lbnViYXIge1xuICAgIHBhZGRpbmc6IDhweDtcbn1cbi5teC1tZW51YmFyLWljb24ge1xuICAgIGhlaWdodDogMTZweDtcbn1cbi5teC1tZW51YmFyLW1vcmUtaWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDTUFBQUFqQ0FZQUFBQWUyYk5aQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFLTkpSRUZVZU5waS9QLy9QOE5nQVV3TWd3aU1PbWJVTWFPT0dYWE1xR05HSFRQWUhNT0NUZkRzMmJNZVFLb09pSTFCWENCdU1qWTIza0ZyZFl6b1RRaWdSbThndFFXTEcwT0JCcXlobFRwYzBkU09JeFRyYUt3T3EyUFVjV2hXcDdFNnJJNjVpVVB6VFJxcncrcVlHaHlhbTJpc0R0TXh3RVMxQ1VnRkFmRnhxQkNJRGtKUGJOUldoelUzalJaNm80NFpkY3lvWTBZZE0rcVlVY2NNVXNjQUJCZ0FVWHBFakUvQnMvSUFBQUFBU1VWT1JLNUNZSUk9KSBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE2cHggMTZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLm14LW5hdmlnYXRpb25saXN0IHtcbiAgICBwYWRkaW5nOiA4cHg7XG59XG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6aG92ZXIsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGk6Zm9jdXMsXG4ubXgtbmF2aWdhdGlvbmxpc3QgbGkuYWN0aXZlIHtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OERCO1xufVxuLm14LW5hdmlnYXRpb25saXN0ICoge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1uYXZpZ2F0aW9ubGlzdCAudGFibGUgdGgsXG4ubXgtbmF2aWdhdGlvbmxpc3QgLnRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAycHg7XG59XG4iLCIubXgtcHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDMwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogMjUwcHg7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgYmFja2dyb3VuZDogIzMzMztcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgei1pbmRleDogNTAwMDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgcGFkZGluZzogMjBweCAxNXB4O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluLW91dDtcbn1cbi5teC1wcm9ncmVzcy1oaWRkZW4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG4ubXgtcHJvZ3Jlc3MtbWVzc2FnZSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG59XG4ubXgtcHJvZ3Jlc3MtZW1wdHkgLm14LXByb2dyZXNzLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4ubXgtcHJvZ3Jlc3MtaW5kaWNhdG9yIHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBoZWlnaHQ6IDEwcHg7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhSZ0FLQU1RQUFEbzZPb0dCZ1ZwYVduQndjSTZPanF5c3JGSlNVbVJrWkQ4L1AweE1UTTdPenFlbnAxaFlXRjFkWFVoSVNISnljb2VIaDB0TFMxZFhWNmlvcU0vUHoyVmxaVDA5UFRjM04wQkFRSVdGaGRiVzFseGNYSzJ0clVGQlFUTXpNd0FBQUNIL0MwNUZWRk5EUVZCRk1pNHdBd0VBQUFBaCtRUUVEQUFBQUN3QUFBQUFSZ0FLQUFBRms2RG5YUmFHV1plb3JxU0pybkI3cHJBcXY3VjQweDdRL1VCQXpnZjhDV3ZFNGhHV0RBNkx4aEVVeU5OTmYxWHBOWHU1ZHJoZWt0Y0NzNHpMNTVYNVNsYVBNVjRNREg2VnIraFR1d29QMVl2NFJTWnhjNE4zaFh1SGYzRnJVMjBxakZDT0lwQkZraDZVUUphWVB5aGhNWjRzb0RhaVZsczlVMHNyVFZGSXFFOVFxU3FySFVzN09Ub2xNN2NqdVRnNXRyZkFJUUFoK1FRRURBQUFBQ3dBQUFBQUNnQUtBQUFGSktEbkhZV2lGSWZvUVZyclFxTXJhK1RzbG5acjV0ckpvN3dVYXdZVFZRb1VDa29VQWdBaCtRUUVEQUFBQUN3QUFBQUFHUUFLQUFBRldhRG5NY1N5RUpLb3JrZWhLTVdoUGx4dFA2c0thWHdQZVJLYmtNUElIWHBJellFd3RCRnloV1N2c0dqV0ZqbUZsS2VvV3JFcjdWYkJ0RDVYMFcyQllTVWF0MG9QYllqTGVYYkpuNGcwbVJDS2RpSVZCUlFVTVNJaEFDSDVCQVFNQUFBQUxBQUFBQUFvQUFvQUFBV0tvT2NsUXhBTWthaXVETEVzaExUT1I2RW94YUUyV2U4M005R0RReXcrZ2g2SVpzbUVlQ0srYUNZeGt4U3ZIQWFOeWRVY0JsTGZZRWJBRmdtelFwZFpDSVI3Z2RuQ1RGek1GT3Vsd3YyT3IrWjBkaXQ0ZVFwZ2IyTXJaWFJvSzJwNUJRbHZVek1NZEZsYmVUbzhVa0JCUTFoSFFVcGRUaUlrSmdOVVNCNHRFeE1FV3F3VkJSUVVPU0loQUNINUJBUU1BQUFBTEFBQUFBQTNBQW9BQUFXOG9PY2hoaUFZaUtpdXlSQUVRN1RPRExFc2hEU3ZSNkVvaFlQS3NTa2FIVHRQSThOc05wSVBqblQ2U0VJMDJDeGtaT3h1VXF0SWM1eEp6Q1RUTkljeE8yVGZtb1BCYXpUTUJ1VG1ZRVpRVHdrekJYQlpCUUowUlFJekFYbE1BVE1MZmxJTE13cURXQXFHaDRrcmk0eU9LNUNSa3l1VmxncHpoM1lyZUl4N0szMlJnQ3VDbGdVSWgxOHpDWXhsTkpGcmJaWnhIa1JlU0R0TFpFODdVV3BWTzFkd1d5SVlKU2RnU1MwdkEyWkpIalVURXdSczNoVUZGQlJCSWlFQUlma0VCQXdBQUFBc0FBQUFBRVlBQ2dBQUJmQ2c1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RXlVNTFLQ2dVaFlNSzBHazZBVVBIWmtwMURCdVpyTFl4ZkhDKzRNY1FvaW1iSVNPbnVwTmlVZDhiMlNxaXJXY1NNd2w0ejJITURtYUJHZ2NXYTA0V013WndWQVl6QTNaYUF6TUVmR0FFTXdXQ1pnVVloazBZTXdLTFV3SXpBWkJaQVRNTGxWOExNd3FhWlFxZG5xQXJvcU9sSzZlb3FpdXNyYThyc2JJS2haNklLNHFqalN1UHFKSXJsSzJYSzVteUJSZWViRE1JbzNFMHFIY3pESzE5ZjdLREhreHJVRHRTY0ZZN1dIWmNPMTU4WWp0a2dtZ2lKRXlnR0NJQ2d3c1ljb2JVdURFQUQ4RWVFeVlROEVPd1FnRUtGSktJQ0FFQUlma0VCQXdBQUFBc0R3QUFBRGNBQ2dBQUJicWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkROSzhNc1N3RWlRclFLUm9CTzQ5ancydzZrbzJNZE5wSVBqalk3R05rN0haU3JLWjRJMXRGcHVoTVlpYkp1amtNaTlkb21SbkdUY05za0o0T1pnUnZXUVFZYzBVWU13SjRUQUl6QVgxU0FUTUxnbGdMaFlhSUs0cUxqU3VQa0pJcmxKVUxjb1oxSzNlTGVpdDhrSDhyZ1pVRUY0WmZNd2lMWkRTUWFqTU1sWEFlUkY1SU8wdGpUenRSYVZVN1YyOWJJaVFtS0VraUdDNHdaVWsxTndOcjJEMFRFd1FNSWlFQUlma0VCQXdBQUFBc0hnQUFBQ2dBQ2dBQUJZZWc1MTBXaGxtWHFLNklJUWdHc3M3SkVBUkRwQUpkN3dNemtXTkRMRHFDbmtabXlXeU1mTkJPaWxXc2JtU3JDSE9iU1ZpaVBzdk1ZQzBhWmdNdWM0QUI5ekF6UVprb21BWFV5MERiRFYvSjUzVXJkM2dCWDI1aUsyUnpaeXRwZUFNWGJsSXpDSE5YTkhoZEhqeFJRRUZEVmtkQlNseE9JaVFtS0VnaUdDNHdXRWcxTndNSklpRUFJZmtFQkF3QUFBQXNMUUFBQUJrQUNnQUFCVldnNTEwV2hsbVhxSzZJSVFnR29nSmRiUU9yNm14ODc0eTJZQ2ZGNmhrM0NJdlFac2taamowRFpsbkQ1QVJRbm1CS3RhNndXWUdTMmx3OXM0WUxkWmhEWkpFZW1oQ1g4K3lPUHhISmhLcXJNQzR3TWg0aEFDSDVCQVFNQUFBQUxEd0FBQUFLQUFvQUFBVWlvT2RkRm9aWmwrZ0JYZXNDb3l0MzVPeVdkbXZtM2NtanZCUnJCaE9SVENoUkNBQTcpO1xufVxuIiwiLm14LXJlbG9hZC1ub3RpZmljYXRpb24ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAxO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxcmVtO1xuXG4gICAgYm9yZGVyOiAxcHggc29saWQgaHNsKDIwMCwgOTYlLCA0MSUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMDAsIDk2JSwgNDQlKTtcblxuICAgIGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxLCAzNywgNTUsIDAuMTYpO1xuICAgIGNvbG9yOiB3aGl0ZTtcblxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG59XG4iLCIubXgtcmVzaXplci1uLFxuLm14LXJlc2l6ZXItcyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMHB4O1xufVxuLm14LXJlc2l6ZXItbiB7XG4gICAgdG9wOiAtNXB4O1xuICAgIGN1cnNvcjogbi1yZXNpemU7XG59XG4ubXgtcmVzaXplci1zIHtcbiAgICBib3R0b206IC01cHg7XG4gICAgY3Vyc29yOiBzLXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItZSxcbi5teC1yZXNpemVyLXcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLm14LXJlc2l6ZXItZSB7XG4gICAgcmlnaHQ6IC01cHg7XG4gICAgY3Vyc29yOiBlLXJlc2l6ZTtcbn1cbi5teC1yZXNpemVyLXcge1xuICAgIGxlZnQ6IC01cHg7XG4gICAgY3Vyc29yOiB3LXJlc2l6ZTtcbn1cblxuLm14LXJlc2l6ZXItbncsXG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG59XG5cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItbmUge1xuICAgIHRvcDogLTVweDtcbn1cbi5teC1yZXNpemVyLXN3LFxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGJvdHRvbTogLTVweDtcbn1cbi5teC1yZXNpemVyLW53LFxuLm14LXJlc2l6ZXItc3cge1xuICAgIGxlZnQ6IC01cHg7XG59XG4ubXgtcmVzaXplci1uZSxcbi5teC1yZXNpemVyLXNlIHtcbiAgICByaWdodDogLTVweDtcbn1cblxuLm14LXJlc2l6ZXItbncge1xuICAgIGN1cnNvcjogbnctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItbmUge1xuICAgIGN1cnNvcjogbmUtcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc3cge1xuICAgIGN1cnNvcjogc3ctcmVzaXplO1xufVxuLm14LXJlc2l6ZXItc2Uge1xuICAgIGN1cnNvcjogc2UtcmVzaXplO1xufVxuIiwiLm14LXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbn1cbiIsIi5teC10ZXh0YXJlYSB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiBub25lO1xuICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbn1cbi5teC10ZXh0YXJlYSAubXgtdGV4dGFyZWEtbm9yZXNpemUge1xuICAgIGhlaWdodDogYXV0bztcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG4ubXgtdGV4dGFyZWEgLm14LXRleHRhcmVhLWNvdW50ZXIge1xuICAgIGZvbnQtc2l6ZTogc21hbGxlcjtcbn1cbi5teC10ZXh0YXJlYSAuZm9ybS1jb250cm9sLXN0YXRpYyB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuIiwiLm14LXVuZGVybGF5IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xufVxuIiwiLm14LWltYWdlem9vbSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5O1xufVxuLm14LWltYWdlem9vbS13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm14LWltYWdlem9vbS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiBub25lO1xufVxuIiwiLm14LWRyb3Bkb3duIGxpIHtcbiAgICBwYWRkaW5nOiAzcHggMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gbGFiZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4ubXgtZHJvcGRvd24gaW5wdXQge1xuICAgIG1hcmdpbjogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5teC1kcm9wZG93biAuc2VsZWN0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7XG59XG4ubXgtc2VsZWN0Ym94IHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuLm14LXNlbGVjdGJveC1jYXJldC13cmFwcGVyIHtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLm14LWRlbW91c2Vyc3dpdGNoZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzYwcHg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDIwMDAwO1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiA4MHB4IDQwcHggMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGJhY2tncm91bmQ6IHVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU9nQUFBQmdDQVlBQUFBWFNqN05BQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQXlScFZGaDBXRTFNT21OdmJTNWhaRzlpWlM1NGJYQUFBQUFBQUR3L2VIQmhZMnRsZENCaVpXZHBiajBpNzd1L0lpQnBaRDBpVnpWTk1FMXdRMlZvYVVoNmNtVlRlazVVWTNwcll6bGtJajgrSUR4NE9uaHRjRzFsZEdFZ2VHMXNibk02ZUQwaVlXUnZZbVU2Ym5NNmJXVjBZUzhpSUhnNmVHMXdkR3M5SWtGa2IySmxJRmhOVUNCRGIzSmxJRFV1TXkxak1ERXhJRFkyTGpFME5UWTJNU3dnTWpBeE1pOHdNaTh3TmkweE5EbzFOam95TnlBZ0lDQWdJQ0FnSWo0Z1BISmtaanBTUkVZZ2VHMXNibk02Y21SbVBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHhPVGs1THpBeUx6SXlMWEprWmkxemVXNTBZWGd0Ym5NaklqNGdQSEprWmpwRVpYTmpjbWx3ZEdsdmJpQnlaR1k2WVdKdmRYUTlJaUlnZUcxc2JuTTZlRzF3UFNKb2RIUndPaTh2Ym5NdVlXUnZZbVV1WTI5dEwzaGhjQzh4TGpBdklpQjRiV3h1Y3pwNGJYQk5UVDBpYUhSMGNEb3ZMMjV6TG1Ga2IySmxMbU52YlM5NFlYQXZNUzR3TDIxdEx5SWdlRzFzYm5NNmMzUlNaV1k5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmVHRndMekV1TUM5elZIbHdaUzlTWlhOdmRYSmpaVkpsWmlNaUlIaHRjRHBEY21WaGRHOXlWRzl2YkQwaVFXUnZZbVVnVUdodmRHOXphRzl3SUVOVE5pQW9UV0ZqYVc1MGIzTm9LU0lnZUcxd1RVMDZTVzV6ZEdGdVkyVkpSRDBpZUcxd0xtbHBaRG8wTXprd09UUkVNRFEyTkVZeE1VVTBRVFE0TVVJNU5UTkdNVVEzUXpFNU55SWdlRzF3VFUwNlJHOWpkVzFsYm5SSlJEMGllRzF3TG1ScFpEbzBNemt3T1RSRU1UUTJORVl4TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJK0lEeDRiWEJOVFRwRVpYSnBkbVZrUm5KdmJTQnpkRkpsWmpwcGJuTjBZVzVqWlVsRVBTSjRiWEF1YVdsa09qYzBSRU15TVVaR05EWTBRekV4UlRSQk5EZ3hRamsxTTBZeFJEZERNVGszSWlCemRGSmxaanBrYjJOMWJXVnVkRWxFUFNKNGJYQXVaR2xrT2pjMFJFTXlNakF3TkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaTgrSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGlBOEwzSmtaanBTUkVZK0lEd3ZlRHA0YlhCdFpYUmhQaUE4UDNod1lXTnJaWFFnWlc1a1BTSnlJajgrZzF0Umx3QUFFRkZKUkVGVWVOcnNuWWwzVmNVZHgyZHU4ckpESUpDd0NnalZhclZvc1ZYYzZqbldubnBJUWxKV2w2T0NyUFlma2gxY2l1d2xMRm81dFQzbFZKUlZFVVVFUlFRSlM0Q1FRRWpDUzk3MCs1Mlo5M0lUREd1Uzk4ajcvVGp6N3IyL2U5OTlaTzU4N205K003K1owY05YYnNxS2FUTmVLVlZvbEttT0tiWDM5RXNWS2wxRVY2MklLSzN3QjV1SGNZZy8zM3lDNHgybS9FMmpSRVNTTE1HSmw4dXZZcnNIaWR1aFNBK21Vd2FZaWhsUk0zSEdPdXp1Wlg0Zy9SbHBpdDY4TkZ1S2gwalNEWWd4emxBTVc3V3BDQmIwNlJqTmlEWUh6azZ2UEpaMm1iRnArYStKTEN4b0hyYm5vVnB0eW1lZGxXSWlrblJBS1VOWFZRMERvT01BcUlKMlg4MzB5cFBwQitteVFsL2xIWTNES0xaYlRmbnNMNldvaUNRZFVNcmdWVlZqQWVoSWFHTXhaWGFlbi83WGMybVpNWnVYVm1MenFGSTJmL1lCMm85TTJleW9GQm1ScEFKS0tWbTk4UkZvUndCUUZzZ2RnTFErVFNFZEIwQkxzWnNCUUd1d3Y4NlV6VGtqeFVZa3FZQlNpbGR2SEFkQWgyRzNDUloxUisyMFNRM3BDZW1TZ2RpVUFkQlJBTFFGKzl1UWRnTlVhZVVWU1I2Z2xBR3IvL0U0Tm9NQWFBTjgweDExMHlZMXBXMUdiVmxDdi9SMy92QVE5amVac3JsWHBBaUpkS2NFTnpqUDdoZFU3VlErMGhOOTFxeVBwR3RHd2Yrc3dvYmRNWmVRSGtENm05Nnk2SDRwUWlKSnM2RGVpa1pnUVIrSEJTMUNsYmZXYVBQWjVhbFRXdFBYa2k0dXNGVmVaUjV3Q3ZhZm1vOU42YnlyVXB4RWVoeFFTdjgxRzNJQUtDQTFoUUQwSFBaM1hVbGpTQjJvaTU3QjVua0FpbHFJdVlEOWpZRDB1QlFwa1I0SGxGSzRaa01lQUIwUFFQTUI2TmxXWlhZM1Q1MGFTM05JaXdIb2l3QjBqSEw5TWJ1UVBoRnJLdExqZ0ZMZ2crWUQwUEdnTWcrQW5zRjJUelROSWJXWnVIVWhxcnpxOS82dzFqWWdsYzcvVVlxWFNJOENTaWxZdTQ0VzlDa0F5bXJ2S2ZpbmUxdW5URE1DNmNJaDJQd0o2VmNBbFBteEY5YjFYMmJDL0NZcFppSTlCaWdsRDVDMnVyamRiQUJhRGRVK2dUUnNUWTJ6cHRxMitQNFRrSDRqT1NQU1k0QlNzdGV1TFFDZ1R3UFFMQnhXd3ovZFo2Wk1GMGd0cEF0S3NIa0JnTWE3WVk0QTJnL05oTGRxSlhkRWVnUlFTb1NRYXNQV3pBZ0FQVVZMQ2toamtxMCtjejljOEFRMlR5TDFVeTVzY2p2U0RvRGFLcmtqMHUyQVVqTFdyV0cvNEZNQWxPTW56K0NPZTh6a2x3VFNOa2laTHhNQTZDTmV4UzZaandEcEVja2RrVzRIMUVPYUQwQ2Z3bTRPN3NqeGs0UlVyRVE3VU4rK2p5OHlwSHU5Nmp1a2p3SHFCY2tka1c0RjFONW8zV3FHQTQ3SEhmT1VEUTgwdTgza2x3WFNhMEY5RnBzL0lQVlZkcnlwK3N4WGU2VzFWNlQ3QUUxQXFnMzlybndmWGJNTGtNb1l5bXNoemNYbUw4cU9ON1hDb1B2L0lPMEZxT0llaUhRUG9QYUc2MWZsT1F0aGFDSHE4QXM3emFSWG1pV3JmeEhVVWI3YUcyL3Q1Y0NFYmVLZmluUWJvQjdTSE44WDJCKy93SEdrbndOU0daclZPYWkveGVZeHBGRmU5Wk5peU9DRXR5UzJWd0R0bnE1THZmNkRMRnZvdE9HQVovaFhCcEMrZWtteS9JYitLV0V0OGFyRFNQOEdxS2NsZHdUUTdvQTBFNy9BUWM2RGZUL2dia0I2WHJMOXVwQnE1VUlHQ1dxaGNrSDRqRVQ2TDBDdGtSd1NRTHYrUnphczVOdytuRDRscG9MWUY2Ynl0V3JKK2h1Q0NqZEJ2YURhZ3ZBOXFCcWd6aGRRQmRDdWh2VHY3S2dmQVVENWd3Y0I2VkhKL3BzQ2xZMXR6M2tmMVQ0eWIxRzNBMVNaczFjQTdWSkl4d0xRa2Q0Z0hIV2d2aTd4dTdjRXFuNHNaRkhwbzM0S1VLVXhTUUR0b2gvYytONFFWMjJ6djN0S2FmV0ZxWGhkQWhwdUd0UUZCUFdQb2FvdnM1S0EvZy9waUNtZEx5ODhBZlNPSVdYd09BTWFzZ0RvUmV6dk1oVnZTRi9wcllIS1lJZW5rZTREb0lPOG1sWGVuVGo3bFNtZEp3RWlBdWlkUVBwdXZ2V3JORnNxRGNQY2RnTFNlbmtrdDVHWFd4YzhZMEZWeXJzUG1uM09YQXhxRjBDVnJpMEI5TFlocFFYbDhncTBBQzJLWTBvclpzak03YmNQS2h2aXhtSnZqRmZSZFRpbzJMMGxFNW9Kb0xmOW42aDZoMzJsdy8xVUlkOEMwaC9rMGR3SnFBdHBTVG5wK0VNaExhdS91NUVPbU5LNUVwZ3ZnTjR5cEhqekcxZEYwK29rOXZlYmlUT2w4ZWpPUUdXZ0EwZk9qTURSQ0srK0NwLzFBTFpmbXJLNUp5U1hCTkJiZ0hURllNVVJIbHBGQUdpZHJacE5uTmtvajZrcllGM0V5Q1NtKzFYaWtXdXVYTWVsRmZlYnNqbmlxd3FnTndWcEhnQmw1RkYvKzdaWFpvK1orS2FFQjNZZHFNVUE5RkZ2VmUveGFnNXhvMXZ4RlhTSFpKbEZBZlQ2LzZsTkt6SUJKZ3ZSRU8rWEhnU2tFbm5VMWZtOFpUR0h1VDNTd1ZkbEZmZ1FmVldrbzZaOHRyZ1pBbWhub0M1SDRURWp2RjlhYmYzUzhsa3Q4dGk2SEZUT216UlcyVVdoOUppMktqQUhrdXR2bFdzSlBvYThGMWdGMEk2UUxodGlDNDlXV1FDMHdmcWw1YlBFWCtvMldKZjBBNkQwVlVjck8zK1NqcDlxeFA1M09FZGdmMENOUmw2VUFtZ0MwbHlVRTFyVFltWDc5c3dCVkwya0JiSzc4MzN6RXVTMy9vMXlBOGtkcks2NHdFZlZkRGtZQzN6WVRKd3BMOHgwQnJTdHdDeWxYM3FQTHlYSFVWNitObVhpSS9WUTNoZmg4MEZrL1JoblhST1dsUS9qRkk2UFlJOE5UVCtiaWhreXIxSTZBdW9MQ254U3d5cFlnREp5R2Z0N1Rka2NDUkhzNlJxTjBteGdZdklOVEFucjJvejlZOHExQ2g4MUZXK2NreHhMSTBCOTFhdkErNlVEVUNyNHR2NEdrQjZUeDVrTVdKZHJWd1cyalV0czBCc1JzcTY4NGhMMFA5a2Fqd08zeGxTK0ppTnVlak9nb1FZTnh2SEcrL0k0Ync4NzNHVnR6bVErazZvVnVUNFdlTFNIZFdBb01JSWZET1Evb1dMQno2d09RMWN0c3o3MlVrQWRwSXM1bFFvYk1qaEZTQ09BWlFpYlZLdFNCdGgzKzNyTE9zcUhHN29KMFdKQi9BcldnR284cktkd0xWKzBaMlErNVY0Q3FJYzBSN2wrdkVIZUVUcUtsL1VoVXpwWEdwQlM3Vmx0ZkkvRERJY0QwT0hLTnZqcFVhR3pjVDgyNXNNUUFhcytBeDBEL1dzQ3BldlNiWm5MWGdGb0NOUnd3RDJiL3I4QXBIV0NSUW8vc3cwcmFVcUxMYlJLRHdXTWpNY2UxdWJISnFCbHErQlZEMm9OZEJmd3hRc1pTbk1GZ3d0WHBrNXBFa0R2Q2tnWGNRVEhRNjRCaVc5aXc3NjY3MDNwUEdtWXVGdWU0Zm9QTXF6dmFxZHIxU1dBa2RYaVlvRFp6NE5xb1NYWkdSN2tER01IcWRkQ1YwOUxpLzJMZ2RGczNlZHhQYTY2Y25aNjVWMFJYUEhraXUyWitMdnp0VkY5ZWgyZ2lZZThkWkdiUmRDOWZpOHFOaUNWenBQdW1MdFlNdGF0eWZLZ011Qy9DREFXQWRBaXhhM1JPUTVlRHpDM1JzY3RiOXdlTjBGM09YQWhqQTJFRnNlMHZFM2FUcTZ1bTNDdVVSdE4vemVLL1didGZPU3IwTVZDOTJvKzlPcUw3ZnA2SDM1L1c0RC9VN1pPL0xvT3NNMENaTmhxNkRsQ1MwZXd6Y1YxT2REeC81dURxN0d2OHFETGc0N1Yvd0p0MjFPMG5iK3gxd0xxSVVYVnlUeWc3QUs2ZHNRR1Y3cUdOWjB2SGVtOVRQcXNXYy9DM1E5UUZhTFFzeFpWQ1BnNHdWcGZIUGZWZGtFdmxVRm9BMTkxMWlHSTQ1K0JyVmJHd1ZZSnRQVzFzRnRkK0Y2MEJTRkE3ZFpDMW5hWDBIVWQ3aGZTYVJzdGh4ZUlVZlg2K2NXZjI3UEdmeG9kUDhKV3U3MlkxYnR6aVd2dE9XTkxmZnc2NC8vRmRIdy9acjhUaTkveG11KzA3Y2V2aVlYMEhmZGpmcjhWKzYzdDlQRy9NUDZ5TVNyeFZ6TmxYL2JXMU9wb1JiOVVMYmwxMTE3YnlYSGlDWVpmWnAzcE81N3JvTHZ6MTg2MUtuTVQxNFIxNWdiWG1jN3VwYS96M2M3T2RhSnZhOFc5d2JYdGZGQjFuU3F1dWdrTG1nTmRRVUNMcFRRdFZXN2dMRyt1dDFxd2FMQnVSc1BhcVlqZFY1cGZoU1hVR2FGNzBaSUhIUUJsOGJ3YUFyUlZXOHRMQkRRdE5NTWpvOVpTRzFwc1o3bHhkYU5tNzROUnNPaWFzZWFYdlRXM3hUa3pMVjZ2elFYN0FTbG5zMmZrQzZ0RXo2ck14dStSQjBkVU5FZGFldE5IbW55NmF5UkltMGNUemF0QitsVFppQmI3a3VNc2VNK3BTRk94bEZzUkFUUjFRTjJQengzS2RZNjdWY0V6bThhcHpPWnNLUTRpS2RlTzBwc2JpVzc0eDMrNGdGVmVocVRSNTRDUFlEalc4YmlaOEpaMHlZZ0lvQ2tDS1dkbzU0aU1JYjQxb2hicGEwQjZVWXFIaUFDYU9xQnlYbDVhMC9pYW5Cd1EvaTFBbGVCN0VRRTBkVUI5bXpHOUkrTWVLOUozaXZQeFNMVlhSQUJOR1VnNTN2UkJaVVBOckxEdjlLQ3NjQzBpZ0tZV3FFT1ZuWXZIOXAxU3pucFFaUTRlRVFFMGhVQmxueWtqa2ZLOGY4b1pBZzREVkJsb0xDS0FwZ2lrakxwNlNDVkNCcmthbS9vZTZVZUFLbE5RaWdpZ0tRSXFBN0RaZnpyRXEyaEZqOUNxQWxRSndoY1JRRk1FMUJMdm41WjRGY2Nqc3NYM3BMVDRpZ2lncVFNcUc1TFlMVFBRcXk1NVVFOExxQ0lDYU9xQVN0K1U4K3dNOEtwNlgvVTlKYUNLQ0tDcEErcG83NThXdFZsVWZkaUJPbDh5VzBRQVRSRlE2WjhPZGFEcWVOV1hyYjdWQUZVYWswUUUwTlFCVlE4SlZYMjVZdmdQeXFqanBuUytEQllYRVVCVEE5UUZJNzFGZFkxSmhxdUhxeCtaQUtwTTBpd2lnS1lJcUlSMEJBQ056K1JBSzNxQ3kvbVowbmtOa2tNaUFtZ3FaUHpXQlFSMGxFb0U1TnNaenhpTXozVTNhd0NyWkpLSUFKb0NvREl5NlY2L2JrbGNMbmxRVHdKVThWTUZVSkhrZzdxUXNiN3NvcUZsalhmUlJIMzE5eWRUT3ZleTVKSUFLcElhc0RMZ1liaUhWZmx1bXZOSXg3ajZseW1iSzkwMEFxaElDb0JhcU5xVzdYTmliSEErcDJNNUFWREZxZ3FnSXNrSGRaRmZ4Vm9OQnFBRFEyZHFQYXpWcG15T2ROVUlvQ0pKZjJCYkZ0RS92Y2Y1cWJyQXE5bVFkTnI3cStkTTJXeDVxQUtvU1BKaFhVdy9sZjJxZzBKYUxtMVFEVXQ3MHBUUGxxbERCVkNSRkFBMTExdFZWSC8xQU8rclVoajRjQkk2d0RwTC9GVUJWQ1Q1c0M3aFVvdkR1SDZtY3NzdXFsQ3cvaWttd0NycnBBcWdJa2wvdUp1WERGUnVPWG5DV2hBNjAyQmhOWW9ydnRXWmlXOUtaZ21nSXNtRmRTbGg5ZU5VN2NLMjhXb3cxNkxrZEtKbkZFTU1KODZVeUNVQlZDUzVzQzRyc3JBYU93U3VNTFNJTGdNZ3p1SDRETTZkTlJVenJraHVDYUFpeVN3QW01YWg2cXZaQ2x5c3dwRkxiWTFNTlRobUVQOTVVL0dHOUxVS29DTEpnM1U1NDRFQnF5N3gxalUzQWF4RDlxSUg5anlPYWszbDYxSWRGa0JGa2xZNHFsYjBkVmJWZHQyRSsxcUphOHdCcXhramZJSEpWTDRtRTNnTG9DTEpnZlVkcnNaTzMzV0FiUlZPaEJ3bS9GY1VwS0FlMk5aNlM0dXR2bXdtdlNLWko0Q0s5SGpCMmZndWdlM25yU3ZCTFFHZ3JwbXA3YXFvQTlWYTJqb2dYR2Ntdjl3b3VTZUFpdlE0c08vQmxBWjlBV2gvSFBiMzhCWjBxQlpUb2haV1oyWHJzVjhQZllPWk1sMkcwQW1nSWoxYXVEYXNqSVJnN1FjUTZkUG1ocXJGWVgvMkNtR0ZEV1pJNHFWQTZVc0VOenAxYWt3QUZSSHBxUUszL29Nc2ZIS2NLMU5mR3pSaFZKODRySUcvTG5EZ21zQUZValJrdUxWdkdqS01qWUpxZ0w2eGJ0cmtxQUFxSXRMZGhYRGRhbktaajcwK2dRdEp4RmIzSWJpQkJ6ZkRYd3RBUGNCVzN4SzRlWWFiQXFPNWJmUkFOMnUzNmx3ejlNMm5YNnE0SzYzdytCWGJBd0ZVSkdVbHNuYXRCbkE1QUM0L3d3S3M4Z0VvdDNtQnF5cEhFaGEzUGJpSlNqVDFnWnZiQ2RCcXprVWNoWTdIVVczWGVOVlJmNzVGRzgxdUl1T09OZThZWmZVYjMydnRjTytXUTYrKzJBNmNoOS9meHAvTTFDWitsZjNNME81ckVmd21WUkZ0VCtsTWZHVGFZNlBwQm1UaW9peXY1M0dXTWpwYjIvTUNxTWhkS29Wck5tUTZVRlV1QU1peFd3ZHVGZ3AzTm81em9NOEtQRnR4Yk9NdzZ3N1ZhdjFMa0p2UTkwSjYzY2tMb1FPZzdWNFV2NlR2N0Q0QWxQc3hBVlNrMTh2UVZWVzBTckJJT3N0YnM0aTNaaEZ2aGVQV2pEWHB3QjNyd0ZvNW83QzErakJFc0pUV0lvWjF4bG5oZG9DMmF0ZngxSUxmdEZ0M2JQVnhxMjJ0dWJmYVVhKy9Da0NiZDg3NFkvVC9BZ3dBMk1pN0hkQWUraWtBQUFBQVNVVk9SSzVDWUlJPSkgdG9wIHJpZ2h0IG5vLXJlcGVhdCAjMWIzMTQ5O1xuICAgIC8qIGJhY2tncm91bmQtYXR0YWNoZW1lbnQgbG9jYWwgaXMgbm90IHN1cHBvcnRlZCBvbiBJRThcbiAgICAgKiB3aGVuIHRoaXMgaXMgcGFydCBvZiBiYWNrZ3JvdW5kIHRoZSBjb21wbGV0ZSBiYWNrZ3JvdW5kIGlzIGlnbm9yZWQgKi9cbiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IGxvY2FsO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgdWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLXRvcDogMjVweDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBhIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgY29sb3I6ICMzODdlYTI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM0OTYwNzY7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBoMiB7XG4gICAgbWFyZ2luOiAyMHB4IDAgNXB4O1xuICAgIGNvbG9yOiAjNWJjNGZlO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbn1cbi5teC1kZW1vdXNlcnN3aXRjaGVyIGgzIHtcbiAgICBtYXJnaW46IDAgMCAycHg7XG4gICAgY29sb3I6ICM1YmM0ZmU7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXIgLmFjdGl2ZSBoMyB7XG4gICAgY29sb3I6ICMxMWVmZGI7XG59XG4ubXgtZGVtb3VzZXJzd2l0Y2hlciBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm14LWRlbW91c2Vyc3dpdGNoZXItdG9nZ2xlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAyNSU7XG4gICAgbGVmdDogLTM1cHg7XG4gICAgd2lkdGg6IDM1cHg7XG4gICAgaGVpZ2h0OiAzOHB4O1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4O1xuICAgIGJveC1zaGFkb3c6IC0xcHggMCA1cHggcmdiYSgyOCw1OSw4NiwuMik7XG4gICAgYmFja2dyb3VuZDogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQklBQUFBU0NBWUFBQUJXem81WEFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEbzNORVJETWpGR1JEUTJORU14TVVVMFFUUTRNVUk1TlROR01VUTNRekU1TnlJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvM05FUkRNakZHUlRRMk5FTXhNVVUwUVRRNE1VSTVOVE5HTVVRM1F6RTVOeUkrSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pjMFJFTXlNVVpDTkRZMFF6RXhSVFJCTkRneFFqazFNMFl4UkRkRE1UazNJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPamMwUkVNeU1VWkRORFkwUXpFeFJUUkJORGd4UWprMU0wWXhSRGRETVRrM0lpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsxWm92TkFBQUFXZEpSRUZVZU5xTTFNMHJSRkVZeC9FN1k1cUlRcE9VYklpeW1RV3lzQmd2SlZKSzJWZ3J5WlF0S1NVTFplbFBzQjBMWmFOWmpKVU5LMUZza0pxVXZDUzNOQXNaYzN6UDlOemlPT2ZlZWVwVGM4L2M4K3ZjOHhaVFNubU9ha0VHS2R6Z0RCWFh5NTRPTXNTd2pwTDZXOWNZc3J4ZlpXdmNVdTd5MFZkTFVDYytWWGdkMm9MaXhwZk9JT21GMTdUdEhUT296WXV1cEN4QWFOQjlEVUVmZURVYkU4YnpFWHhaZXJQMDBsOGhoM0xVaUhUSU1yNk45ajJrc1lvaWh2LzFkZXlMU1Z6S0ttMWpFVytXZlpWMkxmOGdza2pJY3djV3BPTSsrcEhDRlBMb3NnV3RvQ3lkN2pDUE9qemhHSEhMeURQWTFhY2hhSmhEeFJqNnJCd0pYVXVvTjBJRzhJSXY3T2lHQmp4YWR2QUlUdVQzcmV4NmMwU2JLQVNmbG5VY0JUM0pUVGhBanlXa0dVVnNCRUVGUjVDZXJ6WHBOSWFjckZJckpuQ0JCM211QnZraEIxVFAyN2hNL0x2eDN6bDZneEhxdTZjNzRraVU4SXhHaktKZExyclQzeGZkandBREFKYU14UDJidkQyQkFBQUFBRWxGVGtTdVFtQ0MpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0ICMxYjMxNDk7XG59XG4iLCIvKiBtYXN0ZXIgZGV0YWlscyBzY3JlZW4gZm9yIG1vYmlsZSAqL1xuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuIHtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbiAubXgtbWFzdGVyLWRldGFpbC1kZXRhaWxzIHtcbiAgICBwYWRkaW5nOiAxNXB4O1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNztcbn1cblxuLm14LW1hc3Rlci1kZXRhaWwtc2NyZWVuLWhlYWRlci1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxN3B4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLXNjcmVlbi1oZWFkZXItY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjMDA3YWZmO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlIHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xufVxuXG4ubXgtbWFzdGVyLWRldGFpbC1zY3JlZW4taGVhZGVyLWNsb3NlOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXFwyMDM5XCI7XG4gICAgZm9udC1zaXplOiA1MnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xufVxuXG4vKiBjbGFzc2VzIGZvciBjb250ZW50IHBhZ2UgKi9cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtZml4IHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5teC1tYXN0ZXItZGV0YWlsLWNvbnRlbnQtaGlkZGVuIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwMCUpO1xufVxuXG5ib2R5W2Rpcj1cInJ0bFwiXSAubXgtbWFzdGVyLWRldGFpbC1jb250ZW50LWhpZGRlbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwMCUpO1xufSIsIi5yZXBvcnRpbmdSZXBvcnQge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIC1tb3otYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbiIsIi5yZXBvcnRpbmdSZXBvcnRQYXJhbWV0ZXIgdGgge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuIiwiLnJlcG9ydGluZ0RhdGVSYW5nZSB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbn1cbi5yZXBvcnRpbmdEYXRlUmFuZ2UgdGgge1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnJlcG9ydGluZ0RhdGVSYW5nZSB0ZCB7XG4gICAgcGFkZGluZzogNXB4O1xufVxuIiwiLm14LXJlcG9ydG1hdHJpeCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0aCwgLm14LXJlcG9ydG1hdHJpeCB0ZCB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQyODU3MTQzO1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbn1cblxuLm14LXJlcG9ydG1hdHJpeCB0Ym9keSB0cjpudGgtY2hpbGQoMm4rMSkgdGQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG59XG5cbi5teC1yZXBvcnRtYXRyaXggdGJvZHkgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDE2cHg7XG4gICAgbWF4LWhlaWdodDogMTZweDtcbn1cbiIsIi8qIFdBUk5JTkc6IElFOSBsaW1pdHMgbmVzdGVkIGltcG9ydHMgdG8gdGhyZWUgbGV2ZWxzIGRlZXA6IGh0dHA6Ly9qb3JnZWFsYmFsYWRlam8uY29tLzIwMTEvMDUvMjgvaW50ZXJuZXQtZXhwbG9yZXItbGltaXRzLW5lc3RlZC1pbXBvcnQtY3NzLXN0YXRlbWVudHMgKi9cblxuLyogZGlqaXQgYmFzZSAqL1xuXG4vKiBtZW5kaXggYmFzZSAqL1xuXG4vKiB3aWRnZXRzICovXG5cbi8qIHJlcG9ydGluZyAqL1xuIl0sInNvdXJjZVJvb3QiOiIifQ==*/\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@mixin animations() {\n @keyframes slideInUp {\n from {\n visibility: visible;\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n }\n\n .animated {\n animation-duration: 0.4s;\n animation-fill-mode: both;\n }\n\n .slideInUp {\n animation-name: slideInUp;\n }\n\n @keyframes slideInDown {\n from {\n visibility: visible;\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n }\n\n .slideInDown {\n animation-name: slideInDown;\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n }\n\n .fadeIn {\n animation-name: fadeIn;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Flex\n\n Flex classes\n========================================================================== */\n@mixin flex() {\n $important-flex-value: if($important-flex, \" !important\", \"\");\n\n // Flex layout\n .flexcontainer {\n display: flex;\n overflow: hidden;\n flex: 1;\n flex-direction: row;\n\n .flexitem {\n margin-right: $gutter-size;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n .flexitem-main {\n overflow: hidden;\n flex: 1;\n }\n }\n\n // These classes define the order of the children\n .flex-row {\n flex-direction: row #{$important-flex-value};\n }\n\n .flex-column {\n flex-direction: column #{$important-flex-value};\n }\n\n .flex-row-reverse {\n flex-direction: row-reverse #{$important-flex-value};\n }\n\n .flex-column-reverse {\n flex-direction: column-reverse #{$important-flex-value};\n }\n\n .flex-wrap {\n flex-wrap: wrap #{$important-flex-value};\n }\n\n .flex-nowrap {\n flex-wrap: nowrap #{$important-flex-value};\n }\n\n .flex-wrap-reverse {\n flex-wrap: wrap-reverse #{$important-flex-value};\n }\n\n // Align children in both directions\n .flex-center {\n align-items: center #{$important-flex-value};\n justify-content: center #{$important-flex-value};\n }\n\n // These classes define the alignment of the children\n .justify-content-start {\n justify-content: flex-start #{$important-flex-value};\n }\n\n .justify-content-end {\n justify-content: flex-end #{$important-flex-value};\n }\n\n .justify-content-center {\n justify-content: center #{$important-flex-value};\n }\n\n .justify-content-between {\n justify-content: space-between #{$important-flex-value};\n }\n\n .justify-content-around {\n justify-content: space-around #{$important-flex-value};\n }\n\n .justify-content-evenly {\n // Not Supported in IE11\n justify-content: space-evenly #{$important-flex-value};\n }\n\n .justify-content-stretch {\n justify-content: stretch #{$important-flex-value};\n }\n\n /// These classes define the alignment of the children in the cross-direction\n .align-children-start {\n align-items: flex-start #{$important-flex-value};\n }\n\n .align-children-end {\n align-items: flex-end #{$important-flex-value};\n }\n\n .align-children-center {\n align-items: center #{$important-flex-value};\n }\n\n .align-children-baseline {\n align-items: baseline #{$important-flex-value};\n }\n\n .align-children-stretch {\n align-items: stretch #{$important-flex-value};\n }\n\n /// These classes define the alignment of the rows of children in the cross-direction\n .align-content-start {\n align-content: flex-start #{$important-flex-value};\n }\n\n .align-content-end {\n align-content: flex-end #{$important-flex-value};\n }\n\n .align-content-center {\n align-content: center #{$important-flex-value};\n }\n\n .align-content-between {\n align-content: space-between #{$important-flex-value};\n }\n\n .align-content-around {\n align-content: space-around #{$important-flex-value};\n }\n\n .align-content-stretch {\n align-content: stretch #{$important-flex-value};\n }\n\n /// These classes allow the default alignment to be overridden for individual items\n .align-self-auto {\n align-self: auto #{$important-flex-value};\n }\n\n .align-self-start {\n align-self: flex-start #{$important-flex-value};\n }\n\n .align-self-end {\n align-self: flex-end #{$important-flex-value};\n }\n\n .align-self-center {\n align-self: center #{$important-flex-value};\n }\n\n .align-self-baseline {\n align-self: baseline #{$important-flex-value};\n }\n\n .align-self-stretch {\n align-self: stretch #{$important-flex-value};\n }\n\n @include flex-items($number: 12);\n}\n\n/// These classes define the percentage of available free space within a flex container a flex item will take.\n@mixin flex-items($number) {\n @if not $exclude-flex {\n @for $i from 1 through $number {\n .flexitem-#{$i} {\n flex: #{$i} #{$i} 1%;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Spacing\n\n Spacing classes\n========================================================================== */\n@mixin spacing() {\n $important-spacing-value: if($important-spacing, \" !important\", \"\");\n\n // Spacing none\n .spacing-inner-none {\n padding: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-top-none {\n padding-top: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-right-none {\n padding-right: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-bottom-none {\n padding-bottom: 0 #{$important-spacing-value};\n }\n\n .spacing-inner-left-none {\n padding-left: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-none {\n margin: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-top-none {\n margin-top: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-right-none {\n margin-right: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-bottom-none {\n margin-bottom: 0 #{$important-spacing-value};\n }\n\n .spacing-outer-left-none {\n margin-left: 0 #{$important-spacing-value};\n }\n\n // Spacing small\n .spacing-inner {\n padding: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-top {\n padding-top: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-right {\n padding-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-bottom {\n padding-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-left {\n padding-left: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-vertical {\n padding-top: $spacing-small #{$important-spacing-value};\n padding-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-inner-horizontal {\n padding-left: $spacing-small #{$important-spacing-value};\n padding-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer {\n margin: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-top {\n margin-top: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-right {\n margin-right: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-bottom {\n margin-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-left {\n margin-left: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-vertical {\n margin-top: $spacing-small #{$important-spacing-value};\n margin-bottom: $spacing-small #{$important-spacing-value};\n }\n\n .spacing-outer-horizontal {\n margin-left: $spacing-small #{$important-spacing-value};\n margin-right: $spacing-small #{$important-spacing-value};\n }\n\n // Spacing Medium\n .spacing-inner-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-horizontal-medium {\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-horizontal-medium {\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-medium(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n // Spacing Large\n .spacing-inner-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-horizontal-large {\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: padding,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: all,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: top,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: bottom,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-horizontal-large {\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: left,\n $is_important: #{$important-spacing-value}\n );\n @include get-responsive-spacing-large(\n $type: margin,\n $direction: right,\n $is_important: #{$important-spacing-value}\n );\n }\n\n // Spacing layouts\n .spacing-inner-layout {\n @include layout-spacing(\n $type: padding,\n $direction: all,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-top-layout {\n @include layout-spacing(\n $type: padding,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-right-layout {\n @include layout-spacing(\n $type: padding,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-bottom-layout {\n @include layout-spacing(\n $type: padding,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-left-layout {\n @include layout-spacing(\n $type: padding,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-inner-vertical-layout {\n @include layout-spacing(\n $type: padding,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: padding,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n .spacing-inner-horizontal-layout {\n @include layout-spacing(\n $type: padding,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: padding,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-layout {\n @include layout-spacing(\n $type: margin,\n $direction: all,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-top-layout {\n @include layout-spacing(\n $type: margin,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-right-layout {\n @include layout-spacing(\n $type: margin,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-bottom-layout {\n @include layout-spacing(\n $type: margin,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-left-layout {\n @include layout-spacing(\n $type: margin,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n\n .spacing-outer-vertical-layout {\n @include layout-spacing(\n $type: margin,\n $direction: top,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: margin,\n $direction: bottom,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n .spacing-outer-horizontal-layout {\n @include layout-spacing(\n $type: margin,\n $direction: left,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n @include layout-spacing(\n $type: margin,\n $direction: right,\n $device: responsive,\n $is_important: #{$important-spacing-value}\n );\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin get-responsive-spacing-large($type: padding, $direction: all, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n $dash: \"-\"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-large}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-large}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-large}#{$suffix};\n }\n }\n }\n}\n\n@mixin get-responsive-spacing-medium($type: padding, $direction: all, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n $dash: \"-\"; // Otherwise it will be interpreted as a minus symbol. Needed for the Gonzales PE version: 3.4.7 compiler (used by the Webmodeler)\n\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$spacing-medium}#{$suffix};\n }\n } @else {\n @media (max-width: $screen-sm-max) {\n #{$type}#{$dash}#{$direction}: #{$m-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}#{$dash}#{$direction}: #{$t-spacing-medium}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}#{$dash}#{$direction}: #{$spacing-medium}#{$suffix};\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-spacing($type: padding, $direction: all, $device: responsive, $is_important: false) {\n @if not $exclude-spacing {\n $suffix: \"\";\n @if $is_important != false {\n $suffix: \" !important\";\n }\n @if $device==responsive {\n @if $direction==all {\n @media (max-width: $screen-sm-max) {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}: #{$layout-spacing}#{$suffix};\n }\n } @else if $direction==top {\n @media (max-width: $screen-sm-max) {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-top: #{$layout-spacing-top}#{$suffix};\n }\n } @else if $direction==right {\n @media (max-width: $screen-sm-max) {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-right: #{$layout-spacing-right}#{$suffix};\n }\n } @else if $direction==bottom {\n @media (max-width: $screen-sm-max) {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-bottom: #{$layout-spacing-bottom}#{$suffix};\n }\n } @else if $direction==left {\n @media (max-width: $screen-sm-max) {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-md) {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n @media (min-width: $screen-lg) {\n #{$type}-left: #{$layout-spacing-left}#{$suffix};\n }\n }\n } @else if $device==tablet {\n @if $direction==all {\n #{$type}: #{$t-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$t-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$t-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$t-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$t-layout-spacing-left}#{$suffix};\n }\n } @else if $device==mobile {\n @if $direction==all {\n #{$type}: #{$m-layout-spacing}#{$suffix};\n } @else if $direction==top {\n #{$type}-top: #{$m-layout-spacing-top}#{$suffix};\n } @else if $direction==right {\n #{$type}-right: #{$m-layout-spacing-right}#{$suffix};\n } @else if $direction==bottom {\n #{$type}-bottom: #{$m-layout-spacing-bottom}#{$suffix};\n } @else if $direction==left {\n #{$type}-left: #{$m-layout-spacing-left}#{$suffix};\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n/* ==========================================================================\n Base\n\n Default settings\n========================================================================== */\n@mixin base() {\n html {\n height: 100%;\n }\n\n body {\n min-height: 100%;\n color: $font-color-default;\n background-color: $bg-color;\n font-family: $font-family-base;\n font-size: $font-size-default;\n font-weight: $font-weight-normal;\n line-height: $line-height-base;\n }\n\n a {\n transition: 0.25s;\n color: $link-color;\n -webkit-backface-visibility: hidden;\n }\n\n a:hover {\n text-decoration: underline;\n color: $link-hover-color;\n }\n\n // Address `outline` inconsistency between Chrome and other browsers.\n a:focus {\n outline: thin dotted;\n }\n\n // Improve readability when focused and also mouse hovered in all browsers\n a:active,\n a:hover {\n outline: 0;\n }\n\n // Removes large blue border in chrome on focus and active states\n input:focus,\n button:focus,\n .mx-link:focus {\n outline: 0;\n }\n\n // Removes large blue border for tabindexes from widgets\n div[tabindex] {\n outline: 0;\n }\n\n // Disabled State\n .disabled,\n [disabled] {\n cursor: not-allowed;\n opacity: 0.65;\n box-shadow: none;\n }\n\n .mx-underlay {\n position: fixed;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 1000;\n opacity: 0.5;\n background-color: #0a1325;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin login() {\n body {\n height: 100%;\n }\n\n .loginpage {\n display: flex;\n height: 100%;\n }\n .loginpage-logo {\n position: absolute;\n top: 30px;\n right: 30px;\n\n & > svg {\n width: 120px;\n }\n }\n\n .loginpage-left {\n display: none;\n }\n\n .loginpage-right {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-around;\n }\n .loginpage-formwrapper {\n width: 400px;\n margin: 0 auto;\n }\n\n .loginpage-fullscreenDiv {\n background-color: #e8e8e8;\n width: 100%;\n height: auto;\n bottom: 0;\n top: 0;\n left: 0;\n position: absolute;\n }\n\n .loginpage-center {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n // Form\n .loginpage-form {\n .alert {\n display: none;\n }\n\n .btn {\n border-radius: $border-radius-default;\n }\n\n // Form label + input\n .form-group {\n width: 100%;\n align-items: center;\n @media only screen and (max-width: $screen-sm-max) {\n align-items: flex-start;\n }\n\n .control-label {\n flex: 4;\n margin-bottom: 0;\n font-size: $font-size-default;\n font-weight: 500;\n @media only screen and (max-width: $screen-sm-max) {\n flex: 1;\n margin-bottom: $spacing-small;\n }\n }\n\n .inputwrapper {\n flex: 8;\n position: relative;\n width: 100%;\n @media only screen and (max-width: $screen-sm-max) {\n flex: 1;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n &:before {\n transition: color 0.4s;\n }\n\n position: absolute;\n top: 50%;\n left: $form-input-padding-x;\n transform: translateY(-50%);\n\n &-eye-open:hover,\n &-eye-close:hover {\n cursor: pointer;\n color: $brand-primary;\n }\n }\n\n .form-control {\n padding: $form-input-padding-y $form-input-padding-x $form-input-padding-y 45px;\n width: 100%;\n }\n\n .form-control:focus ~ .glyphicon:before {\n color: $brand-primary;\n }\n }\n }\n }\n\n // Divider - only on login-with-mendixsso-button.html\n .loginpage-alternativelabel {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n margin: 25px 0px;\n\n hr {\n flex: 1;\n margin: 20px 0 20px 10px;\n border: 0;\n border-color: #d8d8d8;\n border-top: 1px solid #eeeeee;\n }\n }\n\n .loginpage-signin {\n color: #555555;\n }\n\n .loginpage-form .btn {\n img {\n vertical-align: middle;\n top: -1px;\n position: relative;\n }\n }\n\n // Show only on wide screens\n @media screen and (min-width: $screen-xl) {\n .loginpage-left {\n position: relative;\n display: block;\n flex: 1;\n width: 100%;\n height: 100%;\n }\n // Image and clipping mask\n .loginpage-image {\n height: 100%;\n animation: makePointer 1s ease-out both;\n background: left / cover no-repeat\n linear-gradient(to right, rgba($brand-primary, 0.9) 0%, rgba($brand-primary, 0.6) 100%),\n left / cover no-repeat url(\"./resources/work-do-more.jpeg\");\n -webkit-clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 100% 0, 100% 50%, 100% 100%, 0% 100%);\n }\n\n .loginpage-logo {\n & > svg {\n width: 150px;\n }\n }\n\n .loginpage-formwrapper {\n width: 400px;\n }\n }\n\n // Animate image clipping mask\n @keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n }\n @-webkit-keyframes makePointer {\n 100% {\n -webkit-clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n clip-path: polygon(0% 0%, 80% 0%, 100% 50%, 80% 100%, 0% 100%);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin input() {\n /* ==========================================================================\n Input\n\n The form-control class style all inputs\n ========================================================================== */\n .form-control {\n display: flex;\n flex: 1;\n min-width: 50px;\n height: $form-input-height;\n padding: $form-input-padding-y $form-input-padding-x;\n transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n color: $form-input-color;\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: $form-input-bg;\n background-image: none;\n box-shadow: none;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n @if $form-input-style==lined {\n @extend .form-control-lined;\n }\n\n &::placeholder {\n color: $form-input-placeholder-color;\n }\n }\n\n .form-control:not([readonly]) {\n &:focus,\n &:focus-within {\n border-color: $form-input-border-focus-color;\n outline: 0;\n background-color: $form-input-bg-focus;\n box-shadow: none;\n }\n }\n\n .form-control[disabled],\n .form-control[readonly],\n fieldset[disabled] .form-control {\n opacity: 1;\n background-color: $form-input-bg-disabled;\n }\n\n .form-control[disabled],\n fieldset[disabled] .form-control {\n cursor: not-allowed;\n }\n\n // Lined\n .form-control-lined {\n border: 0;\n border-bottom: 1px solid $form-input-border-color;\n border-radius: 0;\n background-color: transparent;\n\n &:focus {\n background-color: transparent;\n }\n }\n\n // Read only form control class\n .form-control-static {\n overflow: hidden;\n flex: 1;\n min-height: auto;\n padding: $form-input-static-padding-y $form-input-static-padding-x;\n //border-bottom: 1px solid $form-input-static-border-color;\n font-size: $form-input-font-size;\n line-height: $form-input-line-height;\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n }\n\n // Dropdown input widget\n select.form-control {\n $arrow: \"resources/arrow.svg\";\n padding-right: 30px;\n background-image: url($arrow);\n background-repeat: no-repeat;\n background-position: calc(100% - #{$form-input-padding-x}) center;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n }\n\n .form-control.mx-selectbox {\n align-items: center;\n flex-direction: row-reverse;\n justify-content: space-between;\n }\n\n // Not editable textarea, textarea will be rendered as a label\n .mx-textarea .control-label {\n height: auto;\n }\n\n .mx-textarea-counter {\n display: block;\n width: 100%;\n text-align: right;\n margin-top: $spacing-small;\n }\n\n textarea.form-control {\n flex-basis: auto;\n }\n\n .mx-compound-control {\n display: flex;\n flex: 1;\n flex-wrap: wrap;\n max-width: 100%;\n\n .btn {\n margin-left: $spacing-small;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n margin-top: 4px;\n }\n }\n\n .has-error .mx-validation-message {\n margin-top: $spacing-small;\n margin-bottom: 0;\n padding: $spacing-small;\n color: $alert-danger-color;\n border-color: $alert-danger-border-color;\n background-color: $alert-danger-bg;\n }\n\n // Form Group\n .form-group {\n display: flex;\n flex-direction: row;\n margin-bottom: $form-group-margin-bottom;\n\n & > div[class*=\"col-\"] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n }\n\n & > [class*=\"col-\"] {\n padding-right: $form-group-gutter;\n padding-left: $form-group-gutter;\n }\n\n // Alignment content\n div[class*=\"textBox\"] > .control-label,\n div[class*=\"textArea\"] > .control-label,\n div[class*=\"datePicker\"] > .control-label {\n @extend .form-control-static;\n }\n\n // Label\n .control-label {\n overflow: hidden;\n margin-bottom: 4px;\n text-align: left;\n text-overflow: ellipsis;\n color: $form-label-color;\n font-size: $form-label-size;\n font-weight: $form-label-weight;\n }\n\n .mx-validation-message {\n flex-basis: 100%;\n }\n\n &.no-columns:not(.label-after) {\n flex-direction: column;\n }\n }\n\n .form-group.label-after {\n .form-control-static {\n flex: unset;\n }\n\n .control-label {\n margin-bottom: 0;\n }\n }\n\n .mx-dateinput,\n .mx-referenceselector,\n .mx-referencesetselector {\n flex: 1;\n }\n\n // Targets only webkit iOS devices\n .dj_webkit.dj_ios .form-control {\n transform: translateZ(0);\n }\n\n @media only screen and (min-width: $screen-md) {\n .form-horizontal {\n .control-label {\n margin-bottom: 0;\n padding-top: $form-input-padding-y;\n padding-bottom: $form-input-padding-y;\n line-height: $form-input-line-height;\n }\n }\n }\n\n @media only screen and (max-width: $screen-sm-max) {\n .form-group {\n flex-direction: column;\n }\n }\n\n @media only screen and (max-device-width: 1024px) and (-webkit-min-device-pixel-ratio: 0) {\n // Fixes alignment bug on iPads / iPhones where datefield is not aligned vertically\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: 1;\n }\n // Fix shrinking of date inputs because inability of setting a placeholder\n input[type=\"time\"]:not(.has-value):before,\n input[type=\"date\"]:not(.has-value):before,\n input[type=\"month\"]:not(.has-value):before,\n input[type=\"datetime-local\"]:not(.has-value):before {\n margin-right: 0.5em;\n content: attr(placeholder) !important;\n color: #aaaaaa;\n }\n input[type=\"time\"].has-value:before,\n input[type=\"date\"].has-value:before,\n input[type=\"month\"].has-value:before,\n input[type=\"datetime-local\"].has-value:before {\n content: \"\" !important;\n }\n }\n\n @media (-ms-high-contrast: none), (-ms-high-contrast: active) {\n // Target IE10+\n .form-group {\n display: block;\n }\n }\n\n [dir=\"rtl\"] {\n // Dropdown input widget\n select.form-control {\n padding-right: 30px;\n padding-left: 0;\n background-position: #{$form-input-padding-x} center;\n }\n\n .mx-compound-control .btn {\n margin-right: $spacing-small;\n margin-left: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin background-helpers() {\n /* ==========================================================================\n Background\n\n Different background components, all managed by variables\n ========================================================================== */\n\n .background-main {\n background-color: $bg-color !important;\n }\n\n //Brand variations\n\n .background-primary {\n background-color: $brand-primary !important;\n }\n\n .background-primary-darker {\n background-color: $color-primary-darker !important;\n }\n\n .background-primary.background-dark,\n .background-primary-dark {\n background-color: $color-primary-dark !important;\n }\n\n .background-primary.background-light,\n .background-primary-light {\n background-color: $color-primary-light !important;\n }\n\n .background-primary-lighter {\n background-color: $color-primary-lighter !important;\n }\n\n .background-secondary {\n background-color: $bg-color-secondary !important;\n }\n\n .background-secondary.background-light {\n background-color: $bg-color-secondary !important;\n }\n\n .background-secondary.background-dark {\n background-color: $bg-color-secondary !important;\n }\n\n .background-brand-gradient {\n background-image: $brand-gradient !important;\n }\n\n //Semantic variations\n\n .background-success {\n background-color: $brand-success !important;\n }\n\n .background-success-darker {\n background-color: $color-success-darker !important;\n }\n\n .background-success.background-dark,\n .background-success-dark {\n background-color: $color-success-dark !important;\n }\n\n .background-success.background-light,\n .background-success-light {\n background-color: $color-success-light !important;\n }\n\n .background-success-lighter {\n background-color: $color-success-lighter !important;\n }\n\n .background-warning {\n background-color: $brand-warning !important;\n }\n\n .background-warning-darker {\n background-color: $color-warning-darker !important;\n }\n\n .background-warning.background-dark,\n .background-warning-dark {\n background-color: $color-warning-dark !important;\n }\n\n .background-warning.background-light,\n .background-warning-light {\n background-color: $color-warning-light !important;\n }\n\n .background-warning-lighter {\n background-color: $color-warning-lighter !important;\n }\n\n .background-danger {\n background-color: $brand-danger !important;\n }\n\n .background-danger-darker {\n background-color: $color-danger-darker !important;\n }\n\n .background-danger.background-dark,\n .background-danger-dark {\n background-color: $color-danger-dark !important;\n }\n\n .background-danger.background-light,\n .background-danger-light {\n background-color: $color-danger-light !important;\n }\n\n .background-danger-lighter {\n background-color: $color-danger-lighter !important;\n }\n\n //Bootstrap variations\n\n .background-default {\n background-color: $brand-default !important;\n }\n\n .background-default-darker {\n background-color: $color-default-darker !important;\n }\n\n .background-default-dark {\n background-color: $color-default-dark !important;\n }\n\n .background-default-light {\n background-color: $color-default-light !important;\n }\n\n .background-default-lighter {\n background-color: $color-default-lighter !important;\n }\n\n .background-inverse {\n background-color: $brand-inverse !important;\n }\n\n .background-inverse-darker {\n background-color: $color-inverse-darker !important;\n }\n\n .background-inverse-dark {\n background-color: $color-inverse-dark !important;\n }\n\n .background-inverse-light {\n background-color: $color-inverse-light !important;\n }\n\n .background-inverse-lighter {\n background-color: $color-inverse-lighter !important;\n }\n\n .background-info {\n background-color: $brand-info !important;\n }\n\n .background-info-darker {\n background-color: $color-info-darker !important;\n }\n\n .background-info-dark {\n background-color: $color-info-dark !important;\n }\n\n .background-info-light {\n background-color: $color-info-light !important;\n }\n\n .background-info-lighter {\n background-color: $color-info-lighter !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin label() {\n /* ==========================================================================\n Label\n\n Default label combined with Bootstrap label\n ========================================================================== */\n\n .label {\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n border-radius: 0.25em;\n font-size: 100%;\n line-height: 1;\n\n .form-control-static {\n font-weight: $font-weight-normal;\n all: unset;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge() {\n /* ==========================================================================\n Badge\n\n Override of default Bootstrap badge style\n ========================================================================== */\n\n .badge {\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n color: #ffffff;\n font-size: 100%;\n line-height: 1;\n\n .form-control-static {\n font-weight: $font-weight-normal;\n all: unset;\n }\n }\n\n /* ==========================================================================\n Badge-web\n\n Widget styles\n ========================================================================== */\n\n .widget-badge {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n }\n\n .widget-badge-clickable {\n cursor: pointer;\n }\n\n .widget-badge.badge:empty {\n display: initial;\n /* Fix padding to stay round */\n padding: $spacing-smaller calc(#{$spacing-small} + 2px);\n }\n\n .widget-badge.label:empty {\n display: initial;\n /* Fix padding to stay square */\n padding: $spacing-smaller calc(#{$spacing-small} + 2px);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin label-helpers() {\n /* ==========================================================================\n Label\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component including\n badge widget\n ========================================================================== */\n // Color variations\n .label-secondary,\n .label-default {\n color: $label-default-color;\n background-color: $label-default-bg;\n }\n\n .label-primary {\n color: $label-primary-color;\n background-color: $label-primary-bg;\n }\n\n .label-success {\n color: $label-success-color;\n background-color: $label-success-bg;\n }\n\n .label-inverse {\n color: $label-inverse-color;\n background-color: $label-inverse-bg;\n }\n\n .label-info {\n color: $label-info-color;\n background-color: $label-info-bg;\n }\n\n .label-warning {\n color: $label-warning-color;\n background-color: $label-warning-bg;\n }\n\n .label-danger {\n color: $label-danger-color;\n background-color: $label-danger-bg;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge-button() {\n /* ==========================================================================\n Badge button\n\n Widget styles\n ========================================================================== */\n .widget-badge-button {\n display: inline-block;\n\n .widget-badge-button-text {\n white-space: nowrap;\n padding-right: 5px;\n }\n\n .badge {\n top: unset;\n display: inline-block;\n margin: 0;\n padding: $spacing-smaller $spacing-small;\n text-align: center;\n vertical-align: baseline;\n white-space: nowrap;\n background-color: $btn-primary-color;\n color: $btn-primary-bg;\n font-size: 100%;\n line-height: 1;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin badge-button-helpers() {\n /* ==========================================================================\n Badge button\n\n Different background components, all managed by variables\n ========================================================================== */\n\n //Badge button color variation\n .btn-secondary,\n .btn-default {\n .badge {\n color: $btn-default-bg;\n background-color: $btn-primary-bg;\n }\n }\n\n .btn-success {\n .badge {\n color: $btn-success-bg;\n }\n }\n\n .btn-warning {\n .badge {\n color: $btn-warning-bg;\n }\n }\n\n .btn-danger {\n .badge {\n color: $btn-danger-bg;\n }\n }\n\n //Badge button bordered variation\n\n .btn-bordered.btn-primary {\n .badge {\n background: $btn-primary-bg;\n color: $btn-primary-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-primary-color;\n color: $btn-primary-bg;\n }\n }\n }\n\n .btn-bordered.btn-success {\n .badge {\n background: $btn-success-bg;\n color: $btn-success-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-success-color;\n color: $btn-success-bg;\n }\n }\n }\n\n .btn-bordered.btn-warning {\n .badge {\n background: $btn-warning-bg;\n color: $btn-warning-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-warning-color;\n color: $btn-warning-bg;\n }\n }\n }\n\n .btn-bordered.btn-danger {\n .badge {\n background: $btn-danger-bg;\n color: $btn-danger-color;\n }\n\n &:hover,\n &:focus {\n .badge {\n background-color: $btn-danger-color;\n color: $btn-danger-bg;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button() {\n /* ==========================================================================\n Button\n\n Default Bootstrap and Mendix button\n ========================================================================== */\n\n .btn,\n .mx-button {\n display: inline-block;\n margin-bottom: 0;\n padding: 0.6em 1em;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n transition: all 0.2s ease-in-out;\n text-align: center;\n vertical-align: middle;\n white-space: nowrap;\n color: $btn-default-color;\n border: 1px solid $btn-default-border-color;\n border-radius: $btn-border-radius;\n background-color: $btn-default-bg;\n background-image: none;\n box-shadow: none;\n text-shadow: none;\n font-size: $btn-font-size;\n line-height: $line-height-base;\n\n &:hover,\n &:focus,\n &:active,\n &:active:focus {\n outline: none;\n box-shadow: none;\n }\n\n &[aria-disabled] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n }\n\n @if $btn-bordered != false {\n @extend .btn-bordered;\n }\n }\n\n // Mendix button link\n .mx-link {\n padding: 0;\n color: $link-color;\n\n &[aria-disabled=\"true\"] {\n cursor: not-allowed;\n pointer-events: none;\n opacity: 0.65;\n }\n }\n\n .link-back {\n color: $font-color-detail;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 2px;\n }\n }\n\n // Images and icons in buttons\n .btn,\n .mx-button,\n .mx-link {\n img {\n //height: auto; // MXUI override who set the height on 16px default\n height: calc(#{$font-size-default} + 4px);\n margin-right: 4px;\n vertical-align: text-top;\n }\n }\n\n //== Phone specific\n //-------------------------------------------------------------------------------------------------------------------//\n .profile-phone {\n .btn,\n .mx-link {\n &:active {\n transform: translateY(1px);\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-helpers() {\n /* ==========================================================================\n Button\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Color variations\n .btn,\n .btn-default {\n @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border-color, $btn-default-bg-hover);\n }\n\n .btn-primary {\n @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border-color, $btn-primary-bg-hover);\n }\n\n .btn-inverse {\n @include button-variant($btn-inverse-color, $btn-inverse-bg, $btn-inverse-border-color, $btn-inverse-bg-hover);\n }\n\n .btn-success {\n @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border-color, $btn-success-bg-hover);\n }\n\n .btn-info {\n @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border-color, $btn-info-bg-hover);\n }\n\n .btn-warning {\n @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border-color, $btn-warning-bg-hover);\n }\n\n .btn-danger {\n @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border-color, $btn-danger-bg-hover);\n }\n\n // Button Sizes\n .btn-lg {\n font-size: $font-size-large;\n\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n }\n\n .btn-sm {\n font-size: $font-size-small;\n\n img {\n height: calc(#{$font-size-small} + 4px);\n }\n }\n\n // Button Image\n .btn-image {\n padding: 0;\n vertical-align: middle;\n border-style: none;\n background-color: transparent;\n\n img {\n display: block; // or else the button doesn't get a width\n height: auto; // Image set height\n }\n\n &:hover,\n &:focus {\n background-color: transparent;\n }\n }\n\n // Icon buttons\n .btn-icon {\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n margin: 0;\n }\n }\n\n .btn-icon-right {\n display: inline-flex;\n flex-direction: row-reverse;\n align-items: center;\n\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n top: 0;\n margin-left: 4px;\n }\n }\n\n .btn-icon-top {\n padding-right: 0;\n padding-left: 0;\n\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n display: block;\n margin: 0 0 4px 0;\n }\n }\n\n .btn-icon-only {\n @extend .btn-icon;\n padding: 0;\n color: $btn-default-icon-color;\n border: none;\n }\n\n .btn-block {\n display: block;\n width: 100%;\n }\n\n .btn-block + .btn-block {\n margin-top: 4px;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin button-variant($color, $background, $border, $hover) {\n @if not $exclude-button {\n color: $color;\n border-color: $border;\n background-color: $background;\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $hover;\n background-color: $hover;\n }\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n &[aria-disabled],\n fieldset[disabled] {\n &,\n &:hover,\n &:focus,\n &:active,\n &.active {\n border-color: $border;\n background-color: $background;\n }\n }\n // Button bordered\n &.btn-bordered {\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $border;\n }\n\n &:hover,\n &:focus,\n &:active,\n &.active,\n .open > &.dropdown-toggle {\n color: $color;\n border-color: $border;\n background-color: $border;\n }\n }\n // Button as link\n &.btn-link {\n text-decoration: none;\n border-color: transparent;\n background-color: transparent;\n @if $color != $btn-default-color {\n color: $background;\n }\n\n &:hover {\n border-color: $btn-link-bg-hover;\n background-color: $btn-link-bg-hover;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin check-box() {\n /* ==========================================================================\n Check box\n\n Default Mendix check box widget\n ========================================================================== */\n\n .mx-checkbox.label-after {\n flex-wrap: wrap;\n\n .control-label {\n display: flex;\n align-items: center;\n padding: 0;\n }\n }\n\n input[type=\"checkbox\"] {\n position: relative !important; //Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0 !important; // Remove after mxui merge\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n transform: translateZ(0);\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease;\n }\n\n &:before {\n // Checkbox\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid $form-input-border-color;\n border-radius: $form-input-border-radius;\n background-color: transparent;\n }\n\n &:after {\n // Checkmark\n width: 8px;\n height: 4px;\n margin: 5px 4px;\n transform: rotate(-45deg);\n pointer-events: none;\n border: 2px solid #ffffff;\n border-top: 0;\n border-right: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n border-color: $form-input-bg-hover; // color of checkmark on hover\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-border-focus-color;\n }\n\n &:checked:after {\n content: \"\";\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: transparent;\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:disabled:after,\n &:checked:disabled:after {\n border-color: $form-input-bg-disabled;\n }\n\n & + .control-label {\n margin-left: $form-label-gutter;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin grid() {\n /* ==========================================================================\n Grid\n\n Default Mendix grid (used for Mendix data grid)\n ========================================================================== */\n\n .mx-grid {\n padding: 0px;\n border: 0;\n border-radius: 0;\n\n .mx-grid-controlbar {\n margin: 10px 0;\n /* Paging */\n .mx-grid-pagingbar {\n /* Buttons */\n .mx-button {\n padding: 8px;\n color: $grid-paging-color;\n border-color: $grid-paging-border-color;\n background-color: $grid-paging-bg;\n\n &:hover {\n color: $grid-paging-color-hover;\n border-color: $grid-paging-border-color-hover;\n background-color: $grid-paging-bg-hover;\n }\n }\n\n /* Text Paging .. to .. to .. */\n .mx-grid-paging-status {\n padding: 0 8px 8px;\n }\n }\n }\n\n .mx-grid-searchbar {\n margin: 10px 0;\n\n .mx-grid-search-item {\n .mx-grid-search-label {\n vertical-align: middle;\n\n label {\n padding-top: 5px;\n }\n }\n\n .mx-grid-search-input {\n display: inline-flex;\n\n .form-control {\n height: 28px;\n font-size: 11px;\n }\n\n select.form-control {\n padding: 3px;\n vertical-align: middle;\n }\n\n .mx-button {\n height: 28px;\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n }\n\n // Remove default border from grid inside a Mendix Dataview\n .mx-dataview .mx-grid {\n border: 0;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-grid() {\n /* ==========================================================================\n Data grid default\n\n Default Mendix data grid widget. The data grid shows a list of objects in a grid\n ========================================================================== */\n\n .mx-datagrid {\n table {\n border-width: 0;\n background-color: transparent;\n /* Table header */\n th {\n border-style: solid;\n border-color: $grid-border-color;\n border-top-width: 0;\n border-right: 0;\n border-bottom-width: 1px;\n border-left: 0;\n background-color: $grid-bg-header;\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n\n .mx-datagrid-head-caption {\n white-space: normal;\n }\n }\n\n /* Table Body */\n tbody tr {\n td {\n @include transition();\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n vertical-align: middle;\n border-width: 0;\n border-color: $grid-border-color;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n background-color: $grid-bg;\n\n &:focus {\n outline: none;\n }\n\n /* Text without spaces */\n .mx-datagrid-data-wrapper {\n text-overflow: ellipsis;\n }\n }\n\n &.selected td,\n &.selected:hover td {\n color: $grid-selected-color;\n background-color: $grid-bg-selected !important;\n }\n }\n\n /* Table Footer */\n tfoot {\n > tr > th {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n border-width: 0;\n background-color: $grid-bg;\n font-weight: $font-weight-bold;\n }\n }\n\n & *:focus {\n outline: 0;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin transition(\n $style: initial,\n $delay: 0s,\n $duration: 0.3s,\n $property: all,\n $timing-function: cubic-bezier(0.4, 0, 0.2, 1)\n) {\n @if not $exclude-animations {\n transition: $property $duration $delay $timing-function;\n transform-style: $style;\n }\n}\n\n@mixin ripple($color: #000, $transparency: 10%, $scale: 10) {\n @if not $exclude-animations {\n position: relative;\n overflow: hidden;\n transform: translate3d(0, 0, 0);\n\n &:after {\n content: \"\";\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n pointer-events: none;\n background-image: radial-gradient(circle, $color $transparency, transparent $transparency);\n background-repeat: no-repeat;\n background-position: 50%;\n transform: scale($scale, $scale);\n opacity: 0;\n transition: transform 0.5s, opacity 1s;\n }\n\n &:active:after {\n transform: scale(0, 0);\n opacity: 0.1;\n transition: 0s;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-grid-helpers() {\n /* ==========================================================================\n Data grid default\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Striped style\n .datagrid-striped.mx-datagrid {\n table {\n th {\n border-width: 0;\n }\n\n tbody tr {\n td {\n border-top-width: 0;\n }\n\n &:nth-child(odd) td {\n background-color: $grid-bg-striped;\n }\n }\n }\n }\n\n // Bordered style\n .datagrid-bordered.mx-datagrid {\n table {\n border: 1px solid;\n\n th {\n border: 1px solid $grid-border-color;\n }\n\n tbody tr {\n td {\n border: 1px solid $grid-border-color;\n }\n }\n }\n\n tfoot {\n > tr > th {\n border-width: 0;\n background-color: $grid-footer-bg;\n }\n\n > tr > td {\n border-width: 1px;\n }\n }\n }\n\n // Transparent style so you can see the background\n .datagrid-transparent.mx-datagrid {\n table {\n background-color: transparent;\n\n tbody tr {\n &:nth-of-type(odd) {\n background-color: transparent;\n }\n\n td {\n background-color: transparent;\n }\n }\n }\n }\n\n // Hover style activated\n .datagrid-hover.mx-datagrid {\n table {\n tbody tr {\n &:hover td {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected:hover td {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n }\n\n // Datagrid Row Sizes\n .datagrid-lg.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n }\n }\n }\n\n .datagrid-sm.mx-datagrid {\n table {\n th {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left / 2);\n }\n\n tbody tr {\n td {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left/ 2);\n }\n }\n }\n }\n\n // Datagrid Full Search\n // Default Mendix Datagrid Widget with adjusted search field. Only 1 search field is allowed\n .datagrid-fullsearch.mx-grid {\n .mx-grid-search-button {\n @extend .btn-primary;\n }\n\n .mx-grid-reset-button {\n display: none;\n }\n\n .mx-grid-search-item {\n display: block;\n }\n\n .mx-grid-search-label {\n display: none;\n }\n\n .mx-grid-searchbar {\n .mx-grid-search-controls {\n position: absolute;\n right: 0;\n }\n\n .mx-grid-search-input {\n width: 80%;\n padding-left: 0;\n\n .btn,\n .form-control {\n height: 35px;\n font-size: 12px;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin data-view() {\n /* ==========================================================================\n Data view\n\n Default Mendix data view widget. The data view is used for showing the contents of exactly one object\n ========================================================================== */\n\n .mx-dataview {\n /* Dataview-content gives problems for nexted layout grid containers */\n > .mx-dataview-content > .mx-container-nested {\n > .row {\n margin-right: 0;\n margin-left: 0;\n }\n }\n\n /* Dataview empty message */\n .mx-dataview-message {\n color: $dataview-emptymessage-color;\n background: $dataview-emptymessage-bg;\n }\n }\n\n .mx-dataview-controls {\n margin-top: $spacing-medium;\n padding: $spacing-medium 0 0;\n border-top: 1px solid $dataview-controls-border-color;\n border-radius: 0;\n background-color: $dataview-controls-bg;\n /* Buttons */\n .mx-button {\n margin-right: $spacing-small;\n margin-bottom: 0;\n\n &:last-child {\n margin-right: 0;\n }\n }\n\n /* Fix for Dojo rendering in react client */\n [id^=\"mxui_widget_Wrapper\"]:has(> .mx-button) {\n .mx-button {\n margin-right: $spacing-small;\n }\n }\n\n background-color: inherit;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin date-picker() {\n /* ==========================================================================\n Date picker\n\n Default Mendix date picker widget\n ========================================================================== */\n\n .mx-calendar {\n /* (must be higher than popup z-index) */\n z-index: 10010 !important;\n padding: 8px;\n font-size: 12px;\n background: $bg-color;\n border-radius: $border-radius-default;\n border: 1px solid $border-color-default;\n box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06);\n\n .mx-calendar-month-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n margin: 0 3px 10px 3px;\n }\n\n .mx-calendar-month-next,\n .mx-calendar-month-previous,\n .mx-calendar-month-dropdown {\n border: 0;\n cursor: pointer;\n background: transparent;\n }\n\n .mx-calendar-month-next,\n .mx-calendar-month-previous {\n &:hover {\n color: $brand-primary;\n }\n }\n\n .mx-calendar-month-dropdown {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n\n .mx-calendar-month-current:first-child {\n margin-right: 10px;\n }\n }\n\n th {\n color: $brand-primary;\n }\n\n th,\n td {\n width: 35px;\n height: 35px;\n text-align: center;\n }\n\n td {\n color: $font-color-default;\n\n &:hover {\n cursor: pointer;\n border-radius: 50%;\n color: $brand-primary;\n background-color: $brand-default;\n }\n }\n\n .mx-calendar-day-month-next,\n .mx-calendar-day-month-previous {\n color: lighten($font-color-default, 45%);\n }\n\n .mx-calendar-day-selected,\n .mx-calendar-day-selected:hover {\n color: #fff;\n border-radius: 50%;\n background: $brand-primary;\n }\n\n //\n\n .mx-calendar-year-switcher {\n text-align: center;\n margin-top: 10px;\n color: lighten($brand-primary, 30%);\n\n span.mx-calendar-year-selected {\n color: $brand-primary;\n margin-left: 10px;\n margin-right: 10px;\n }\n\n span:hover {\n cursor: pointer;\n text-decoration: underline;\n background-color: transparent;\n }\n }\n }\n\n .mx-calendar-month-dropdown-options {\n /* (must be higher than popup z-index) */\n z-index: 10020 !important;\n position: absolute;\n top: 25px;\n padding: 2px 10px;\n border-radius: $border-radius-default;\n background-color: $bg-color;\n\n div {\n cursor: pointer;\n font-size: 12px;\n padding: 2px 0;\n\n &:hover,\n &:focus {\n color: $brand-primary;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin header() {\n /* ==========================================================================\n Header\n\n Default Mendix mobile header\n ========================================================================== */\n\n .mx-header {\n z-index: 100;\n display: flex;\n width: 100%;\n height: $m-header-height;\n padding: 0;\n text-align: initial;\n color: $m-header-color;\n background-color: $m-header-bg;\n box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354);\n\n // Reset mxui\n div.mx-header-left,\n div.mx-header-right {\n position: relative;\n top: initial;\n right: initial;\n left: initial;\n display: flex;\n align-items: center;\n width: 25%;\n height: 100%;\n\n .mx-placeholder {\n display: flex;\n align-items: center;\n height: 100%;\n }\n }\n\n div.mx-header-left .mx-placeholder {\n order: 1;\n\n .mx-placeholder {\n justify-content: flex-start;\n }\n }\n\n div.mx-header-center {\n overflow: hidden;\n flex: 1;\n order: 2;\n text-align: center;\n\n .mx-title {\n overflow: hidden;\n width: 100%;\n margin: 0;\n text-overflow: ellipsis;\n color: $m-header-color;\n font-size: $m-header-title-size;\n line-height: $m-header-height;\n }\n }\n\n div.mx-header-right {\n order: 3;\n\n .mx-placeholder {\n justify-content: flex-end;\n }\n }\n\n // Content magic\n .mx-link {\n display: flex;\n align-items: center;\n height: 100%;\n transition: all 0.2s;\n text-decoration: none;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n font-size: 23px;\n }\n\n &:active {\n transform: translateY(1px);\n color: $link-hover-color;\n }\n }\n\n .mx-link,\n .btn,\n img {\n padding: 0 $spacing-medium;\n }\n\n .mx-sidebartoggle {\n font-size: 24px;\n line-height: $m-header-height;\n\n img {\n height: 20px;\n }\n }\n }\n\n // RTL support\n body[dir=\"rtl\"] {\n .mx-header-left {\n order: 3;\n }\n\n .mx-header-right {\n order: 1;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin glyphicon() {\n /* ==========================================================================\n Glyphicon\n\n Default Mendix glyphicon\n ========================================================================== */\n\n .mx-glyphicon {\n &:before {\n display: inline-block;\n margin-top: -0.2em;\n margin-right: 0.4555555em;\n vertical-align: middle;\n font-family: \"Glyphicons Halflings\";\n font-weight: $font-weight-normal;\n font-style: normal;\n line-height: inherit;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin group-box() {\n /* ==========================================================================\n Group box\n\n Default Mendix group box\n ========================================================================== */\n\n .mx-groupbox {\n margin: 0;\n\n > .mx-groupbox-header {\n margin: 0;\n color: $groupbox-default-color;\n border-width: 1px 1px 0 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background: $groupbox-default-bg;\n font-size: $font-size-h5;\n border-radius: $border-radius-default $border-radius-default 0 0;\n padding: $spacing-small * 1.5 $spacing-medium;\n\n .mx-groupbox-collapse-icon {\n margin-top: 0.1em;\n }\n }\n\n // Header options\n > h1.mx-groupbox-header {\n font-size: $font-size-h1;\n }\n\n > h2.mx-groupbox-header {\n font-size: $font-size-h2;\n }\n\n > h3.mx-groupbox-header {\n font-size: $font-size-h3;\n }\n\n > h4.mx-groupbox-header {\n font-size: $font-size-h4;\n }\n\n > h5.mx-groupbox-header {\n font-size: $font-size-h5;\n }\n\n > h6.mx-groupbox-header {\n font-size: $font-size-h6;\n }\n\n > .mx-groupbox-body {\n padding: $spacing-small * 1.5 $spacing-medium;\n border-width: 1px;\n border-style: solid;\n border-color: $groupbox-default-bg;\n background-color: #ffffff;\n border-radius: $border-radius-default;\n }\n\n .mx-groupbox-header + .mx-groupbox-body {\n border-top: none;\n }\n\n &.collapsed > .mx-groupbox-header {\n }\n }\n\n //With header\n .mx-groupbox-header ~ .mx-groupbox-body {\n border-radius: 0 0 $border-radius-default $border-radius-default;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin group-box-helpers() {\n /* ==========================================================================\n Group box\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Color variations\n .groupbox-secondary,\n .groupbox-default {\n @include groupbox-variant($groupbox-default-color, $groupbox-default-bg);\n }\n\n .groupbox-primary {\n @include groupbox-variant($groupbox-primary-color, $groupbox-primary-bg);\n }\n\n // Success appears as green\n .groupbox-success {\n @include groupbox-variant($groupbox-success-color, $groupbox-success-bg);\n }\n\n // Warning appears as orange\n .groupbox-warning {\n @include groupbox-variant($groupbox-warning-color, $groupbox-warning-bg);\n }\n\n // Danger and error appear as red\n .groupbox-danger {\n @include groupbox-variant($groupbox-danger-color, $groupbox-danger-bg);\n }\n\n .groupbox-transparent {\n > .mx-groupbox-header {\n padding: $spacing-small * 1.5 0;\n color: $gray-darker;\n border-style: none;\n background: transparent;\n font-weight: $font-weight-semibold;\n }\n\n .mx-groupbox-body {\n padding: $spacing-small 0;\n border-radius: 0;\n border: 0;\n border-bottom: 1px solid $groupbox-default-bg;\n background-color: transparent;\n }\n\n .mx-groupbox-collapse-icon {\n color: $brand-primary;\n }\n }\n\n // Callout Look and Feel\n .groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n border: 0;\n background-color: $callout-primary-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-primary-color;\n }\n\n .mx-groupbox-header + .mx-groupbox-body {\n padding-top: 0;\n }\n }\n\n .groupbox-success.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-success-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-success-color;\n }\n }\n\n .groupbox-warning.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-warning-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-warning-color;\n }\n }\n\n .groupbox-danger.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-danger-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-danger-color;\n }\n }\n\n //Bootstrap variations\n\n .groupbox-info {\n @include groupbox-variant($groupbox-info-color, $groupbox-info-bg);\n }\n\n .groupbox-inverse {\n @include groupbox-variant($groupbox-inverse-color, $groupbox-inverse-bg);\n }\n\n .groupbox-white {\n @include groupbox-variant($groupbox-white-color, $groupbox-white-bg);\n }\n\n .groupbox-info.groupbox-callout {\n > .mx-groupbox-header,\n > .mx-groupbox-body {\n background-color: $callout-info-bg;\n }\n\n > .mx-groupbox-header {\n color: $callout-info-color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin groupbox-variant($color, $background) {\n @if not $exclude-group-box {\n > .mx-groupbox-header {\n color: $color;\n border-color: $background;\n background: $background;\n }\n > .mx-groupbox-body {\n border-color: $background;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin image-helpers() {\n /* ==========================================================================\n Image\n\n Default Mendix image widgets\n ========================================================================== */\n\n img.img-rounded,\n .img-rounded img {\n border-radius: 6px;\n }\n\n img.img-thumbnail,\n .img-thumbnail img {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n transition: all 0.2s ease-in-out;\n border: 1px solid $brand-default;\n border-radius: 4px;\n background-color: #ffffff;\n line-height: $line-height-base;\n }\n\n img.img-circle,\n .img-circle img {\n border-radius: 50%;\n }\n\n img.img-auto,\n .img-auto img {\n width: auto !important;\n max-width: 100% !important;\n height: auto !important;\n max-height: 100% !important;\n }\n\n img.img-center,\n .img-center img {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n\n img.img-icon {\n width: 20px;\n height: 20px;\n padding: 2px;\n border-radius: 50%;\n }\n\n img.img-fill,\n .img-fill img {\n object-fit: fill;\n }\n\n img.img-contain,\n .img-contain img {\n object-fit: contain;\n }\n\n img.img-cover,\n .img-cover img {\n object-fit: cover;\n }\n\n img.img-scale-down,\n .img-scale-down img {\n object-fit: scale-down;\n }\n\n .img-contain.mx-image-background {\n background-size: contain;\n }\n\n .img-cover.mx-image-background {\n background-size: cover;\n }\n\n .img-auto.mx-image-background {\n background-size: auto;\n }\n\n .img-opacity-low img,\n .img-opacity-low.mx-image-background {\n opacity: 0.3;\n }\n\n .img-opacity-medium img,\n .img-opacity-medium.mx-image-background {\n opacity: 0.5;\n }\n\n .img-opacity-high img,\n .img-opacity-high.mx-image-background {\n opacity: 0.7;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin list-view() {\n /* ==========================================================================\n List view\n\n Default Mendix list view widget. The list view shows a list of objects arranged vertically. Each object is shown using a template\n ========================================================================== */\n .mx-listview {\n // Remove widget padding\n padding: 0;\n /* Clear search button (overrides load more button stying) */\n & > ul {\n margin: 0 0 $spacing-medium;\n\n .mx-listview-empty {\n border-style: none;\n background-color: transparent;\n }\n\n & > li {\n @include transition();\n background-color: #fff;\n padding: $spacing-medium;\n border-top: 1px solid $grid-border-color;\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n }\n\n &:focus,\n &:active {\n outline: 0;\n }\n }\n }\n\n .selected {\n background: $color-primary-light;\n }\n\n .mx-layoutgrid {\n padding: 0 !important;\n }\n }\n\n // Search bar\n .mx-listview-searchbar {\n margin-bottom: $spacing-medium;\n\n .btn {\n width: auto;\n }\n }\n\n /* Load more button */\n .btn.mx-listview-loadMore {\n width: 100%;\n margin: 0 0 $spacing-medium;\n }\n\n //== Phone specific\n //-------------------------------------------------------------------------------------------------------------------//\n .profile-phone .mx-listview {\n .mx-listview-searchbar {\n margin-bottom: 3px;\n background: #ffffff;\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14);\n\n input {\n padding: 14px 15px;\n color: #555555;\n border-style: none;\n border-radius: 0;\n box-shadow: none;\n }\n\n .btn {\n padding: 14px 15px;\n color: inherit;\n border-style: none;\n }\n }\n\n & > ul > li {\n &:first-child {\n border-top: none;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin list-view-helpers() {\n /* ==========================================================================\n List view\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n // List items lined\n .listview-lined.mx-listview {\n & > ul > li {\n border-top: 1px solid $grid-border-color;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n }\n\n &:last-child {\n border-bottom: 1px solid $grid-border-color;\n }\n }\n }\n\n //List items Bordered\n .listview-bordered.mx-listview {\n & > ul > li {\n border: 1px solid $grid-border-color;\n border-top: 0;\n\n &:first-child {\n border-top: 1px solid $grid-border-color;\n }\n\n &:last-child {\n }\n }\n }\n\n // List items striped\n .listview-striped.mx-listview {\n & > ul > li:nth-child(2n + 1) {\n background-color: $grid-bg-striped;\n }\n }\n\n // Items as seperated blocks\n .listview-seperated.mx-listview {\n & > ul > li {\n margin-bottom: $spacing-medium;\n border: 1px solid $grid-border-color;\n border-radius: $border-radius-default;\n }\n }\n\n // Remove all styling - deprecated\n .listview-stylingless.mx-listview {\n & > ul > li {\n padding: unset;\n cursor: default;\n border: unset;\n background-color: transparent;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover,\n &:focus,\n &:active {\n background-color: transparent !important;\n }\n }\n }\n }\n\n // Hover style activated\n .listview-hover.mx-listview {\n & > ul > li {\n cursor: pointer;\n\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-hover;\n }\n\n &.selected {\n &:hover,\n &:focus,\n &:active {\n background-color: $grid-bg-selected-hover;\n }\n }\n }\n }\n\n // Row Sizes\n\n .listview-sm.mx-listview {\n & > ul > li {\n padding: $spacing-small;\n }\n }\n\n .listview-lg.mx-listview {\n & > ul > li {\n padding: $spacing-large;\n }\n }\n\n // Bootstrap columns\n .mx-listview[class*=\"lv-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n & > ul {\n display: flex; // normal a table\n flex-wrap: wrap;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n\n & > li {\n // bootstrap col\n position: relative;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: $screen-md-max) {\n width: 100% !important;\n }\n\n & > .mx-dataview {\n overflow: hidden;\n }\n }\n }\n\n &.lv-col-xs-12 > ul > li {\n width: 100% !important;\n }\n\n &.lv-col-xs-11 > ul > li {\n width: 91.66666667% !important;\n }\n\n &.lv-col-xs-10 > ul > li {\n width: 83.33333333% !important;\n }\n\n &.lv-col-xs-9 > ul > li {\n width: 75% !important;\n }\n\n &.lv-col-xs-8 > ul > li {\n width: 66.66666667% !important;\n }\n\n &.lv-col-xs-7 > ul > li {\n width: 58.33333333% !important;\n }\n\n &.lv-col-xs-6 > ul > li {\n width: 50% !important;\n }\n\n &.lv-col-xs-5 > ul > li {\n width: 41.66666667% !important;\n }\n\n &.lv-col-xs-4 > ul > li {\n width: 33.33333333% !important;\n }\n\n &.lv-col-xs-3 > ul > li {\n width: 25% !important;\n }\n\n &.lv-col-xs-2 > ul > li {\n width: 16.66666667% !important;\n }\n\n &.lv-col-xs-1 > ul > li {\n width: 8.33333333% !important;\n }\n\n @media (min-width: $screen-md) {\n &.lv-col-sm-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-sm-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-sm-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-sm-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-sm-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-sm-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-sm-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-sm-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-sm-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-sm-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-sm-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-sm-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: $screen-lg) {\n &.lv-col-md-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-md-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-md-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-md-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-md-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-md-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-md-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-md-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-md-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-md-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-md-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-md-1 > ul > li {\n width: 16.66666667% !important;\n }\n }\n @media (min-width: $screen-xl) {\n &.lv-col-lg-12 > ul > li {\n width: 100% !important;\n }\n &.lv-col-lg-11 > ul > li {\n width: 91.66666667% !important;\n }\n &.lv-col-lg-10 > ul > li {\n width: 83.33333333% !important;\n }\n &.lv-col-lg-9 > ul > li {\n width: 75% !important;\n }\n &.lv-col-lg-8 > ul > li {\n width: 66.66666667% !important;\n }\n &.lv-col-lg-7 > ul > li {\n width: 58.33333333% !important;\n }\n &.lv-col-lg-6 > ul > li {\n width: 50% !important;\n }\n &.lv-col-lg-5 > ul > li {\n width: 41.66666667% !important;\n }\n &.lv-col-lg-4 > ul > li {\n width: 33.33333333% !important;\n }\n &.lv-col-lg-3 > ul > li {\n width: 25% !important;\n }\n &.lv-col-lg-2 > ul > li {\n width: 16.66666667% !important;\n }\n &.lv-col-lg-1 > ul > li {\n width: 8.33333333% !important;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin modal() {\n /* ==========================================================================\n Modal\n\n Default Mendix modals. Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults\n ========================================================================== */\n .modal-dialog {\n .modal-content {\n border: 1px solid $modal-header-border-color;\n border-radius: 4px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n\n .modal-header {\n padding: 15px 20px;\n border-bottom-color: $modal-header-border-color;\n border-radius: 0; // Because of the class .mx-window-active in mxui.css\n background-color: $modal-header-bg;\n\n h4 {\n margin: 0;\n color: $modal-header-color;\n font-size: 16px;\n font-weight: $font-weight-bold;\n }\n\n .close {\n margin-top: -3px;\n opacity: 1;\n /* For IE8 and earlier */\n color: $modal-header-color;\n text-shadow: none;\n &:focus {\n border-radius: 4px;\n outline: 2px solid $brand-primary;\n }\n }\n }\n\n .modal-body {\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n margin-top: 0;\n padding: 20px;\n border-style: none;\n }\n }\n }\n\n // Default Mendix Window Modal\n .mx-window {\n // If popup direct child is a dataview it gets the class mx-window-view\n &.mx-window-view .mx-window-body {\n overflow: hidden; // hide second scrollbar in edit page\n padding: 0;\n // Dataview in popup\n > .mx-dataview > .mx-dataview-content,\n > .mx-placeholder > .mx-dataview > .mx-dataview-content {\n padding: 20px;\n }\n\n > .mx-dataview > .mx-dataview-controls,\n > .mx-placeholder > .mx-dataview > .mx-dataview-controls {\n display: flex;\n justify-content: flex-end;\n margin: 0;\n padding: 20px;\n text-align: left;\n border-top: 1px solid $modal-header-border-color;\n }\n }\n\n .mx-dataview-controls {\n padding-bottom: 0;\n }\n\n .mx-layoutgrid {\n padding-right: 0;\n padding-left: 0;\n }\n }\n\n .mx-dialog .modal-body {\n padding: 24px;\n }\n\n // Login modal\n .mx-login {\n .modal-body {\n padding: 0 15px;\n }\n\n .modal-content {\n input {\n height: 56px;\n padding: 12px 12px;\n border: 1px solid #eeeeee;\n background: #eeeeee;\n box-shadow: none;\n font-size: 16px;\n\n &:focus {\n border-color: #66afe9;\n }\n }\n }\n\n .modal-header,\n .modal-footer {\n border: 0;\n }\n\n button {\n font-size: 16px;\n }\n\n h4 {\n color: #aaaaaa;\n font-size: 20px;\n font-weight: $font-weight-bold;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-bar() {\n /* ==========================================================================\n Navigation\n\n Default Mendix navigation bar\n ========================================================================== */\n .mx-navbar {\n margin: 0;\n border-style: none;\n border-radius: 0;\n background-color: $navigation-bg;\n\n ul.nav {\n margin: 0; // weird -margin if screen gets small (bootstrap)\n /* Navigation item */\n & > li.mx-navbar-item > a {\n display: flex;\n align-items: center;\n padding: $navigation-item-padding;\n vertical-align: middle;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n border-radius: $border-radius-default;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n &:hover,\n &:focus,\n &.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n &.active {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n opacity: 1;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n position: absolute;\n top: -9px;\n left: 15px;\n width: 0;\n height: 0;\n content: \"\";\n transform: rotate(360deg);\n border-width: 0 9px 9px 9px;\n border-style: solid;\n border-color: transparent transparent $navigation-border-color transparent;\n }\n\n // Image\n img {\n width: 20px; // Default size (so it looks good)\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n & > .mx-navbar-item.active a {\n color: $navigation-color-active;\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-hover;\n border-bottom-color: $navigation-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n\n .caret {\n border-top-color: $navigation-sub-color-active;\n border-bottom-color: $navigation-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n padding: 10px 24px;\n }\n .mx-navbar-item.open .dropdown-menu {\n padding: 0;\n border-radius: 0;\n background-color: $navigation-sub-bg;\n\n & > li.mx-navbar-subitem > a {\n padding: 10px 24px;\n color: $navigation-sub-color;\n border-radius: 0;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n color: $navigation-sub-color-hover;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-bar-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Regions\n //## Behavior in the different regions\n ========================================================================== */\n // When used in topbar\n .region-topbar {\n .mx-navbar {\n background-color: $navtopbar-bg;\n min-height: auto;\n ul.nav {\n > .mx-navbar-item {\n margin-left: $spacing-small;\n }\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n line-height: 1.2;\n /* Dropdown arrow */\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n &.active {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navtopbar-border-color transparent;\n }\n\n // Image\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-hover;\n border-bottom-color: $navtopbar-color-hover;\n }\n }\n\n & > .mx-navbar-item.open .dropdown-menu {\n border-radius: $border-radius-default;\n background-color: $navtopbar-sub-bg;\n padding: $spacing-small $spacing-small 0;\n margin: 0;\n border: 0;\n box-shadow: 0px 2px 2px rgba(194, 196, 201, 0.30354);\n & > li.mx-navbar-subitem a {\n padding: $spacing-small;\n color: $navtopbar-color;\n border-radius: $border-radius-default;\n margin-bottom: $spacing-small;\n line-height: 1.2;\n &:hover,\n &:focus {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n .caret {\n border-top-color: $navtopbar-sub-color-active;\n border-bottom-color: $navtopbar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navtopbar-sub-color;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-navbar {\n background-color: $navsidebar-bg;\n ul.nav {\n /* Navigation item */\n & > li.mx-navbar-item > a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n /* Dropdown arrow */\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n &.active {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n\n /* Dropdown */\n .mx-navbar-submenu::before {\n border-color: transparent transparent $navsidebar-border-color transparent;\n }\n\n // Image\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n /* When hovering or the dropdown is open */\n & > .mx-navbar-item > a:hover,\n & > .mx-navbar-item > a:focus,\n & > .mx-navbar-item.active a,\n & > .mx-navbar-item.open > a,\n & > .mx-navbar-item.open > a:hover,\n & > .mx-navbar-item.open > a:focus {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-hover;\n border-bottom-color: $navsidebar-color-hover;\n }\n }\n & > .mx-navbar-item.open .dropdown-menu > li.mx-navbar-subitem.active a {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n .caret {\n border-top-color: $navsidebar-sub-color-active;\n border-bottom-color: $navsidebar-sub-color-active;\n }\n }\n }\n @media (max-width: $screen-md) {\n ul.nav > li.mx-navbar-item > a {\n }\n .mx-navbar-item.open .dropdown-menu {\n background-color: $navtopbar-sub-bg;\n & > li.mx-navbar-subitem > a {\n color: $navsidebar-sub-color;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n\n .hide-icons.mx-navbar {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-list() {\n /* ==========================================================================\n Navigation list\n\n Default Mendix navigation list widget. A navigation list can be used to attach an action to an entire row. Such a row is called a navigation list item\n ========================================================================== */\n .mx-navigationlist {\n margin: 0;\n padding: 0;\n list-style: none;\n\n li.mx-navigationlist-item {\n @include transition();\n padding: $spacing-medium;\n border-width: 1px;\n border-style: none none solid none;\n border-color: $grid-border-color;\n border-radius: 0;\n background-color: $grid-bg;\n\n &:hover,\n &:focus {\n color: inherit;\n background-color: $grid-bg-hover;\n }\n\n &.active {\n color: inherit;\n background-color: $grid-bg-selected;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-tree() {\n /* ==========================================================================\n Navigation\n\n Default Mendix navigation tree\n ========================================================================== */\n .mx-navigationtree {\n background-color: $navigation-bg;\n\n /* Every navigation item */\n .navbar-inner > ul {\n margin: 0;\n padding-left: 0;\n\n & > li {\n padding: 0;\n border-style: none;\n\n & > a {\n display: flex;\n align-items: center;\n height: $navigation-item-height;\n padding: $navigation-item-padding;\n color: $navigation-color;\n //border-bottom: 1px solid $navigation-border-color;\n //border-radius: 0;\n background-color: $navigation-bg;\n text-shadow: none;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n .caret {\n border-top-color: $navigation-color;\n border-bottom-color: $navigation-color;\n }\n\n img {\n width: 20px; // Default size\n height: auto;\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: 0;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n a.active {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n\n .caret {\n border-top-color: $navigation-color-active;\n border-bottom-color: $navigation-color-active;\n }\n }\n\n a.active {\n color: $navigation-color-active;\n border-left-color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n margin: 0;\n padding-left: 0;\n background-color: $navigation-sub-bg;\n\n li {\n margin: 0;\n padding: 0;\n border: 0;\n\n a {\n padding: $spacing-medium;\n text-decoration: none;\n color: $navigation-sub-color;\n border: 0;\n background-color: $navigation-sub-bg;\n text-shadow: none;\n font-size: $navigation-sub-font-size;\n font-weight: $font-weight-normal;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-small;\n }\n\n &:hover,\n &:focus,\n &.active {\n color: $navigation-sub-color-hover;\n outline: 0;\n background-color: $navigation-sub-bg-hover;\n }\n\n &.active {\n color: $navigation-sub-color-active;\n border: 0;\n background-color: $navigation-sub-bg-active;\n }\n }\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin navigation-tree-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Regions\n //## Behavior in the different regions\n ========================================================================== */\n // When used in topbar\n .region-topbar {\n .mx-navigationtree {\n background-color: $navtopbar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navtopbar-color;\n border-color: $navtopbar-border-color;\n background-color: $navtopbar-bg;\n font-size: $navtopbar-font-size;\n .caret {\n border-top-color: $navtopbar-color;\n border-bottom-color: $navtopbar-color;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n .caret {\n border-top-color: $navtopbar-color-active;\n border-bottom-color: $navtopbar-color-active;\n }\n }\n a.active {\n color: $navtopbar-color-active;\n border-left-color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navtopbar-sub-bg;\n li {\n a {\n color: $navtopbar-sub-color;\n background-color: $navtopbar-sub-bg;\n font-size: $navtopbar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navtopbar-sub-color-hover;\n background-color: $navtopbar-sub-bg-hover;\n }\n &.active {\n color: $navtopbar-sub-color-active;\n background-color: $navtopbar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-navigationtree {\n background-color: $navsidebar-bg;\n .navbar-inner > ul {\n & > li {\n & > a {\n color: $navsidebar-color;\n border-color: $navsidebar-border-color;\n background-color: $navsidebar-bg;\n font-size: $navsidebar-font-size;\n .caret {\n border-top-color: $navsidebar-color;\n border-bottom-color: $navsidebar-color;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n a:hover,\n a:focus,\n a.active {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n .caret {\n border-top-color: $navsidebar-color-active;\n border-bottom-color: $navsidebar-color-active;\n }\n }\n a.active {\n color: $navsidebar-color-active;\n border-left-color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n\n /* Sub navigation item specific */\n li.mx-navigationtree-has-items {\n & > ul {\n background-color: $navsidebar-sub-bg;\n li {\n a {\n color: $navsidebar-sub-color;\n background-color: $navsidebar-sub-bg;\n font-size: $navsidebar-sub-font-size;\n &:hover,\n &:focus,\n &.active {\n color: $navsidebar-sub-color-hover;\n background-color: $navsidebar-sub-bg-hover;\n }\n &.active {\n color: $navsidebar-sub-color-active;\n background-color: $navsidebar-sub-bg-active;\n }\n }\n }\n }\n }\n }\n }\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n //-------------------------------------------------------------------------------------------------------------------//\n // Content Centerd text and icons\n .nav-content-center-text-icons.mx-navigationtree {\n .navbar-inner ul {\n a {\n flex-direction: column;\n justify-content: center;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin: 0 0 5px 0;\n }\n }\n }\n }\n\n // Content Centerd icons only\n .nav-content-center.mx-navigationtree {\n .navbar-inner ul {\n a {\n justify-content: center;\n }\n }\n }\n\n .hide-icons.mx-navigationtree {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin pop-up-menu() {\n /* ==========================================================================\n Pop-up menu\n\n Default Mendix pop-up menu\n ========================================================================== */\n .popupmenu {\n position: relative;\n display: inline-flex;\n }\n\n .popupmenu-trigger {\n cursor: pointer;\n }\n\n .popupmenu-menu {\n position: absolute;\n z-index: 999;\n display: none;\n flex-direction: column;\n width: max-content;\n border-radius: 8px;\n background-color: $bg-color;\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05), 0 2px 16px 0 rgba(33, 43, 54, 0.08);\n\n &.popupmenu-position-left:not(.popup-portal) {\n top: 0;\n left: 0;\n transform: translateX(-100%);\n }\n\n &.popupmenu-position-right:not(.popup-portal) {\n top: 0;\n right: 0;\n transform: translateX(100%);\n }\n\n &.popupmenu-position-top:not(.popup-portal) {\n top: 0;\n transform: translateY(-100%);\n }\n\n &.popupmenu-position-bottom:not(.popup-portal) {\n bottom: 0;\n transform: translateY(100%);\n }\n\n .popupmenu-basic-item:first-child,\n .popupmenu-custom-item:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .popupmenu-basic-item:last-child,\n .popupmenu-custom-item:last-child {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n }\n\n .popupmenu-basic-divider {\n width: 100%;\n height: 1px;\n background-color: $brand-default;\n }\n\n .popupmenu-basic-item {\n padding: 12px 16px;\n color: $font-color-default;\n font-size: 14px;\n\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n\n &-inverse {\n color: $brand-inverse;\n }\n\n &-primary {\n color: $brand-primary;\n }\n\n &-info {\n color: $brand-info;\n }\n\n &-success {\n color: $brand-success;\n }\n\n &-warning {\n color: $brand-warning;\n }\n\n &-danger {\n color: $brand-danger;\n }\n }\n\n .popupmenu-custom-item {\n &:hover,\n &:focus,\n &:active {\n cursor: pointer;\n border-color: $bg-color-secondary;\n background-color: $bg-color-secondary;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@mixin simple-menu-bar() {\n /* ==========================================================================\n Navigation\n\n Default Mendix simple menu bar\n ========================================================================== */\n .mx-menubar {\n padding: 0;\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n width: 100%;\n min-height: 58px;\n\n li.mx-menubar-item {\n margin: 0;\n\n > a {\n display: flex;\n overflow: hidden;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: $navigation-item-padding;\n white-space: nowrap;\n color: $navigation-color;\n border-radius: 0;\n font-size: $navigation-font-size;\n font-weight: $font-weight-normal;\n\n img {\n margin-right: 0.5em;\n }\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n top: -1px;\n margin-right: 0.5em;\n vertical-align: middle;\n font-size: $navigation-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n text-decoration: none;\n color: $navigation-color-hover;\n background-color: $navigation-bg-hover;\n }\n\n &.active a {\n color: $navigation-color-active;\n background-color: $navigation-bg-active;\n }\n }\n }\n\n /* remove focus */\n &:focus {\n outline: 0;\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navigation-bg;\n\n ul.mx-menubar-list {\n display: flex;\n flex-direction: column;\n\n li.mx-menubar-item {\n display: block;\n\n a {\n border-bottom: 1px solid $navigation-border-color;\n }\n }\n }\n }\n\n // Horizontal variation specifics\n .mx-menubar-horizontal {\n box-shadow: 2px 0 4px 0 rgba(0, 0, 0, 0.14);\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n width: auto;\n\n a {\n width: 100%;\n }\n }\n }\n\n /* Two menu items */\n &.menubar-col-6 ul.mx-menubar-list li.mx-menubar-item {\n width: 50%;\n }\n\n /* Three menu items */\n &.menubar-col-4 ul.mx-menubar-list li.mx-menubar-item {\n width: 33.33333333%;\n }\n\n /* Four menu items */\n &.menubar-col-3 ul.mx-menubar-list li.mx-menubar-item {\n width: 25%;\n }\n\n /* Five menu items */\n &.menubar-col-2 ul.mx-menubar-list li.mx-menubar-item {\n width: 20%;\n }\n }\n\n //== Regions\n //## Behavior in the different regions\n //-------------------------------------------------------------------------------------------------------------------//\n // When used in topbar\n .region-topbar {\n .mx-menubar {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navtopbar-color;\n font-size: $navtopbar-font-size;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navtopbar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navtopbar-color-hover;\n background-color: $navtopbar-bg-hover;\n }\n\n &.active a {\n color: $navtopbar-color-active;\n background-color: $navtopbar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navtopbar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n height: $navigation-item-height;\n border-color: $navtopbar-border-color;\n }\n }\n }\n }\n }\n\n // When used in sidebar\n .region-sidebar {\n .mx-menubar {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n color: $navsidebar-color;\n font-size: $navsidebar-font-size;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $navsidebar-glyph-size;\n }\n }\n\n a:hover,\n a:focus,\n &:hover a,\n &:focus a,\n &.active a {\n color: $navsidebar-color-hover;\n background-color: $navsidebar-bg-hover;\n }\n\n &.active a {\n color: $navsidebar-color-active;\n background-color: $navsidebar-bg-active;\n }\n }\n }\n }\n\n // Vertical variation specifics\n .mx-menubar-vertical {\n background-color: $navsidebar-bg;\n\n ul.mx-menubar-list {\n li.mx-menubar-item {\n a {\n border-color: $navsidebar-border-color;\n }\n }\n }\n }\n }\n\n @supports (padding-bottom: env(safe-area-inset-bottom)) {\n .mx-menubar {\n padding-bottom: env(safe-area-inset-bottom);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin simple-menu-bar-helpers() {\n /* ==========================================================================\n Navigation\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Center text and icons\n .bottom-nav-text-icons.mx-menubar {\n ul.mx-menubar-list {\n li.mx-menubar-item {\n flex: 1;\n a {\n flex-direction: column;\n padding: $spacing-small $spacing-small $spacing-small/2;\n line-height: normal;\n font-size: $font-size-small;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: block;\n margin: 0 0 $spacing-small/2 0;\n font-size: $font-size-large;\n }\n img {\n display: block;\n height: $font-size-large;\n margin: 0 0 $spacing-small/2 0;\n }\n }\n }\n }\n }\n\n .hide-icons.mx-menubar {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: none;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin radio-button() {\n /* ==========================================================================\n Radio button\n\n Default Mendix radio button widget\n ========================================================================== */\n .mx-radiobuttons.inline .mx-radiogroup {\n display: flex;\n flex-direction: row;\n\n .radio {\n margin: 0 20px 0 0;\n }\n }\n\n .mx-radiobuttons .radio:last-child {\n margin-bottom: 0;\n }\n\n .radio {\n display: flex !important; // Remove after mxui merge\n align-items: center;\n margin-top: 0;\n }\n\n input[type=\"radio\"] {\n position: relative !important; // Remove after mxui merge\n width: 16px;\n height: 16px;\n margin: 0;\n cursor: pointer;\n -webkit-user-select: none;\n user-select: none;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n\n &:before,\n &:after {\n position: absolute;\n display: block;\n transition: all 0.3s ease-in-out;\n border-radius: 50%;\n }\n\n &:before {\n width: 100%;\n height: 100%;\n content: \"\";\n border: 1px solid $form-input-border-color;\n background-color: transparent;\n }\n\n &:after {\n top: 50%;\n left: 50%;\n width: 50%;\n height: 50%;\n transform: translate(-50%, -50%);\n pointer-events: none;\n background-color: $form-input-border-focus-color;\n }\n\n &:not(:checked):after {\n transform: translate(-50%, -50%) scale(0);\n opacity: 0;\n }\n\n &:not(:disabled):not(:checked):hover:after {\n background-color: $form-input-bg-hover;\n }\n\n &:checked:after,\n &:not(:disabled):not(:checked):hover:after {\n content: \"\";\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n }\n\n &:checked:before {\n border-color: $form-input-border-focus-color;\n background-color: $form-input-bg;\n }\n\n &:disabled:before {\n background-color: $form-input-bg-disabled;\n }\n\n &:checked:disabled:before {\n border-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n &:checked:disabled:after {\n background-color: rgba($form-input-border-focus-color, 0.4);\n }\n\n & + label {\n margin-left: $form-label-gutter;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin scroll-container-dojo() {\n /* ==========================================================================\n Scroll Container\n\n Default Mendix Scroll Container Widget.\n ========================================================================== */\n .mx-scrollcontainer-wrapper:not(.mx-scrollcontainer-nested) {\n -webkit-overflow-scrolling: touch;\n }\n\n .mx-scrollcontainer-horizontal {\n width: 100%;\n display: table;\n table-layout: fixed;\n }\n .mx-scrollcontainer-horizontal > div {\n display: table-cell;\n vertical-align: top;\n }\n\n .mx-scrollcontainer-nested {\n padding: 0;\n }\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-middle > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-left > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-center > .mx-scrollcontainer-wrapper,\n .mx-scrollcontainer-fixed > .mx-scrollcontainer-right > .mx-scrollcontainer-wrapper {\n overflow: auto;\n }\n\n .mx-scrollcontainer-move-in {\n transition: left 250ms ease-out;\n }\n .mx-scrollcontainer-move-out {\n transition: left 250ms ease-in;\n }\n .mx-scrollcontainer-shrink .mx-scrollcontainer-toggleable {\n transition-property: width;\n }\n\n .mx-scrollcontainer-toggleable {\n background-color: #fff;\n }\n\n .mx-scrollcontainer-push {\n position: relative;\n }\n .mx-scrollcontainer-shrink > .mx-scrollcontainer-toggleable {\n overflow: hidden;\n }\n .mx-scrollcontainer-push.mx-scrollcontainer-open > div,\n .mx-scrollcontainer-slide.mx-scrollcontainer-open > div {\n pointer-events: none;\n }\n .mx-scrollcontainer-push.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable,\n .mx-scrollcontainer-slide.mx-scrollcontainer-open > .mx-scrollcontainer-toggleable {\n pointer-events: auto;\n }\n\n // Scroll container spacing\n // NOTE: .mx-placeholder is removed in modern client for the good, this rule is going to be ignored.\n .mx-scrollcontainer .mx-placeholder {\n width: 100%;\n height: 100%;\n\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n @include layout-spacing($type: padding, $direction: all, $device: responsive);\n\n .mx-layoutgrid,\n .mx-layoutgrid-fluid {\n padding: 0;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tab-container() {\n /* ==========================================================================\n Tab Container\n\n Default Mendix Tab Container Widget. Tab containers are used to show information categorized into multiple tab pages.\n This can be very useful if the amount of information that has to be displayed is larger than the amount of space on the screen\n ========================================================================== */\n\n .mx-tabcontainer {\n .mx-tabcontainer-tabs {\n margin-bottom: $spacing-medium;\n border-color: $tabs-border-color;\n display: flex;\n\n > li {\n float: none;\n }\n\n & > li > a {\n margin-right: 0;\n transition: all 0.2s ease-in-out;\n color: $tabs-color;\n font-weight: $font-weight-normal;\n border-radius: $border-radius-default $border-radius-default 0 0;\n\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: $tabs-color-active;\n border: 1px solid $tabs-border-color;\n border-bottom-color: #fff;\n background-color: $tabs-bg;\n }\n }\n }\n\n // Tab Styling Specific for mobile\n .tab-mobile.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n text-align: center;\n border-style: none;\n background-color: $brand-primary;\n\n li {\n display: table-cell;\n float: none; // reset bootstrap\n width: 1%;\n margin: 0;\n text-align: center;\n border-style: none;\n border-radius: 0;\n\n a {\n padding: 16px;\n text-transform: uppercase;\n color: #ffffff;\n border-width: 0 1px 0 0;\n border-style: solid;\n border-color: rgba(255, 255, 255, 0.3);\n border-radius: 0;\n font-size: 12px;\n font-weight: $font-weight-normal;\n\n &:hover,\n &:focus {\n background-color: inherit;\n }\n }\n\n &:last-child a {\n border-right: none;\n }\n\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: #ffffff;\n border-style: none;\n border-radius: 0;\n background-color: mix($brand-primary, #000000, 80%);\n }\n }\n }\n }\n\n .mx-tabcontainer-badge {\n margin-left: $spacing-small;\n border-radius: $font-size-small;\n background-color: $label-primary-bg;\n color: $label-primary-color;\n font-size: $font-size-small;\n font-weight: $font-weight-bold;\n line-height: 1;\n padding: $spacing-small/2 $spacing-small;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tab-container-helpers() {\n /* ==========================================================================\n Tab container\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Style as pills\n .tab-pills.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border: 0;\n\n & > li {\n margin-bottom: $spacing-small;\n }\n\n & > li > a {\n margin-right: $spacing-small;\n color: $tabs-color;\n border-radius: $border-radius-default;\n background-color: $tabs-bg-pills;\n\n &:hover,\n &:focus {\n background-color: $tabs-bg-hover;\n }\n }\n\n & > li.active > a,\n & > li.active > a:hover,\n & > li.active > a:focus {\n color: #ffffff;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n\n // Style with lines\n .tab-lined.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n border-width: 1px;\n\n li {\n margin-right: $spacing-large;\n\n & > a {\n padding: $spacing-medium 0 ($spacing-medium - $tabs-lined-border-width) 0; // border is 3px\n color: $tabs-color;\n border: 0;\n border-bottom: $tabs-lined-border-width solid transparent;\n border-radius: 0;\n\n &:hover,\n &:focus {\n color: $tabs-color;\n border: 0;\n border-color: transparent;\n background: transparent;\n }\n }\n\n &.active > a,\n &.active > a:hover,\n &.active > a:focus {\n color: $tabs-lined-color-active;\n border: 0;\n border-bottom: $tabs-lined-border-width solid $tabs-lined-border-color;\n background-color: transparent;\n }\n }\n }\n }\n\n // Justified style\n // Lets your tabs take 100% of the width\n .tab-justified.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n width: 100%;\n border-bottom: 0;\n\n & > li {\n flex: 1;\n float: none; // reset bootstrap\n margin: 0;\n @media (max-width: $screen-sm-max) {\n display: block;\n width: 100%;\n }\n\n & > a {\n text-align: center;\n }\n }\n }\n }\n\n // Bordered\n .tab-bordered.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n margin: 0;\n }\n\n & > .mx-tabcontainer-content {\n padding: $spacing-small;\n border-width: 0 1px 1px 1px;\n border-style: solid;\n border-color: $tabs-border-color;\n background-color: transparent;\n }\n }\n\n // Wizard\n .tab-wizard.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n position: relative;\n display: flex;\n justify-content: space-between;\n border-style: none;\n\n &::before {\n position: absolute;\n top: $spacing-medium;\n display: block;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: $tabs-border-color;\n }\n\n & > li {\n position: relative;\n float: none; // reset bootstrap\n width: 100%;\n text-align: center;\n\n & > a {\n width: calc((#{$spacing-medium} * 2) + 1px);\n height: calc((#{$spacing-medium} * 2) + 1px);\n margin: auto;\n padding: 0;\n text-align: center;\n color: $brand-primary;\n border: 1px solid $tabs-border-color;\n border-radius: 100%;\n background-color: $bg-color;\n font-size: $font-size-large;\n font-weight: bold;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n &.active {\n & > a,\n & > a:hover,\n & > a:focus {\n color: #ffffff;\n border-color: $tabs-bg-active;\n background-color: $tabs-bg-active;\n }\n }\n }\n }\n }\n\n //add tabcontainer flex classes\n\n .tab-center.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: center;\n }\n }\n\n .tab-left.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: flex-start;\n }\n }\n\n .tab-right.mx-tabcontainer {\n & > .mx-tabcontainer-tabs {\n display: flex;\n align-items: center;\n flex-flow: wrap;\n justify-content: flex-end;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin table() {\n /* ==========================================================================\n Table\n\n Default Mendix table widget. Tables can be used to lend structure to a page. They contain a number of rows (tr) and columns, the intersection of which is called a cell (td). Each cell can contain widgets\n ========================================================================== */\n\n th {\n font-weight: $font-weight-bold;\n }\n\n html body .mx-page table.mx-table {\n th,\n td {\n &.nopadding {\n padding: 0;\n }\n }\n }\n\n table.mx-table {\n > tbody {\n /* Table row */\n > tr {\n /* Table header */\n > th {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n\n s * {\n color: $form-label-color;\n font-weight: $font-weight-bold;\n font-weight: $form-label-weight;\n }\n\n > label {\n padding-top: 8px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n\n /* Table cells */\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n\n > div > label,\n .mx-referenceselector-input-wrapper label {\n padding-top: 8px;\n padding-bottom: 6px; // Aligns label in the middle if there is no input field next to it.\n }\n }\n }\n }\n }\n\n // Default Mendix Table Widget inside TemplateGrid\n .mx-templategrid table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n }\n }\n }\n }\n\n // Default Mendix Table Widget inside Listview\n .mx-list table.mx-table {\n > tbody {\n > tr {\n > th,\n > td {\n padding: $padding-table-cell-top $padding-table-cell-right $padding-table-cell-bottom\n $padding-table-cell-left;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin table-helpers() {\n /* ==========================================================================\n Table\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Lined\n table.table-lined.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > td {\n border-width: 1px 0;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n }\n\n // Bordered\n table.table-bordered.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n border-width: 1px;\n border-style: solid;\n border-color: $grid-border-color;\n }\n }\n }\n }\n\n // Makes table compact\n table.table-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n }\n }\n }\n\n // Tables Vertical\n // Will remove unwanted paddings\n table.table-vertical.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n > th {\n padding-bottom: 0;\n\n > label {\n padding: 0;\n }\n\n > div > label {\n padding: 0;\n }\n }\n }\n }\n }\n\n // Align content in middle\n table.table-align-vertical-middle.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n vertical-align: middle;\n }\n }\n }\n }\n\n // Compact labels\n table.table-label-compact.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n > label {\n margin: 0;\n padding: 0;\n }\n\n > div > label,\n .mx-referenceselector-input-wrapper label {\n margin: 0;\n padding: 0;\n }\n }\n }\n }\n }\n\n $height-row-s: 55px;\n $height-row-m: 70px;\n $height-row-l: 120px;\n // Small rows\n table.table-row-s.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-s;\n }\n }\n }\n }\n\n // Medium rows\n table.table-row-m.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-m;\n }\n }\n }\n }\n\n // Large rows\n table.table-row-l.mx-table {\n > tbody {\n // Table row\n > tr {\n // Table header\n // Table data\n > th,\n > td {\n height: $height-row-l;\n }\n }\n }\n }\n\n // Makes the columns fixed\n table.table-fixed {\n table-layout: fixed;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin template-grid() {\n /* ==========================================================================\n Template grid\n\n Default Mendix template grid Widget. The template grid shows a list of objects in a tile view. For example, a template grid can show a list of products. The template grid has a lot in common with the data grid. The main difference is that the objects are shown in templates (a sort of small data view) instead of rows\n ========================================================================== */\n\n .mx-templategrid {\n .mx-templategrid-content-wrapper {\n table-layout: fixed;\n }\n\n .mx-templategrid-item {\n padding: $grid-padding-top $grid-padding-right $grid-padding-bottom $grid-padding-left;\n cursor: default;\n background-color: $grid-bg;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n }\n }\n\n .mx-layoutgrid {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin template-grid-helpers() {\n /* ==========================================================================\n Template grid\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Make sure your content looks selectable\n .templategrid-selectable.mx-templategrid {\n .mx-templategrid-item {\n cursor: pointer;\n }\n }\n\n // Lined\n .templategrid-lined.mx-templategrid {\n .mx-grid-content {\n border-top-width: 2px;\n border-top-style: solid;\n border-top-color: $grid-border-color;\n }\n\n .mx-templategrid-item {\n border-top: 1px solid $grid-border-color;\n border-right: none;\n border-bottom: 1px solid $grid-border-color;\n border-left: none;\n }\n }\n\n // Striped\n .templategrid-striped.mx-templategrid {\n .mx-templategrid-row:nth-child(odd) .mx-templategrid-item {\n background-color: #f9f9f9;\n }\n }\n\n // Stylingless\n .templategrid-stylingless.mx-templategrid {\n .mx-templategrid-item {\n padding: 0;\n cursor: default;\n border: 0;\n background-color: transparent;\n\n &:hover {\n background-color: transparent;\n }\n\n &.selected {\n background-color: transparent !important;\n\n &:hover {\n background-color: transparent !important;\n }\n }\n }\n }\n\n // Transparent items\n .templategrid-transparent.mx-templategrid {\n .mx-templategrid-item {\n border: 0;\n background-color: transparent;\n }\n }\n\n // Hover\n .templategrid-hover.mx-templategrid {\n .mx-templategrid-item {\n &:hover {\n background-color: $grid-bg-hover !important;\n }\n\n &.selected {\n background-color: $grid-bg-selected !important;\n\n &:hover {\n background-color: $grid-bg-selected-hover !important;\n }\n }\n }\n }\n\n // Templategrid Row Sizes\n .templategrid-lg.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top * 2) ($grid-padding-right * 2) ($grid-padding-bottom * 2)\n ($grid-padding-left * 2);\n }\n }\n\n .templategrid-sm.mx-templategrid {\n .mx-templategrid-item {\n padding: ($grid-padding-top / 2) ($grid-padding-right / 2) ($grid-padding-bottom / 2)\n ($grid-padding-left / 2);\n }\n }\n\n // Templategrid Layoutgrid styles\n .mx-templategrid[class*=\"tg-col\"] {\n overflow: hidden; // For if it is not in a layout, to prevent scrollbars\n .mx-templategrid-content-wrapper {\n display: block;\n }\n\n .mx-templategrid-row {\n display: block;\n margin-right: -1 * $gutter-size;\n margin-left: -1 * $gutter-size;\n\n &::before,\n &::after {\n // clearfix\n display: table;\n clear: both;\n content: \" \";\n }\n }\n\n .mx-templategrid-item {\n // bootstrap col\n position: relative;\n display: block;\n float: left;\n min-height: 1px;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n border: 0;\n @media (max-width: 992px) {\n width: 100% !important;\n }\n\n .mx-dataview {\n overflow: hidden;\n }\n }\n\n &.tg-col-xs-12 .mx-templategrid-item {\n width: 100% !important;\n }\n\n &.tg-col-xs-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n\n &.tg-col-xs-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n\n &.tg-col-xs-9 .mx-templategrid-item {\n width: 75% !important;\n }\n\n &.tg-col-xs-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n\n &.tg-col-xs-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n\n &.tg-col-xs-6 .mx-templategrid-item {\n width: 50% !important;\n }\n\n &.tg-col-xs-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n\n &.tg-col-xs-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n\n &.tg-col-xs-3 .mx-templategrid-item {\n width: 25% !important;\n }\n\n &.tg-col-xs-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n\n &.tg-col-xs-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n\n @media (min-width: 768px) {\n &.tg-col-sm-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-sm-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-sm-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-sm-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-sm-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-sm-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-sm-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-sm-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-sm-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-sm-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-sm-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-sm-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 992px) {\n &.tg-col-md-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-md-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-md-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-md-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-md-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-md-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-md-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-md-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-md-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-md-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-md-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-md-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n @media (min-width: 1200px) {\n &.tg-col-lg-12 .mx-templategrid-item {\n width: 100% !important;\n }\n &.tg-col-lg-11 .mx-templategrid-item {\n width: 91.66666667% !important;\n }\n &.tg-col-lg-10 .mx-templategrid-item {\n width: 83.33333333% !important;\n }\n &.tg-col-lg-9 .mx-templategrid-item {\n width: 75% !important;\n }\n &.tg-col-lg-8 .mx-templategrid-item {\n width: 66.66666667% !important;\n }\n &.tg-col-lg-7 .mx-templategrid-item {\n width: 58.33333333% !important;\n }\n &.tg-col-lg-6 .mx-templategrid-item {\n width: 50% !important;\n }\n &.tg-col-lg-5 .mx-templategrid-item {\n width: 41.66666667% !important;\n }\n &.tg-col-lg-4 .mx-templategrid-item {\n width: 33.33333333% !important;\n }\n &.tg-col-lg-3 .mx-templategrid-item {\n width: 25% !important;\n }\n &.tg-col-lg-2 .mx-templategrid-item {\n width: 16.66666667% !important;\n }\n &.tg-col-lg-1 .mx-templategrid-item {\n width: 8.33333333% !important;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin typography() {\n /* ==========================================================================\n Typography\n ========================================================================== */\n\n p {\n line-height: $line-height-base * 1.25;\n margin: 0 0 $spacing-small;\n }\n\n .mx-title {\n margin: $font-header-margin;\n color: $font-color-header;\n font-size: $font-size-h1;\n font-weight: $font-weight-header;\n }\n\n h1,\n .h1,\n .h1 > * {\n font-size: $font-size-h1;\n }\n\n h2,\n .h2,\n .h2 > * {\n font-size: $font-size-h2;\n }\n\n h3,\n .h3,\n .h3 > * {\n font-size: $font-size-h3;\n }\n\n h4,\n .h4,\n .h4 > * {\n font-size: $font-size-h4;\n }\n\n h5,\n .h5,\n .h5 > * {\n font-size: $font-size-h5;\n }\n\n h6,\n .h6,\n .h6 > * {\n font-size: $font-size-h6;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n .h1,\n .h2,\n .h3,\n .h4,\n .h5,\n .h6 {\n margin: $font-header-margin;\n color: $font-color-header;\n font-weight: $font-weight-header;\n line-height: 1.3;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin typography-helpers() {\n /* ==========================================================================\n Typography\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n // Text size\n .text-small {\n font-size: $font-size-small !important;\n }\n\n .text-large {\n font-size: $font-size-large !important;\n }\n\n // Text Weights\n .text-light,\n .text-light > *,\n .text-light label {\n font-weight: $font-weight-light !important;\n }\n\n .text-normal,\n .text-normal > *,\n .text-normal label {\n font-weight: $font-weight-normal !important;\n }\n\n .text-semibold,\n .text-semibold > *,\n .text-semibold label {\n font-weight: $font-weight-semibold !important;\n }\n\n .text-bold,\n .text-bold > *,\n .text-bold label {\n font-weight: $font-weight-bold !important;\n }\n\n // Color variations\n .text-secondary,\n .text-secondary:hover,\n .text-default,\n .text-default:hover {\n color: $font-color-default !important;\n }\n\n .text-primary,\n .text-primary:hover {\n color: $brand-primary !important;\n }\n\n .text-info,\n .text-info:hover {\n color: $brand-info !important;\n }\n\n .text-success,\n .text-success:hover {\n color: $brand-success !important;\n }\n\n .text-warning,\n .text-warning:hover {\n color: $brand-warning !important;\n }\n\n .text-danger,\n .text-danger:hover {\n color: $brand-danger !important;\n }\n\n .text-header {\n color: $font-color-header !important;\n }\n\n .text-detail {\n color: $font-color-detail !important;\n }\n\n .text-white {\n color: #ffffff;\n }\n\n // Alignment options\n .text-left {\n text-align: left !important;\n }\n .text-center {\n text-align: center !important;\n }\n .text-right {\n text-align: right !important;\n }\n .text-justify {\n text-align: justify !important;\n }\n\n // Transform options\n .text-lowercase {\n text-transform: lowercase !important;\n }\n .text-uppercase {\n text-transform: uppercase !important;\n }\n .text-capitalize {\n text-transform: capitalize !important;\n }\n\n // Wrap options\n .text-break {\n word-break: break-all !important;\n word-break: break-word !important;\n -webkit-hyphens: auto !important;\n hyphens: auto !important;\n }\n\n .text-nowrap {\n white-space: nowrap !important;\n }\n\n .text-nowrap {\n overflow: hidden !important;\n max-width: 100% !important;\n white-space: nowrap !important;\n text-overflow: ellipsis !important;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin layout-grid() {\n /* ==========================================================================\n Layout grid\n\n Default Bootstrap containers\n ========================================================================== */\n .mx-layoutgrid {\n width: 100%;\n margin-right: auto;\n margin-left: auto;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n }\n\n // Row\n .row {\n display: flex;\n flex-wrap: wrap;\n margin-right: -$gutter-size;\n margin-left: -$gutter-size;\n\n &::before,\n &::after {\n content: normal;\n }\n }\n\n .no-gutters {\n margin-right: 0;\n margin-left: 0;\n }\n\n .no-gutters > .col,\n .no-gutters > [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n }\n\n // Columns\n .col-1,\n .col-2,\n .col-3,\n .col-4,\n .col-5,\n .col-6,\n .col-7,\n .col-8,\n .col-9,\n .col-10,\n .col-11,\n .col-12,\n .col,\n .col-auto,\n .col-sm-1,\n .col-sm-2,\n .col-sm-3,\n .col-sm-4,\n .col-sm-5,\n .col-sm-6,\n .col-sm-7,\n .col-sm-8,\n .col-sm-9,\n .col-sm-10,\n .col-sm-11,\n .col-sm-12,\n .col-sm,\n .col-sm-auto,\n .col-md-1,\n .col-md-2,\n .col-md-3,\n .col-md-4,\n .col-md-5,\n .col-md-6,\n .col-md-7,\n .col-md-8,\n .col-md-9,\n .col-md-10,\n .col-md-11,\n .col-md-12,\n .col-md,\n .col-md-auto,\n .col-lg-1,\n .col-lg-2,\n .col-lg-3,\n .col-lg-4,\n .col-lg-5,\n .col-lg-6,\n .col-lg-7,\n .col-lg-8,\n .col-lg-9,\n .col-lg-10,\n .col-lg-11,\n .col-lg-12,\n .col-lg,\n .col-lg-auto,\n .col-xl-1,\n .col-xl-2,\n .col-xl-3,\n .col-xl-4,\n .col-xl-5,\n .col-xl-6,\n .col-xl-7,\n .col-xl-8,\n .col-xl-9,\n .col-xl-10,\n .col-xl-11,\n .col-xl-12,\n .col-xl,\n .col-xl-auto {\n position: relative;\n width: 100%;\n padding-right: $gutter-size;\n padding-left: $gutter-size;\n }\n\n .col {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n\n .col-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n\n .col-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n\n .col-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n\n .col-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n\n .col-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n\n .col-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n\n .col-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n\n .col-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n\n .col-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n\n .col-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n\n .col-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n\n .col-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n\n .col-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n\n .order-first {\n order: -1;\n }\n\n .order-last {\n order: 13;\n }\n\n .order-0 {\n order: 0;\n }\n\n .order-1 {\n order: 1;\n }\n\n .order-2 {\n order: 2;\n }\n\n .order-3 {\n order: 3;\n }\n\n .order-4 {\n order: 4;\n }\n\n .order-5 {\n order: 5;\n }\n\n .order-6 {\n order: 6;\n }\n\n .order-7 {\n order: 7;\n }\n\n .order-8 {\n order: 8;\n }\n\n .order-9 {\n order: 9;\n }\n\n .order-10 {\n order: 10;\n }\n\n .order-11 {\n order: 11;\n }\n\n .order-12 {\n order: 12;\n }\n\n .offset-1,\n .col-offset-1 {\n margin-left: 8.333333%;\n }\n\n .offset-2,\n .col-offset-2 {\n margin-left: 16.666667%;\n }\n\n .offset-3,\n .col-offset-3 {\n margin-left: 25%;\n }\n\n .offset-4,\n .col-offset-4 {\n margin-left: 33.333333%;\n }\n\n .offset-5,\n .col-offset-5 {\n margin-left: 41.666667%;\n }\n\n .offset-6,\n .col-offset-6 {\n margin-left: 50%;\n }\n\n .offset-7,\n .col-offset-7 {\n margin-left: 58.333333%;\n }\n\n .offset-8,\n .col-offset-8 {\n margin-left: 66.666667%;\n }\n\n .offset-9,\n .col-offset-9 {\n margin-left: 75%;\n }\n\n .offset-10,\n .col-offset-10 {\n margin-left: 83.333333%;\n }\n\n .offset-11,\n .col-offset-11 {\n margin-left: 91.666667%;\n }\n\n // Responsiveness\n @media (min-width: $screen-sm) {\n .mx-layoutgrid-fixed {\n max-width: 540px;\n }\n }\n\n @media (min-width: $screen-md) {\n .mx-layoutgrid-fixed {\n max-width: 720px;\n }\n }\n\n @media (min-width: $screen-lg) {\n .mx-layoutgrid-fixed {\n max-width: 960px;\n }\n }\n\n @media (min-width: $screen-xl) {\n .mx-layoutgrid-fixed {\n max-width: 1140px;\n }\n }\n\n @media (min-width: $screen-sm) {\n .col-sm {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-sm-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-sm-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-sm-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-sm-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-sm-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-sm-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-sm-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-sm-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-sm-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-sm-first {\n order: -1;\n }\n .order-sm-last {\n order: 13;\n }\n .order-sm-0 {\n order: 0;\n }\n .order-sm-1 {\n order: 1;\n }\n .order-sm-2 {\n order: 2;\n }\n .order-sm-3 {\n order: 3;\n }\n .order-sm-4 {\n order: 4;\n }\n .order-sm-5 {\n order: 5;\n }\n .order-sm-6 {\n order: 6;\n }\n .order-sm-7 {\n order: 7;\n }\n .order-sm-8 {\n order: 8;\n }\n .order-sm-9 {\n order: 9;\n }\n .order-sm-10 {\n order: 10;\n }\n .order-sm-11 {\n order: 11;\n }\n .order-sm-12 {\n order: 12;\n }\n .offset-sm-0,\n .col-sm-offset-0 {\n margin-left: 0;\n }\n .offset-sm-1,\n .col-sm-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-sm-2,\n .col-sm-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-sm-3,\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .offset-sm-4,\n .col-sm-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-sm-5,\n .col-sm-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-sm-6,\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .offset-sm-7,\n .col-sm-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-sm-8,\n .col-sm-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-sm-9,\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .offset-sm-10,\n .col-sm-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-sm-11,\n .col-sm-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-md) {\n .col-md {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-md-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-md-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-md-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-md-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-md-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-md-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-md-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-md-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-md-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-md-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-md-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-md-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-md-first {\n order: -1;\n }\n .order-md-last {\n order: 13;\n }\n .order-md-0 {\n order: 0;\n }\n .order-md-1 {\n order: 1;\n }\n .order-md-2 {\n order: 2;\n }\n .order-md-3 {\n order: 3;\n }\n .order-md-4 {\n order: 4;\n }\n .order-md-5 {\n order: 5;\n }\n .order-md-6 {\n order: 6;\n }\n .order-md-7 {\n order: 7;\n }\n .order-md-8 {\n order: 8;\n }\n .order-md-9 {\n order: 9;\n }\n .order-md-10 {\n order: 10;\n }\n .order-md-11 {\n order: 11;\n }\n .order-md-12 {\n order: 12;\n }\n .offset-md-0,\n .col-md-offset-0 {\n margin-left: 0;\n }\n .offset-md-1,\n .col-md-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-md-2,\n .col-md-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-md-3,\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .offset-md-4,\n .col-md-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-md-5,\n .col-md-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-md-6,\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .offset-md-7,\n .col-md-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-md-8,\n .col-md-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-md-9,\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .offset-md-10,\n .col-md-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-md-11,\n .col-md-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-lg) {\n .col-lg {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-lg-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-lg-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-lg-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-lg-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-lg-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-lg-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-lg-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-lg-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-lg-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-lg-first {\n order: -1;\n }\n .order-lg-last {\n order: 13;\n }\n .order-lg-0 {\n order: 0;\n }\n .order-lg-1 {\n order: 1;\n }\n .order-lg-2 {\n order: 2;\n }\n .order-lg-3 {\n order: 3;\n }\n .order-lg-4 {\n order: 4;\n }\n .order-lg-5 {\n order: 5;\n }\n .order-lg-6 {\n order: 6;\n }\n .order-lg-7 {\n order: 7;\n }\n .order-lg-8 {\n order: 8;\n }\n .order-lg-9 {\n order: 9;\n }\n .order-lg-10 {\n order: 10;\n }\n .order-lg-11 {\n order: 11;\n }\n .order-lg-12 {\n order: 12;\n }\n .offset-lg-0,\n .col-lg-offset-0 {\n margin-left: 0;\n }\n .offset-lg-1,\n .col-lg-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-lg-2,\n .col-lg-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-lg-3,\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .offset-lg-4,\n .col-lg-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-lg-5,\n .col-lg-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-lg-6,\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .offset-lg-7,\n .col-lg-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-lg-8,\n .col-lg-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-lg-9,\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .offset-lg-10,\n .col-lg-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-lg-11,\n .col-lg-offset-11 {\n margin-left: 91.666667%;\n }\n }\n\n @media (min-width: $screen-xl) {\n .col-xl {\n flex-basis: 0;\n flex-grow: 1;\n max-width: 100%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n max-width: 100%;\n }\n .col-xl-1 {\n flex: 0 0 8.333333%;\n max-width: 8.333333%;\n }\n .col-xl-2 {\n flex: 0 0 16.666667%;\n max-width: 16.666667%;\n }\n .col-xl-3 {\n flex: 0 0 25%;\n max-width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 33.333333%;\n max-width: 33.333333%;\n }\n .col-xl-5 {\n flex: 0 0 41.666667%;\n max-width: 41.666667%;\n }\n .col-xl-6 {\n flex: 0 0 50%;\n max-width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 58.333333%;\n max-width: 58.333333%;\n }\n .col-xl-8 {\n flex: 0 0 66.666667%;\n max-width: 66.666667%;\n }\n .col-xl-9 {\n flex: 0 0 75%;\n max-width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 83.333333%;\n max-width: 83.333333%;\n }\n .col-xl-11 {\n flex: 0 0 91.666667%;\n max-width: 91.666667%;\n }\n .col-xl-12 {\n flex: 0 0 100%;\n max-width: 100%;\n }\n .order-xl-first {\n order: -1;\n }\n .order-xl-last {\n order: 13;\n }\n .order-xl-0 {\n order: 0;\n }\n .order-xl-1 {\n order: 1;\n }\n .order-xl-2 {\n order: 2;\n }\n .order-xl-3 {\n order: 3;\n }\n .order-xl-4 {\n order: 4;\n }\n .order-xl-5 {\n order: 5;\n }\n .order-xl-6 {\n order: 6;\n }\n .order-xl-7 {\n order: 7;\n }\n .order-xl-8 {\n order: 8;\n }\n .order-xl-9 {\n order: 9;\n }\n .order-xl-10 {\n order: 10;\n }\n .order-xl-11 {\n order: 11;\n }\n .order-xl-12 {\n order: 12;\n }\n .offset-xl-0,\n .col-xl-offset-0 {\n margin-left: 0;\n }\n .offset-xl-1,\n .col-xl-offset-1 {\n margin-left: 8.333333%;\n }\n .offset-xl-2,\n .col-xl-offset-2 {\n margin-left: 16.666667%;\n }\n .offset-xl-3,\n .col-xl-offset-3 {\n margin-left: 25%;\n }\n .offset-xl-4,\n .col-xl-offset-4 {\n margin-left: 33.333333%;\n }\n .offset-xl-5,\n .col-xl-offset-5 {\n margin-left: 41.666667%;\n }\n .offset-xl-6,\n .col-xl-offset-6 {\n margin-left: 50%;\n }\n .offset-xl-7,\n .col-xl-offset-7 {\n margin-left: 58.333333%;\n }\n .offset-xl-8,\n .col-xl-offset-8 {\n margin-left: 66.666667%;\n }\n .offset-xl-9,\n .col-xl-offset-9 {\n margin-left: 75%;\n }\n .offset-xl-10,\n .col-xl-offset-10 {\n margin-left: 83.333333%;\n }\n .offset-xl-11,\n .col-xl-offset-11 {\n margin-left: 91.666667%;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin pagination() {\n /* ==========================================================================\n Pagination\n\n Default Mendix pagination widget.\n ========================================================================== */\n\n .widget-pagination {\n overflow: unset;\n\n .pagination {\n overflow: unset;\n\n .btn {\n &:hover {\n color: $btn-default-color;\n background-color: $btn-default-bg-hover;\n }\n\n &:focus {\n outline: unset;\n outline-offset: unset;\n box-shadow: 0 0 0 0.3rem $color-primary-light;\n }\n }\n\n ul {\n margin-top: unset;\n margin-bottom: unset;\n\n li {\n display: inline-flex;\n align-items: center;\n width: unset;\n min-width: 24px;\n min-height: 24px;\n margin-right: 16px;\n padding: 4px 8px;\n transition: all 0.2s ease-in-out;\n color: $font-color-default;\n border-radius: $border-radius-default;\n\n &:last-child {\n margin-right: 0;\n }\n\n &:not(.break-view) {\n &:hover {\n color: $btn-default-color;\n background-color: $btn-default-bg-hover;\n }\n\n &:focus {\n outline: unset;\n outline-offset: unset;\n box-shadow: 0 0 0 0.3rem $color-primary-light;\n }\n\n &.active {\n color: $btn-primary-color;\n background-color: $btn-primary-bg;\n }\n\n &.active:hover {\n color: $btn-primary-color;\n background-color: $btn-primary-bg-hover;\n }\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress() {\n /* ==========================================================================\n Progress\n\n Default Mendix progress widget.\n ========================================================================== */\n\n .mx-progress {\n color: $font-color-default;\n background: $bg-color-secondary;\n\n .mx-progress-message {\n color: $font-color-default;\n }\n\n .mx-progress-indicator {\n position: relative;\n overflow: hidden;\n width: 100%;\n max-width: 100%;\n height: 2px;\n margin: auto;\n padding: 0;\n border-radius: 0;\n background: $gray-lighter;\n\n &:before,\n &:after {\n position: absolute;\n top: 0;\n left: 0;\n display: block;\n width: 50%;\n height: 2px;\n content: \"\";\n transform: translate3d(-100%, 0, 0);\n background: $brand-primary;\n }\n\n &::before {\n animation: loader 2s infinite;\n }\n\n &::after {\n animation: loader 2s -2s infinite;\n }\n }\n }\n\n @keyframes loader {\n 0% {\n transform: translate3d(-100%, 0, 0);\n }\n 100% {\n transform: translate3d(200%, 0, 0);\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-bar() {\n /* ==========================================================================\n Progress bar\n\n Default Mendix progress bar widget.\n ========================================================================== */\n\n .progress {\n overflow: hidden;\n display: flex;\n flex-direction: row;\n }\n\n .progress-bar {\n align-self: flex-start;\n width: 0;\n height: 100%;\n transition: width 0.6s ease;\n text-align: center;\n color: #ffffff;\n border-radius: $border-radius-default;\n font-weight: $font-weight-semibold;\n }\n\n .progress-striped .progress-bar,\n .progress-bar-striped {\n background-image: linear-gradient(\n 45deg,\n rgba(255, 255, 255, 0.15) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.15) 50%,\n rgba(255, 255, 255, 0.15) 75%,\n transparent 75%,\n transparent\n );\n background-size: 40px 40px;\n }\n\n .widget-progress-bar.active .progress-bar,\n .progress.active .progress-bar,\n .progress-bar.active {\n animation: progress-bar-stripes 2s linear infinite;\n }\n\n @keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-bar-helpers() {\n /* ==========================================================================\n Progress Bar\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-progress-bar {\n width: 100%;\n\n .progress {\n border-radius: $border-radius-default;\n background-color: $bg-color;\n }\n }\n\n .progress-bar-medium .progress,\n .progress-bar-medium .progress-bar {\n height: 16px;\n line-height: 16px;\n font-size: $font-size-small;\n }\n\n .progress-bar-small .progress,\n .progress-bar-small .progress-bar {\n height: 8px;\n line-height: 8px;\n font-size: 0px;\n }\n\n .progress-bar-small .progress-bar > * {\n // Specifically to hide custom labels.\n display: none;\n }\n\n .progress-bar-large .progress,\n .progress-bar-large .progress-bar {\n height: 24px;\n line-height: 24px;\n font-size: $font-size-default;\n }\n\n .widget-progress-bar-clickable:hover {\n cursor: pointer;\n }\n\n .widget-progress-bar.progress-bar-primary .progress-bar {\n background-color: $brand-primary;\n }\n\n .widget-progress-bar.progress-bar-success .progress-bar {\n background-color: $brand-success;\n }\n\n .widget-progress-bar.progress-bar-warning .progress-bar {\n background-color: $brand-warning;\n }\n\n .widget-progress-bar.progress-bar-danger .progress-bar {\n background-color: $brand-danger;\n }\n\n .widget-progress-bar-alert.widget-progress-bar-text-contrast .progress-bar {\n color: $color-danger-darker;\n }\n\n .widget-progress-bar-text-contrast .progress-bar {\n color: $font-color-default;\n }\n\n .widget-progress-bar-negative {\n float: right;\n display: block;\n }\n\n .widget-progress-bar > .alert {\n margin-top: 24px;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-circle() {\n /* ==========================================================================\n Progress Circle\n\n Default Mendix progress circle widget.\n ========================================================================== */\n\n .widget-progress-circle {\n display: inline-block;\n }\n\n .widget-progress-circle-trail-path {\n stroke: $bg-color;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin progress-circle-helpers() {\n /* ==========================================================================\n Progress Circle\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n //== Progress circle and label colors\n .widget-progress-circle-primary {\n .widget-progress-circle-path {\n stroke: $brand-primary;\n }\n\n .progressbar-text {\n color: $brand-primary !important;\n }\n }\n\n .widget-progress-circle-success {\n .widget-progress-circle-path {\n stroke: $brand-success;\n }\n\n .progressbar-text {\n color: $brand-success !important;\n }\n }\n\n .widget-progress-circle-warning {\n .widget-progress-circle-path {\n stroke: $brand-warning;\n }\n\n .progressbar-text {\n color: $brand-warning !important;\n }\n }\n\n .widget-progress-circle-danger {\n .widget-progress-circle-path {\n stroke: $brand-danger;\n }\n\n .progressbar-text {\n color: $brand-danger !important;\n }\n }\n\n //== Sizes\n .widget-progress-circle-thickness-medium {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 8px;\n }\n }\n\n .widget-progress-circle-thickness-small {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 4px;\n }\n }\n\n .widget-progress-circle-thickness-large {\n .widget-progress-circle-trail-path,\n .widget-progress-circle-path {\n stroke-width: 16px;\n }\n }\n\n //== Progress label container\n .progress-circle-label-container {\n position: relative;\n margin: 0;\n\n .progressbar-text {\n position: absolute;\n left: 50%;\n top: 50%;\n padding: 0px;\n margin: 0px;\n transform: translate(-50%, -50%);\n // Original default from the `progressbar.js` library\n color: rgb(85, 85, 85);\n }\n }\n\n .widget-progress-circle-clickable {\n cursor: pointer;\n }\n\n @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n .widget-progress-circle > div {\n height: 0;\n padding: 0;\n width: 100%;\n padding-bottom: 100%;\n\n & > svg {\n top: 0;\n left: 0;\n height: 100%;\n position: absolute;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin rating() {\n /* ==========================================================================\n Rating\n\n Default Mendix rating widget.\n ========================================================================== */\n\n .widget-star-rating-empty {\n color: #cccccc;\n }\n\n .widget-star-rating-full-widget {\n color: #ffa611;\n }\n\n .widget-star-rating-full-default {\n color: #ced0d3;\n }\n\n .widget-star-rating-font-medium {\n font-size: 30px;\n }\n\n .widget-rating {\n .rating-icon {\n font-size: 24px;\n }\n\n .rating-icon-empty {\n color: #ccc;\n }\n\n .rating-icon-full {\n color: #ffa611;\n }\n\n .rating-item {\n &:focus:not(:focus-visible) {\n .rating-image,\n .rating-icon {\n outline: none;\n }\n }\n\n &:focus-visible {\n .rating-image,\n .rating-icon {\n outline: 1px solid $brand-primary;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin rating-helpers() {\n /* ==========================================================================\n Rating\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-star-rating-full-primary {\n color: $brand-primary;\n }\n\n .widget-star-rating-full-success {\n color: $brand-success;\n }\n\n .widget-star-rating-full-info {\n color: $brand-info;\n }\n\n .widget-star-rating-full-warning {\n color: $brand-warning;\n }\n\n .widget-star-rating-full-danger {\n color: $brand-danger;\n }\n\n .widget-star-rating-full-inverse {\n color: $brand-inverse;\n }\n\n .widget-rating {\n &.widget-rating-small {\n .rating-icon {\n font-size: 16px;\n }\n .rating-image {\n height: 16px;\n }\n }\n &.widget-rating-large {\n .rating-icon {\n font-size: 32px;\n }\n .rating-image {\n height: 32px;\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@import \"../helpers/slider-color-variant\";\n\n@mixin range-slider() {\n /* ==========================================================================\n Range slider\n\n Default Mendix range slider widget.\n ========================================================================== */\n\n .widget-range-slider {\n margin-bottom: 16px;\n padding: 5px 10px;\n\n .rc-slider-handle {\n border-color: $brand-default;\n }\n\n .rc-slider.rc-slider-with-marks {\n padding-bottom: 25px;\n }\n\n @include slider-color-variant($brand-primary);\n }\n}\n","@mixin slider-color-variant($color) {\n .rc-slider:not(.rc-slider-disabled) {\n .rc-slider-track {\n background-color: $color;\n }\n\n .rc-slider-handle:focus {\n border-color: $color;\n box-shadow: 0 0 0 5px lighten($color, 25%);\n outline: none;\n }\n\n .rc-slider-handle-click-focused:focus {\n border-color: lighten($color, 25%);\n box-shadow: unset;\n }\n\n .rc-slider-dot-active,\n .rc-slider-handle:hover {\n border-color: $color;\n }\n\n .rc-slider-handle:active {\n border-color: $color;\n box-shadow: 0 0 5px $color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@import \"slider-color-variant\";\n\n@mixin range-slider-helpers() {\n /* ==========================================================================\n Range Slider\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-range-slider-primary {\n @include slider-color-variant($brand-primary);\n }\n\n .widget-range-slider-success {\n @include slider-color-variant($brand-success);\n }\n\n .widget-range-slider-warning {\n @include slider-color-variant($brand-warning);\n }\n\n .widget-range-slider-danger {\n @include slider-color-variant($brand-danger);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@import \"../helpers/slider-color-variant\";\n\n@mixin slider() {\n /* ==========================================================================\n Slider\n\n Default Mendix slider widget.\n ========================================================================== */\n\n .widget-slider {\n margin-bottom: 16px;\n padding: 5px 10px;\n\n .rc-slider-handle {\n border-color: $brand-default;\n }\n\n .rc-slider.rc-slider-with-marks {\n padding-bottom: 25px;\n }\n\n @include slider-color-variant($brand-primary);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n@import \"slider-color-variant\";\n\n@mixin slider-helpers() {\n /* ==========================================================================\n Slider\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-slider-primary {\n @include slider-color-variant($brand-primary);\n }\n\n .widget-slider-success {\n @include slider-color-variant($brand-success);\n }\n\n .widget-slider-warning {\n @include slider-color-variant($brand-warning);\n }\n\n .widget-slider-danger {\n @include slider-color-variant($brand-danger);\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin timeline() {\n /* ==========================================================================\n Timeline\n\n Widget styles\n ========================================================================== */\n\n //Timeline grouping\n .widget-timeline-date-header {\n display: flex;\n justify-content: center;\n width: $timeline-grouping-size;\n overflow-wrap: break-word;\n padding: $spacing-small;\n border: 1px solid $timeline-grouping-border-color;\n border-radius: $timeline-grouping-border-radius;\n }\n\n //Timeline entries\n .widget-timeline-events-wrapper {\n display: flex;\n flex: 1;\n margin-left: $timeline-grouping-size/2;\n padding: $spacing-large 0 0 0;\n border-left: 1px solid $timeline-border-color;\n\n ul {\n flex: 1;\n padding: 0;\n list-style: none;\n margin-bottom: 0;\n }\n }\n\n //Timeline entry\n .widget-timeline-event {\n flex: 1;\n position: relative;\n margin-left: -1px;\n padding: 0 $spacing-large $spacing-large $spacing-large;\n margin-bottom: $spacing-medium;\n\n &.clickable {\n cursor: pointer;\n transition: background 0.8s;\n\n &:hover {\n .widget-timeline-title {\n }\n }\n }\n }\n\n //Timeline entry content wrapper\n .widget-timeline-icon-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n transform: translateX(-50%);\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: $timeline-icon-size;\n }\n\n img {\n max-width: 100%;\n max-height: 100%;\n }\n }\n\n .widget-timeline-content-wrapper {\n display: flex;\n\n .widget-timeline-date-time-wrapper {\n order: 2;\n margin-right: 0;\n }\n\n .widget-timeline-info-wrapper {\n flex: 1;\n order: 1;\n margin-right: $spacing-medium;\n }\n }\n\n .timeline-with-image .widget-timeline-content-wrapper {\n display: flex;\n\n .widget-timeline-date-time-wrapper {\n order: 1;\n margin-right: $spacing-medium;\n }\n\n .widget-timeline-info-wrapper {\n flex: 1;\n order: 2;\n }\n }\n\n //Timeline entry components\n .widget-timeline-icon-circle {\n width: $timeline-icon-size;\n height: $timeline-icon-size;\n border-radius: 50%;\n background-color: $timeline-icon-color;\n }\n\n .widget-timeline-title {\n @extend h5;\n }\n\n .widget-timeline-description {\n }\n\n .widget-timeline-no-divider {\n }\n\n .widget-eventTime {\n @extend h5;\n color: $timeline-event-time-color;\n }\n\n .timeline-entry-image {\n display: flex;\n justify-content: center;\n align-content: center;\n border-radius: $border-radius-default;\n height: $timeline-image-size;\n width: $timeline-image-size;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin tooltip() {\n /* ==========================================================================\n Tooltip\n\n Widget styles\n ========================================================================== */\n\n // Tooltip inline\n .widget-tooltip-inline {\n display: inline-block;\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin helper-classes() {\n /* ==========================================================================\n Helper\n\n Default Mendix helpers\n ========================================================================== */\n $important-helpers-value: if($important-helpers, \" !important\", \"\");\n\n // Display properties\n .d-none {\n display: none #{$important-helpers-value};\n }\n\n .d-flex {\n display: flex #{$important-helpers-value};\n }\n\n .d-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n\n .d-inline {\n display: inline #{$important-helpers-value};\n }\n\n .d-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n\n .show,\n .d-block {\n display: block #{$important-helpers-value};\n }\n\n .table,\n .d-table {\n display: table #{$important-helpers-value};\n }\n\n .table-row,\n .d-table-row {\n display: table-row #{$important-helpers-value};\n }\n\n .table-cell,\n .d-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n\n .hide,\n .hidden {\n display: none #{$important-helpers-value};\n visibility: hidden #{$important-helpers-value};\n }\n\n .invisible {\n visibility: hidden #{$important-helpers-value};\n }\n\n .display-ie8-only:not([attr*=\"\"]) {\n display: none #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n }\n\n .list-nostyle {\n ul {\n margin: 0 #{$important-helpers-value};\n padding: 0 #{$important-helpers-value};\n\n li {\n list-style-type: none #{$important-helpers-value};\n }\n }\n }\n\n .nowrap,\n .nowrap * {\n overflow: hidden #{$important-helpers-value};\n // Star for inside an element, IE8 span > a\n white-space: nowrap #{$important-helpers-value};\n text-overflow: ellipsis #{$important-helpers-value};\n }\n\n // Render DIV as Table Cells\n .table {\n display: table #{$important-helpers-value};\n }\n\n .table-row {\n display: table-row #{$important-helpers-value};\n }\n\n .table-cell {\n display: table-cell #{$important-helpers-value};\n }\n\n // Quick floats\n .pull-left {\n float: left #{$important-helpers-value};\n }\n\n .pull-right {\n float: right #{$important-helpers-value};\n }\n\n // Align options\n .align-top {\n vertical-align: top #{$important-helpers-value};\n }\n\n .align-middle {\n vertical-align: middle #{$important-helpers-value};\n }\n\n .align-bottom {\n vertical-align: bottom #{$important-helpers-value};\n }\n\n // Flex alignments\n .row-left {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-start #{$important-helpers-value};\n }\n\n .row-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .row-right {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-flow: row #{$important-helpers-value};\n justify-content: flex-end #{$important-helpers-value};\n }\n\n .col-left {\n display: flex #{$important-helpers-value};\n align-items: flex-start #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .col-center {\n display: flex #{$important-helpers-value};\n align-items: center #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .col-right {\n display: flex #{$important-helpers-value};\n align-items: flex-end #{$important-helpers-value};\n flex-direction: column #{$important-helpers-value};\n justify-content: center #{$important-helpers-value};\n }\n\n .shadow-small {\n box-shadow: $shadow-small $shadow-color;\n margin-bottom: 5px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n .shadow-medium {\n box-shadow: $shadow-medium $shadow-color;\n margin-bottom: 15px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n\n .shadow-large {\n box-shadow: $shadow-large $shadow-color;\n margin-bottom: 25px;\n border-width: 1px #{$important-helpers-value};\n border-style: solid;\n border-color: $shadow-color-border;\n }\n\n // Media\n @media (max-width: $screen-sm-max) {\n .hide-phone {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-tablet {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-lg) {\n .hide-desktop {\n display: none #{$important-helpers-value};\n }\n }\n\n @media (max-width: $screen-xs-max) {\n .hide-xs,\n .hidden-xs,\n .d-xs-none {\n display: none #{$important-helpers-value};\n }\n .d-xs-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xs-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xs-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xs-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xs-block {\n display: block #{$important-helpers-value};\n }\n .d-xs-table {\n display: table #{$important-helpers-value};\n }\n .d-xs-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xs-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {\n .hide-sm,\n .hidden-sm,\n .d-sm-none {\n display: none #{$important-helpers-value};\n }\n .d-sm-flex {\n display: flex #{$important-helpers-value};\n }\n .d-sm-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-sm-inline {\n display: inline #{$important-helpers-value};\n }\n .d-sm-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-sm-block {\n display: block #{$important-helpers-value};\n }\n .d-sm-table {\n display: table #{$important-helpers-value};\n }\n .d-sm-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-sm-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-md) and (max-width: $screen-md-max) {\n .hide-md,\n .hidden-md,\n .d-md-none {\n display: none #{$important-helpers-value};\n }\n .d-md-flex {\n display: flex #{$important-helpers-value};\n }\n .d-md-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-md-inline {\n display: inline #{$important-helpers-value};\n }\n .d-md-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-md-block {\n display: block #{$important-helpers-value};\n }\n .d-md-table {\n display: table #{$important-helpers-value};\n }\n .d-md-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-md-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-lg) and (max-width: $screen-xl) {\n .hide-lg,\n .hidden-lg,\n .d-lg-none {\n display: none #{$important-helpers-value};\n }\n .d-lg-flex {\n display: flex #{$important-helpers-value};\n }\n .d-lg-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-lg-inline {\n display: inline #{$important-helpers-value};\n }\n .d-lg-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-lg-block {\n display: block #{$important-helpers-value};\n }\n .d-lg-table {\n display: table #{$important-helpers-value};\n }\n .d-lg-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-lg-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n @media (min-width: $screen-xl) {\n .hide-xl,\n .hidden-xl,\n .d-xl-none {\n display: none #{$important-helpers-value};\n }\n .d-xl-flex {\n display: flex #{$important-helpers-value};\n }\n .d-xl-inline-flex {\n display: inline-flex #{$important-helpers-value};\n }\n .d-xl-inline {\n display: inline #{$important-helpers-value};\n }\n .d-xl-inline-block {\n display: inline-block #{$important-helpers-value};\n }\n .d-xl-block {\n display: block #{$important-helpers-value};\n }\n .d-xl-table {\n display: table #{$important-helpers-value};\n }\n .d-xl-table-row {\n display: table-row #{$important-helpers-value};\n }\n .d-xl-table-cell {\n display: table-cell #{$important-helpers-value};\n }\n }\n\n //Box-shadow\n\n .shadow {\n box-shadow: 0 2px 20px 1px rgba(5, 15, 129, 0.05) #{$important-helpers-value};\n }\n\n //Height helpers\n\n .h-25 {\n height: 25% #{$important-helpers-value};\n }\n\n .h-50 {\n height: 50% #{$important-helpers-value};\n }\n\n .h-75 {\n height: 75% #{$important-helpers-value};\n }\n\n .h-100 {\n height: 100% #{$important-helpers-value};\n }\n\n //Width helpers\n\n .w-25 {\n width: 25% #{$important-helpers-value};\n }\n\n .w-50 {\n width: 50% #{$important-helpers-value};\n }\n\n .w-75 {\n width: 75% #{$important-helpers-value};\n }\n\n .w-100 {\n width: 100% #{$important-helpers-value};\n }\n\n //Border helpers\n .border {\n border: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-top {\n border-top: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-bottom {\n border-bottom: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-left {\n border-left: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-right {\n border-right: 1px solid $border-color-default #{$important-helpers-value};\n }\n\n .border-rounded {\n border-radius: $border-radius-default #{$important-helpers-value};\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin barcode-scanner() {\n /* ==========================================================================\n Barcode-scanner\n\n Override of default Bootstrap barcode-scanner style\n ========================================================================== */\n\n .mx-barcode-scanner {\n background: #000000;\n z-index: 110;\n\n .close-button {\n color: white;\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n font-size: 16px;\n }\n }\n\n .video-canvas {\n .canvas-background {\n background-color: rgba(0, 0, 0, 0.7);\n }\n\n .canvas-middle {\n .canvas-middle-middle {\n $corner-offset: 13px;\n .corner {\n $corner-border: 5px solid #ffffff;\n border-left: $corner-border;\n border-top: $corner-border;\n\n &.corner-top-left {\n top: -$corner-offset;\n left: -$corner-offset;\n }\n &.corner-top-right {\n top: -$corner-offset;\n right: -$corner-offset;\n transform: rotate(90deg);\n }\n &.corner-bottom-right {\n bottom: -$corner-offset;\n right: -$corner-offset;\n transform: rotate(180deg);\n }\n &.corner-bottom-left {\n bottom: -$corner-offset;\n left: -$corner-offset;\n transform: rotate(270deg);\n }\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin accordion() {\n /* ==========================================================================\n Accordion\n\n Default Mendix accordion widget styles.\n ========================================================================== */\n\n .widget-accordion {\n .widget-accordion-group {\n @include get-accordion-group-styles(\n $accordion-header-default-bg,\n $accordion-header-default-bg-hover,\n $accordion-header-default-color,\n $brand-primary,\n $accordion-default-border-color\n );\n }\n\n &.widget-accordion-preview {\n .widget-accordion-group {\n @include get-accordion-preview-group-styles($accordion-header-default-color);\n }\n }\n }\n}\n\n@mixin get-accordion-group-styles($background-color, $background-color-hover, $color, $color-hover, $border-color) {\n border-color: $border-color;\n background-color: $bg-color-secondary;\n\n &:first-child {\n border-top-left-radius: $border-radius-default;\n border-top-right-radius: $border-radius-default;\n\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n border-top-left-radius: calc(#{$border-radius-default} - 1px);\n border-top-right-radius: calc(#{$border-radius-default} - 1px);\n }\n }\n\n &:last-child {\n border-bottom-left-radius: $border-radius-default;\n border-bottom-right-radius: $border-radius-default;\n }\n\n &.widget-accordion-group-collapsed:last-child,\n &.widget-accordion-group-collapsing:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n border-bottom-left-radius: calc(#{$border-radius-default} - 1px);\n border-bottom-right-radius: calc(#{$border-radius-default} - 1px);\n }\n }\n\n &.widget-accordion-group-collapsing:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n transition: border-radius 5ms ease 200ms;\n }\n }\n\n &.widget-accordion-group-expanding:last-child {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n transition: border-radius 5ms ease 80ms;\n }\n }\n\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n cursor: auto;\n background-color: $background-color;\n padding: $spacing-medium;\n\n > :is(h1, h2, h3, h4, h5, h6) {\n font-size: $font-size-h5;\n font-weight: $font-weight-header;\n }\n\n > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color;\n }\n\n .widget-accordion-group-header-button-icon {\n fill: $color;\n }\n\n &.widget-accordion-group-header-button-clickable {\n &:hover,\n &:focus,\n &:active {\n background-color: $background-color-hover;\n\n > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color-hover;\n }\n\n .widget-accordion-group-header-button-icon {\n fill: $color-hover;\n }\n }\n }\n }\n\n > .widget-accordion-group-content-wrapper > .widget-accordion-group-content {\n border-color: $border-color;\n padding: $spacing-small $spacing-medium $spacing-large $spacing-medium;\n }\n}\n\n@mixin get-accordion-preview-group-styles($color) {\n .widget-accordion-group-header-button {\n > div > :is(h1, h2, h3, h4, h5, h6) {\n font-size: $font-size-h5;\n font-weight: $font-weight-header;\n }\n\n > div > :is(h1, h2, h3, h4, h5, h6, p, span) {\n color: $color;\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin accordion-helpers() {\n /* ==========================================================================\n Accordion\n\n //== Design Properties\n //## Helper classes to change the look and feel of the component\n ========================================================================== */\n\n .widget-accordion {\n .widget-accordion-group {\n &.widget-accordion-brand-primary {\n @include get-accordion-group-styles(\n $accordion-header-primary-bg,\n $accordion-header-primary-bg-hover,\n $accordion-header-primary-color,\n $accordion-header-primary-color,\n $accordion-primary-border-color\n );\n }\n\n &.widget-accordion-brand-secondary {\n @include get-accordion-group-styles(\n $accordion-header-secondary-bg,\n $accordion-header-secondary-bg-hover,\n $accordion-header-secondary-color,\n $accordion-header-secondary-color,\n $accordion-secondary-border-color\n );\n }\n\n &.widget-accordion-brand-success {\n @include get-accordion-group-styles(\n $accordion-header-success-bg,\n $accordion-header-success-bg-hover,\n $accordion-header-success-color,\n $accordion-header-success-color,\n $accordion-success-border-color\n );\n }\n\n &.widget-accordion-brand-warning {\n @include get-accordion-group-styles(\n $accordion-header-warning-bg,\n $accordion-header-warning-bg-hover,\n $accordion-header-warning-color,\n $accordion-header-warning-color,\n $accordion-warning-border-color\n );\n }\n\n &.widget-accordion-brand-danger {\n @include get-accordion-group-styles(\n $accordion-header-danger-bg,\n $accordion-header-danger-bg-hover,\n $accordion-header-danger-color,\n $accordion-header-danger-color,\n $accordion-danger-border-color\n );\n }\n }\n\n &.widget-accordion-preview {\n .widget-accordion-group {\n &.widget-accordion-brand-primary {\n @include get-accordion-preview-group-styles($accordion-header-primary-color);\n }\n\n &.widget-accordion-brand-secondary {\n @include get-accordion-preview-group-styles($accordion-header-secondary-color);\n }\n\n &.widget-accordion-brand-success {\n @include get-accordion-preview-group-styles($accordion-header-success-color);\n }\n\n &.widget-accordion-brand-warning {\n @include get-accordion-preview-group-styles($accordion-header-warning-color);\n }\n\n &.widget-accordion-brand-danger {\n @include get-accordion-preview-group-styles($accordion-header-danger-color);\n }\n }\n }\n\n &.widget-accordion-bordered-all {\n > .widget-accordion-group {\n &:first-child {\n border-top-style: solid;\n }\n\n border-right-style: solid;\n border-left-style: solid;\n }\n }\n\n &.widget-accordion-bordered-horizontal {\n > .widget-accordion-group {\n &:first-child {\n border-top-style: solid;\n }\n }\n }\n\n &.widget-accordion-bordered-none {\n > .widget-accordion-group {\n border-bottom: none;\n }\n }\n\n &.widget-accordion-striped {\n > .widget-accordion-group:not(:is(.widget-accordion-brand-primary, .widget-accordion-brand-secondary, .widget-accordion-brand-success, .widget-accordion-brand-warning, .widget-accordion-brand-danger)):nth-child(2n\n + 1) {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n background-color: $accordion-bg-striped;\n\n &.widget-accordion-group-header-button-clickable {\n &:hover,\n &:focus,\n &:active {\n background-color: $accordion-bg-striped-hover;\n }\n }\n }\n\n > .widget-accordion-group-content {\n background-color: $accordion-bg-striped;\n }\n }\n }\n\n &.widget-accordion-compact {\n > .widget-accordion-group {\n > .widget-accordion-group-header > .widget-accordion-group-header-button {\n padding: $spacing-smaller $spacing-small;\n }\n\n > .widget-accordion-group-content {\n padding: $spacing-smaller $spacing-small $spacing-medium $spacing-small;\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n@mixin dijit-widget() {\n /*\n * Mendix Documentation\n * Special styles for presenting components\n */\n\n /*\n * Dijit Widgets\n *\n * Default Dojo Dijit Widgets\n */\n\n /*\n * Dijit Tooltip Widget\n *\n * Default tooltip used for Mendix widgets\n */\n\n .mx-tooltip {\n .dijitTooltipContainer {\n border-width: 1px;\n border-color: $gray-light;\n border-radius: 4px;\n background: #ffffff;\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n\n .mx-tooltip-content {\n padding: 12px;\n }\n\n .form-group {\n margin-bottom: 4px;\n }\n }\n\n .dijitTooltipConnector {\n width: 0;\n height: 0;\n margin-left: -8px;\n border-width: 10px 10px 10px 0;\n border-style: solid;\n border-color: transparent;\n border-right-color: $gray-light;\n }\n }\n\n /*\n * Dijit Border Container\n *\n * Used in Mendix as split pane containers\n */\n\n .dijitBorderContainer {\n padding: 8px;\n background-color: #fcfcfc;\n\n .dijitSplitterV,\n .dijitGutterV {\n width: 5px;\n border: 0;\n background: #fcfcfc;\n }\n\n .dijitSplitterH,\n .dijitGutterH {\n height: 5px;\n border: 0;\n background: #fcfcfc;\n }\n\n .dijitSplitterH {\n .dijitSplitterThumb {\n top: 2px;\n width: 19px;\n height: 1px;\n background: #b0b0b0;\n }\n }\n\n .dijitSplitterV {\n .dijitSplitterThumb {\n left: 2px;\n width: 1px;\n height: 19px;\n background: #b0b0b0;\n }\n }\n\n .dijitSplitContainer-child,\n .dijitBorderContainer-child {\n border: 1px solid #cccccc;\n }\n\n .dijitBorderContainer-dijitTabContainerTop,\n .dijitBorderContainer-dijitTabContainerBottom,\n .dijitBorderContainer-dijitTabContainerLeft,\n .dijitBorderContainer-dijitTabContainerRight {\n border: none;\n }\n\n .dijitBorderContainer-dijitBorderContainer {\n padding: 0;\n border: none;\n }\n\n .dijitSplitterActive {\n /* For IE8 and earlier */\n margin: 0;\n opacity: 0.6;\n background-color: #aaaaaa;\n background-image: none;\n font-size: 1px;\n }\n\n .dijitSplitContainer-dijitContentPane,\n .dijitBorderContainer-dijitContentPane {\n padding: 8px;\n background-color: #ffffff;\n }\n }\n\n /*\n * Dijit Menu Popup\n *\n * Used in datepickers and calendar widgets\n */\n\n .dijitMenuPopup {\n margin-top: 8px;\n\n .dijitMenu {\n display: block;\n width: 200px !important;\n margin-top: 0; // No top margin because there is no parent with margin bottom\n padding: 12px 8px;\n border-radius: 3px;\n background: $brand-inverse;\n\n &:after {\n position: absolute;\n bottom: 100%;\n left: 20px;\n width: 0;\n height: 0;\n margin-left: -8px;\n content: \" \";\n pointer-events: none;\n border: medium solid transparent;\n border-width: 8px;\n border-bottom-color: $brand-inverse;\n }\n\n // Menu item\n .dijitMenuItem {\n background: transparent;\n\n .dijitMenuItemLabel {\n display: block;\n overflow: hidden;\n width: 180px !important;\n padding: 8px;\n text-overflow: ellipsis;\n color: #ffffff;\n border-radius: 3px;\n }\n\n // Hover\n &.dijitMenuItemHover {\n background: none;\n\n .dijitMenuItemLabel {\n background: $brand-primary;\n }\n }\n }\n\n // New label\n .tg_newlabelmenuitem {\n .dijitMenuItemLabel {\n font-weight: $font-weight-bold;\n }\n }\n\n // Seperator\n .dijitMenuSeparator {\n td {\n padding: 0;\n border-bottom-width: 3px;\n }\n\n .dijitMenuSeparatorIconCell {\n > div {\n margin: 0; //override dijit styling\n }\n }\n }\n }\n }\n}\n","//\n// DISCLAIMER:\n// Do not change this file because it is core styling.\n// Customizing core files will make updating Atlas much more difficult in the future.\n// To customize any core styling, copy the part you want to customize to styles/web/sass/app/ so the core styling is overwritten.\n//\n\n$default-android-color: #6fbeb5;\n$default-ios-color: rgb(100, 189, 99);\n\n@mixin bootstrap-style-ios($brand-style) {\n border-color: $brand-style;\n background-color: $brand-style;\n box-shadow: $brand-style 0 0 0 16px inset;\n}\n\n@mixin bootstrap-style-android($brand-style) {\n background-color: lighten($brand-style, 10%);\n}\n\n@mixin style($brand-key, $brand-variable) {\n div.widget-switch-brand-#{$brand-key} {\n .widget-switch {\n .widget-switch-btn-wrapper {\n &.checked {\n @include bootstrap-style-ios($brand-variable);\n }\n }\n }\n &.android {\n .widget-switch {\n .widget-switch-btn-wrapper {\n &.checked {\n @include bootstrap-style-android($brand-variable);\n\n .widget-switch-btn {\n background: $brand-variable;\n }\n }\n }\n }\n }\n }\n}\n\n// maintained for backwards compatibility prior to Switch 3.0.0.\n@mixin ios {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-ios($default-ios-color);\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-ios($brand-success);\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-ios($brand-info);\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-ios($brand-primary);\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-ios($brand-warning);\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-ios($brand-danger);\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-ios($brand-inverse);\n }\n }\n }\n}\n\n// maintained for backwards compatibility prior to Switch 3.0.0.\n@mixin android {\n .widget-switch-btn-wrapper {\n &.checked {\n &.widget-switch-btn-wrapper-default {\n @include bootstrap-style-android($default-android-color);\n\n .widget-switch-btn {\n background: $default-android-color;\n }\n }\n\n &.widget-switch-btn-wrapper-success {\n @include bootstrap-style-android($brand-success);\n\n .widget-switch-btn {\n background: $brand-success;\n }\n }\n\n &.widget-switch-btn-wrapper-info {\n @include bootstrap-style-android($brand-info);\n\n .widget-switch-btn {\n background: $brand-info;\n }\n }\n\n &.widget-switch-btn-wrapper-primary {\n @include bootstrap-style-android($brand-primary);\n\n .widget-switch-btn {\n background: $brand-primary;\n }\n }\n\n &.widget-switch-btn-wrapper-warning {\n @include bootstrap-style-android($brand-warning);\n\n .widget-switch-btn {\n background: $brand-warning;\n }\n }\n\n &.widget-switch-btn-wrapper-danger {\n @include bootstrap-style-android($brand-danger);\n\n .widget-switch-btn {\n background: $brand-danger;\n }\n }\n\n &.widget-switch-btn-wrapper-inverse {\n @include bootstrap-style-android($brand-inverse);\n\n .widget-switch-btn {\n background: $brand-inverse;\n }\n }\n }\n }\n}\n\n@mixin switch() {\n .widget-switch-btn-wrapper {\n &:focus {\n outline: 1px solid $brand-primary;\n }\n }\n\n @include style(\"primary\", $brand-primary);\n @include style(\"secondary\", $brand-default);\n @include style(\"success\", $brand-success);\n @include style(\"warning\", $brand-warning);\n @include style(\"danger\", $brand-danger);\n\n // below is maintained for backwards compatibility prior to Switch 3.0.0.\n div {\n &.widget-switch {\n &.iOS {\n @include ios;\n }\n\n &.android {\n @include android;\n }\n\n &.auto {\n @include ios;\n }\n }\n }\n\n html {\n div {\n &.dj_android {\n .widget-switch {\n &.auto {\n @include android;\n }\n }\n }\n\n &.dj_ios {\n .widget-switch {\n &.auto {\n @include ios;\n }\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n The core stucture of all atlas layouts\n========================================================================== */\n@mixin layout-atlas() {\n .layout-atlas {\n // Toggle button\n .toggle-btn {\n & > img,\n & > .glyphicon,\n & > .mx-icon-lined,\n & > .mx-icon-filled {\n margin: 0;\n }\n }\n .toggle-btn > .mx-icon-lined {\n font-family: \"Atlas_Core$Atlas\";\n }\n\n .toggle-btn > .mx-icon-filled {\n font-family: \"Atlas_Core$Atlas_Filled\";\n }\n\n .mx-scrollcontainer-open {\n .expand-btn > img {\n transform: rotate(180deg);\n }\n }\n\n // Sidebar\n .region-sidebar {\n background-color: $navsidebar-bg;\n @if not $use-modern-client {\n z-index: 101;\n }\n box-shadow: 0 0 4px rgb(0 0 0 / 14%), 2px 4px 8px rgb(0 0 0 / 28%);\n\n .mx-scrollcontainer-wrapper {\n display: flex;\n flex-direction: column;\n padding: $spacing-small 0;\n }\n\n .mx-navigationtree .navbar-inner > ul > li > a {\n padding: $spacing-medium;\n\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-small;\n }\n }\n\n .sidebar-heading {\n background: $navsidebar-sub-bg;\n }\n\n .toggle-btn {\n margin-right: $spacing-small;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n padding: $spacing-medium;\n }\n }\n\n // Topbar\n .region-topbar {\n position: relative;\n z-index: 60; // Show dropshadow\n min-height: $topbar-minimalheight;\n background-color: $navtopbar-bg;\n\n // Topbar Content\n .topbar-content {\n display: flex;\n align-items: center;\n min-height: $topbar-minimalheight;\n }\n\n // Toggle btn\n .toggle-btn {\n padding: 0;\n margin-right: $spacing-medium;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n // For your company, product, or project name\n .navbar-brand {\n display: inline-block;\n float: none; // reset bootstrap\n height: auto;\n padding: 0;\n line-height: inherit;\n font-size: 16px;\n margin-right: $spacing-small;\n\n img {\n display: inline-block;\n margin-right: $spacing-small;\n @if $brand-logo !=false {\n width: 0;\n height: 0;\n padding: ($brand-logo-height / 2) ($brand-logo-width / 2);\n background-image: url($brand-logo);\n background-repeat: no-repeat;\n background-position: left center;\n background-size: $brand-logo-width;\n } @else {\n width: auto;\n height: $brand-logo-height;\n }\n }\n\n a {\n margin-left: $spacing-small;\n color: $navbar-brand-name;\n font-size: 20px;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n }\n }\n\n .mx-navbar {\n display: inline-flex;\n vertical-align: middle;\n background: transparent;\n justify-content: center;\n align-items: center;\n\n & > .mx-navbar-item {\n & > a {\n margin-top: 5px;\n padding: 0 20px;\n }\n }\n }\n }\n\n @if (not $use-modern-client) {\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for phone layouts\n========================================================================== */\n@mixin layout-atlas-phone() {\n .layout-atlas-phone {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n\n .region-sidebar {\n .mx-navigationtree .navbar-inner > ul > li > a {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-medium;\n }\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for responsive layouts\n========================================================================== */\n@mixin layout-atlas-responsive() {\n $sidebar-icon-height: 52px;\n $sidebar-icon-width: 52px;\n\n .layout-atlas-responsive,\n .layout-atlas-responsive-default {\n @media (min-width: $screen-md) {\n --closed-sidebar-width: #{$navsidebar-width-closed};\n .mx-scrollcontainer-shrink:not(.mx-scrollcontainer-open) > .region-sidebar,\n .mx-scrollcontainer-push:not(.mx-scrollcontainer-open) > .region-sidebar,\n .mx-scrollcontainer-slide:not(.mx-scrollcontainer-open) > .region-sidebar {\n @if (not $use-modern-client) {\n width: $navsidebar-width-closed !important;\n }\n\n .mx-scrollcontainer-wrapper .mx-navigationtree ul li {\n &.mx-navigationtree-has-items a {\n white-space: nowrap;\n }\n\n &.mx-navigationtree-has-items:hover > ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-icon-width;\n display: block;\n min-width: auto;\n padding: $spacing-small 0;\n\n & > li.mx-navigationtree-has-items:hover > ul {\n left: 100%;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n\n .widget-sidebar:not(.widget-sidebar-expanded) {\n .mx-navigationtree ul li {\n &.mx-navigationtree-has-items:hover {\n ul {\n position: absolute;\n z-index: 100;\n top: 0;\n bottom: 0;\n left: $sidebar-icon-width;\n display: block;\n overflow-y: auto;\n min-width: auto;\n padding: $spacing-small 0;\n }\n }\n\n &.mx-navigationtree-collapsed,\n &.mx-navigationtree-has-items {\n ul {\n display: none;\n }\n }\n }\n }\n }\n\n @if (not $use-modern-client) {\n .mx-scrollcontainer-slide {\n &:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow: hidden;\n }\n\n &.mx-scrollcontainer-open > .region-sidebar {\n width: $navsidebar-width-closed !important;\n\n & > .mx-scrollcontainer-wrapper {\n position: relative;\n }\n }\n\n .region-sidebar > .mx-scrollcontainer-wrapper {\n z-index: 2;\n left: -$navsidebar-width-closed;\n background-color: inherit;\n }\n }\n\n // Push aside for mobile\n @media (max-width: $screen-sm-max) {\n .mx-scrollcontainer-open:not(.mx-scrollcontainer-slide) {\n width: 1100px;\n }\n\n .mx-scrollcontainer-slide .toggle-btn {\n display: inline-block !important;\n }\n }\n }\n\n // Sidebar\n .region-sidebar {\n .toggle-btn {\n width: $sidebar-icon-width;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n }\n\n .mx-scrollcontainer-wrapper {\n .toggle-btn-wrapper {\n display: flex;\n padding: $spacing-small;\n align-items: center;\n min-height: calc(#{$topbar-minimalheight} + 4px);\n background: $navsidebar-sub-bg;\n }\n\n .toggle-btn {\n padding: $spacing-medium;\n\n img {\n width: 24px;\n height: 24px;\n }\n }\n\n .toggle-text {\n color: #fff;\n font-weight: bold;\n }\n\n .mx-navigationtree .navbar-inner > ul > li {\n & > a {\n height: $sidebar-icon-height;\n padding: $spacing-small 0;\n white-space: nowrap;\n overflow: hidden;\n // Glyph icon\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n display: flex;\n align-items: center;\n justify-content: center;\n width: $sidebar-icon-width;\n height: $sidebar-icon-height;\n padding: $spacing-small $spacing-medium;\n border-radius: $border-radius-default;\n }\n }\n }\n }\n }\n\n // Topbar\n .region-topbar {\n padding: 0 $spacing-small;\n\n .toggle-btn {\n padding: 0;\n border-color: transparent;\n border-radius: 0;\n background: transparent;\n display: flex;\n }\n\n .mx-icon-filled,\n .mx-icon-lined {\n font-size: 20px;\n }\n }\n }\n\n // Topbar variant\n .layout-atlas-responsive-topbar {\n .region-topbar {\n padding: 0 $spacing-medium;\n @media (max-width: $screen-sm-max) {\n padding: 0 $spacing-small;\n }\n }\n }\n\n // Fix Safari issue of sidebar disappearing\n .profile-tablet {\n .mx-scrollcontainer:not(.mx-scrollcontainer-open) > .region-sidebar {\n overflow-y: hidden;\n\n .mx-scrollcontainer-wrapper {\n overflow: visible;\n }\n }\n }\n}\n","/* ==========================================================================\n Atlas layout\n\n Extra styling for tablet layouts\n========================================================================== */\n@mixin layout-atlas-tablet() {\n .layout-atlas-tablet {\n .region-topbar {\n min-height: $m-header-height;\n border-style: none;\n background-color: $m-header-bg;\n\n &::before {\n display: none;\n }\n }\n\n .region-sidebar {\n .mx-navigationtree .navbar-inner > ul > li > a {\n .glyphicon,\n .mx-icon-lined,\n .mx-icon-filled {\n margin-right: $spacing-medium;\n }\n }\n }\n }\n}\n","/* \r\n ==| Variables |=========================================================================================\r\n*/\r\n@import \"../../../theme/web/custom-variables.scss\"; \r\n@import \"variables\";\r\n@import \"helpers\";\r\n\r\n/* \r\n ==| Widget blocks |=====================================================================================\r\n These blocks contains styles directly related to the widget's appearance and are mostly unique styles\r\n needed to display the widget's UI correctly.\r\n*/\r\n\r\n@import \"feedback-button\";\r\n@import \"annotation-canvas\";\r\n@import \"annotation-frame\";\r\n\r\n/* \r\n ==| Generic blocks |====================================================================================\r\n These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and\r\n outline the basic styles of the widget (in accordance with Atlas UI).\r\n*/\r\n\r\n@import \"toolbar\";\r\n@import \"tool-button\";\r\n@import \"button-group\";\r\n@import \"button\";\r\n@import \"screenshot-preview\";\r\n@import \"underlay\";\r\n","/* \r\nAbout: =========================================================\r\n----------------------------------------------------------------\r\nThis styling targets the main Feedback Button rendered on your page.\r\nThe Feedback widget button can be rendered on page in 3 formats.\r\n\r\nRender Modes: ==================================================\r\n----------------------------------------------------------------\r\nEach render mode can be selected by double clicking the Feedback widget settings in Studio Pro.\r\n\r\n'Side Tab' - Fixes the button to the right hand margin and rotates by 270 degrees.\r\n'Button' - Mimics a normal Mendix button.\r\n'Do not render' - Hides the button on the live website but is still visible in the page editor for developers.\r\n\r\nCSS BEM Enumeration values: ====================================\r\n----------------------------------------------------------------\r\nAt a code level each render mode selected has a coresspoinding CSS BEM modifier value.\r\nUse these BEM modifiers to custom style each render mode.\r\n\r\nSide Tab = \"side\"\r\nButton = \"normal\"\r\nDo not render = \"none\"\r\n\r\n*/\r\n.mxfeedback-start-button {\r\n\r\n // &--normal {\r\n // Use this if you want to style the Feedback Button when set Render mode = 'Button'\r\n // }\r\n\r\n &--none {\r\n display: none !important;\r\n }\r\n &--side {\r\n position: fixed;\r\n top: 50%;\r\n right: 0;\r\n transform: translate(50%, -50%) rotate(270deg);\r\n transform-origin: bottom center;\r\n padding: $spacing-smaller $spacing-small;\r\n border: none;\r\n border-radius: $border-radius-default $border-radius-default 0 0;\r\n background-color: $btn-primary-bg;\r\n color: $btn-primary-color;\r\n font-size: $m-header-title-size;\r\n box-shadow: $mxfeedback-start-button-shadow;\r\n z-index: $mxfeedback-z-index-start-button;\r\n\r\n &:focus,\r\n &:hover {\r\n background-color: $btn-primary-bg-hover;\r\n }\r\n }\r\n}","//== z-index\r\n$mxfeedback-z-index-start-button: 999998 !default;\r\n$mxfeedback-z-index-underlay: 1000001 !default;\r\n$mxfeedback-z-index-lightbox: 1000002 !default;\r\n$mxfeedback-z-index-annotation-canvas: 1000003 !default;\r\n$mxfeedback-z-index-frame: 1000004 !default;\r\n\r\n//== Dimensions\r\n$mxfeedback-dialog-width: 560px;\r\n$mxfeedback-tooltip-width: 240px;\r\n$tool-list-width: 144px;\r\n$mxfeedback-dialog-spacing: 40px;\r\n\r\n//== Background colors\r\n$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9);\r\n$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9);\r\n$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5);\r\n\r\n//== Shadows\r\n$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%);\r\n$mxfeedback-shadow-small: 0 2px 4px 0;\r\n$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2);\r\n\r\n//== Icons\r\n$mxfeedback-icon-size-xs: 9px;\r\n$mxfeedback-icon-size-sm: 16px;\r\n$mxfeedback-icon-size-md: 20px;\r\n$mxfeedback-icon-size-lg: 24px;\r\n\r\n//== Annotation\r\n//## Annotation colors\r\n$annotation-colors: (\r\n \"midnight\": #2f3646,\r\n \"grey\": #c1c3c8,\r\n \"green\": #4fd84f,\r\n \"blue\": #47a9ff,\r\n \"purple\": #845eff,\r\n \"magenta\": #ca49f8,\r\n \"red\": #fb4a4c,\r\n \"yellow\": #fcc73a\r\n);\r\n\r\n//## Annotation thickness\r\n$annotation-thickness: (\r\n \"one\": 1px,\r\n \"two\": 2px,\r\n \"three\": 3px,\r\n \"four\": 4px,\r\n \"five\": 5px,\r\n \"six\": 6px\r\n);\r\n\r\n//## Annotation tool variables\r\n$mxfeedback-annotation-tool-size: 25px;\r\n","/// Creates the canvas for annotation. \r\n/// The background color is required to cover the page behind the annotation canvas.\r\n\r\n.mxfeedback-annotation-canvas {\r\n z-index: $mxfeedback-z-index-annotation-canvas;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: fixed;\r\n margin: 0;\r\n width: 100%;\r\n height: 100%;\r\n background-color: $mxfeedback-annotation-canvas-background-color;\r\n\r\n &__canvas {\r\n position: fixed;\r\n margin-top: $spacing-largest;\r\n }\r\n}\r\n","/// Centers the annotation tool and annotation canvas.\r\n\r\n.mxfeedback-annotation-frame {\r\n position: fixed;\r\n top: 0;\r\n bottom: 0;\r\n right: 0;\r\n left: 0;\r\n z-index: $mxfeedback-z-index-frame;\r\n}\r\n","/// Styles the annotation toolbar.\r\n\r\n.mxfeedback-toolbar {\r\n position: fixed;\r\n display: flex;\r\n align-items: center;\r\n gap: $gutter-size;\r\n top: $spacing-larger;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n padding: $spacing-medium $spacing-larger;\r\n background-color: $bg-color-secondary;\r\n border: 1px solid $border-color-default;\r\n border-radius: $border-radius-default;\r\n font-size: $font-size-small;\r\n box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color;\r\n z-index: $mxfeedback-z-index-frame;\r\n\r\n &--gap-md {\r\n gap: $gutter-size * 2;\r\n }\r\n\r\n &--gap-lg {\r\n gap: $gutter-size * 4;\r\n }\r\n}\r\n","/// Styles the color and thickness options in the annotation toolbar.\r\n\r\n.mxfeedback-tool-button {\r\n position: relative;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background: transparent;\r\n border: 0;\r\n padding: 0;\r\n\r\n &--active {\r\n color: $brand-primary;\r\n }\r\n\r\n &:focus-visible {\r\n color: $btn-primary-bg-hover;\r\n }\r\n\r\n &__inner {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n }\r\n\r\n &__icon {\r\n width: $mxfeedback-icon-size-lg;\r\n height: $mxfeedback-icon-size-lg;\r\n fill: currentColor;\r\n }\r\n\r\n &__label {\r\n margin-top: $spacing-smaller;\r\n color: inherit\r\n }\r\n\r\n &__caret {\r\n fill: $gray-darker;\r\n width: 8px;\r\n height: 8px;\r\n }\r\n\r\n &__dropdown {\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n height: 100%;\r\n }\r\n\r\n &__menu {\r\n display: flex;\r\n flex-direction: column;\r\n gap: $gutter-size;\r\n position: absolute;\r\n left: 50%;\r\n top: 100%;\r\n transform: translateX(-50%);\r\n padding: $spacing-small;\r\n background: $bg-color-secondary;\r\n border: 1px solid $border-color-default;\r\n border-radius: $border-radius-default;\r\n width: $tool-list-width;\r\n z-index: 1;\r\n }\r\n\r\n &__list {\r\n display: grid;\r\n grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier\r\n gap: calc(#{$gutter-size} / 2);\r\n\r\n &--col-3 {\r\n grid-template-columns: repeat(3, 1fr);\r\n }\r\n }\r\n\r\n &__color {\r\n position: relative;\r\n padding: 0;\r\n border: none;\r\n border-radius: 100%;\r\n aspect-ratio: 1 / 1;\r\n\r\n &:focus {\r\n outline: 2px solid $brand-primary;\r\n outline-offset: 2px;\r\n }\r\n\r\n @each $color, $class in $annotation-colors {\r\n &--#{$color} {\r\n background-color: $class;\r\n }\r\n }\r\n\r\n svg {\r\n width: 10px;\r\n height: 10px;\r\n stroke: $btn-primary-color;\r\n }\r\n }\r\n\r\n &__thickness {\r\n background-color: transparent;\r\n border: none;\r\n border-radius: $border-radius-default;\r\n aspect-ratio: 4 / 3;\r\n\r\n &:hover {\r\n background-color: $gray-light;\r\n }\r\n\r\n &:focus {\r\n outline: 2px solid $brand-primary;\r\n outline-offset: 2px;\r\n }\r\n\r\n &--selected {\r\n background-color: $gray;\r\n }\r\n\r\n &::before {\r\n content: \"\";\r\n display: block;\r\n background-color: map-get($annotation-colors, \"midnight\");\r\n width: 100%;\r\n transform: rotate(-45deg);\r\n }\r\n\r\n @each $thickness, $height in $annotation-thickness {\r\n &--#{$thickness} {\r\n &::before {\r\n height: $height;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/// Styles buttons in group to have proper distance between each other.\r\n/// Shows the buttons in column on a smaller screen.\r\n\r\n.mxfeedback-button-group {\r\n display: flex;\r\n justify-content: flex-end;\r\n gap: $spacing-small;\r\n\r\n &--screenshot-container {\r\n flex-direction: row-reverse;\r\n }\r\n\r\n &--gap-md {\r\n gap: $spacing-small * 2;\r\n }\r\n\r\n &--gap-lg {\r\n gap: $spacing-small * 4;\r\n }\r\n\r\n &--justify-start {\r\n justify-content: flex-start;\r\n }\r\n\r\n &--justify-center {\r\n justify-content: center;\r\n }\r\n\r\n &--row-xs {\r\n flex-direction: column;\r\n\r\n @include mq($screen-md) {\r\n flex-direction: row;\r\n }\r\n }\r\n}\r\n","/// For responsiveness\r\n\r\n@mixin mq($width, $type: min) {\r\n @media only screen and (#{$type}-width: $width) {\r\n @content;\r\n }\r\n}\r\n","/// Styles a button that contains an icon.\r\n/// In Atlas the icons are added differently.\r\n\r\n.mxfeedback-button {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n gap: $spacing-small;\r\n\r\n svg {\r\n width: $mxfeedback-icon-size-sm;\r\n height: $mxfeedback-icon-size-sm;\r\n fill: currentColor;\r\n }\r\n}\r\n","/// Styles the screenshot preview container in the form.\r\n\r\n.mxfeedback-screenshot-preview {\r\n display: flex;\r\n justify-content: left;\r\n position: relative;\r\n margin: $spacing-large auto;\r\n cursor: pointer;\r\n\r\n &__image > img {\r\n display: block;\r\n object-fit: contain;\r\n height: 100%;\r\n aspect-ratio: 16 / 9;\r\n border: 1px solid $gray;\r\n border-radius: $border-radius-default;\r\n\r\n &:hover {\r\n background-color: $gray-lighter;\r\n border: 1px solid $gray-dark;\r\n border-radius: $border-radius-default;\r\n opacity: 0.5;\r\n }\r\n }\r\n\r\n &__preview-icon {\r\n width: $mxfeedback-icon-size-md;\r\n height: $mxfeedback-icon-size-md;\r\n fill: $gray-lighter;\r\n }\r\n\r\n &__delete-button {\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n transform: translate(50%, -50%);\r\n z-index: 1;\r\n color: $btn-default-color;\r\n border-radius: 50%;\r\n height: 20px;\r\n width: 20px;\r\n padding: 0;\r\n font-size: 12px;\r\n }\r\n}\r\n","/// Styles the underlay behind the dialog.\r\n\r\n.mxfeedback-underlay {\r\n inset: 0;\r\n z-index: $mxfeedback-z-index-underlay;\r\n}\r\n","@import \"custom-variables\";\n\n//fix for atlas topbar submenu item font size \n.layout-atlas .region-topbar .navbar-brand .mx-navbar-subitem a{\n font-size: unset;\n}\n\n//Remove paging bar on Gallery\n.gallery-hide-paging{\n .widget-gallery-footer{\n display: none;\n }\n}"]} \ No newline at end of file diff --git a/themesource/conversationalui/web/_token-monitor-variables.scss b/themesource/conversationalui/web/_token-monitor-variables.scss new file mode 100644 index 0000000..14f4236 --- /dev/null +++ b/themesource/conversationalui/web/_token-monitor-variables.scss @@ -0,0 +1,4 @@ +$light-border-color: mix($gray-primary, #fff, 50%); + +$input-graph-line-color: mix($brand-primary, white, 90%); +$output-graph-line-color: mix($brand-primary, white, 40%); \ No newline at end of file diff --git a/themesource/conversationalui/web/abstracts/_helpers.scss b/themesource/conversationalui/web/abstracts/_helpers.scss index d59bf06..923c7c1 100644 --- a/themesource/conversationalui/web/abstracts/_helpers.scss +++ b/themesource/conversationalui/web/abstracts/_helpers.scss @@ -23,6 +23,7 @@ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; + line-clamp: 2; } .line-height--1 { diff --git a/themesource/conversationalui/web/components/_all.scss b/themesource/conversationalui/web/components/_all.scss index 31e9bb6..a495845 100644 --- a/themesource/conversationalui/web/components/_all.scss +++ b/themesource/conversationalui/web/components/_all.scss @@ -1,10 +1,13 @@ @import "./accordion"; @import "./card"; @import "./chat"; +@import "./charts"; @import "./conversationstarter"; @import "./dataview"; +@import "./inputs"; @import "./layoutgrid"; @import "./listview"; @import "./popup-chat"; +@import "./segmented-control"; @import "./sidebar-chat"; @import "./typography"; \ No newline at end of file diff --git a/themesource/conversationalui/web/components/_card.scss b/themesource/conversationalui/web/components/_card.scss index 5f76679..6d65c15 100644 --- a/themesource/conversationalui/web/components/_card.scss +++ b/themesource/conversationalui/web/components/_card.scss @@ -1,3 +1,31 @@ .chat-card--full-height { height: 100%; -} \ No newline at end of file +} + +.card-border { + border: 1px solid $light-border-color; +} + +.card-border-top{ + border-top: 1px solid $light-border-color; +} + +.card-statistics { + width: fit-content; + .mx-text.statistic { + min-width: 200px; + } +} + +.card--sticky-content{ + overflow: unset; + padding-top: 0; +} + +.sticky-header{ + position: sticky; + background-color: inherit; + top: 0px; + padding-top: $spacing-large; + z-index: 101; +} diff --git a/themesource/conversationalui/web/components/_charts.scss b/themesource/conversationalui/web/components/_charts.scss new file mode 100644 index 0000000..93d2024 --- /dev/null +++ b/themesource/conversationalui/web/components/_charts.scss @@ -0,0 +1,26 @@ +@mixin chart($graph-line-color) { + &.widget-chart { + + .fills, + .legendfill { + .js-fill { + fill: mix($graph-line-color, white, 60%) !important; + } + } + + .lines, + .legendlines { + .js-line { + stroke: $graph-line-color !important; + } + } + } +} + +.chart-input { + @include chart($input-graph-line-color); +} + +.chart-output { + @include chart($output-graph-line-color); +} \ No newline at end of file diff --git a/themesource/conversationalui/web/components/_conversationstarter.scss b/themesource/conversationalui/web/components/_conversationstarter.scss index a918b23..62c9133 100644 --- a/themesource/conversationalui/web/components/_conversationstarter.scss +++ b/themesource/conversationalui/web/components/_conversationstarter.scss @@ -33,7 +33,7 @@ .mx-layoutgrid { height: 100%; &>.row { - .col>.card{ + .col>.card { height: 100%; display: flex; flex-direction: column; @@ -50,11 +50,11 @@ } } - .widget-gallery-item-button{ + .widget-gallery-item-button { height: 100%; } .conversationstarter-arrow { display: none; } -} \ No newline at end of file +} \ No newline at end of file diff --git a/themesource/conversationalui/web/components/_dataview.scss b/themesource/conversationalui/web/components/_dataview.scss index 00e1b40..1289c59 100644 --- a/themesource/conversationalui/web/components/_dataview.scss +++ b/themesource/conversationalui/web/components/_dataview.scss @@ -1,6 +1,12 @@ .chat-dataview--display-contents { display: contents; + &>div { + display: contents; + } +} + +.dataview--display-contents { &>div { display: contents; } diff --git a/themesource/conversationalui/web/components/_inputs.scss b/themesource/conversationalui/web/components/_inputs.scss new file mode 100644 index 0000000..bf5e136 --- /dev/null +++ b/themesource/conversationalui/web/components/_inputs.scss @@ -0,0 +1,43 @@ +.datetime-inputs-wrapper { + display: flex; + justify-content: flex-end; + + .time-input { + max-width: 100px; + margin-left: -1px; + margin-bottom: 0; + } + + .date-input { + max-width: 150px; + margin-left: $spacing-medium; + margin-bottom: 0; + } + + .mx-compound-control .btn { + margin-left: -44px; + border: 1px solid transparent; + background: transparent; + } +} + +.input-container { + border-bottom: 1px solid $light-border-color; + display: flex; + justify-content: space-between; + align-items: start; +} + +.combo-deployment-selection { + min-width: 360px; + .deployment-selection{ + display: flex; + align-items: center; + height: max-content; + } + .mx-image { + height: $font-size-default; + margin-right: $spacing-small; + } + +} \ No newline at end of file diff --git a/themesource/conversationalui/web/components/_segmented-control.scss b/themesource/conversationalui/web/components/_segmented-control.scss new file mode 100644 index 0000000..fa1324a --- /dev/null +++ b/themesource/conversationalui/web/components/_segmented-control.scss @@ -0,0 +1,12 @@ +.segmented-control{ + height: fit-content; + border: 1px solid $border-color-default; + border-radius: $btn-border-radius; + padding: $spacing-smaller; + width: fit-content; + background-color: $gray-lighter; + .btn.btn-default{ + border: 1px solid transparent; + background: transparent; + } +} \ No newline at end of file diff --git a/themesource/conversationalui/web/main.scss b/themesource/conversationalui/web/main.scss index 2d74dcc..b9fa4ba 100644 --- a/themesource/conversationalui/web/main.scss +++ b/themesource/conversationalui/web/main.scss @@ -1,5 +1,7 @@ @import '../../../theme/web/custom-variables'; @import "chat-variables"; +@import "token-monitor-variables"; @import "./abstracts/all"; @import "./components/all"; + diff --git a/themesource/feedbackmodule/native/design-properties.json b/themesource/feedbackmodule/native/design-properties.json index 49d1a20..24aaa94 100644 --- a/themesource/feedbackmodule/native/design-properties.json +++ b/themesource/feedbackmodule/native/design-properties.json @@ -1,3 +1,3 @@ -{ - -} +{ + +} diff --git a/themesource/feedbackmodule/native/main.js b/themesource/feedbackmodule/native/main.js index b611ae1..e8e3d6a 100644 --- a/themesource/feedbackmodule/native/main.js +++ b/themesource/feedbackmodule/native/main.js @@ -1,2 +1,2 @@ -import * as variables from "../../../theme/native/custom-variables"; - +import * as variables from "../../../theme/native/custom-variables"; + diff --git a/themesource/feedbackmodule/settings.json b/themesource/feedbackmodule/settings.json index 49d1a20..24aaa94 100644 --- a/themesource/feedbackmodule/settings.json +++ b/themesource/feedbackmodule/settings.json @@ -1,3 +1,3 @@ -{ - -} +{ + +} diff --git a/themesource/feedbackmodule/web/_failed.scss b/themesource/feedbackmodule/web/_failed.scss deleted file mode 100644 index 92239be..0000000 --- a/themesource/feedbackmodule/web/_failed.scss +++ /dev/null @@ -1,11 +0,0 @@ -.mxfeedback-failed { - // TODO: Feels like it can be replaced in the future - &__message { - align-self: center; - margin: $spacing-small; - } - - &__error-image { - margin-top: 30px; - } -} diff --git a/themesource/feedbackmodule/web/_feedbackForm.scss b/themesource/feedbackmodule/web/_feedbackForm.scss deleted file mode 100644 index e1a83e8..0000000 --- a/themesource/feedbackmodule/web/_feedbackForm.scss +++ /dev/null @@ -1,5 +0,0 @@ -.mxfeedback-feedback-form { - &__cancel-button { - border: 0; - } -} diff --git a/themesource/feedbackmodule/web/_labelGroup.scss b/themesource/feedbackmodule/web/_labelGroup.scss deleted file mode 100644 index 9be7c5b..0000000 --- a/themesource/feedbackmodule/web/_labelGroup.scss +++ /dev/null @@ -1,12 +0,0 @@ -/// Styles the label plus tooltip icon. - -.mxfeedback-label-group { - display: flex; - align-items: center; - gap: calc(#{$gutter-size} / 2); - margin-bottom: $spacing-smaller; - - &__label.control-label { - margin-bottom: 0; - } -} diff --git a/themesource/feedbackmodule/web/_lightbox.scss b/themesource/feedbackmodule/web/_lightbox.scss deleted file mode 100644 index 4427bd3..0000000 --- a/themesource/feedbackmodule/web/_lightbox.scss +++ /dev/null @@ -1,31 +0,0 @@ -/// The lightbox displays a preview of the screenshot when clicking on the thumbnail. - -.mxfeedback-lightbox { - position: fixed; - left: 0; - top: 0; - bottom: 0; - right: 0; - overflow: auto; - padding-top: 10vh; - padding-bottom: 10vh; - background-color: $mxfeedback-lightbox-background-color; - z-index: $mxfeedback-z-index-lightbox; - - &__image { - margin: auto; - display: block; - max-width: 70%; - - @include mq($screen-md) { - max-width: calc(100% - 16px); - } - } - - .mxfeedback-close-button { - &__icon { - width: $mxfeedback-icon-size-sm; - height: $mxfeedback-icon-size-sm; - } - } -} diff --git a/themesource/feedbackmodule/web/_result.scss b/themesource/feedbackmodule/web/_result.scss deleted file mode 100644 index d597a8f..0000000 --- a/themesource/feedbackmodule/web/_result.scss +++ /dev/null @@ -1,17 +0,0 @@ -/// Style the image on the successfully submitted page - -.mxfeedback-result { - &__result-image { - align-self: center; - width: auto; - max-width: 50%; - } - - .mxfeedback-dialog__body-text { - margin: auto; - } - - &__result-image { - margin-top: 30px; - } -} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/_startButton.scss b/themesource/feedbackmodule/web/_startButton.scss deleted file mode 100644 index 346f8df..0000000 --- a/themesource/feedbackmodule/web/_startButton.scss +++ /dev/null @@ -1,36 +0,0 @@ -/// Creates or hides the default blue start button for the feedback widget. -// if --normal is not used it will inherit from btn mx-button btn-default from AtlasCore -.mxfeedback-start-button { - - &--none { - display: none !important; - } - &--side { - position: fixed; - top: 50%; - right: 0; - transform: translate(50%, -50%) rotate(270deg); - transform-origin: bottom center; - padding: $spacing-smaller $spacing-small; - border: none; - border-radius: $border-radius-default $border-radius-default 0 0; - background-color: $btn-primary-bg; - color: $btn-primary-color; - font-size: $m-header-title-size; - box-shadow: $mxfeedback-start-button-shadow; - z-index: $mxfeedback-z-index-start-button; - - &:focus, - &:hover { - background-color: $btn-primary-bg-hover; - } - } -} - -.mx-feedback-widget-display-none { - display: none !important; -} - -.mx-feedback-widget-modal-body-auto-height { - height:auto !important; -} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/_startButton.scss.bak b/themesource/feedbackmodule/web/_startButton.scss.bak deleted file mode 100644 index e0fcedf..0000000 --- a/themesource/feedbackmodule/web/_startButton.scss.bak +++ /dev/null @@ -1,36 +0,0 @@ -/// Creates or hides the default blue start button for the feedback widget. -// if --normal is not used it will inherit from btn mx-button btn-default from AtlasCore -.mxfeedback-start-button { - - &--none { - display: none !important; - } - &--side { - position: fixed; - top: 50%; - right: 0; - transform: translate(50%, -50%) rotate(270deg); - transform-origin: bottom center; - padding: $spacing-smaller $spacing-small; - border: none; - border-radius: $border-radius-default $border-radius-default 0 0; - background-color: $btn-primary-bg; - color: $btn-primary-color; - font-size: $m-header-title-size; - box-shadow: $mxfeedback-start-button-shadow; - z-index: $mxfeedback-z-index-start-button; - - &:focus, - &:hover { - background-color: $btn-primary-bg-hover; - } - } -} - -.mx-feedback-widget-display-none { - display: none; -} - -.mx-feedback-widget-modal-body-auto-height { - height:auto; -} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/_tooltip.scss b/themesource/feedbackmodule/web/_tooltip.scss deleted file mode 100644 index 0c5424f..0000000 --- a/themesource/feedbackmodule/web/_tooltip.scss +++ /dev/null @@ -1,48 +0,0 @@ -/// Create a Tooltip on hover effect. - -$_block: ".mxfeedback-tooltip"; -#{$_block} { - $_offset: 32px; - display: flex; - position: relative; - - &__icon { - width: $mxfeedback-icon-size-sm; - height: $mxfeedback-icon-size-sm; - - &:hover ~ #{$_block}__tip { - visibility: visible; - } - } - - &__tip { - visibility: hidden; - position: absolute; - top: calc(100% + #{$spacing-small}); - left: calc(50% - #{$_offset}); - width: $mxfeedback-tooltip-width; - max-width: calc(100vw - #{$spacing-larger}); - padding: 6px 8px; // not using variables here as its padding should be precise - margin-bottom: 0; - border-radius: 2px; // not using variables here as its border radius should be precise - background-color: $gray-darker; - color: $label-primary-color; - font-size: $font-size-small; - line-height: 1.5; - z-index: 1; - transition: visibility 100ms ease-in-out; - - &::after { - content: ""; - position: absolute; - top: 0; - left: $_offset; - transform: translate(-50%, -50%) rotate(45deg); - width: 12px; - height: 12px; - background-color: inherit; - text-align: center; - pointer-events: none; - } - } -} diff --git a/themesource/feedbackmodule/web/annotation/_annotation-canvas.scss b/themesource/feedbackmodule/web/annotation-canvas.scss similarity index 96% rename from themesource/feedbackmodule/web/annotation/_annotation-canvas.scss rename to themesource/feedbackmodule/web/annotation-canvas.scss index b88e714..abf19ed 100644 --- a/themesource/feedbackmodule/web/annotation/_annotation-canvas.scss +++ b/themesource/feedbackmodule/web/annotation-canvas.scss @@ -1,19 +1,19 @@ -/// Creates the canvas for annotation. -/// The background color is required to cover the page behind the annotation canvas. - -.mxfeedback-annotation-canvas { - z-index: $mxfeedback-z-index-annotation-canvas; - display: flex; - align-items: center; - justify-content: center; - position: fixed; - margin: 0; - width: 100%; - height: 100%; - background-color: $mxfeedback-annotation-canvas-background-color; - - &__canvas { - position: fixed; - margin-top: $spacing-largest; - } -} +/// Creates the canvas for annotation. +/// The background color is required to cover the page behind the annotation canvas. + +.mxfeedback-annotation-canvas { + z-index: $mxfeedback-z-index-annotation-canvas; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + margin: 0; + width: 100%; + height: 100%; + background-color: $mxfeedback-annotation-canvas-background-color; + + &__canvas { + position: fixed; + margin-top: $spacing-largest; + } +} diff --git a/themesource/feedbackmodule/web/annotation/_annotation-frame.scss b/themesource/feedbackmodule/web/annotation-frame.scss similarity index 95% rename from themesource/feedbackmodule/web/annotation/_annotation-frame.scss rename to themesource/feedbackmodule/web/annotation-frame.scss index 5a9ecd8..f105c59 100644 --- a/themesource/feedbackmodule/web/annotation/_annotation-frame.scss +++ b/themesource/feedbackmodule/web/annotation-frame.scss @@ -1,10 +1,10 @@ -/// Centers the annotation tool and annotation canvas. - -.mxfeedback-annotation-frame { - position: fixed; - top: 0; - bottom: 0; - right: 0; - left: 0; - z-index: $mxfeedback-z-index-frame; -} +/// Centers the annotation tool and annotation canvas. + +.mxfeedback-annotation-frame { + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: $mxfeedback-z-index-frame; +} diff --git a/themesource/feedbackmodule/web/button/_buttonGroup.scss b/themesource/feedbackmodule/web/button-group.scss similarity index 82% rename from themesource/feedbackmodule/web/button/_buttonGroup.scss rename to themesource/feedbackmodule/web/button-group.scss index 8819aff..ee73be6 100644 --- a/themesource/feedbackmodule/web/button/_buttonGroup.scss +++ b/themesource/feedbackmodule/web/button-group.scss @@ -1,36 +1,36 @@ -/// Styles buttons in group to have proper distance between each other. -/// Shows the buttons in column on a smaller screen. - -.mxfeedback-button-group { - display: flex; - justify-content: flex-end; - gap: $gutter-size; - - &--screenshot-container { - flex-direction: row-reverse; - } - - &--gap-md { - gap: $gutter-size * 2; - } - - &--gap-lg { - gap: $gutter-size * 4; - } - - &--justify-start { - justify-content: flex-start; - } - - &--justify-center { - justify-content: center; - } - - &--row-xs { - flex-direction: column; - - @include mq($screen-md) { - flex-direction: row; - } - } -} +/// Styles buttons in group to have proper distance between each other. +/// Shows the buttons in column on a smaller screen. + +.mxfeedback-button-group { + display: flex; + justify-content: flex-end; + gap: $spacing-small; + + &--screenshot-container { + flex-direction: row-reverse; + } + + &--gap-md { + gap: $spacing-small * 2; + } + + &--gap-lg { + gap: $spacing-small * 4; + } + + &--justify-start { + justify-content: flex-start; + } + + &--justify-center { + justify-content: center; + } + + &--row-xs { + flex-direction: column; + + @include mq($screen-md) { + flex-direction: row; + } + } +} diff --git a/themesource/feedbackmodule/web/button/_button.scss b/themesource/feedbackmodule/web/button.scss similarity index 88% rename from themesource/feedbackmodule/web/button/_button.scss rename to themesource/feedbackmodule/web/button.scss index c4cb387..57227ff 100644 --- a/themesource/feedbackmodule/web/button/_button.scss +++ b/themesource/feedbackmodule/web/button.scss @@ -1,15 +1,15 @@ -/// Styles a button that contains an icon. -/// In Atlas the icons are added differently. - -.mxfeedback-button { - display: flex; - justify-content: center; - align-items: center; - gap: $gutter-size; - - svg { - width: $mxfeedback-icon-size-sm; - height: $mxfeedback-icon-size-sm; - fill: currentColor; - } -} +/// Styles a button that contains an icon. +/// In Atlas the icons are added differently. + +.mxfeedback-button { + display: flex; + justify-content: center; + align-items: center; + gap: $spacing-small; + + svg { + width: $mxfeedback-icon-size-sm; + height: $mxfeedback-icon-size-sm; + fill: currentColor; + } +} diff --git a/themesource/feedbackmodule/web/design-properties.json b/themesource/feedbackmodule/web/design-properties.json index 49d1a20..24aaa94 100644 --- a/themesource/feedbackmodule/web/design-properties.json +++ b/themesource/feedbackmodule/web/design-properties.json @@ -1,3 +1,3 @@ -{ - -} +{ + +} diff --git a/themesource/feedbackmodule/web/dialog/_closeButton.scss b/themesource/feedbackmodule/web/dialog/_closeButton.scss deleted file mode 100644 index 137dd99..0000000 --- a/themesource/feedbackmodule/web/dialog/_closeButton.scss +++ /dev/null @@ -1,22 +0,0 @@ -/// Styles the close button to follow the same styling as ATLAS UI close button. -/// | `btn-primary-color` | To show the close button in white color.| - -.mxfeedback-close-button { - right: $spacing-medium; - top: 12px; // not using variables here as its position should be precise - padding: 0; - background-color: transparent; - border: none; - position: absolute; - - &__icon { - width: 12px; - height: 12px; - color: $font-color-default; - stroke: $font-color-default; - } - - &--white > &__icon { - fill: $btn-primary-color; - } -} diff --git a/themesource/feedbackmodule/web/dialog/_dialog.scss b/themesource/feedbackmodule/web/dialog/_dialog.scss deleted file mode 100644 index 82a8208..0000000 --- a/themesource/feedbackmodule/web/dialog/_dialog.scss +++ /dev/null @@ -1,31 +0,0 @@ -@import "../../../../theme/web/custom-variables.scss"; -/// Styles the dialogs. -/// The styling is shared between the different windows. - -.mxfeedback-dialog { - display: flex; - flex-direction: column; - position: fixed; - left: 50% ; - top: 50% ; - transform: translate(-50%, -50%); - padding: $spacing-large; - width: $mxfeedback-dialog-width; - max-width: calc(100% - #{$mxfeedback-dialog-spacing}); - max-height: calc(100% - #{$mxfeedback-dialog-spacing}); - background-color: $bg-color-secondary; - border: 1px solid $border-color-default; - border-radius: $border-radius-default; - box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; - overflow: hidden auto; - z-index: $mxfeedback-z-index-underlay; - - &__title { - font-size: $font-size-large; - font-weight: $font-weight-semibold; - line-height: 120%; - margin: 0 0 $spacing-medium; - color: $font-color-default; - align-self: center; - } -} diff --git a/themesource/feedbackmodule/web/feedback-button.scss b/themesource/feedbackmodule/web/feedback-button.scss new file mode 100644 index 0000000..39f2a43 --- /dev/null +++ b/themesource/feedbackmodule/web/feedback-button.scss @@ -0,0 +1,54 @@ +/* +About: ========================================================= +---------------------------------------------------------------- +This styling targets the main Feedback Button rendered on your page. +The Feedback widget button can be rendered on page in 3 formats. + +Render Modes: ================================================== +---------------------------------------------------------------- +Each render mode can be selected by double clicking the Feedback widget settings in Studio Pro. + +'Side Tab' - Fixes the button to the right hand margin and rotates by 270 degrees. +'Button' - Mimics a normal Mendix button. +'Do not render' - Hides the button on the live website but is still visible in the page editor for developers. + +CSS BEM Enumeration values: ==================================== +---------------------------------------------------------------- +At a code level each render mode selected has a coresspoinding CSS BEM modifier value. +Use these BEM modifiers to custom style each render mode. + +Side Tab = "side" +Button = "normal" +Do not render = "none" + +*/ +.mxfeedback-start-button { + + // &--normal { + // Use this if you want to style the Feedback Button when set Render mode = 'Button' + // } + + &--none { + display: none !important; + } + &--side { + position: fixed; + top: 50%; + right: 0; + transform: translate(50%, -50%) rotate(270deg); + transform-origin: bottom center; + padding: $spacing-smaller $spacing-small; + border: none; + border-radius: $border-radius-default $border-radius-default 0 0; + background-color: $btn-primary-bg; + color: $btn-primary-color; + font-size: $m-header-title-size; + box-shadow: $mxfeedback-start-button-shadow; + z-index: $mxfeedback-z-index-start-button; + + &:focus, + &:hover { + background-color: $btn-primary-bg-hover; + } + } +} \ No newline at end of file diff --git a/themesource/feedbackmodule/web/includes/_helpers.scss b/themesource/feedbackmodule/web/helpers.scss similarity index 95% rename from themesource/feedbackmodule/web/includes/_helpers.scss rename to themesource/feedbackmodule/web/helpers.scss index 467f5e7..643e59d 100644 --- a/themesource/feedbackmodule/web/includes/_helpers.scss +++ b/themesource/feedbackmodule/web/helpers.scss @@ -1,7 +1,7 @@ -/// For responsiveness - -@mixin mq($width, $type: min) { - @media only screen and (#{$type}-width: $width) { - @content; - } -} +/// For responsiveness + +@mixin mq($width, $type: min) { + @media only screen and (#{$type}-width: $width) { + @content; + } +} diff --git a/themesource/feedbackmodule/web/includes/_atlasVariables.scss b/themesource/feedbackmodule/web/includes/_atlasVariables.scss deleted file mode 100644 index 6635d86..0000000 --- a/themesource/feedbackmodule/web/includes/_atlasVariables.scss +++ /dev/null @@ -1,52 +0,0 @@ -/// Based on ATLAS UI 3 - -$gray-darker: #0a1325; -$gray-dark: #474e5c; -$gray: #787d87; -$gray-light: #a9acb3; -$gray-primary: #e7e7e9; -$gray-lighter: #f8f8f8; - -$brand-default: $gray-primary; -$brand-primary: #264ae5; -$brand-success: #3cb33d; -$brand-warning: #eca51c; -$brand-danger: #e33f4e; - -$font-size-default: 14px; -$font-color-default: #0a1325; - -$border-color-default: #ced0d3; -$border-radius-default: 4px; - -$m-header-title-size: 16px; - -$bg-color-secondary: #fff; - -$font-size-large: 18px; -$font-size-small: 12px; - -$font-weight-semibold: 600; -$font-weight-bold: bold; - -$btn-primary-bg: $brand-primary; -$btn-primary-bg-hover: mix($btn-primary-bg, black, 80%); -$btn-primary-color: #fff; - -$label-primary-color: #fff; - -$spacing-smallest: 2px; -$spacing-smaller: 4px; -$spacing-small: 8px; -$spacing-medium: 16px; -$spacing-large: 24px; -$spacing-larger: 32px; -$spacing-largest: 48px; - -$gutter-size: 8px; - -$screen-xs: 480px; -$screen-sm: 576px; -$screen-md: 768px; -$screen-lg: 992px; -$screen-xl: 1200px; diff --git a/themesource/feedbackmodule/web/input/_input.scss b/themesource/feedbackmodule/web/input/_input.scss deleted file mode 100644 index 30c6d27..0000000 --- a/themesource/feedbackmodule/web/input/_input.scss +++ /dev/null @@ -1,34 +0,0 @@ -/// Styles the dialogs. -/// The styling is shared between the different windows. - -.mxfeedback-input { - display: flex; - flex-direction: column; - position: fixed; - left: 50% !important; - top: 50% !important; - transform: translate(-50%, -50%); - width: $mxfeedback-dialog-width; - max-width: calc(100% - #{$mxfeedback-dialog-spacing}); - max-height: calc(100% - #{$mxfeedback-dialog-spacing}); - background-color: $bg-color-secondary; - border-radius: $border-radius-default; - box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; - overflow: hidden auto; - z-index: $mxfeedback-z-index-underlay; - - .modal-header { - border-bottom: unset; - margin-top: 1rem; - padding-top: 1rem !important; - padding-left: 3rem !important; - - &.modal-header > h4 { - font-size: $font-size-large; - font-weight: $font-weight-semibold; - line-height: 120%; - color: $font-color-default; - align-self: center; - } - } -} diff --git a/themesource/feedbackmodule/web/main.scss b/themesource/feedbackmodule/web/main.scss index 9b68e41..50d9e32 100644 --- a/themesource/feedbackmodule/web/main.scss +++ b/themesource/feedbackmodule/web/main.scss @@ -1,36 +1,29 @@ -/* - ==| Variables |========================================================================================= -*/ -@import "../../../theme/web/custom-variables.scss"; -@import "includes/variables"; -@import "includes/helpers"; - -/* - ==| Widget blocks |===================================================================================== - These blocks contains styles directly related to the widget's appearance and are mostly unique styles - needed to display the widget's UI correctly. -*/ -@import "lightbox"; -@import "startButton"; -@import "annotation/annotation-canvas"; -@import "annotation/annotation-frame"; -@import "failed"; -@import "result"; -@import "feedbackForm"; - -/* - ==| Generic blocks |==================================================================================== - These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and - outline the basic styles of the widget (in accordance with Atlas UI). -*/ -@import "dialog/dialog"; -@import "dialog/underlay"; -@import "dialog/closeButton"; -@import "input/input"; -@import "toolbar/toolbar"; -@import "toolbar/toolButton"; -@import "labelGroup"; -@import "button/buttonGroup"; -@import "button/button"; -@import "screenshotPreview"; -@import "tooltip"; +/* + ==| Variables |========================================================================================= +*/ +@import "../../../theme/web/custom-variables.scss"; +@import "variables"; +@import "helpers"; + +/* + ==| Widget blocks |===================================================================================== + These blocks contains styles directly related to the widget's appearance and are mostly unique styles + needed to display the widget's UI correctly. +*/ + +@import "feedback-button"; +@import "annotation-canvas"; +@import "annotation-frame"; + +/* + ==| Generic blocks |==================================================================================== + These blocks are generic blocks. These styles are styles that apply to the widget's entire UI and + outline the basic styles of the widget (in accordance with Atlas UI). +*/ + +@import "toolbar"; +@import "tool-button"; +@import "button-group"; +@import "button"; +@import "screenshot-preview"; +@import "underlay"; diff --git a/themesource/feedbackmodule/web/_screenshotPreview.scss b/themesource/feedbackmodule/web/screenshot-preview.scss similarity index 92% rename from themesource/feedbackmodule/web/_screenshotPreview.scss rename to themesource/feedbackmodule/web/screenshot-preview.scss index c6d8416..bd309b4 100644 --- a/themesource/feedbackmodule/web/_screenshotPreview.scss +++ b/themesource/feedbackmodule/web/screenshot-preview.scss @@ -1,45 +1,45 @@ -/// Styles the screenshot preview container in the form. - -.mxfeedback-screenshot-preview { - display: flex; - justify-content: left; - position: relative; - margin: 20px auto; - cursor: pointer; - - &__image > img { - display: block; - object-fit: contain; - height: 100%; - aspect-ratio: 16 / 9; - border: 1px solid $gray; - border-radius: $border-radius-default; - - &:hover { - background-color: $gray-lighter; - border: 1px solid $gray-dark; - border-radius: $border-radius-default; - opacity: 0.5; - } - } - - &__preview-icon { - width: $mxfeedback-icon-size-md; - height: $mxfeedback-icon-size-md; - fill: $gray-lighter; - } - - &__delete-button { - position: absolute; - top: 0; - right: 0; - transform: translate(50%, -50%); - z-index: 1; - color: $btn-default-color; - border-radius: 50%; - height: 20px; - width: 20px; - padding: 0; - font-size: 12px; - } -} +/// Styles the screenshot preview container in the form. + +.mxfeedback-screenshot-preview { + display: flex; + justify-content: left; + position: relative; + margin: $spacing-large auto; + cursor: pointer; + + &__image > img { + display: block; + object-fit: contain; + height: 100%; + aspect-ratio: 16 / 9; + border: 1px solid $gray; + border-radius: $border-radius-default; + + &:hover { + background-color: $gray-lighter; + border: 1px solid $gray-dark; + border-radius: $border-radius-default; + opacity: 0.5; + } + } + + &__preview-icon { + width: $mxfeedback-icon-size-md; + height: $mxfeedback-icon-size-md; + fill: $gray-lighter; + } + + &__delete-button { + position: absolute; + top: 0; + right: 0; + transform: translate(50%, -50%); + z-index: 1; + color: $btn-default-color; + border-radius: 50%; + height: 20px; + width: 20px; + padding: 0; + font-size: 12px; + } +} diff --git a/themesource/feedbackmodule/web/toolbar/_toolButton.scss b/themesource/feedbackmodule/web/tool-button.scss similarity index 95% rename from themesource/feedbackmodule/web/toolbar/_toolButton.scss rename to themesource/feedbackmodule/web/tool-button.scss index 6f604d5..f07e67a 100644 --- a/themesource/feedbackmodule/web/toolbar/_toolButton.scss +++ b/themesource/feedbackmodule/web/tool-button.scss @@ -1,136 +1,136 @@ -/// Styles the color and thickness options in the annotation toolbar. - -.mxfeedback-tool-button { - position: relative; - display: flex; - flex-direction: row; - align-items: center; - background: transparent; - border: 0; - padding: 0; - - &--active { - color: $brand-primary; - } - - &:focus-visible { - color: $btn-primary-bg-hover; - } - - &__inner { - display: flex; - flex-direction: column; - align-items: center; - } - - &__icon { - width: $mxfeedback-icon-size-lg; - height: $mxfeedback-icon-size-lg; - fill: currentColor; - } - - &__label { - margin-top: $spacing-smaller; - color: inherit - } - - &__caret { - fill: $gray-darker; - width: 8px; - height: 8px; - } - - &__dropdown { - position: relative; - display: flex; - align-items: center; - height: 100%; - } - - &__menu { - display: flex; - flex-direction: column; - gap: $gutter-size; - position: absolute; - left: 50%; - top: 100%; - transform: translateX(-50%); - padding: $spacing-small; - background: $bg-color-secondary; - border: 1px solid $border-color-default; - border-radius: $border-radius-default; - width: $tool-list-width; - z-index: 1; - } - - &__list { - display: grid; - grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier - gap: calc(#{$gutter-size} / 2); - - &--col-3 { - grid-template-columns: repeat(3, 1fr); - } - } - - &__color { - position: relative; - padding: 0; - border: none; - border-radius: 100%; - aspect-ratio: 1 / 1; - - &:focus { - outline: 2px solid $brand-primary; - outline-offset: 2px; - } - - @each $color, $class in $annotation-colors { - &--#{$color} { - background-color: $class; - } - } - - svg { - width: 10px; - height: 10px; - stroke: $btn-primary-color; - } - } - - &__thickness { - background-color: transparent; - border: none; - border-radius: $border-radius-default; - aspect-ratio: 4 / 3; - - &:hover { - background-color: $gray-light; - } - - &:focus { - outline: 2px solid $brand-primary; - outline-offset: 2px; - } - - &--selected { - background-color: $gray; - } - - &::before { - content: ""; - display: block; - background-color: map-get($annotation-colors, "midnight"); - width: 100%; - transform: rotate(-45deg); - } - - @each $thickness, $height in $annotation-thickness { - &--#{$thickness} { - &::before { - height: $height; - } - } - } - } -} +/// Styles the color and thickness options in the annotation toolbar. + +.mxfeedback-tool-button { + position: relative; + display: flex; + flex-direction: row; + align-items: center; + background: transparent; + border: 0; + padding: 0; + + &--active { + color: $brand-primary; + } + + &:focus-visible { + color: $btn-primary-bg-hover; + } + + &__inner { + display: flex; + flex-direction: column; + align-items: center; + } + + &__icon { + width: $mxfeedback-icon-size-lg; + height: $mxfeedback-icon-size-lg; + fill: currentColor; + } + + &__label { + margin-top: $spacing-smaller; + color: inherit + } + + &__caret { + fill: $gray-darker; + width: 8px; + height: 8px; + } + + &__dropdown { + position: relative; + display: flex; + align-items: center; + height: 100%; + } + + &__menu { + display: flex; + flex-direction: column; + gap: $gutter-size; + position: absolute; + left: 50%; + top: 100%; + transform: translateX(-50%); + padding: $spacing-small; + background: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + width: $tool-list-width; + z-index: 1; + } + + &__list { + display: grid; + grid-template-columns: repeat(4, 1fr); // 4 columns is our default, override with modifier + gap: calc(#{$gutter-size} / 2); + + &--col-3 { + grid-template-columns: repeat(3, 1fr); + } + } + + &__color { + position: relative; + padding: 0; + border: none; + border-radius: 100%; + aspect-ratio: 1 / 1; + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + @each $color, $class in $annotation-colors { + &--#{$color} { + background-color: $class; + } + } + + svg { + width: 10px; + height: 10px; + stroke: $btn-primary-color; + } + } + + &__thickness { + background-color: transparent; + border: none; + border-radius: $border-radius-default; + aspect-ratio: 4 / 3; + + &:hover { + background-color: $gray-light; + } + + &:focus { + outline: 2px solid $brand-primary; + outline-offset: 2px; + } + + &--selected { + background-color: $gray; + } + + &::before { + content: ""; + display: block; + background-color: map-get($annotation-colors, "midnight"); + width: 100%; + transform: rotate(-45deg); + } + + @each $thickness, $height in $annotation-thickness { + &--#{$thickness} { + &::before { + height: $height; + } + } + } + } +} diff --git a/themesource/feedbackmodule/web/toolbar/_toolbar.scss b/themesource/feedbackmodule/web/toolbar.scss similarity index 96% rename from themesource/feedbackmodule/web/toolbar/_toolbar.scss rename to themesource/feedbackmodule/web/toolbar.scss index aeac21c..2d62477 100644 --- a/themesource/feedbackmodule/web/toolbar/_toolbar.scss +++ b/themesource/feedbackmodule/web/toolbar.scss @@ -1,26 +1,26 @@ -/// Styles the annotation toolbar. - -.mxfeedback-toolbar { - position: fixed; - display: flex; - align-items: center; - gap: $gutter-size; - top: $spacing-larger; - left: 50%; - transform: translateX(-50%); - padding: $spacing-medium $spacing-larger; - background-color: $bg-color-secondary; - border: 1px solid $border-color-default; - border-radius: $border-radius-default; - font-size: $font-size-small; - box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; - z-index: $mxfeedback-z-index-frame; - - &--gap-md { - gap: $gutter-size * 2; - } - - &--gap-lg { - gap: $gutter-size * 4; - } -} +/// Styles the annotation toolbar. + +.mxfeedback-toolbar { + position: fixed; + display: flex; + align-items: center; + gap: $gutter-size; + top: $spacing-larger; + left: 50%; + transform: translateX(-50%); + padding: $spacing-medium $spacing-larger; + background-color: $bg-color-secondary; + border: 1px solid $border-color-default; + border-radius: $border-radius-default; + font-size: $font-size-small; + box-shadow: $mxfeedback-shadow-small $mxfeedback-shadow-color; + z-index: $mxfeedback-z-index-frame; + + &--gap-md { + gap: $gutter-size * 2; + } + + &--gap-lg { + gap: $gutter-size * 4; + } +} diff --git a/themesource/feedbackmodule/web/dialog/_underlay.scss b/themesource/feedbackmodule/web/underlay.scss similarity index 95% rename from themesource/feedbackmodule/web/dialog/_underlay.scss rename to themesource/feedbackmodule/web/underlay.scss index ced748e..3cdd806 100644 --- a/themesource/feedbackmodule/web/dialog/_underlay.scss +++ b/themesource/feedbackmodule/web/underlay.scss @@ -1,6 +1,6 @@ -/// Styles the underlay behind the dialog. - -.mxfeedback-underlay { - inset: 0; - z-index: $mxfeedback-z-index-underlay; -} +/// Styles the underlay behind the dialog. + +.mxfeedback-underlay { + inset: 0; + z-index: $mxfeedback-z-index-underlay; +} diff --git a/themesource/feedbackmodule/web/includes/_variables.scss b/themesource/feedbackmodule/web/variables.scss similarity index 96% rename from themesource/feedbackmodule/web/includes/_variables.scss rename to themesource/feedbackmodule/web/variables.scss index eb5aca1..8dffa63 100644 --- a/themesource/feedbackmodule/web/includes/_variables.scss +++ b/themesource/feedbackmodule/web/variables.scss @@ -1,54 +1,54 @@ -//== z-index -$mxfeedback-z-index-start-button: 999998 !default; -$mxfeedback-z-index-underlay: 1000001 !default; -$mxfeedback-z-index-lightbox: 1000002 !default; -$mxfeedback-z-index-annotation-canvas: 1000003 !default; -$mxfeedback-z-index-frame: 1000004 !default; - -//== Dimensions -$mxfeedback-dialog-width: 560px; -$mxfeedback-tooltip-width: 240px; -$tool-list-width: 144px; -$mxfeedback-dialog-spacing: 40px; - -//== Background colors -$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9); -$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9); -$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5); - -//== Shadows -$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%); -$mxfeedback-shadow-small: 0 2px 4px 0; -$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2); - -//== Icons -$mxfeedback-icon-size-xs: 9px; -$mxfeedback-icon-size-sm: 16px; -$mxfeedback-icon-size-md: 20px; -$mxfeedback-icon-size-lg: 24px; - -//== Annotation -//## Annotation colors -$annotation-colors: ( - "midnight": #2f3646, - "grey": #c1c3c8, - "green": #4fd84f, - "blue": #47a9ff, - "purple": #845eff, - "magenta": #ca49f8, - "red": #fb4a4c, - "yellow": #fcc73a -); - -//## Annotation thickness -$annotation-thickness: ( - "one": 1px, - "two": 2px, - "three": 3px, - "four": 4px, - "five": 5px, - "six": 6px -); - -//## Annotation tool variables -$mxfeedback-annotation-tool-size: 25px; +//== z-index +$mxfeedback-z-index-start-button: 999998 !default; +$mxfeedback-z-index-underlay: 1000001 !default; +$mxfeedback-z-index-lightbox: 1000002 !default; +$mxfeedback-z-index-annotation-canvas: 1000003 !default; +$mxfeedback-z-index-frame: 1000004 !default; + +//== Dimensions +$mxfeedback-dialog-width: 560px; +$mxfeedback-tooltip-width: 240px; +$tool-list-width: 144px; +$mxfeedback-dialog-spacing: 40px; + +//== Background colors +$mxfeedback-lightbox-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-modal-background-color: rgba(0, 0, 0, 0.9); +$mxfeedback-annotation-canvas-background-color: rgba(0, 0, 0, 0.5); + +//== Shadows +$mxfeedback-start-button-shadow: -2px 0 4px 0 rgb(0 0 0 / 30%); +$mxfeedback-shadow-small: 0 2px 4px 0; +$mxfeedback-shadow-color: rgba(0, 0, 0, 0.2); + +//== Icons +$mxfeedback-icon-size-xs: 9px; +$mxfeedback-icon-size-sm: 16px; +$mxfeedback-icon-size-md: 20px; +$mxfeedback-icon-size-lg: 24px; + +//== Annotation +//## Annotation colors +$annotation-colors: ( + "midnight": #2f3646, + "grey": #c1c3c8, + "green": #4fd84f, + "blue": #47a9ff, + "purple": #845eff, + "magenta": #ca49f8, + "red": #fb4a4c, + "yellow": #fcc73a +); + +//## Annotation thickness +$annotation-thickness: ( + "one": 1px, + "two": 2px, + "three": 3px, + "four": 4px, + "five": 5px, + "six": 6px +); + +//## Annotation tool variables +$mxfeedback-annotation-tool-size: 25px; diff --git a/widgets/SprintrFeedbackWidget.mpk b/widgets/SprintrFeedbackWidget.mpk index 23f7269..3a861af 100644 Binary files a/widgets/SprintrFeedbackWidget.mpk and b/widgets/SprintrFeedbackWidget.mpk differ diff --git a/widgets/com.mendix.widget.web.Datagrid.mpk b/widgets/com.mendix.widget.web.Datagrid.mpk index 9eac8f3..d6d617f 100644 Binary files a/widgets/com.mendix.widget.web.Datagrid.mpk and b/widgets/com.mendix.widget.web.Datagrid.mpk differ