diff --git a/NOTICE.TXT b/NOTICE.TXT index 5908fd041675a5bd982ec301e6cfa3564086bd70..698eb51d85e63bb667af2d1501e72e6db5d8dc9e 100644 --- a/NOTICE.TXT +++ b/NOTICE.TXT @@ -119,7 +119,7 @@ This product uses software based on the Apache Software License like * Java-html-sanitizer (Apache Software License, Version 2.0) [https://github.com/OWASP/java-html-sanitizer] ----------------------------------------------------------------------- -This produce uses software based on the MIT License +This product uses software based on the MIT License * Bootstrap (MIT License) [http://http://getbootstrap.com] * Prototype javascript framework (MIT License) [http://www.prototypejs.org] * SCORM player project: reload (MIT License) [http://www.reload.ac.uk] @@ -211,3 +211,4 @@ This product uses software based on specific License * periodic (none) [https://github.com/tra/periodic] * typeahead.js (see src/main/webapp/WEB-INF/lib/licenses/typeahead.licence.txt) [https://github.com/twitter/typeahead.js/blob/master/LICENSE] * validator.nu htmlparser (https://github.com/validator/htmlparser/blob/validator-nu/LICENSE.txt) [https://github.com/validator/htmlparser/blob/validator-nu/LICENSE.txt] +* Paella Player (https://paellaplayer.upv.es/license/) [https://paellaplayer.upv.es/license/] diff --git a/src/main/java/org/olat/basesecurity/AuthHelper.java b/src/main/java/org/olat/basesecurity/AuthHelper.java index f96af6e20a8a3c7e99650d79f2289840efe0d1ca..5b4b18af4ba02ce21cad9dc9cb0828c7fe59a264 100644 --- a/src/main/java/org/olat/basesecurity/AuthHelper.java +++ b/src/main/java/org/olat/basesecurity/AuthHelper.java @@ -340,8 +340,6 @@ public class AuthHelper { //set the language usess.setLocale( I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage()) ); - // update fontsize in users session globalsettings - Windows.getWindows(ureq).getWindowManager().setFontSize(Integer.parseInt(identity.getUser().getPreferences().getFontsize() )); // calculate session info and attach it to the user session setSessionInfoFor(identity, authProvider, ureq, rest); //confirm signedOn diff --git a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java index ddf93c5297897ad17c69bed5e20c126d5a4630da..614eaa51edb22dcb2c21b9bef32f135f2bfe5493 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java +++ b/src/main/java/org/olat/core/commons/fullWebApp/BaseFullWebappController.java @@ -366,11 +366,7 @@ public class BaseFullWebappController extends BasicController implements DTabs, mainVc.contextPut("userJSON", sb); } - // the current GUI theme and the global settings that contains the - // font-size. both are pushed as objects so that window.dirty always reads - // out the correct value mainVc.contextPut("theme", w.getGuiTheme()); - mainVc.contextPut("globalSettings", winman.getGlobalSettings()); // Add JS analytics code, e.g. for google analytics if (analyticsModule.isAnalyticsEnabled()) { diff --git a/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html b/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html index 7eef9f1acb0384eae9070893581aa2a9efe77037..c619684040c00f2fec5c7af55921e5fa16cd8415 100644 --- a/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html +++ b/src/main/java/org/olat/core/commons/fullWebApp/_content/fullwebapplayout.html @@ -187,17 +187,15 @@ $theme.renderHTMLHeaderElements() /* Detect IE below version 11 */ if (window.navigator.userAgent.indexOf('MSIE ') > 0) { jQuery('body').addClass('o_browser_ie10'); + } else if (!!navigator.userAgent.match(/Trident\/7\./)) { + jQuery('body').addClass('o_browser_ie11'); } }); </script> ## 5) Dynamic overriding of CSS rules $r.render("jsCssRawHtmlHeader", "post-theme") ## 6) Add user font size (id o_fontSize_css used to place on demand css) -#if (${globalSettings.getFontSize()} != "100") -<style id="o_fontSize_css">#o_body{zoom:${globalSettings.getFontSize()}%; -moz-transform: scale(${globalSettings.getFontSize()}%)}</style> -#else <style id="o_fontSize_css"></style> -#end <style> #if($logoInfos.logo) .o_custom_navbar-brand { background-image: url('$logoInfos.logoUri'); } diff --git a/src/main/java/org/olat/core/gui/DefaultGlobalSettings.java b/src/main/java/org/olat/core/gui/DefaultGlobalSettings.java index 50f569e62010316ff6306c9cc4ecd8a8cc9b885e..62b5b57a8fb8b13ffaebe9bcf388b0752ca9a599 100644 --- a/src/main/java/org/olat/core/gui/DefaultGlobalSettings.java +++ b/src/main/java/org/olat/core/gui/DefaultGlobalSettings.java @@ -28,10 +28,6 @@ import org.olat.core.gui.control.winmgr.AJAXFlags; * */ public class DefaultGlobalSettings implements GlobalSettings { - @Override - public int getFontSize() { - return 100; - } @Override public AJAXFlags getAjaxFlags() { diff --git a/src/main/java/org/olat/core/gui/GlobalSettings.java b/src/main/java/org/olat/core/gui/GlobalSettings.java index 2a6d9b335122dfe3db9a91b7fcba12de8dc11970..7747080cf8fe7a212591cad8ebb6d153aba1c3fa 100644 --- a/src/main/java/org/olat/core/gui/GlobalSettings.java +++ b/src/main/java/org/olat/core/gui/GlobalSettings.java @@ -37,11 +37,6 @@ import org.olat.core.gui.control.winmgr.AJAXFlags; */ public interface GlobalSettings { - /** - * @return fontsize relative to applied theme - */ - public int getFontSize(); - /** * @return Returns the ajaxFlags. */ diff --git a/src/main/java/org/olat/core/gui/WindowManager.java b/src/main/java/org/olat/core/gui/WindowManager.java index 3bb3251d34ee38d7d7fe46adecbdfe0e09dd54b1..a115cd0a35333c0a8028288ec7269acfd7891541 100644 --- a/src/main/java/org/olat/core/gui/WindowManager.java +++ b/src/main/java/org/olat/core/gui/WindowManager.java @@ -58,16 +58,6 @@ public interface WindowManager extends Disposable { * @return */ public WindowBackOffice createWindowBackOffice(String windowName, ChiefController owner, WindowSettings settings); - - /** - * @return The font size relative to the default font size - * of the skin. - */ - public int getFontSize(); - /** - * @param fontSize relative to default font size - */ - public void setFontSize(int fontSize); /** * whether or not ajax mode ("web 2.0") is enabled. should only called by controllers to determine whether they can offer additional ui capabilites due to ajax turned on. diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index e0b388d7cb3dfb7705e31b2f8a5e3e36a9dc76c3..ec18e379ee92fb313433ec53bebee5b6e077195a 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -971,15 +971,28 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { }; ComponentTraverser ct = new ComponentTraverser(dirtyV, getContentPane(), false); ct.visitAll(null); + + if(!dirties.isEmpty()) { + Set<Component> dirtyDuplicates = new HashSet<>(); + for(Iterator<Component> it=dirties.iterator(); it.hasNext(); ) { + Component dirty = it.next(); + if(dirtyDuplicates.contains(dirty)) { + it.remove(); + } else { + dirtyDuplicates.add(dirty); + } + } + } + int dCnt = dirties.size(); if (isDebugLog) { long durationVisitAll = System.currentTimeMillis() - start; - log.debug("Perf-Test: Window.handleDirties after ct.visitAll durationVisitAll=" + durationVisitAll); - log.debug("Perf-Test: Window.handleDirties dirties.size()=" + dirties.size()); + log.debug("Perf-Test: Window.handleDirties after ct.visitAll durationVisitAll={}", durationVisitAll); + log.debug("Perf-Test: Window.handleDirties dirties.size()={}", dirties.size()); } if (dCnt > 0) { // collect the redraw dirties command - try { + try { JSONObject root = new JSONObject(); root.put("cc", dirties.size()); root.put("wts", timestamp); @@ -1000,23 +1013,16 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { debugMsg = new StringBuilder("update:").append(String.valueOf(dCnt)).append(";"); } - Set<Component> dirtyDuplicates = new HashSet<>(); - for (int i = 0; i < dCnt; i++) { Component toRender = dirties.get(i); - if(dirtyDuplicates.contains(toRender)) { - continue;// prevent rendering twice the same component - } - if(isDebugLog) { - log.debug("Perf-Test: Window.handleDirties toRender.getComponentName()=" + toRender.getComponentName()); - log.debug("Perf-Test: Window.handleDirties toRender=" + toRender); + log.debug("Perf-Test: Window.handleDirties toRender.getComponentName()={}", toRender.getComponentName()); + log.debug("Perf-Test: Window.handleDirties toRender={}", toRender); } boolean wasDomR = toRender.isDomReplaceable(); if (!wasDomR) { throw new CannotReplaceDOMFragmentException("cannot replace as dom fragment:"+toRender.getComponentName()+" ("+toRender.getClass().getName()+"),"+toRender.getExtendedDebugInfo()); } - dirtyDuplicates.add(toRender); Panel wrapper = new Panel("renderpanel"); wrapper.setDomReplaceable(false); // to omit <div> around the render helper panel @@ -1084,7 +1090,11 @@ public class Window extends AbstractComponent implements CustomCSSDelegate { jo.put("cname", toRender.getComponentName()); jo.put("clisteners",toRender.getListenerInfo()); jo.put("hfragsize", result.length()); - } + } + + if(cid == null) { + System.out.println(); + } jo.put("cid", cid); jo.put("cw", toRender.isDomReplacementWrapperRequired()); diff --git a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java index 1bb0f5b0c8ef3a97fba10ccd6f4ff0849fe44e0b..baf8d9b4a99481c1822f807f31feebc7934fd66b 100644 --- a/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java +++ b/src/main/java/org/olat/core/gui/control/winmgr/WindowManagerImpl.java @@ -57,8 +57,6 @@ public class WindowManagerImpl implements WindowManager { private boolean showDebugInfo = false; private boolean idDivsForced = false; - private int fontSize = 100; // default width - private PopupBrowserWindowControllerCreator pbwcc; public WindowManagerImpl() { @@ -67,10 +65,6 @@ public class WindowManagerImpl implements WindowManager { final AJAXFlags aflags = new AJAXFlags(this); globalSettings = new GlobalSettings() { - @Override - public int getFontSize() { - return WindowManagerImpl.this.getFontSize(); - } @Override public AJAXFlags getAjaxFlags() { return aflags; @@ -92,9 +86,6 @@ public class WindowManagerImpl implements WindowManager { setAjaxEnabled(!Settings.isBrowserAjaxBlacklisted(ureq)); } - /** - * @return Returns the ajaxEnabled. - */ @Override public boolean isAjaxEnabled() { return ajaxEnabled; @@ -122,18 +113,6 @@ public class WindowManagerImpl implements WindowManager { } } - public int getFontSize() { - return fontSize; - } - - @Override - public void setFontSize(int fontSize) { - this.fontSize = fontSize; - } - - /* (non-Javadoc) - * @see org.olat.core.gui.WindowManager#createWindowBackOffice(java.lang.String, org.olat.core.gui.control.ChiefController) - */ @Override public WindowBackOffice createWindowBackOffice(String windowName, ChiefController owner, WindowSettings settings) { WindowBackOfficeImpl wbo = new WindowBackOfficeImpl(this, windowName, owner, settings); @@ -152,10 +131,6 @@ public class WindowManagerImpl implements WindowManager { return showDebugInfo; } - /** - * - * @see org.olat.core.gui.WindowManager#createNewPopupBrowserWindowFor(org.olat.core.gui.UserRequest, org.olat.core.gui.control.creator.ControllerCreator, boolean) - */ @Override public PopupBrowserWindow createNewPopupBrowserWindowFor(UserRequest ureq, ControllerCreator contentControllerCreator) { //supports the open(ureq) method @@ -174,7 +149,6 @@ public class WindowManagerImpl implements WindowManager { return cc; } - /** * needed only by guidebugdispatchercontroller for the gui debug mode! * @param idDivsForced @@ -183,9 +157,6 @@ public class WindowManagerImpl implements WindowManager { this.idDivsForced = idDivsForced; } - /** - * @return - */ public boolean isIdDivsForced() { return idDivsForced; } diff --git a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java index 731cbcbb4f05b1e92bd47d00597df2fce529774d..4f93f979ba2f675348b1461e00ca905d717a644f 100644 --- a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java +++ b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java @@ -199,11 +199,8 @@ public class ExceptionWindowController extends DefaultChiefController { Window w = wbo.getWindow(); msg.put("jsCssRawHtmlHeader", w.getJsCssRawHtmlHeader()); - // the current GUI theme and the global settings that contains the - // font-size. both are pushed as objects so that window.dirty always reads - // out the correct value + msg.contextPut("theme", w.getGuiTheme()); - msg.contextPut("globalSettings", ws.getWindowManager().getGlobalSettings()); UserSession session = ureq.getUserSession(); if(session != null && session.getLastHistoryPoint() != null) { diff --git a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html index 6861b701af86d782e982fae92f72cacfd1a54181..66e226c9bfe03b58d21ba51933317e48f35c46b2 100644 --- a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html +++ b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html @@ -70,10 +70,6 @@ $r.render("jsCssRawHtmlHeader", "pre-theme") <![endif]--> ## 4) Dynamic overriding of CSS rules $r.render("jsCssRawHtmlHeader", "post-theme") -## 5) Add user font size -#if (${globalSettings.getFontSize()} != "100") -<style id="o_fontSize_css">#o_body{zoom:${globalSettings.getFontSize()}%; -moz-transform: scale(${globalSettings.getFontSize()}%)}</style> -#end ## deprecated - include any raw header $r.renderHeaderIncludes() diff --git a/src/main/java/org/olat/core/id/Preferences.java b/src/main/java/org/olat/core/id/Preferences.java index 6d8feceaf2f597cebd105a06d28557d2e922d3ec..ac937ed842772b8c5841518f3a5d0a2009191842 100644 --- a/src/main/java/org/olat/core/id/Preferences.java +++ b/src/main/java/org/olat/core/id/Preferences.java @@ -48,18 +48,6 @@ public interface Preferences extends Serializable { * @param l new language */ public void setLanguage(String l); - - /** - * Get users fontsize settings - * @return Users fontsize - */ - public String getFontsize(); - - /** - * Set users fontsize settings - * @param l new fontsize - */ - public void setFontsize(String l); /** * @param notificationInterval The notificationInterval to set. diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index a6e69bccacd688db58583497c82209c920449340..d73a2844a3bd5fd1b43d55de425dfcdc5b6ba6d7 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -1807,21 +1807,21 @@ public class MailManagerImpl implements MailManager, InitializingBean { result.addInvalidAddresses(e.getInvalidAddresses()); result.addInvalidAddresses(e.getValidUnsentAddresses()); result.setErrorMessage(e.getMessage()); - log.warn("Could not send mail", e); + log.warn("Could not send mail: {}", e.getMessage()); } catch (MessagingException e) { result.setReturnCode(MailerResult.SEND_GENERAL_ERROR); result.setErrorMessage(e.getMessage()); - log.warn("Could not send mail", e); + log.warn("Could not send mail: {}", e.getMessage()); } } private void logMessage(MimeMessage msg) throws MessagingException { try { - log.info("E-mail send: " + msg.getSubject()); + log.info("E-mail send: {}", msg.getSubject()); logRecipients(msg, RecipientType.TO); logRecipients(msg, RecipientType.BCC); logRecipients(msg, RecipientType.CC); - log.info("Content : " + msg.getContent()); + log.info("Content : {}", msg.getContent()); //File file = new File("/HotCoffee/tmp/mail_" + CodeHelper.getForeverUniqueID() + ".msg"); //OutputStream os = new FileOutputStream(file); @@ -1840,7 +1840,7 @@ public class MailManagerImpl implements MailManager, InitializingBean { if(sb.length() > 0) sb.append(", "); sb.append(recipient.toString()); } - log.info(type + " : " + sb); + log.info("{} : {}", type, sb); } } diff --git a/src/main/java/org/olat/core/util/mail/ui/EMailIdentity.java b/src/main/java/org/olat/core/util/mail/ui/EMailIdentity.java index 23ac3ff0e0f75a72b16c2ea11f126b946222a8e6..c296c55b2763791ca60b8e0ef2d45f42f9cff8f2 100644 --- a/src/main/java/org/olat/core/util/mail/ui/EMailIdentity.java +++ b/src/main/java/org/olat/core/util/mail/ui/EMailIdentity.java @@ -189,16 +189,6 @@ public class EMailIdentity implements Identity { // } - @Override - public String getFontsize() { - return null; - } - - @Override - public void setFontsize(String l) { - // - } - @Override public String getNotificationInterval() { return null; diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java index d2a5f1685a112e868523ae514b0520c782269c21..fd38c9768293808c53c356ebb21f32a25b25a2a5 100644 --- a/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/AssessmentToolManagerImpl.java @@ -391,7 +391,7 @@ public class AssessmentToolManagerImpl implements AssessmentToolManager { sb.append(" ident.key in (select aentry.identity.key from assessmententry aentry") .append(" where aentry.repositoryEntry.key=:repoEntryKey") .append(" and not exists (select membership.key from repoentrytogroup as rel, bgroupmember as membership") - .append(" where rel.entry.key=aentry.repositoryEntry.key and rel.group=membership.group and membership.role ").in(GroupRoles.participant, GroupRoles.coach, GroupRoles.owner) + .append(" where rel.entry.key=:repoEntryKey and rel.group=membership.group and membership.role ").in(GroupRoles.participant, GroupRoles.coach, GroupRoles.owner) .append(" and membership.identity.key=aentry.identity.key)") .append(" )"); diff --git a/src/main/java/org/olat/course/nodes/LiveStreamCourseNode.java b/src/main/java/org/olat/course/nodes/LiveStreamCourseNode.java index 9c8f3f4295bd29ce8d08a1e0afcba84f74459c8d..d425a2da081883f9f91acf59f2c2e3a3f7b900e4 100644 --- a/src/main/java/org/olat/course/nodes/LiveStreamCourseNode.java +++ b/src/main/java/org/olat/course/nodes/LiveStreamCourseNode.java @@ -65,6 +65,7 @@ public class LiveStreamCourseNode extends AbstractAccessableCourseNode { public static final String CONFIG_BUFFER_BEFORE_MIN = "bufferBeforeMin"; public static final String CONFIG_BUFFER_AFTER_MIN = "bufferBeforeAfter"; public static final String CONFIG_COACH_CAN_EDIT = "coachCanEdit"; + public static final String CONFIG_PLAYER_PROFILE = "playerProfile"; public LiveStreamCourseNode() { super(TYPE); @@ -96,7 +97,7 @@ public class LiveStreamCourseNode extends AbstractAccessableCourseNode { LiveStreamSecurityCallback secCallback = LiveStreamSecurityCallbackFactory .createSecurityCallback(userCourseEnv, this.getModuleConfiguration()); OLATResource courseOres = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseResource(); - runCtrl = new LiveStreamRunController(ureq, wControl, this.getModuleConfiguration(), courseOres, secCallback, calendars); + runCtrl = new LiveStreamRunController(ureq, wControl, this, courseOres, secCallback, calendars); } Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runCtrl, this, "o_livestream_icon"); return new NodeRunConstructionResult(ctrl); @@ -130,6 +131,8 @@ public class LiveStreamCourseNode extends AbstractAccessableCourseNode { config.setIntValue(CONFIG_BUFFER_BEFORE_MIN, liveStreamModule.getBufferBeforeMin()); config.setIntValue(CONFIG_BUFFER_AFTER_MIN, liveStreamModule.getBufferAfterMin()); config.setBooleanEntry(CONFIG_COACH_CAN_EDIT, liveStreamModule.isEditCoach()); + // CONFIG_PLAYER_PROFILE has no default value, because previously the multi + // stream option has to be enabled and the default value has to be selected. } config.setConfigurationVersion(CURRENT_VERSION); } diff --git a/src/main/java/org/olat/course/nodes/livestream/LiveStreamModule.java b/src/main/java/org/olat/course/nodes/livestream/LiveStreamModule.java index 7dd830efb80b4447a6b4e604173338a93c5af1ca..2d4c701c7abca5dbbe8afdd3ceaa82c5346ad804 100644 --- a/src/main/java/org/olat/course/nodes/livestream/LiveStreamModule.java +++ b/src/main/java/org/olat/course/nodes/livestream/LiveStreamModule.java @@ -37,18 +37,27 @@ import org.springframework.stereotype.Service; public class LiveStreamModule extends AbstractSpringModule implements ConfigOnOff { public static final String LIVE_STREAM_ENABLED = "live.stream.enabled"; + public static final String LIVE_STREAM_MULTI_STREAM_ENABLED = "live.stream.multi.stream.enabled"; + public static final String LIVE_STREAM_URL_SEPARATOR = "live.stream.url.separator"; public static final String LIVE_STREAM_BUFFER_BEFORE_MIN = "live.stream.buffer.before.min"; public static final String LIVE_STREAM_BUFFER_AFTER_MIN = "live.stream.buffer.after.min"; public static final String LIVE_STREAM_EDIT_COACH = "live.stream.edit.coach"; + public static final String LIVE_STREAM_PLAYER_PROFILE = "live.stream.player.profile"; @Value("${live.stream.enabled:false}") private boolean enabled; + @Value("${live.stream.multi.stream.enabled:false}") + private boolean multiStreamEnabled; + @Value("${live.stream.url.separator:,}") + private String urlSeparator; @Value("${live.stream.buffer.before.min:5}") private int bufferBeforeMin; @Value("${live.stream.buffer.after.min:5}") private int bufferAfterMin; @Value("${live.stream.edit.coach:false}") private boolean editCoach; + @Value("${live.stream.player.profile:both}") + private String playerProfile; @Autowired public LiveStreamModule(CoordinatorManager coordinatorManager) { @@ -62,6 +71,16 @@ public class LiveStreamModule extends AbstractSpringModule implements ConfigOnOf enabled = "true".equals(enabledObj); } + String multiStreamEnabledObj = getStringPropertyValue(LIVE_STREAM_MULTI_STREAM_ENABLED, true); + if(StringHelper.containsNonWhitespace(multiStreamEnabledObj)) { + multiStreamEnabled = "true".equals(multiStreamEnabledObj); + } + + String urlSeparatorObj = getStringPropertyValue(LIVE_STREAM_URL_SEPARATOR, true); + if(StringHelper.containsNonWhitespace(urlSeparatorObj)) { + urlSeparator = urlSeparatorObj; + } + String bufferBeforeMinObj = getStringPropertyValue(LIVE_STREAM_BUFFER_BEFORE_MIN, true); if(StringHelper.containsNonWhitespace(bufferBeforeMinObj)) { bufferAfterMin = Integer.parseInt(bufferBeforeMinObj); @@ -76,6 +95,11 @@ public class LiveStreamModule extends AbstractSpringModule implements ConfigOnOf if(StringHelper.containsNonWhitespace(editCoachObj)) { editCoach = "true".equals(editCoachObj); } + + String playerProfileObj = getStringPropertyValue(LIVE_STREAM_PLAYER_PROFILE, true); + if(StringHelper.containsNonWhitespace(playerProfileObj)) { + playerProfile = playerProfileObj; + } } @Override @@ -93,6 +117,24 @@ public class LiveStreamModule extends AbstractSpringModule implements ConfigOnOf setStringProperty(LIVE_STREAM_ENABLED, Boolean.toString(enabled), true); } + public boolean isMultiStreamEnabled() { + return multiStreamEnabled; + } + + public void setMultiStreamEnabled(boolean multiStreamEnabled) { + this.multiStreamEnabled = multiStreamEnabled; + setStringProperty(LIVE_STREAM_MULTI_STREAM_ENABLED, Boolean.toString(multiStreamEnabled), true); + } + + public String getUrlSeparator() { + return urlSeparator; + } + + public void setUrlSeparator(String urlSeparator) { + this.urlSeparator = urlSeparator; + setStringProperty(LIVE_STREAM_URL_SEPARATOR, urlSeparator, true); + } + public int getBufferBeforeMin() { return bufferBeforeMin; } @@ -120,4 +162,13 @@ public class LiveStreamModule extends AbstractSpringModule implements ConfigOnOf setStringProperty(LIVE_STREAM_EDIT_COACH, Boolean.toString(editCoach), true); } + public String getPlayerProfile() { + return playerProfile; + } + + public void setPlayerProfile(String playerProfile) { + this.playerProfile = playerProfile; + setStringProperty(LIVE_STREAM_PLAYER_PROFILE, playerProfile, true); + } + } diff --git a/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallback.java b/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallback.java index f44ed7e63cfdaab24cb5eca363578675fe6efdc3..e1088254c90f98c2fa28bf4587c795278c2d1e06 100644 --- a/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallback.java +++ b/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallback.java @@ -29,6 +29,8 @@ public interface LiveStreamSecurityCallback { boolean canViewStreams(); - boolean canEditStreams(); + boolean canViewStatistic(); + boolean canEditStreams(); + } diff --git a/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallbackFactory.java b/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallbackFactory.java index 583dbeb1bb345f503f4b4991d9ab62c5b059e576..0218a5421fa9ba85eba02d2b8f0cbd9b8a6be250 100644 --- a/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallbackFactory.java +++ b/src/main/java/org/olat/course/nodes/livestream/LiveStreamSecurityCallbackFactory.java @@ -34,15 +34,18 @@ public class LiveStreamSecurityCallbackFactory { public static LiveStreamSecurityCallback createSecurityCallback(UserCourseEnvironment userCourseEnv, ModuleConfiguration config) { boolean canViewStreams = true; + boolean canViewStatistic = userCourseEnv.isAdmin() || userCourseEnv.isCoach(); boolean canEditStreams = userCourseEnv.isAdmin() || (userCourseEnv.isCoach() && config.getBooleanSafe(LiveStreamCourseNode.CONFIG_COACH_CAN_EDIT)); - return createSecurityCallback(canViewStreams, canEditStreams); + return createSecurityCallback(canViewStreams, canViewStatistic, canEditStreams); } - public static LiveStreamSecurityCallback createSecurityCallback(boolean canViewStreams, boolean canEditStreams) { + public static LiveStreamSecurityCallback createSecurityCallback(boolean canViewStreams, boolean canViewStatistic, + boolean canEditStreams) { LiveStreamSecurityCallbackImpl secCallback = new LiveStreamSecurityCallbackImpl(); secCallback.setCanViewStreams(canViewStreams); + secCallback.setCanViewStatistic(canViewStatistic); secCallback.setCanEditStreams(canEditStreams); return secCallback; } @@ -50,6 +53,7 @@ public class LiveStreamSecurityCallbackFactory { private static class LiveStreamSecurityCallbackImpl implements LiveStreamSecurityCallback { private boolean canViewStreams; + private boolean canViewStatistic; private boolean canEditStreams; @Override @@ -61,6 +65,15 @@ public class LiveStreamSecurityCallbackFactory { this.canViewStreams = canViewStreams; } + @Override + public boolean canViewStatistic() { + return canViewStatistic; + } + + private void setCanViewStatistic(boolean canViewStatistic) { + this.canViewStatistic = canViewStatistic; + } + @Override public boolean canEditStreams() { return canEditStreams; diff --git a/src/main/java/org/olat/course/nodes/livestream/LiveStreamService.java b/src/main/java/org/olat/course/nodes/livestream/LiveStreamService.java index 5ffc1a1f51da5648c833e88906f7afbe76f55700..6a534b4ea1bd7f3db37ac1ff25d9efcbdab073db 100644 --- a/src/main/java/org/olat/course/nodes/livestream/LiveStreamService.java +++ b/src/main/java/org/olat/course/nodes/livestream/LiveStreamService.java @@ -19,7 +19,9 @@ */ package org.olat.course.nodes.livestream; +import java.util.Date; import java.util.List; +import java.util.concurrent.ScheduledExecutorService; import org.olat.course.nodes.cal.CourseCalendars; @@ -31,9 +33,24 @@ import org.olat.course.nodes.cal.CourseCalendars; */ public interface LiveStreamService { + ScheduledExecutorService getScheduler(); + List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin, int bufferAfterMin); + + List<? extends LiveStreamEvent> getRunningAndPastEvents(CourseCalendars calendars, int bufferBeforeMin); List<? extends LiveStreamEvent> getUpcomingEvents(CourseCalendars calendars, int bufferBeforeMin); + + /** + * Get the number of unique viewers of the live stream event. + * + * @param courseResId + * @param courseNodeIdent + * @param from + * @param to + * @return + */ + Long getViewers(String courseResId, String courseNodeIdent, Date from, Date to); } diff --git a/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java similarity index 78% rename from src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java rename to src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java index db1bc78323fadea2ee1c50663a92db62886688cd..6dde2be5ca42f56d26c6b69f1b4e04f51e71e488 100644 --- a/src/main/java/org/olat/course/nodes/livestream/manager/LIveStreamServiceImpl.java +++ b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java @@ -22,7 +22,11 @@ package org.olat.course.nodes.livestream.manager; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -35,6 +39,7 @@ import org.olat.course.nodes.livestream.LiveStreamEvent; import org.olat.course.nodes.livestream.LiveStreamService; import org.olat.course.nodes.livestream.model.LiveStreamEventImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.CustomizableThreadFactory; import org.springframework.stereotype.Service; /** @@ -44,10 +49,23 @@ import org.springframework.stereotype.Service; * */ @Service -public class LIveStreamServiceImpl implements LiveStreamService { +public class LiveStreamServiceImpl implements LiveStreamService { + + private ScheduledExecutorService scheduler; @Autowired private CalendarManager calendarManager; + @Autowired + private LiveStreamStatisticDAO statisticDao; + + @Override + public ScheduledExecutorService getScheduler() { + if (scheduler == null) { + ThreadFactory threadFactory = new CustomizableThreadFactory("oo-livestream-"); + scheduler = Executors.newScheduledThreadPool(1, threadFactory); + } + return scheduler; + } @Override public List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin, @@ -66,6 +84,20 @@ public class LIveStreamServiceImpl implements LiveStreamService { return getLiveStreamEvents(calendars, from, to); } + + @Override + public List<? extends LiveStreamEvent> getRunningAndPastEvents(CourseCalendars calendars, int bufferBeforeMin) { + Date now = new Date(); + + Date from = new GregorianCalendar(2000, 1, 1).getTime(); + + Calendar cTo = Calendar.getInstance(); + cTo.setTime(now); + cTo.add(Calendar.MINUTE, bufferBeforeMin); + Date to = cTo.getTime(); + + return getLiveStreamEvents(calendars, from, to); + } @Override public List<? extends LiveStreamEvent> getUpcomingEvents(CourseCalendars calendars, int bufferBeforeMin) { @@ -133,4 +165,8 @@ public class LIveStreamServiceImpl implements LiveStreamService { return liveStreamEvent; } + @Override + public Long getViewers(String courseResId, String nodeIdent, Date from, Date to) { + return statisticDao.getViewers(courseResId, nodeIdent, from, to); + } } diff --git a/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAO.java b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAO.java new file mode 100644 index 0000000000000000000000000000000000000000..52d933eb2f7395ba288531fa899f9fae09809645 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAO.java @@ -0,0 +1,62 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.manager; + +import java.util.Date; +import java.util.List; + +import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.persistence.QueryBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * Initial date: 17 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +@Component +public class LiveStreamStatisticDAO { + + @Autowired + private DB dbInstance; + + public Long getViewers(String courseResId, String nodeIdent, Date from, Date to) { + QueryBuilder sb = new QueryBuilder(); + sb.append("select count(distinct log.userId)"); + sb.append(" from loggingobject log"); + sb.and().append("log.actionVerb = 'launch'"); + sb.and().append("log.targetResType = 'livestream'"); + sb.and().append("log.targetResId = :targetResId"); + sb.and().append("log.parentResId = :parentResId"); + sb.and().append("log.creationDate >= :from"); + sb.and().append("log.creationDate <= :to"); + + List<Long> counts = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), Long.class) + .setParameter("targetResId", nodeIdent) + .setParameter("parentResId", courseResId) + .setParameter("from", from) + .setParameter("to", to) + .getResultList(); + return !counts.isEmpty()? counts.get(0): null; + } +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/PaellaFactory.java b/src/main/java/org/olat/course/nodes/livestream/paella/PaellaFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..af8c7f3b90a696099b80b5f708101117fe527b01 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/PaellaFactory.java @@ -0,0 +1,117 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +import java.util.ArrayList; +import java.util.List; + +import org.olat.core.CoreSpringFactory; +import org.olat.core.util.StringHelper; +import org.olat.course.nodes.livestream.LiveStreamModule; + +/** + * + * Initial date: 13 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class PaellaFactory { + + public static Streams createStreams(String url) { + Streams streams = new Streams(); + if (StringHelper.containsNonWhitespace(url)) { + String[] urls = splitUrls(url); + addStreams(streams, urls); + } + return streams; + } + + private static String[] splitUrls(String url) { + String urlSeparator = CoreSpringFactory.getImpl(LiveStreamModule.class).getUrlSeparator(); + return url.split(urlSeparator); + } + + private static void addStreams(Streams streams, String[] urls) { + List<Stream> streamList = new ArrayList<>(2); + if (urls.length > 0) { + Stream stream1 = createStream("stream1", urls[0]); + streamList.add(stream1); + } + if (urls.length > 1) { + Stream stream1 = createStream("stream2", urls[1]); + streamList.add(stream1); + } + Stream[] streamArray = streamList.toArray(new Stream[streamList.size()]); + streams.setStreams(streamArray); + } + + private static Stream createStream(String content, String url) { + Stream stream = new Stream(); + stream.setContent(content); + Sources sources = createSources(url); + stream.setSources(sources); + return stream; + } + + private static Sources createSources(String url) { + Sources sources = new Sources(); + addSource(sources, url); + return sources; + } + + private static void addSource(Sources sources, String url) { + String suffix = getSuffix(url); + if (suffix == null) return; + + switch (suffix) { + case "m3u8": + addM3U8Source(sources, url); + break; + case "mp4": + addMP4Source(sources, url); + break; + default: + break; + } + } + + private static void addM3U8Source(Sources sources, String url) { + Source source = createSource(url); + sources.setHls(new Source[] {source}); + } + + private static void addMP4Source(Sources sources, String url) { + Source source = createSource(url); + sources.setMp4(new Source[] {source}); + } + + private static Source createSource(String url) { + Source source = new Source(); + source.setSrc(url); + source.setMimetype("video/mp4"); + return source; + } + + private static String getSuffix(String url) { + int i = url.lastIndexOf('.'); + return i > 0? url.substring(i+1): null; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/PaellaMapper.java b/src/main/java/org/olat/course/nodes/livestream/paella/PaellaMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..ba11b49eca69f2b758d713b938835aeb9f8d4822 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/PaellaMapper.java @@ -0,0 +1,247 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +import java.nio.charset.StandardCharsets; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.logging.log4j.Logger; +import org.olat.core.dispatcher.impl.StaticMediaDispatcher; +import org.olat.core.dispatcher.mapper.Mapper; +import org.olat.core.gui.media.MediaResource; +import org.olat.core.gui.media.StringMediaResource; +import org.olat.core.gui.render.StringOutput; +import org.olat.core.logging.Tracing; +import org.olat.core.util.StringHelper; + +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * + * based on https://github.com/polimediaupv/paella-opencast/blob/master/src/main/paella-opencast/ui/embed.html + * + * Initial date: 11 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class PaellaMapper implements Mapper { + + private static final Logger log = Tracing.createLoggerFor(PaellaMapper.class); + + private final ObjectMapper mapper = new ObjectMapper(); + + private final Streams streams; + private final PlayerProfile playerProfile; + + public PaellaMapper(Streams streams, PlayerProfile playerProfile) { + this.streams = streams; + this.playerProfile = playerProfile; + } + + @Override + public MediaResource handle(String relPath, HttpServletRequest request) { + StringMediaResource smr = new StringMediaResource(); + + String encoding = StandardCharsets.ISO_8859_1.name(); + String mimetype = "text/html;charset=" + StringHelper.check4xMacRoman(encoding); + smr.setContentType(mimetype); + smr.setEncoding(encoding); + + String content = createContent(); + smr.setData(content); + return smr; + } + + private String createContent() { + StringOutput sb = new StringOutput(); + sb.append("<!DOCTYPE html>"); + sb.append("<html>"); + sb.append("<head>"); + sb.append("<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8;\">"); + sb.append("<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">"); + appendStaticJs(sb, "js/paella/player/javascript/swfobject.js"); + appendStaticJs(sb, "js/paella/player/javascript/base.js"); + appendStaticJs(sb, "js/paella/player/javascript/jquery.min.js"); + appendStaticJs(sb, "js/paella/player/javascript/lunr.min.js"); + appendStaticJs(sb, "js/paella/player/javascript/require.js"); + appendStaticJs(sb, "js/paella/player/javascript/paella_player.js"); + appendStaticCSS(sb, "js/paella/player/resources/bootstrap/css/bootstrap.min.css"); + appendStaticCSS(sb, "js/paella/player/resources/style/style_dark.css"); + sb.append("</head>"); + sb.append("<body id=\"body\" onload=\"paella.load('playerContainer', {"); + sb.append(" config: "); + appendPlayerConfig(sb); + sb.append(" ,"); + sb.append(" data:"); + sb.append(objectToJson(streams)); + sb.append("}"); + sb.append(");\">"); + sb.append("<div id=\"playerContainer\" style=\"display:block;width:100%\">"); + sb.append("</div>"); + sb.append("</body>"); + sb.append("</html>"); + + String html = sb.toString(); + log.debug(html); + return html; + } + + private void appendStaticJs(StringOutput sb, String javascript) { + sb.append("<script src=\""); + StaticMediaDispatcher.renderStaticURI(sb, javascript); + sb.append("\"></script>"); + } + + private void appendStaticCSS(StringOutput sb, String css) { + sb.append("<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\""); + StaticMediaDispatcher.renderStaticURI(sb, css); + sb.append("\"></link>"); + } + + private void appendPlayerConfig(StringOutput sb) { + sb.append("{"); + sb.append(" 'player':{"); + sb.append(" 'accessControlClass':'paella.AccessControl',"); + sb.append(" 'profileFrameStrategy': 'paella.ProfileFrameStrategy',"); + sb.append(" 'videoQualityStrategy': 'paella.LimitedBestFitVideoQualityStrategy',"); + sb.append(" 'videoQualityStrategyParams':{ 'maxAutoQualityRes':720 },"); + sb.append(" 'reloadOnFullscreen': true,"); + sb.append(" 'videoZoom': {"); + sb.append(" 'enabled':false,"); + sb.append(" 'max':800"); + sb.append(" },"); + sb.append(" 'deprecated-methods':[{'name':'streaming','enabled':true},"); + sb.append(" {'name':'html','enabled':true},"); + sb.append(" {'name':'flash','enabled':true},"); + sb.append(" {'name':'image','enabled':true}],"); + sb.append(" 'methods':["); + sb.append(" { 'factory':'ChromaVideoFactory', 'enabled':true },"); + sb.append(" { 'factory':'WebmVideoFactory', 'enabled':true },"); + sb.append(" { 'factory':'Html5VideoFactory', 'enabled':true },"); + sb.append(" { 'factory':'MpegDashVideoFactory', 'enabled':true },"); + sb.append(" {"); + sb.append(" 'factory':'HLSVideoFactory',"); + sb.append(" 'enabled':true,"); + sb.append(" 'config': {"); + sb.append(" 'maxBufferLength': 30,"); + sb.append(" 'maxMaxBufferLength': 600,"); + sb.append(" 'maxBufferSize': 60000000,"); + sb.append(" 'maxBufferHole': 0.5,"); + sb.append(" 'lowBufferWatchdogPeriod': 0.5,"); + sb.append(" 'highBufferWatchdogPeriod': 3"); + sb.append(" },"); + sb.append(" 'iOSMaxStreams': 2,"); + sb.append(" 'androidMaxStreams': 2"); + sb.append(" }"); + sb.append(" ],"); + sb.append(" 'audioMethods':["); + sb.append(" { 'factory':'MultiformatAudioFactory', 'enabled':true }"); + sb.append(" ],"); + sb.append(" 'defaultAudioTag': '',"); + sb.append(" 'slidesMarks':{"); + sb.append(" 'enabled':true,"); + sb.append(" 'color':'gray'"); + sb.append(" }"); + sb.append(" },"); + sb.append(" 'data':{"); + sb.append(" 'enabled':true,"); + sb.append(" 'dataDelegates':{"); + sb.append(" 'trimming':'CookieDataDelegate',"); + sb.append(" 'metadata':'VideoManifestMetadataDataDelegate',"); + sb.append(" 'cameraTrack':'TrackCameraDataDelegate'"); + sb.append(" }"); + sb.append(" },"); + sb.append(" 'folders': {"); + sb.append(" 'profiles': 'config/profiles',"); + sb.append(" 'resources': '"); + StaticMediaDispatcher.renderStaticURI(sb, "js/paella/player/resources"); + sb.append("',"); + sb.append(" 'skins': 'resources/style'"); + sb.append(" },"); + sb.append(" 'experimental':{"); + sb.append(" 'autoplay':true"); + sb.append(" },"); + sb.append(" 'plugins':{"); + sb.append(" 'enablePluginsByDefault': false,"); + sb.append(" 'list':{"); + sb.append(" 'edu.harvard.dce.paella.flexSkipPlugin': {'enabled':true, 'direction': 'Rewind', 'seconds': 10, 'minWindowSize': 510 },"); + sb.append(" 'edu.harvard.dce.paella.flexSkipForwardPlugin': {'enabled':true, 'direction': 'Forward', 'seconds': 30},"); + sb.append(" 'es.upv.paella.captionsPlugin': {'enabled':true, 'searchOnCaptions':true},"); + sb.append(" 'es.upv.paella.frameControlPlugin': {'enabled': true, 'showFullPreview': 'auto', 'showCaptions':true, 'minWindowSize': 450 },"); + sb.append(" 'es.upv.paella.fullScreenButtonPlugin': {'enabled':true, 'reloadOnFullscreen':{ 'enabled':true, 'keepUserSelection':true }},"); + sb.append(" 'es.upv.paella.playPauseButtonPlugin': {'enabled':true},"); + sb.append(" 'es.upv.paella.themeChooserPlugin': {'enabled':true, 'minWindowSize': 600},"); + sb.append(" 'es.upv.paella.viewModePlugin': { 'enabled': true, 'minWindowSize': 300 },"); + sb.append(" 'es.upv.paella.volumeRangePlugin':{'enabled':true, 'showMasterVolume': true, 'showSlaveVolume': false },"); + sb.append(" 'es.upv.paella.pipModePlugin': { 'enabled':true },"); + sb.append(" 'es.upv.paella.audioSelector': { 'enabled':true, 'minWindowSize': 400 },"); + sb.append(" 'es.upv.paella.airPlayPlugin': { 'enabled':true },"); + sb.append(" 'es.upv.paella.liveStreamingIndicatorPlugin': { 'enabled': true },"); + sb.append(" 'es.upv.paella.showEditorPlugin':{'enabled':true,'alwaysVisible':true},"); + sb.append(" 'es.upv.paella.videoDataPlugin': {"); + sb.append(" 'enabled': true,"); + sb.append(" 'excludeLocations':["); + sb.append(" 'paellaplayer.upv.es'"); + sb.append(" ],"); + sb.append(" 'excludeParentLocations':["); + sb.append(" 'localhost:8000'"); + sb.append(" ]"); + sb.append(" },"); + sb.append(" 'es.upv.paella.blackBoardPlugin': {'enabled': true},"); + sb.append(" 'es.upv.paella.breaksPlayerPlugin': {'enabled': true},"); + sb.append(" 'es.upv.paella.overlayCaptionsPlugin': {'enabled': true},"); + sb.append(" 'es.upv.paella.playButtonOnScreenPlugin': {'enabled':true},"); + sb.append(" 'es.upv.paella.translecture.captionsPlugin': {'enabled':true},"); + sb.append(" 'es.upv.paella.trimmingPlayerPlugin': {'enabled':true},"); + sb.append(" 'es.upv.paella.windowTitlePlugin': {'enabled': true},"); + playerProfile.appendPlayerConfig(sb); + // The last plugin must not have a comma at the and of the configs. + sb.append(" 'es.upv.paella.windowTitlePlugin': {'enabled': true}"); + sb.append(" }"); + sb.append(" },"); + sb.append(" 'defaultProfile':'presenter_presentation',"); + sb.append(" 'standalone' : {"); + sb.append(" 'repository': '../repository/'"); + sb.append(" },"); + sb.append(" 'skin': {"); + sb.append(" 'available': ["); + sb.append(" 'dark',"); + sb.append(" 'dark_small',"); + sb.append(" 'light',"); + sb.append(" 'light_small'"); + sb.append(" ]"); + sb.append(" }"); + sb.append("}"); + } + + private String objectToJson(Object o) { + String json = null; + try { + json = mapper.writeValueAsString(o); + } catch (Exception e) { + json = "{}"; + } + json = json.replace("\"", "'"); + log.debug(json); + return json; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/PlayerProfile.java b/src/main/java/org/olat/course/nodes/livestream/paella/PlayerProfile.java new file mode 100644 index 0000000000000000000000000000000000000000..707fed01afbbb6b58474079943e2459d5ea4e62c --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/PlayerProfile.java @@ -0,0 +1,84 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +import org.olat.core.gui.render.StringOutput; + +/** + * + * Initial date: 17 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public enum PlayerProfile { + + both("player.profile.both") { + @Override + public void appendPlayerConfig(StringOutput sb) { + sb.append(" 'es.upv.paella.singleStreamProfilePlugin': {"); + sb.append(" 'enabled': true,"); + sb.append(" 'videoSets': ["); + sb.append(" { 'icon':'professor_icon.svg', 'id':'professor', 'content':['stream1']},"); + sb.append(" { 'icon':'slide_icon.svg', 'id':'slide', 'content':['stream2']}"); + sb.append(" ]"); + sb.append(" },"); + sb.append(" 'es.upv.paella.dualStreamProfilePlugin': { 'enabled':true,"); + sb.append(" 'videoSets': ["); + sb.append(" { 'icon':'slide_professor_icon.svg', 'id':'slide_over_professor', 'content':['stream1','stream2'] }"); + sb.append(" ]"); + sb.append(" },"); + } + }, + stream1("player.profile.stream1") { + @Override + public void appendPlayerConfig(StringOutput sb) { + sb.append(" 'es.upv.paella.singleStreamProfilePlugin': {"); + sb.append(" 'enabled': true,"); + sb.append(" 'videoSets': ["); + sb.append(" { 'icon':'professor_icon.svg', 'id':'professor', 'content':['stream1']}"); + sb.append(" ]"); + sb.append(" },"); + } + }, + stream2("player.profile.stream2") { + @Override + public void appendPlayerConfig(StringOutput sb) { + sb.append(" 'es.upv.paella.singleStreamProfilePlugin': {"); + sb.append(" 'enabled': true,"); + sb.append(" 'videoSets': ["); + sb.append(" { 'icon':'slide_icon.svg', 'id':'slide', 'content':['stream2']}"); + sb.append(" ]"); + sb.append(" },"); + } + }; + + private final String i18nKey; + + private PlayerProfile(String i18nKey) { + this.i18nKey = i18nKey; + } + + public String getI18nKey() { + return i18nKey; + } + + public abstract void appendPlayerConfig(StringOutput sb); + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/Source.java b/src/main/java/org/olat/course/nodes/livestream/paella/Source.java new file mode 100644 index 0000000000000000000000000000000000000000..1effed2f296bf5141697a2fafac8c4f8b2fc46a7 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/Source.java @@ -0,0 +1,49 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +/** + * + * Initial date: 13 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Source { + + private String src; + private String mimetype; + + public String getSrc() { + return src; + } + + public void setSrc(String src) { + this.src = src; + } + + public String getMimetype() { + return mimetype; + } + + public void setMimetype(String mimetype) { + this.mimetype = mimetype; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/Sources.java b/src/main/java/org/olat/course/nodes/livestream/paella/Sources.java new file mode 100644 index 0000000000000000000000000000000000000000..de4a258ceb7857f724e9fb5b05db54986557070b --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/Sources.java @@ -0,0 +1,52 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +import com.fasterxml.jackson.annotation.JsonInclude; + +/** + * + * Initial date: 13 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Sources { + + private Source[] hls; + private Source[] mp4; + + public Source[] getHls() { + return hls; + } + + public void setHls(Source[] hls) { + this.hls = hls; + } + + public Source[] getMp4() { + return mp4; + } + + public void setMp4(Source[] mp4) { + this.mp4 = mp4; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/Stream.java b/src/main/java/org/olat/course/nodes/livestream/paella/Stream.java new file mode 100644 index 0000000000000000000000000000000000000000..f3adc58067c7cf11cfc4250837a753599c07195d --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/Stream.java @@ -0,0 +1,49 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +/** + * + * Initial date: 16 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Stream { + + private Sources sources; + private String content; + + public Sources getSources() { + return sources; + } + + public void setSources(Sources sources) { + this.sources = sources; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/paella/Streams.java b/src/main/java/org/olat/course/nodes/livestream/paella/Streams.java new file mode 100644 index 0000000000000000000000000000000000000000..ea4d64f808dd1f58a663a72e37ae41d60e15f89d --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/paella/Streams.java @@ -0,0 +1,40 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.paella; + +/** + * + * Initial date: 16 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Streams { + + private Stream[] streams; + + public Stream[] getStreams() { + return streams; + } + + public void setStreams(Stream[] streams) { + this.streams = streams; + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamAdminController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamAdminController.java index 3acd268aa8b6be8fbb4c9c64e9cbd6fef800956f..906d7470b2281257f09f3a745edb0820fd3dfdcc 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamAdminController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamAdminController.java @@ -19,20 +19,29 @@ */ package org.olat.course.nodes.livestream.ui; +import static org.olat.core.gui.components.util.KeyValues.entry; import static org.olat.core.gui.translator.TranslatorHelper.translateAll; import static org.olat.course.nodes.livestream.ui.LiveStreamUIFactory.validateInteger; +import static org.olat.course.nodes.livestream.ui.LiveStreamUIFactory.validateMandatory; import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.util.KeyValues; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.course.nodes.livestream.LiveStreamModule; +import org.olat.course.nodes.livestream.paella.PlayerProfile; import org.springframework.beans.factory.annotation.Autowired; +import edu.emory.mathcs.backport.java.util.Arrays; + /** * * Initial date: 5 Jun 2019<br> @@ -44,16 +53,18 @@ public class LiveStreamAdminController extends FormBasicController { private static final String[] ENABLED_KEYS = new String[]{"on"}; private MultipleSelectionElement enabledEl; + private MultipleSelectionElement multiStreamEnabledEl; + private TextElement urlSeparatorEl; private TextElement bufferBeforeMinEl; private TextElement bufferAfterMinEl; private MultipleSelectionElement coachCanEditEl; + private SingleSelection playerProfileEl; @Autowired private LiveStreamModule liveStreamModule; public LiveStreamAdminController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl, LAYOUT_BAREBONE); - initForm(ureq); } @@ -68,6 +79,15 @@ public class LiveStreamAdminController extends FormBasicController { translateAll(getTranslator(), ENABLED_KEYS)); enabledEl.select(ENABLED_KEYS[0], liveStreamModule.isEnabled()); + multiStreamEnabledEl = uifactory.addCheckboxesHorizontal("admin.multi.stream.enabled", generalCont, + ENABLED_KEYS, translateAll(getTranslator(), ENABLED_KEYS)); + multiStreamEnabledEl.addActionListener(FormEvent.ONCHANGE); + multiStreamEnabledEl.select(ENABLED_KEYS[0], liveStreamModule.isMultiStreamEnabled()); + + urlSeparatorEl = uifactory.addTextElement("admin.url.separator", 10, liveStreamModule.getUrlSeparator(), generalCont); + urlSeparatorEl.setMandatory(true); + urlSeparatorEl.setHelpTextKey("admin.url.separator.help", null); + FormLayoutContainer defaultValuesCont = FormLayoutContainer.createDefaultFormLayout("default_values", getTranslator()); defaultValuesCont.setFormTitle(translate("admin.default.values.title")); defaultValuesCont.setFormDescription(translate("admin.default.values.desc")); @@ -89,16 +109,44 @@ public class LiveStreamAdminController extends FormBasicController { boolean coachCanEdit = liveStreamModule.isEditCoach(); coachCanEditEl.select(ENABLED_KEYS[0], coachCanEdit); + KeyValues playerProfileKV = new KeyValues(); + for (PlayerProfile playerProfile : PlayerProfile.values()) { + playerProfileKV.add(entry(playerProfile.name(), translate(playerProfile.getI18nKey()))); + } + playerProfileEl = uifactory.addDropdownSingleselect("admin.player.profile", defaultValuesCont, playerProfileKV.keys(), + playerProfileKV.values()); + String playerProfile = liveStreamModule.getPlayerProfile(); + if (Arrays.asList(playerProfileEl.getKeys()).contains(playerProfile)) { + playerProfileEl.select(playerProfile, true); + } + FormLayoutContainer buttonsCont = FormLayoutContainer.createDefaultFormLayout("buttons", getTranslator()); buttonsCont.setRootForm(mainForm); formLayout.add("buttons", buttonsCont); uifactory.addFormSubmitButton("save", buttonsCont); + + updateUI(); + } + + private void updateUI() { + boolean multiStream = multiStreamEnabledEl.isAtLeastSelected(1); + urlSeparatorEl.setVisible(multiStream); + playerProfileEl.setVisible(multiStream); + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if (source == multiStreamEnabledEl) { + updateUI(); + } + super.formInnerEvent(ureq, source, event); } @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = super.validateFormLogic(ureq); + allOk &= validateMandatory(urlSeparatorEl); allOk &= validateInteger(bufferBeforeMinEl, true); allOk &= validateInteger(bufferAfterMinEl, true); @@ -110,6 +158,14 @@ public class LiveStreamAdminController extends FormBasicController { boolean enabled = enabledEl.isAtLeastSelected(1); liveStreamModule.setEnabled(enabled); + boolean multiStreamEnabled = multiStreamEnabledEl.isAtLeastSelected(1); + liveStreamModule.setMultiStreamEnabled(multiStreamEnabled); + + if (urlSeparatorEl.isVisible()) { + String urlSeparator = urlSeparatorEl.getValue(); + liveStreamModule.setUrlSeparator(urlSeparator); + } + int bufferBeforeMin = Integer.parseInt(bufferBeforeMinEl.getValue()); liveStreamModule.setBufferBeforeMin(bufferBeforeMin); @@ -118,6 +174,11 @@ public class LiveStreamAdminController extends FormBasicController { boolean coachCanEdit = coachCanEditEl.isAtLeastSelected(1); liveStreamModule.setEditCoach(coachCanEdit); + + if (playerProfileEl.isVisible()) { + String playerProfile = playerProfileEl.getSelectedKey(); + liveStreamModule.setPlayerProfile(playerProfile); + } } @Override diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamConfigController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamConfigController.java index 0c417d030d96809987b9a8ef8d2d0e758cc69015..638740ebdd5876d0e7957ff1403443cef9e22366 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamConfigController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamConfigController.java @@ -19,19 +19,27 @@ */ package org.olat.course.nodes.livestream.ui; +import static org.olat.core.gui.components.util.KeyValues.entry; import static org.olat.core.gui.translator.TranslatorHelper.translateAll; import static org.olat.course.nodes.livestream.ui.LiveStreamUIFactory.validateInteger; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.util.KeyValues; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.course.nodes.LiveStreamCourseNode; +import org.olat.course.nodes.livestream.LiveStreamModule; +import org.olat.course.nodes.livestream.paella.PlayerProfile; import org.olat.modules.ModuleConfiguration; +import org.springframework.beans.factory.annotation.Autowired; + +import edu.emory.mathcs.backport.java.util.Arrays; /** * @@ -48,6 +56,10 @@ public class LiveStreamConfigController extends FormBasicController { private TextElement bufferBeforeMinEl; private TextElement bufferAfterMinEl; private MultipleSelectionElement coachCanEditEl; + private SingleSelection playerProfileEl; + + @Autowired + private LiveStreamModule liveStreamModule; public LiveStreamConfigController(UserRequest ureq, WindowControl wControl, ModuleConfiguration moduleConfiguration) { super(ureq, wControl); @@ -73,6 +85,20 @@ public class LiveStreamConfigController extends FormBasicController { boolean coachCanEdit = config.getBooleanSafe(LiveStreamCourseNode.CONFIG_COACH_CAN_EDIT); coachCanEditEl.select(ENABLED_KEYS[0], coachCanEdit); + if (liveStreamModule.isMultiStreamEnabled()) { + KeyValues playerProfileKV = new KeyValues(); + for (PlayerProfile playerProfile : PlayerProfile.values()) { + playerProfileKV.add(entry(playerProfile.name(), translate(playerProfile.getI18nKey()))); + } + playerProfileEl = uifactory.addDropdownSingleselect("config.player.profile", formLayout, playerProfileKV.keys(), + playerProfileKV.values()); + String playerProfile = config.getStringValue(LiveStreamCourseNode.CONFIG_PLAYER_PROFILE, + liveStreamModule.getPlayerProfile()); + if (Arrays.asList(playerProfileEl.getKeys()).contains(playerProfile)) { + playerProfileEl.select(playerProfile, true); + } + } + uifactory.addFormSubmitButton("save", formLayout); } @@ -101,6 +127,11 @@ public class LiveStreamConfigController extends FormBasicController { boolean coachCanEdit = coachCanEditEl.isAtLeastSelected(1); config.setBooleanEntry(LiveStreamCourseNode.CONFIG_COACH_CAN_EDIT, coachCanEdit); + if (playerProfileEl != null) { + String playerProfile = playerProfileEl.getSelectedKey(); + config.setStringValue(LiveStreamCourseNode.CONFIG_PLAYER_PROFILE, playerProfile); + } + return config; } diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventDataModel.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventDataModel.java index 9fe89373acbd37155d93f57e0ae9a12ee8969dcc..7b4daec2c73188122ca45c28595a1003d6f85200 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventDataModel.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventDataModel.java @@ -53,6 +53,7 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr case subject: return row.getEvent().getSubject(); case description: return row.getEvent().getDescription(); case location: return row.getEvent().getLocation(); + case viewers: return row.getViewers(); default: return null; } } @@ -67,7 +68,8 @@ public class LiveStreamEventDataModel extends DefaultFlexiTableDataModel<LiveStr begin("table.header.begin"), end("table.header.end"), location("table.header.location"), - description("table.header.description"); + description("table.header.description"), + viewers("table.header.viewers"); private final String i18nKey; diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventRow.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventRow.java index 8f293bdc9116c6e45adfb2cf964e440e5b79e996..b874d5587bfe06a0d07dc0a8176d3b209796e8bb 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventRow.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamEventRow.java @@ -30,6 +30,7 @@ import org.olat.course.nodes.livestream.LiveStreamEvent; public class LiveStreamEventRow { private final LiveStreamEvent event; + private Long viewers; public LiveStreamEventRow(LiveStreamEvent event) { this.event = event; @@ -39,4 +40,12 @@ public class LiveStreamEventRow { return event; } + public Long getViewers() { + return viewers; + } + + public void setViewers(Long viewers) { + this.viewers = viewers; + } + } diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamRunController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamRunController.java index 8201f61c623fc52dd6a00566f6056df56e85bf46..7c9e09b0d303bb06901ec67596d37d057f2790e8 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamRunController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamRunController.java @@ -32,6 +32,7 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.util.resource.OresHelper; +import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.cal.CourseCalendars; import org.olat.course.nodes.livestream.LiveStreamSecurityCallback; import org.olat.modules.ModuleConfiguration; @@ -46,24 +47,29 @@ import org.olat.resource.OLATResource; public class LiveStreamRunController extends BasicController { private static final String PLAY_RES_TYPE = "streams"; + private static final String STATISTIC_RES_TYPE = "statistic"; private static final String EDIT_RES_TYPE = "edit"; private VelocityContainer mainVC; private SegmentViewComponent segmentView; private Link streamsLink; + private Link statisticLink; private Link editLink; private LiveStreamsController streamsCtrl; + private LiveStreamStatisticController statisticCtrl; private WeeklyCalendarController editCtrl; private final ModuleConfiguration moduleConfiguration; + private final String courseNodeIdent; private final OLATResource courseOres; private final CourseCalendars calendars; - public LiveStreamRunController(UserRequest ureq, WindowControl wControl, ModuleConfiguration moduleConfiguration, + public LiveStreamRunController(UserRequest ureq, WindowControl wControl, CourseNode coureNode, OLATResource courseOres, LiveStreamSecurityCallback secCallback, CourseCalendars calendars) { super(ureq, wControl); - this.moduleConfiguration = moduleConfiguration; + this.moduleConfiguration = coureNode.getModuleConfiguration(); + this.courseNodeIdent = coureNode.getIdent(); this.courseOres = courseOres; this.calendars = calendars; @@ -74,6 +80,10 @@ public class LiveStreamRunController extends BasicController { streamsLink = LinkFactory.createLink("run.streams", mainVC, this); segmentView.addSegment(streamsLink, true); } + if (secCallback.canViewStatistic()) { + statisticLink = LinkFactory.createLink("run.statistic", mainVC, this); + segmentView.addSegment(statisticLink, true); + } if (secCallback.canEditStreams()) { editLink = LinkFactory.createLink("run.edit.events", mainVC, this); segmentView.addSegment(editLink, false); @@ -95,6 +105,8 @@ public class LiveStreamRunController extends BasicController { Component clickedLink = mainVC.getComponent(segmentCName); if (clickedLink == streamsLink) { doOpenStreams(ureq); + } else if (clickedLink == statisticLink){ + doOpenStatistic(ureq); } else if (clickedLink == editLink){ doOpenEdit(ureq); } @@ -108,13 +120,27 @@ public class LiveStreamRunController extends BasicController { streamsCtrl = new LiveStreamsController(ureq, swControl, moduleConfiguration, calendars); listenTo(streamsCtrl); } else { - streamsCtrl.refreshData(); + streamsCtrl.refreshData(ureq.getUserSession()); addToHistory(ureq, streamsCtrl); } segmentView.select(streamsLink); mainVC.put("segmentCmp", streamsCtrl.getInitialComponent()); } + private void doOpenStatistic(UserRequest ureq) { + if (statisticCtrl == null) { + WindowControl swControl = addToHistory(ureq, OresHelper.createOLATResourceableType(STATISTIC_RES_TYPE), null); + statisticCtrl = new LiveStreamStatisticController(ureq, swControl, courseOres, courseNodeIdent, + moduleConfiguration, calendars); + listenTo(statisticCtrl); + } else { + statisticCtrl.refreshData(); + addToHistory(ureq, statisticCtrl); + } + segmentView.select(statisticLink); + mainVC.put("segmentCmp", statisticCtrl.getInitialComponent()); + } + private void doOpenEdit(UserRequest ureq) { if (editCtrl == null) { WindowControl swControl = addToHistory(ureq, OresHelper.createOLATResourceableType(EDIT_RES_TYPE), null); diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamStatisticController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamStatisticController.java new file mode 100644 index 0000000000000000000000000000000000000000..86b4262278968108c4ff8d386af28e0f7f508b1f --- /dev/null +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamStatisticController.java @@ -0,0 +1,124 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.ui; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; +import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; +import org.olat.course.nodes.LiveStreamCourseNode; +import org.olat.course.nodes.cal.CourseCalendars; +import org.olat.course.nodes.livestream.LiveStreamEvent; +import org.olat.course.nodes.livestream.LiveStreamService; +import org.olat.course.nodes.livestream.ui.LiveStreamEventDataModel.EventCols; +import org.olat.modules.ModuleConfiguration; +import org.olat.resource.OLATResource; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 17 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class LiveStreamStatisticController extends FormBasicController { + + private FlexiTableElement tableEl; + private LiveStreamEventDataModel dataModel; + + private String courseResId; + private String courseNodeIdent; + private final CourseCalendars calendars; + private final int bufferBeforeMin; + + @Autowired + private LiveStreamService liveStreamService; + + public LiveStreamStatisticController(UserRequest ureq, WindowControl wControl, OLATResource courseOres, + String courseNodeIdent, ModuleConfiguration moduleConfiguration, CourseCalendars calendars) { + super(ureq, wControl, LAYOUT_VERTICAL); + this.courseResId = courseOres.getResourceableId().toString(); + this.courseNodeIdent = courseNodeIdent; + this.calendars = calendars; + + bufferBeforeMin = moduleConfiguration.getIntegerSafe(LiveStreamCourseNode.CONFIG_BUFFER_BEFORE_MIN, 0); + + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormTitle("statistic.title"); + + FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.subject)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.begin)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.end)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.viewers)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.location)); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(EventCols.description)); + + dataModel = new LiveStreamEventDataModel(columnsModel, getLocale()); + tableEl = uifactory.addTableElement(getWindowControl(), "table", dataModel, 20, false, getTranslator(), formLayout); + tableEl.setAndLoadPersistedPreferences(ureq, "livestream-statistic"); + tableEl.setEmtpyTableMessageKey("statistic.table.empty"); + loadModel(); + } + + void refreshData() { + loadModel(); + } + + private void loadModel() { + List<? extends LiveStreamEvent> upcomingEvents = liveStreamService.getRunningAndPastEvents(calendars, + bufferBeforeMin); + List<LiveStreamEventRow> rows = new ArrayList<>(upcomingEvents.size()); + for (LiveStreamEvent liveStreamEvent : upcomingEvents) { + LiveStreamEventRow row = new LiveStreamEventRow(liveStreamEvent); + Long viewers = liveStreamService.getViewers(courseResId, courseNodeIdent, liveStreamEvent.getBegin(), + liveStreamEvent.getEnd()); + row.setViewers(viewers); + rows.add(row); + } + Collections.sort(rows, (e1, e2) -> e1.getEvent().getBegin().compareTo(e2.getEvent().getBegin())); + dataModel.setObjects(rows); + tableEl.reset(false, false, true); + } + + @Override + protected void formOK(UserRequest ureq) { + // + } + + @Override + protected void doDispose() { + // + } + +} diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamUIFactory.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamUIFactory.java index 6dbf4e41848307ed86b4730ff6b3813f5faab341..73fd1a6c4e75adf8d4c5ffd9269eee1023805bba 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamUIFactory.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamUIFactory.java @@ -29,6 +29,20 @@ import org.olat.core.util.StringHelper; * */ class LiveStreamUIFactory { + + static boolean validateMandatory(TextElement el) { + boolean allOk = true; + el.clearError(); + if(el.isEnabled() && el.isVisible()) { + String val = el.getValue(); + if (!StringHelper.containsNonWhitespace(val)) { + el.setErrorKey("form.mandatory.hover", null); + allOk = false; + } + } + return allOk; + } + static boolean validateInteger(TextElement el, boolean mandatory) { boolean allOk = true; diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamVideoController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamVideoController.java index 2035525f2784f415d6cdd185e9af3c391d41572f..04743bf6211c1dfc645c95a72f7b4b6c892382e2 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamVideoController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamVideoController.java @@ -19,19 +19,26 @@ */ package org.olat.course.nodes.livestream.ui; -import org.apache.logging.log4j.Logger; +import java.util.ArrayList; +import java.util.List; + +import org.olat.core.dispatcher.mapper.MapperService; +import org.olat.core.dispatcher.mapper.manager.MapperKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; -import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; -import org.olat.core.logging.Tracing; import org.olat.core.util.CodeHelper; import org.olat.core.util.StringHelper; +import org.olat.core.util.UserSession; import org.olat.course.nodes.livestream.LiveStreamEvent; +import org.olat.course.nodes.livestream.paella.PaellaFactory; +import org.olat.course.nodes.livestream.paella.PaellaMapper; +import org.olat.course.nodes.livestream.paella.PlayerProfile; +import org.olat.course.nodes.livestream.paella.Streams; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -41,61 +48,53 @@ import org.olat.course.nodes.livestream.LiveStreamEvent; */ public class LiveStreamVideoController extends BasicController { - private static final Logger log = Tracing.createLoggerFor(LiveStreamVideoController.class); - private final VelocityContainer mainVC; - private Link retryLink; + private final PlayerProfile playerProfile; + private final List<MapperKey> mappers = new ArrayList<>(); private String url; - private boolean error = false; + + @Autowired + private MapperService mapperService; - protected LiveStreamVideoController(UserRequest ureq, WindowControl wControl) { + protected LiveStreamVideoController(UserRequest ureq, WindowControl wControl, PlayerProfile playerProfile) { super(ureq, wControl); + this.playerProfile = playerProfile; mainVC = createVelocityContainer("video"); - updateUI(); + updateUI(ureq.getUserSession()); putInitialPanel(mainVC); } - public void setEvent(LiveStreamEvent event) { + public void setEvent(UserSession usess, LiveStreamEvent event) { String newUrl = event != null? event.getLiveStreamUrl(): null; if (newUrl == null || !newUrl.equalsIgnoreCase(url)) { url = newUrl; - error = Boolean.FALSE; - updateUI(); + updateUI(usess); } } - private void updateUI() { - if (error) { + private void updateUI(UserSession usess) { + if (StringHelper.containsNonWhitespace(url)) { + mainVC.contextPut("id", CodeHelper.getRAMUniqueID()); + Streams streams = PaellaFactory.createStreams(url); + PaellaMapper paellaMapper = new PaellaMapper(streams, playerProfile); + MapperKey mapperKey = mapperService.register(usess, paellaMapper); + mappers.add(mapperKey); + String baseURI = mapperKey.getUrl(); + mainVC.contextPut("baseURI", baseURI); + } else { mainVC.contextRemove("id"); - mainVC.contextPut("error", error); - retryLink = LinkFactory.createButton("viewer.retry", mainVC, this); - } else { - mainVC.contextRemove("error"); - if (StringHelper.containsNonWhitespace(url)) { - mainVC.contextPut("id", CodeHelper.getRAMUniqueID()); - mainVC.contextPut("src", url); - } else { - mainVC.contextRemove("id"); - } } } @Override protected void event(UserRequest ureq, Component source, Event event) { - if ("error".equals(event.getCommand())) { - log.debug("Error when open a video from {}", url); - error = true; - updateUI(); - } else if (source == retryLink) { - error = false; - updateUI(); - } + // } @Override protected void doDispose() { - // + mapperService.cleanUp(mappers); } } diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewerController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewerController.java index 208b8b35fe24048915f7f06eb39c839b3c8aa001..1beb2df9bfc7e195771ff19e17d128a844525cba 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewerController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewerController.java @@ -25,7 +25,9 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.util.UserSession; import org.olat.course.nodes.livestream.LiveStreamEvent; +import org.olat.course.nodes.livestream.paella.PlayerProfile; /** * @@ -39,12 +41,12 @@ public class LiveStreamViewerController extends BasicController { private final LiveStreamVideoController videoCtrl; private final LiveStreamMetadataController metadataCtrl; - public LiveStreamViewerController(UserRequest ureq, WindowControl wControl) { + public LiveStreamViewerController(UserRequest ureq, WindowControl wControl, PlayerProfile playerProfile) { super(ureq, wControl); mainVC = createVelocityContainer("viewer"); - videoCtrl = new LiveStreamVideoController(ureq, wControl); + videoCtrl = new LiveStreamVideoController(ureq, wControl, playerProfile); listenTo(videoCtrl); mainVC.put("video", videoCtrl.getInitialComponent()); metadataCtrl = new LiveStreamMetadataController(ureq, wControl); @@ -54,8 +56,8 @@ public class LiveStreamViewerController extends BasicController { putInitialPanel(mainVC); } - public void setEvent(LiveStreamEvent event) { - videoCtrl.setEvent(event); + public void setEvent(UserSession usess, LiveStreamEvent event) { + videoCtrl.setEvent(usess, event); metadataCtrl.setEvent(event); } diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewersController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewersController.java index 720d16e996112e3c3a10a977a2cba7208d8bfcbe..366558f124aec1f870bbdc6c9313a76e883313ab 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewersController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamViewersController.java @@ -30,10 +30,14 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.util.StringHelper; +import org.olat.core.util.UserSession; import org.olat.course.nodes.LiveStreamCourseNode; import org.olat.course.nodes.cal.CourseCalendars; import org.olat.course.nodes.livestream.LiveStreamEvent; +import org.olat.course.nodes.livestream.LiveStreamModule; import org.olat.course.nodes.livestream.LiveStreamService; +import org.olat.course.nodes.livestream.paella.PlayerProfile; import org.olat.modules.ModuleConfiguration; import org.springframework.beans.factory.annotation.Autowired; @@ -65,6 +69,8 @@ public class LiveStreamViewersController extends BasicController { private final List<DisplayWrapper> displayWrappers; private Boolean noLiveStream; + @Autowired + private LiveStreamModule liveStreamModule; @Autowired private LiveStreamService liveStreamService; @@ -75,66 +81,81 @@ public class LiveStreamViewersController extends BasicController { bufferBeforeMin = moduleConfiguration.getIntegerSafe(LiveStreamCourseNode.CONFIG_BUFFER_BEFORE_MIN, 0); bufferAfterMin = moduleConfiguration.getIntegerSafe(LiveStreamCourseNode.CONFIG_BUFFER_AFTER_MIN, 0); + PlayerProfile playerProfile = getPlayerProfile(moduleConfiguration); mainVC = createVelocityContainer("viewers"); displayWrappers = new ArrayList<>(); - displayCtrl0 = new LiveStreamViewerController(ureq, wControl); + displayCtrl0 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl0); mainVC.put("display0", displayCtrl0.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl0)); - displayCtrl1 = new LiveStreamViewerController(ureq, wControl); + displayCtrl1 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl1); mainVC.put("display1", displayCtrl1.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl1)); - displayCtrl2 = new LiveStreamViewerController(ureq, wControl); + displayCtrl2 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl2); mainVC.put("display2", displayCtrl2.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl2)); - displayCtrl3 = new LiveStreamViewerController(ureq, wControl); + displayCtrl3 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl3); mainVC.put("display3", displayCtrl3.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl3)); - displayCtrl4 = new LiveStreamViewerController(ureq, wControl); + displayCtrl4 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl4); mainVC.put("display4", displayCtrl4.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl4)); - displayCtrl5 = new LiveStreamViewerController(ureq, wControl); + displayCtrl5 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl5); mainVC.put("display5", displayCtrl5.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl5)); - displayCtrl6 = new LiveStreamViewerController(ureq, wControl); + displayCtrl6 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl6); mainVC.put("display6", displayCtrl6.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl6)); - displayCtrl7 = new LiveStreamViewerController(ureq, wControl); + displayCtrl7 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl7); mainVC.put("display7", displayCtrl7.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl7)); - displayCtrl8 = new LiveStreamViewerController(ureq, wControl); + displayCtrl8 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl8); mainVC.put("display8", displayCtrl8.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl8)); - displayCtrl9 = new LiveStreamViewerController(ureq, wControl); + displayCtrl9 = new LiveStreamViewerController(ureq, wControl, playerProfile); listenTo(displayCtrl9); mainVC.put("display9", displayCtrl9.getInitialComponent()); displayWrappers.add(new DisplayWrapper(displayCtrl9)); - refresh(); + refresh(ureq.getUserSession()); putInitialPanel(mainVC); } - void refresh() { + private PlayerProfile getPlayerProfile(ModuleConfiguration moduleConfiguration) { + PlayerProfile playerProfile = PlayerProfile.stream1; + + if (liveStreamModule.isMultiStreamEnabled()) { + String nodePlayerProfile = moduleConfiguration.getStringValue(LiveStreamCourseNode.CONFIG_PLAYER_PROFILE); + if (StringHelper.containsNonWhitespace(nodePlayerProfile)) { + playerProfile = PlayerProfile.valueOf(nodePlayerProfile); + } else { + playerProfile = PlayerProfile.valueOf(liveStreamModule.getPlayerProfile()); + } + } + return playerProfile; + } + + void refresh(UserSession usess) { List<? extends LiveStreamEvent> events = liveStreamService.getRunningEvents(calendars, bufferBeforeMin, bufferAfterMin); putNoLiveStreamToMainVC(events); @@ -144,8 +165,8 @@ public class LiveStreamViewersController extends BasicController { // luck. events = removeOverlappingWithSameUrl(events); Collections.sort(events, (e1, e2) -> e1.getBegin().compareTo(e2.getBegin())); - displayStartedEvents(events); - removeEndedEvents(events); + displayStartedEvents(usess, events); + removeEndedEvents(usess, events); } private void putNoLiveStreamToMainVC(List<? extends LiveStreamEvent> events) { @@ -203,13 +224,13 @@ public class LiveStreamViewersController extends BasicController { return sameUrlEvents; } - private void displayStartedEvents(List<? extends LiveStreamEvent> events) { + private void displayStartedEvents(UserSession usess, List<? extends LiveStreamEvent> events) { for (LiveStreamEvent event: events) { DisplayWrapper displayWrapper = getDisplayWrapper(event); if (displayWrapper != null) { - updateEvent(displayWrapper, event); + updateEvent(usess, displayWrapper, event); } else { - addToNextDisplay(event); + addToNextDisplay(usess, event); } } } @@ -223,10 +244,10 @@ public class LiveStreamViewersController extends BasicController { return null; } - private void addToNextDisplay(LiveStreamEvent event) { + private void addToNextDisplay(UserSession usess, LiveStreamEvent event) { DisplayWrapper nextDisplay = getNextFreeDisplay(); if (nextDisplay != null ) { - updateEvent(nextDisplay, event); + updateEvent(usess, nextDisplay, event); } } @@ -242,11 +263,11 @@ public class LiveStreamViewersController extends BasicController { return nextDisplay; } - private void removeEndedEvents(List<? extends LiveStreamEvent> events) { + private void removeEndedEvents(UserSession usess, List<? extends LiveStreamEvent> events) { for (DisplayWrapper displayWrapper : displayWrappers) { LiveStreamEvent wrappedEvent = displayWrapper.getEvent(); if (hasEnded(wrappedEvent, events)) { - updateEvent(displayWrapper, null); + updateEvent(usess, displayWrapper, null); } } } @@ -262,9 +283,9 @@ public class LiveStreamViewersController extends BasicController { return true; } - private void updateEvent(DisplayWrapper displayWrapper, LiveStreamEvent event) { + private void updateEvent(UserSession usess, DisplayWrapper displayWrapper, LiveStreamEvent event) { displayWrapper.setEvent(event); - displayWrapper.getController().setEvent(event); + displayWrapper.getController().setEvent(usess, event); } @Override diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamsController.java b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamsController.java index 10cb78966db345435bc84971281ee3ed582052a2..f620fc3e9cb2d099f42456caf047e4446a6f8164 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamsController.java +++ b/src/main/java/org/olat/course/nodes/livestream/ui/LiveStreamsController.java @@ -19,8 +19,8 @@ */ package org.olat.course.nodes.livestream.ui; -import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.Logger; @@ -31,8 +31,11 @@ import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.logging.Tracing; +import org.olat.core.util.UserSession; import org.olat.course.nodes.cal.CourseCalendars; +import org.olat.course.nodes.livestream.LiveStreamService; import org.olat.modules.ModuleConfiguration; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -48,14 +51,17 @@ public class LiveStreamsController extends BasicController { private LiveStreamViewersController viewersCtrl; private LiveStreamListController listCtrl; + + private final ScheduledFuture<?> refreshFuture; - private ScheduledExecutorService scheduler; + @Autowired + private LiveStreamService liveStreamService; public LiveStreamsController(UserRequest ureq, WindowControl wControl, ModuleConfiguration moduleConfiguration, CourseCalendars calendars) { super(ureq, wControl); mainVC = createVelocityContainer("streams"); - + viewersCtrl = new LiveStreamViewersController(ureq, wControl, moduleConfiguration, calendars); listenTo(viewersCtrl); mainVC.put("viewers", viewersCtrl.getInitialComponent()); @@ -64,15 +70,15 @@ public class LiveStreamsController extends BasicController { listenTo(listCtrl); mainVC.put("list", listCtrl.getInitialComponent()); - scheduler = Executors.newScheduledThreadPool(1); - scheduler.scheduleAtFixedRate(new RefreshTask(), 10, 10, TimeUnit.SECONDS); - + ScheduledExecutorService scheduler = liveStreamService.getScheduler(); + refreshFuture = scheduler.scheduleAtFixedRate(new RefreshTask(ureq.getUserSession()), 10, 10, TimeUnit.SECONDS); + putInitialPanel(mainVC); } - public synchronized void refreshData() { + public synchronized void refreshData(UserSession usess) { log.debug("Refresh live stream data of " + getIdentity()); - viewersCtrl.refresh(); + viewersCtrl.refresh(usess); listCtrl.refreshData(); } @@ -83,14 +89,21 @@ public class LiveStreamsController extends BasicController { @Override protected void doDispose() { - scheduler.shutdown(); + refreshFuture.cancel(true); } private final class RefreshTask implements Runnable { + private final UserSession usess; + + public RefreshTask(UserSession usess) { + this.usess = usess; + + } + @Override public void run() { - refreshData(); + refreshData(usess); } } diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/_content/video.html b/src/main/java/org/olat/course/nodes/livestream/ui/_content/video.html index e036d985ddcd909078e8864e045305354c8b3ae2..3814854515031fb583d8ce73d27e658ba8787e50 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/_content/video.html +++ b/src/main/java/org/olat/course/nodes/livestream/ui/_content/video.html @@ -1,18 +1,8 @@ -#if($r.isNotNull($error)) - <div class="o_instruction"> - $r.translate("viewer.error.stream") - <div class="o_button_group"> - $r.render("viewer.retry") - </div> - </div> -#elseif($r.isNotNull($id)) - <div> - ## height / width does not matter, because the size is streched responsive. - <p><span id="o_livestream_${id}" class="olatFlashMovieViewer" style="display:block;border:solid 1px #000;"> - <script> - var errorCallback_$id = function(mediaElement, originalNode, player) {$r.openJavaScriptCommand("error"));}; - BPlayer.insertPlayer("$src","o_livestream_${id}",400,'100%',0,0,"video",undefined,true,true,false, null, errorCallback_$id); - </script> - </span></p> +#if($r.isNotNull($id)) +<div class="o_paella_wrapper"> + <div class="o_instruction o_paella_error"> + $r.translate("viewer.error.browser") </div> + <iframe id="${id}" allowfullscreen="true" src="${baseURI}" frameborder="0"></iframe> +</div> #end \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_de.properties index 25922b4bdd680739b92cf90ba6a40f9ac212a7e2..bc2a803cfa8f8322d54f38d4b214a9e639dbe1a9 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_de.properties @@ -1,16 +1,21 @@ admin.buffer.before.min=$:\config.buffer.before.min admin.buffer.after.min=$:\config.buffer.after.min admin.default.values.title=Initialwerte -admin.default.values.desc=Hier k\u00f6nnen Sie die Initialwerte eines neuen Kursbausteines konfigurieren. +admin.default.values.desc=Hier k\u00F6nnen Sie die Initialwerte eines neuen Kursbausteines konfigurieren. admin.coach.edit=$:\config.coach.edit admin.general.title=$:\admin.menu.title admin.menu.title=Livestream admin.menu.title.alt=$:\admin.menu.title admin.module.enabled=Kursbaustein +admin.multi.stream.enabled=Multistream +admin.player.profile=Stream +admin.url.separator=URL Trennzeichen +admin.url.separator.help=Trennzeichen, um mehrere URLs eines einzelnen Termins zu trennen. condition.accessibility.title=Zugang config.buffer.before.min=Vorlaufzeit (in Minuten) config.buffer.after.min=Nachlaufzeit (in Minuten) config.coach.edit=Betreuer darf Termine bearbeiten +config.player.profile=$\:admin.player.profile form.error.wrong.int=Falsches Zahlenformat. Beispiele\: 2, 10, 144 link.text=Video Livestream list.title=Anstehende Livestreams @@ -20,15 +25,21 @@ peekview.no.streams=Es sind keine Livestreams geplant. peekview.open.live=Livestream anzeigen peekview.open.upcoming=Alle anzeigen peekview.title.live=Jetzt live: {0} -peekview.title.upcoming=Demn\u00e4chst: {0} +peekview.title.upcoming=Demn\u00E4chst: {0} +player.profile.both=Beide Streams anzeigen +player.profile.stream1=Stream 1 anzeigen +player.profile.stream2=Stream 2 anzeigen run.edit.events=Termine bearbeiten +run.statistic=Statistik run.streams=Live Streams +statistic.table.empty=Es wurden noch keine Livestreams ausgestrahlt. +statistic.title=Ausgestrahle Livestreams table.empty=Es sind keine Livestreams anstehend. table.header.begin=$org.olat.commons.calendar\:cal.form.begin table.header.description=$org.olat.commons.calendar\:cal.form.description table.header.end=$org.olat.commons.calendar\:cal.form.end table.header.location=$org.olat.commons.calendar\:cal.form.location table.header.subject=$org.olat.commons.calendar\:cal.form.subject -viewer.error.stream=Der Livestream kann nicht angezeigt werden. Vermutlich wird der Livestream noch nicht ausgestrahlt. +table.header.viewers=Zuschauer +viewer.error.browser=Der Livestream kann in diesem Browser nicht angezeigt werden. Bitte verwenden Sie einen anderen Browser. viewer.no.stream=Aktuell wird kein Livestream ausgestrahlt. -viewer.retry=Erneut starten diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_en.properties index 75ab5aa3dcb00c125743427edafbc20d8ad27e60..a4e187294fb0f37b8552a6c62e5ab17e602de562 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_en.properties @@ -7,10 +7,15 @@ admin.general.title=$:\admin.menu.title admin.menu.title=Live stream admin.menu.title.alt=$:\admin.menu.title admin.module.enabled=Course element +admin.multi.stream.enabled=Multi stream +admin.player.profile=Stream +admin.url.separator=URL separator +admin.url.separator.help=Char / String to separate multiple URLs of a single event. condition.accessibility.title=Access config.buffer.before.min=Buffer time before start (in minutes) config.buffer.after.min=Buffer time after end (in minutes) config.coach.edit=Coach is allowed to edit +config.player.profile=$\:admin.player.profile form.error.wrong.int=Wrong numeral format. Examples\: 2, 10, 144 link.text=Video live stream list.title=Upcoming live streams @@ -21,14 +26,20 @@ peekview.open.live=Show live stream peekview.open.upcoming=Show all peekview.title.live=Live: {0} peekview.title.upcoming=Upcoming: {0} +player.profile.both=Show both streams +player.profile.stream1=Show stream 1 +player.profile.stream2=Show stream 2 run.edit.events=Edit events +run.statistic=Statistic run.streams=Livestreams +statistic.table.empty=No live streams have been broadcast yet. +statistic.title=Broadcast live streams table.empty=No upcoming live streams are available. table.header.begin=$org.olat.commons.calendar\:cal.form.begin table.header.description=$org.olat.commons.calendar\:cal.form.description table.header.end=$org.olat.commons.calendar\:cal.form.end table.header.location=$org.olat.commons.calendar\:cal.form.location table.header.subject=$org.olat.commons.calendar\:cal.form.subject -viewer.error.stream=It is not possible to show the live stream. Probably is the live stream not broadcasted yet. +table.header.viewers=Viewers +viewer.error.browser=The livestream cannot be displayed in this browser. Please use a different browser. viewer.no.stream=Currently no live stream is broadcasted. -viewer.retry=Try again diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_fr.properties index 485d5ec9645763f05024865d39a4168633f4e3ed..4a8301971f6588f748dc38b3a7ea4c32e7c2524a 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_fr.properties @@ -30,6 +30,4 @@ table.header.description=$org.olat.commons.calendar\:cal.form.description table.header.end=$org.olat.commons.calendar\:cal.form.end table.header.location=$org.olat.commons.calendar\:cal.form.location table.header.subject=$org.olat.commons.calendar\:cal.form.subject -viewer.error.stream=Il n'est pas possible d'afficher la vid\u00E9o. La diffusion en direct n'a probablement pas encore commenc\u00E9. viewer.no.stream=Pas de diffusion pour l'instant. -viewer.retry=Essayer \u00E0 nouveau diff --git a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_pt_BR.properties index ca4dca335ec7db5cef4b98bd0961f8d0cfbca583..c8d4bced76dee354a1b9ca60b96d5d55f3c6fa71 100644 --- a/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/course/nodes/livestream/ui/_i18n/LocalStrings_pt_BR.properties @@ -30,6 +30,4 @@ table.header.description=$org.olat.commons.calendar\:cal.form.description table.header.end=$org.olat.commons.calendar\:cal.form.end table.header.location=$org.olat.commons.calendar\:cal.form.location table.header.subject=$org.olat.commons.calendar\:cal.form.subject -viewer.error.stream=N\u00E3o \u00E9 poss\u00EDvel mostrar a transmiss\u00E3o ao vivo. Provavelmente a transmiss\u00E3o n\u00E3o come\u00E7ou ainda. viewer.no.stream=Atualmente, nenhuma transmiss\u00E3o ao vivo est\u00E1 sendo transmitida. -viewer.retry=Tente novamente diff --git a/src/main/java/org/olat/course/nodes/ms/MSStatisticController.java b/src/main/java/org/olat/course/nodes/ms/MSStatisticController.java index 1e01c8f9fba14a33b4d7dd21f1476e4211ad4624..dca6b34f4057788a5d1d53394c0d5d012145b447 100644 --- a/src/main/java/org/olat/course/nodes/ms/MSStatisticController.java +++ b/src/main/java/org/olat/course/nodes/ms/MSStatisticController.java @@ -144,7 +144,8 @@ public class MSStatisticController extends FormBasicController { private List<RubricWrapper> wrapRubics(Form form) { int counter = 1; List<RubricWrapper> rubrics = new ArrayList<>(); - for (AbstractElement element : form.getElements()) { + List<AbstractElement> elements = evaluationFormManager.getUncontainerizedElements(form); + for (AbstractElement element : elements) { if (Rubric.TYPE.equals(element.getType())) { Rubric rubric = (Rubric)element; String labelCode = translate("tool.stats.table.title.rubric", new String[] { Integer.toString(counter) }); diff --git a/src/main/java/org/olat/course/nodes/survey/SurveyConfigController.java b/src/main/java/org/olat/course/nodes/survey/SurveyConfigController.java index 90b2ff566a867251ff2f755749b8618c101cf5d8..4f5ca16a4cbf66a96185e4df5aa337770be9edb4 100644 --- a/src/main/java/org/olat/course/nodes/survey/SurveyConfigController.java +++ b/src/main/java/org/olat/course/nodes/survey/SurveyConfigController.java @@ -135,6 +135,7 @@ public class SurveyConfigController extends FormBasicController { buttonsCont.setRootForm(mainForm); formLayout.add(buttonsCont); chooseLink = uifactory.addFormLink("edit.choose", buttonsCont, "btn btn-default o_xsmall"); + chooseLink.setElementCssClass("o_sel_survey_choose_repofile"); replaceLink = uifactory.addFormLink("edit.replace", buttonsCont, "btn btn-default o_xsmall"); editLink = uifactory.addFormLink("edit.edit", buttonsCont, "btn btn-default o_xsmall"); diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemFactory.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemFactory.java index 3a9fd43fed677b3d6c55c6ddcbaaba89910614d7..48c93eca20c45f09b56b90d4a0c1437b700aaca1 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemFactory.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentItemFactory.java @@ -331,7 +331,7 @@ public class AssessmentItemFactory { responseDeclaration.setIdentifier(declarationId); if(cardinality != null && (cardinality == Cardinality.SINGLE || cardinality == Cardinality.MULTIPLE)) { responseDeclaration.setCardinality(cardinality); - } else if(correctResponseIds == null || correctResponseIds.size() == 0 || correctResponseIds.size() > 1) { + } else if(correctResponseIds == null || correctResponseIds.isEmpty() || correctResponseIds.size() > 1) { responseDeclaration.setCardinality(Cardinality.MULTIPLE); } else { responseDeclaration.setCardinality(Cardinality.SINGLE); @@ -374,7 +374,7 @@ public class AssessmentItemFactory { public static ResponseDeclaration createTextEntryResponseDeclaration(AssessmentItem assessmentItem, Identifier declarationId, String response, Double score, boolean caseSensitive, - List<TextEntryAlternative> alternatives) { + List<TextEntryAlternative> alternatives, boolean useScoreOfAlternatives) { ResponseDeclaration responseDeclaration = new ResponseDeclaration(assessmentItem); responseDeclaration.setIdentifier(declarationId); responseDeclaration.setCardinality(Cardinality.SINGLE); @@ -399,12 +399,16 @@ public class AssessmentItemFactory { } //map alternatives - if(alternatives != null && alternatives.size() > 0) { + if(alternatives != null && !alternatives.isEmpty()) { for(TextEntryAlternative alternative:alternatives) { if(StringHelper.containsNonWhitespace(alternative.getAlternative())) { MapEntry mapEntry = new MapEntry(mapping); mapEntry.setMapKey(new StringValue(alternative.getAlternative())); - mapEntry.setMappedValue(score); + if(useScoreOfAlternatives) { + mapEntry.setMappedValue(alternative.getScore()); + } else { + mapEntry.setMappedValue(score); + } mapEntry.setCaseSensitive(Boolean.valueOf(caseSensitive)); mapping.getMapEntries().add(mapEntry); } @@ -1172,7 +1176,7 @@ public class AssessmentItemFactory { if(responseRule instanceof ResponseCondition) { ResponseCondition responseCondition = (ResponseCondition)responseRule; if(responseCondition.getResponseIf() == null || responseCondition.getResponseElse() != null - || (responseCondition.getResponseElseIfs() != null && responseCondition.getResponseElseIfs().size() > 0)) { + || (responseCondition.getResponseElseIfs() != null && !responseCondition.getResponseElseIfs().isEmpty())) { continue; } @@ -1739,7 +1743,7 @@ public class AssessmentItemFactory { public static String coordsString(List<Integer> coords) { StringBuilder sb = new StringBuilder(); - if(coords != null && coords.size() > 0) { + if(coords != null && !coords.isEmpty()) { for(Integer coord:coords) { if(sb.length() > 0) sb.append(","); sb.append(coord.intValue()); @@ -1753,7 +1757,7 @@ public class AssessmentItemFactory { if(StringHelper.containsNonWhitespace(coords)) { for(StringTokenizer tokenizer = new StringTokenizer(coords, ","); tokenizer.hasMoreElements(); ) { String coord = tokenizer.nextToken(); - list.add(new Integer(Math.round(Float.parseFloat(coord)))); + list.add(Integer.valueOf(Math.round(Float.parseFloat(coord)))); } } return list; diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestFactory.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestFactory.java index 735bad668e14d793ad4313310b1f89c376ced2c0..8a208fd3c964781a949517caec7f3167817065d8 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestFactory.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestFactory.java @@ -54,6 +54,7 @@ import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest; import uk.ac.ed.ph.jqtiplus.node.test.ItemSessionControl; import uk.ac.ed.ph.jqtiplus.node.test.NavigationMode; import uk.ac.ed.ph.jqtiplus.node.test.Ordering; +import uk.ac.ed.ph.jqtiplus.node.test.SectionPart; import uk.ac.ed.ph.jqtiplus.node.test.SubmissionMode; import uk.ac.ed.ph.jqtiplus.node.test.TestFeedback; import uk.ac.ed.ph.jqtiplus.node.test.TestFeedbackAccess; @@ -199,8 +200,8 @@ public class AssessmentTestFactory { */ public static OutcomeCondition createCutValueRule(AssessmentTest assessmentTest, Double cutValue) { OutcomeCondition outcomeCondition = new OutcomeCondition(assessmentTest); - //if - { + + {//if OutcomeIf outcomeIf = new OutcomeIf(outcomeCondition); outcomeCondition.setOutcomeIf(outcomeIf); @@ -338,10 +339,18 @@ public class AssessmentTestFactory { return appendAssessmentSectionInternal(title, part); } - private final static AssessmentSection appendAssessmentSectionInternal(String title, AbstractPart part) { + private static final AssessmentSection appendAssessmentSectionInternal(String title, AbstractPart part) { + boolean shuffledSections = shuffledSections(part); + // section AssessmentSection section = new AssessmentSection(part); - section.setFixed(Boolean.TRUE); + if(shuffledSections) { + section.setFixed(Boolean.FALSE); + section.setKeepTogether(Boolean.TRUE); + } else { + section.setFixed(Boolean.TRUE); + } + section.setVisible(Boolean.TRUE); section.setTitle(title); section.setIdentifier(IdentifierGenerator.newAsIdentifier("sect")); @@ -366,10 +375,41 @@ public class AssessmentTestFactory { return section; } + /** + * Check if the specified part is a section, only as sections + * as children and that it matches the rules to shuffle the + * section, parent section shuffles, child sections are + * not fixed. + * + * @param part A part + * @return true if part will shuffle the sections under it + */ + public static final boolean shuffledSections(AbstractPart part) { + if(!(part instanceof AssessmentSection)) return false; + + AssessmentSection section = (AssessmentSection)part; + if(section.getOrdering() != null && section.getOrdering().getShuffle()) { + boolean allFloating = true; + + List<SectionPart> sectionParts = section.getSectionParts(); + for(SectionPart sectionPart:sectionParts) { + if(sectionPart instanceof AssessmentSection) { + boolean fixed = ((AssessmentSection)sectionPart).getFixed(); + allFloating &= !fixed; + } else { + allFloating &= false; + } + } + + return allFloating; + } + return false; + } + /* <outcomeDeclaration identifier="FEEDBACKMODAL" cardinality="multiple" baseType="identifier" view="testConstructor" /> */ - public final static OutcomeDeclaration createTestFeedbackModalOutcomeDeclaration(AssessmentTest assessmentTest) { + public static final OutcomeDeclaration createTestFeedbackModalOutcomeDeclaration(AssessmentTest assessmentTest) { OutcomeDeclaration feedbackOutcomeDeclaration = new OutcomeDeclaration(assessmentTest); feedbackOutcomeDeclaration.setIdentifier(QTI21Constants.FEEDBACKMODAL_IDENTIFIER); feedbackOutcomeDeclaration.setCardinality(Cardinality.MULTIPLE); @@ -387,7 +427,7 @@ public class AssessmentTestFactory { <p>This is the correct answer</p> </testFeedback> */ - public final static TestFeedback createTestFeedbackModal(AssessmentTest assessmentTest, Identifier identifier, String title, String text) { + public static final TestFeedback createTestFeedbackModal(AssessmentTest assessmentTest, Identifier identifier, String title, String text) { TestFeedback testFeedback = new TestFeedback(assessmentTest); testFeedback.setOutcomeValue(identifier); testFeedback.setOutcomeIdentifier(QTI21Constants.FEEDBACKMODAL_IDENTIFIER); @@ -421,7 +461,7 @@ public class AssessmentTestFactory { </outcomeIf> </outcomeCondition> */ - public final static OutcomeCondition createTestFeedbackModalCondition(AssessmentTest assessmentTest, boolean condition, Identifier feedbackIdentifier) { + public static final OutcomeCondition createTestFeedbackModalCondition(AssessmentTest assessmentTest, boolean condition, Identifier feedbackIdentifier) { OutcomeCondition outcomeCondition = new OutcomeCondition(assessmentTest); OutcomeIf outcomeIf = new OutcomeIf(outcomeCondition); outcomeCondition.setOutcomeIf(outcomeIf); diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java index 9292589235eb3928d128d01e9468d08c87b0b046..cdc43c53a7eacba1a1414700123feac334d9a55f 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java @@ -36,8 +36,8 @@ import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.DoubleAdder; -import org.olat.core.gui.render.StringOutput; import org.apache.logging.log4j.Logger; +import org.olat.core.gui.render.StringOutput; import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.ims.qti21.QTI21Constants; @@ -50,6 +50,7 @@ import uk.ac.ed.ph.jqtiplus.exception.QtiAttributeException; import uk.ac.ed.ph.jqtiplus.node.content.ItemBody; import uk.ac.ed.ph.jqtiplus.node.content.basic.Block; import uk.ac.ed.ph.jqtiplus.node.expression.Expression; +import uk.ac.ed.ph.jqtiplus.node.expression.ExpressionParent; import uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue; import uk.ac.ed.ph.jqtiplus.node.expression.general.Correct; import uk.ac.ed.ph.jqtiplus.node.expression.general.MapResponse; @@ -57,6 +58,9 @@ import uk.ac.ed.ph.jqtiplus.node.expression.general.Variable; import uk.ac.ed.ph.jqtiplus.node.expression.operator.And; import uk.ac.ed.ph.jqtiplus.node.expression.operator.Equal; import uk.ac.ed.ph.jqtiplus.node.expression.operator.Match; +import uk.ac.ed.ph.jqtiplus.node.expression.operator.Not; +import uk.ac.ed.ph.jqtiplus.node.expression.operator.Or; +import uk.ac.ed.ph.jqtiplus.node.expression.operator.StringMatch; import uk.ac.ed.ph.jqtiplus.node.expression.operator.Sum; import uk.ac.ed.ph.jqtiplus.node.expression.operator.ToleranceMode; import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; @@ -96,6 +100,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { private String question; private ScoreEvaluation scoreEvaluation; + private boolean allowDuplicatedAnswers; private Map<String, AbstractEntry> responseIdentifierToTextEntry; private QTI21QuestionType questionType = QTI21QuestionType.fib; @@ -140,6 +145,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { extractQuestions(); extractEntriesSettingsFromResponseDeclaration(); extractQuestionType(); + extractAllowDuplicatesAnswers(); } /** @@ -234,7 +240,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { Double solution = null; CorrectResponse correctResponse = responseDeclaration.getCorrectResponse(); - if(correctResponse != null && correctResponse.getFieldValues().size() > 0) { + if(correctResponse != null && !correctResponse.getFieldValues().isEmpty()) { List<FieldValue> fValues = correctResponse.getFieldValues(); SingleValue sValue = fValues.get(0).getSingleValue(); if(sValue instanceof FloatValue) { @@ -251,7 +257,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { if(responseRule instanceof ResponseCondition) { ResponseCondition condition = (ResponseCondition)responseRule; ResponseIf responseIf = condition.getResponseIf(); - if(responseIf != null && responseIf.getExpressions().size() > 0) { + if(responseIf != null && !responseIf.getExpressions().isEmpty()) { //first is an and/equal/ Expression potentialEqualOrAnd = responseIf.getExpressions().get(0); if(potentialEqualOrAnd instanceof And) { @@ -337,7 +343,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { String solution = null; CorrectResponse correctResponse = responseDeclaration.getCorrectResponse(); - if(correctResponse != null && correctResponse.getFieldValues().size() > 0) { + if(correctResponse != null && !correctResponse.getFieldValues().isEmpty()) { List<FieldValue> fValues = correctResponse.getFieldValues(); SingleValue sValue = fValues.get(0).getSingleValue(); if(sValue instanceof StringValue) { @@ -393,6 +399,67 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } + public void extractAllowDuplicatesAnswers() { + allowDuplicatedAnswers = true; + + List<ResponseRule> responseRules = assessmentItem.getResponseProcessing().getResponseRules(); + for(ResponseRule responseRule:responseRules) { + if(responseRule instanceof ResponseCondition) { + ResponseCondition responseCondition = (ResponseCondition)responseRule; + ResponseIf responseIf = responseCondition.getResponseIf(); + if(responseIf != null && !responseIf.getExpressions().isEmpty()) { + if(responseIf.getExpressions().size() == 1 && responseIf.getExpressions().get(0) instanceof Not) { + // check if the not is our check for duplication in case of score per answers + if(isNotForDuplicatesAnswers((Not)responseIf.getExpressions().get(0))) { + allowDuplicatedAnswers = false; + break; + } + } else if(responseIf.getExpressions().get(0) instanceof And) { + // check if the and contains the not for duplication if score is for all answers + And and = (And)responseIf.getExpressions().get(0); + + int numOfNot = 0; + int numOfMatch = 0; + for(Expression expression:and.getExpressions()) { + if(expression instanceof Match || expression instanceof Equal) { + numOfMatch++; + } else if(expression instanceof Not && isNotForDuplicatesAnswers((Not)expression)) { + numOfNot++; + } + } + + if(numOfMatch > 0 && numOfNot > 0) { + allowDuplicatedAnswers = false; + break; + } + } + } + } + } + } + + private boolean isNotForDuplicatesAnswers(Not not) { + if(not.getChildren().size() == 1 && not.getChildren().get(0) instanceof Or) { + Or or = (Or)not.getChildren().get(0); + for(Expression expression:or.getChildren()) { + if(expression instanceof StringMatch || expression instanceof Equal) { + List<Expression> variables = expression.getExpressions(); + if(variables.size() == 2 + && variables.get(0) instanceof Variable + && variables.get(1) instanceof Variable) { + Variable var1 = (Variable)variables.get(0); + Variable var2 = (Variable)variables.get(1); + String responseIdentifier1 = var1.getIdentifier().toString(); + String responseIdentifier2 = var2.getIdentifier().toString(); + return responseIdentifierToTextEntry.containsKey(responseIdentifier1) + && responseIdentifierToTextEntry.containsKey(responseIdentifier2); + } + } + } + } + return false; + } + public String escapeForDataQtiSolution(String solution) { return StringHelper.escapeHtml(solution).replace("/", "\u2215"); } @@ -416,6 +483,14 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { this.question = html; } + public boolean isAllowDuplicatedAnswers() { + return allowDuplicatedAnswers; + } + + public void setAllowDuplicatedAnswers(boolean allowDuplicatedAnswers) { + this.allowDuplicatedAnswers = allowDuplicatedAnswers; + } + public ScoreEvaluation getScoreEvaluationMode() { return scoreEvaluation; } @@ -423,6 +498,25 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { public void setScoreEvaluationMode(ScoreEvaluation scoreEvaluation) { this.scoreEvaluation = scoreEvaluation; } + + public boolean alternativesWithSpecificScore() { + for(Map.Entry<String, AbstractEntry> entry:responseIdentifierToTextEntry.entrySet()) { + AbstractEntry e = entry.getValue(); + if(e instanceof TextEntry) { + TextEntry textEntry = (TextEntry)e; + Double score = textEntry.getScore(); + if(textEntry.getAlternatives() != null && !textEntry.getAlternatives().isEmpty()) { + for(TextEntryAlternative alternative:textEntry.getAlternatives()) { + double altScore = alternative.getScore(); + if(altScore >= 0.0d && score != null && score.doubleValue() == altScore) { + return true; + } + } + } + } + } + return false; + } public AbstractEntry getEntry(String responseIdentifier) { return responseIdentifierToTextEntry.get(responseIdentifier); @@ -449,7 +543,7 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } - if(entries.size() > 0) { + if(!entries.isEmpty()) { orderedEntries.addAll(entries);//security } return orderedEntries; @@ -525,14 +619,14 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { if(entry instanceof TextEntry) { TextEntry textEntry = (TextEntry)entry; if( textEntry.getSolution() != null) { - Double score = -1.0d; + Double score = -1.0d; if(scoreEvaluation == ScoreEvaluation.perAnswer) { score = textEntry.getScore(); } - - ResponseDeclaration responseDeclaration = createTextEntryResponseDeclaration(assessmentItem, - textEntry.getResponseIdentifier(), textEntry.getSolution(), - score, textEntry.isCaseSensitive(), textEntry.getAlternatives()); + ResponseDeclaration responseDeclaration = createTextEntryResponseDeclaration(assessmentItem, + textEntry.getResponseIdentifier(), textEntry.getSolution(), + score, textEntry.isCaseSensitive(), textEntry.getAlternatives(), + scoreEvaluation == ScoreEvaluation.perAnswer); responseDeclarations.add(responseDeclaration); } } else if(entry instanceof NumericalEntry) { @@ -622,17 +716,20 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { responseRules.add(0, rule); {// match all - ResponseIf responseElseIf = new ResponseIf(rule); - rule.setResponseIf(responseElseIf); - //rule.getResponseElseIfs().add(responseElseIf); + ResponseIf responseIf = new ResponseIf(rule); + rule.setResponseIf(responseIf); - And and = new And(responseElseIf); - responseElseIf.setExpression(and); + And and = new And(responseIf); + responseIf.setExpression(and); + + int numOfTextEntry = 0; for(Map.Entry<String, AbstractEntry> textEntryEntry:responseIdentifierToTextEntry.entrySet()) { AbstractEntry abstractEntry = textEntryEntry.getValue(); if(abstractEntry instanceof TextEntry) { + numOfTextEntry++; + Match match = new Match(and); and.getExpressions().add(match); @@ -673,10 +770,55 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } + if(!allowDuplicatedAnswers && numOfTextEntry > 1) { + /* + <not> + <or> + <stringMatch caseSensitive="false" substring="false"> + <variable identifier="RESPONSE_2"/> + <variable identifier="RESPONSE_1"/> + </stringMatch> + </or> + </not> + <not> + <or> + <stringMatch caseSensitive="false" substring="false"> + <variable identifier="RESPONSE_3"/> + <variable identifier="RESPONSE_2"/> + </stringMatch> + <stringMatch caseSensitive="false" substring="false"> + <variable identifier="RESPONSE_3"/> + <variable identifier="RESPONSE_1"/> + </stringMatch> + </or> + </not> + */ + + List<String> responseIdentifiers = new ArrayList<>(responseIdentifierToTextEntry.keySet()); + int numOfResponseIdentifiers = responseIdentifiers.size(); + for(int i=1; i<numOfResponseIdentifiers; i++) { + Not not = new Not(and); + Or or = new Or(not); + not.getExpressions().add(or); + + for(int j=i; j-->0; ) { + Expression match = match(responseIdentifiers.get(i), responseIdentifiers.get(j), not); + if(match != null) { + or.getExpressions().add(match); + } + } + + // in case of a mix numerical and text entries + if(!or.getExpressions().isEmpty()) { + and.getExpressions().add(not); + } + } + } + {// outcome max score -> score - SetOutcomeValue scoreOutcomeValue = new SetOutcomeValue(responseElseIf); + SetOutcomeValue scoreOutcomeValue = new SetOutcomeValue(responseIf); scoreOutcomeValue.setIdentifier(QTI21Constants.SCORE_IDENTIFIER); - responseElseIf.getResponseRules().add(scoreOutcomeValue); + responseIf.getResponseRules().add(scoreOutcomeValue); Sum sum = new Sum(scoreOutcomeValue); scoreOutcomeValue.getExpressions().add(sum); @@ -691,9 +833,9 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } {//outcome feedback - SetOutcomeValue correctOutcomeValue = new SetOutcomeValue(responseElseIf); + SetOutcomeValue correctOutcomeValue = new SetOutcomeValue(responseIf); correctOutcomeValue.setIdentifier(QTI21Constants.FEEDBACKBASIC_IDENTIFIER); - responseElseIf.getResponseRules().add(correctOutcomeValue); + responseIf.getResponseRules().add(correctOutcomeValue); BaseValue correctValue = new BaseValue(correctOutcomeValue); correctValue.setBaseTypeAttrValue(BaseType.IDENTIFIER); @@ -719,6 +861,82 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } + private Expression match(String responseIdentifier1, String responseIdentifier2, ExpressionParent parent) { + AbstractEntry entry1 = responseIdentifierToTextEntry.get(responseIdentifier1); + AbstractEntry entry2 = responseIdentifierToTextEntry.get(responseIdentifier2); + if(entry1 instanceof TextEntry && entry2 instanceof TextEntry + && shareSomeAlternatives((TextEntry)entry1, (TextEntry)entry2)) { + return stringMatch(responseIdentifier1, responseIdentifier2, parent); + } + return null; + } + + public boolean entriesSharesAlternatives() { + List<String> responseIdentifiers = new ArrayList<>(responseIdentifierToTextEntry.keySet()); + int numOfResponseIdentifiers = responseIdentifiers.size(); + for(int i=1; i<numOfResponseIdentifiers; i++) { + for(int j=i; j-->0; ) { + String responseIdentifier1 = responseIdentifiers.get(i); + String responseIdentifier2 = responseIdentifiers.get(j); + AbstractEntry entry1 = responseIdentifierToTextEntry.get(responseIdentifier1); + AbstractEntry entry2 = responseIdentifierToTextEntry.get(responseIdentifier2); + if(entry1 instanceof TextEntry && entry2 instanceof TextEntry + && shareSomeAlternatives((TextEntry)entry1, (TextEntry)entry2)) { + return true; + } + } + } + return false; + } + + public static boolean shareSomeAlternatives(TextEntry entry1, TextEntry entry2) { + List<String> alternatives1 = alternativesToString(entry1); + List<String> alternatives2 = alternativesToString(entry2); + for(String alt1:alternatives1) { + for(String alt2:alternatives2) { + if(alt1.compareToIgnoreCase(alt2) == 0) { + return true; + } + } + } + return false; + } + + private static List<String> alternativesToString(TextEntry entry) { + List<String> alternatives = new ArrayList<>(); + if(entry.getSolution() != null) { + alternatives.add(entry.getSolution()); + } + if(entry.getAlternatives() != null) { + for(TextEntryAlternative alternative:entry.getAlternatives()) { + alternatives.add(alternative.getAlternative()); + } + } + return alternatives; + } + + /* + <stringMatch caseSensitive="false" substring="false"> + <variable identifier="RESPONSE_3"/> + <variable identifier="RESPONSE_2"/> + </stringMatch> + */ + private StringMatch stringMatch(String responseIdentifier1, String responseIdentifier2, ExpressionParent parent) { + StringMatch stringMatch = new StringMatch(parent); + stringMatch.setCaseSensitive(Boolean.FALSE); + stringMatch.setSubString(Boolean.FALSE); + + Variable variable1 = new Variable(stringMatch); + variable1.setIdentifier(ComplexReferenceIdentifier.parseString(responseIdentifier1)); + Variable variable2 = new Variable(stringMatch); + variable2.setIdentifier(ComplexReferenceIdentifier.parseString(responseIdentifier2)); + + stringMatch.getExpressions().add(variable1); + stringMatch.getExpressions().add(variable2); + + return stringMatch; + } + @Override protected void buildModalFeedbacksAndHints(List<OutcomeDeclaration> outcomeDeclarations, List<ResponseRule> responseRules) { if(correctFeedback != null || incorrectFeedback != null) { @@ -753,63 +971,13 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { */ int count = 0; - - for(Map.Entry<String, AbstractEntry> textEntryEntry:responseIdentifierToTextEntry.entrySet()) { - AbstractEntry entry = textEntryEntry.getValue(); + List<String> responseIdentifiers = new ArrayList<>(responseIdentifierToTextEntry.keySet()); + for(count = 0; count <responseIdentifiers.size(); count++) { + String responseStringIdentifier = responseIdentifiers.get(count); + AbstractEntry entry = responseIdentifierToTextEntry.get(responseStringIdentifier); String scoreIdentifier = "SCORE_" + entry.getResponseIdentifier().toString(); - - if(entry instanceof TextEntry) {//outcome mapResonse - SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(assessmentItem.getResponseProcessing()); - responseRules.add(count++, mapOutcomeValue); - mapOutcomeValue.setIdentifier(Identifier.parseString(scoreIdentifier)); - - MapResponse mapResponse = new MapResponse(mapOutcomeValue); - mapResponse.setIdentifier(entry.getResponseIdentifier()); - mapOutcomeValue.setExpression(mapResponse); - - } else if(entry instanceof NumericalEntry) { - NumericalEntry numericalEntry = (NumericalEntry)entry; - - ResponseCondition rule = new ResponseCondition(assessmentItem.getResponseProcessing()); - responseRules.add(count++, rule); - - ResponseIf responseIf = new ResponseIf(rule); - rule.setResponseIf(responseIf); - - Equal equal = new Equal(responseIf); - equal.setToleranceMode(numericalEntry.getToleranceMode()); - if(numericalEntry.getLowerTolerance() != null && numericalEntry.getUpperTolerance() != null) { - List<FloatOrVariableRef> tolerances = new ArrayList<>(); - tolerances.add(new FloatOrVariableRef(numericalEntry.getLowerTolerance().doubleValue())); - tolerances.add(new FloatOrVariableRef(numericalEntry.getUpperTolerance().doubleValue())); - equal.setTolerances(tolerances); - } - equal.setIncludeLowerBound(Boolean.TRUE); - equal.setIncludeUpperBound(Boolean.TRUE); - responseIf.getExpressions().add(equal); - - ComplexReferenceIdentifier responseIdentifier = ComplexReferenceIdentifier - .assumedLegal(numericalEntry.getResponseIdentifier().toString()); - - Correct correct = new Correct(equal); - correct.setIdentifier(responseIdentifier); - equal.getExpressions().add(correct); - - Variable variable = new Variable(equal); - variable.setIdentifier(responseIdentifier); - equal.getExpressions().add(variable); - - SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(responseIf); - responseIf.getResponseRules().add(mapOutcomeValue); - mapOutcomeValue.setIdentifier(Identifier.parseString(scoreIdentifier)); - - BaseValue correctValue = new BaseValue(mapOutcomeValue); - correctValue.setBaseTypeAttrValue(BaseType.FLOAT); - correctValue.setSingleValue(new FloatValue(entry.getScore())); - mapOutcomeValue.setExpression(correctValue); - } + buildScoreRulePerAnswer(count, entry, Identifier.parseString(scoreIdentifier), responseIdentifiers, responseRules); } - /* <setOutcomeValue identifier="SCORE"> @@ -871,7 +1039,116 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } - public static abstract class AbstractEntry { + private void buildScoreRulePerAnswer(int count, AbstractEntry entry, Identifier scoreIdentifier, + List<String> responseIdentifiers, List<ResponseRule> responseRules) { + if(entry instanceof TextEntry) { + buildScoreRulePerTextAnswer(count, (TextEntry)entry, scoreIdentifier, responseIdentifiers, responseRules); + } else if(entry instanceof NumericalEntry) { + buildScoreRulePerNumericalAnswer(count, (NumericalEntry)entry, scoreIdentifier, responseRules); + } + } + + /** + * Outcome map response. + * + * @param count Current position of the rule + * @param entry The text entry + * @param scoreIdentifier The identifier of the score + * @param responseRules The list of response rules + */ + private void buildScoreRulePerTextAnswer(int count, TextEntry entry, Identifier scoreIdentifier, List<String> responseIdentifiers, List<ResponseRule> responseRules) { + if(!allowDuplicatedAnswers && count > 0) { + ResponseCondition rule = new ResponseCondition(assessmentItem.getResponseProcessing()); + + ResponseIf responseIf = new ResponseIf(rule); + rule.setResponseIf(responseIf); + + Not not = new Not(responseIf); + Or or = new Or(not); + not.getExpressions().add(or); + + for(int j=count; j-->0; ) { + Expression match = match(responseIdentifiers.get(count), responseIdentifiers.get(j), not); + if(match != null) { + or.getExpressions().add(match); + } + } + + // in case of a mix numerical and text entries + if(or.getExpressions().isEmpty()) { + SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(assessmentItem.getResponseProcessing()); + responseRules.add(count, mapOutcomeValue); + mapOutcomeValue.setIdentifier(scoreIdentifier); + + MapResponse mapResponse = new MapResponse(mapOutcomeValue); + mapResponse.setIdentifier(entry.getResponseIdentifier()); + mapOutcomeValue.setExpression(mapResponse); + } else { + responseIf.getExpressions().add(not); + responseRules.add(count, rule); + + SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(responseIf); + responseIf.getResponseRules().add(mapOutcomeValue); + + mapOutcomeValue.setIdentifier(scoreIdentifier); + + MapResponse mapResponse = new MapResponse(mapOutcomeValue); + mapResponse.setIdentifier(entry.getResponseIdentifier()); + mapOutcomeValue.setExpression(mapResponse); + } + } else { + SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(assessmentItem.getResponseProcessing()); + responseRules.add(count, mapOutcomeValue); + mapOutcomeValue.setIdentifier(scoreIdentifier); + + MapResponse mapResponse = new MapResponse(mapOutcomeValue); + mapResponse.setIdentifier(entry.getResponseIdentifier()); + mapOutcomeValue.setExpression(mapResponse); + } + } + + private void buildScoreRulePerNumericalAnswer(int count, NumericalEntry numericalEntry, Identifier scoreIdentifier, List<ResponseRule> responseRules) { + + ResponseCondition rule = new ResponseCondition(assessmentItem.getResponseProcessing()); + responseRules.add(count, rule); + + ResponseIf responseIf = new ResponseIf(rule); + rule.setResponseIf(responseIf); + + Equal equal = new Equal(responseIf); + equal.setToleranceMode(numericalEntry.getToleranceMode()); + if(numericalEntry.getLowerTolerance() != null && numericalEntry.getUpperTolerance() != null) { + List<FloatOrVariableRef> tolerances = new ArrayList<>(); + tolerances.add(new FloatOrVariableRef(numericalEntry.getLowerTolerance().doubleValue())); + tolerances.add(new FloatOrVariableRef(numericalEntry.getUpperTolerance().doubleValue())); + equal.setTolerances(tolerances); + } + equal.setIncludeLowerBound(Boolean.TRUE); + equal.setIncludeUpperBound(Boolean.TRUE); + responseIf.getExpressions().add(equal); + + ComplexReferenceIdentifier responseIdentifier = ComplexReferenceIdentifier + .assumedLegal(numericalEntry.getResponseIdentifier().toString()); + + Correct correct = new Correct(equal); + correct.setIdentifier(responseIdentifier); + equal.getExpressions().add(correct); + + Variable variable = new Variable(equal); + variable.setIdentifier(responseIdentifier); + equal.getExpressions().add(variable); + + SetOutcomeValue mapOutcomeValue = new SetOutcomeValue(responseIf); + responseIf.getResponseRules().add(mapOutcomeValue); + mapOutcomeValue.setIdentifier(scoreIdentifier); + + BaseValue correctValue = new BaseValue(mapOutcomeValue); + correctValue.setBaseTypeAttrValue(BaseType.FLOAT); + correctValue.setSingleValue(new FloatValue(numericalEntry.getScore())); + mapOutcomeValue.setExpression(correctValue); + } + + public abstract static class AbstractEntry { private Identifier responseIdentifier; private String placeholder; @@ -1129,6 +1406,10 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { private String alternative; private double score; + + public TextEntryAlternative() { + // + } public String getAlternative() { return alternative; diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTreeComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTreeComponentRenderer.java index 8e28e36f0a5a539f5a3d985c91914fa1dc8620bd..80b7f2ce4adba4bbfd17ce9da7e0061d11746be4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTreeComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTreeComponentRenderer.java @@ -141,7 +141,7 @@ public class AssessmentTreeComponentRenderer extends AssessmentObjectComponentRe .append("<header><h4>").append(StringHelper.escapeHtml(sectionNode.getSectionPartTitle())).append("</h4>"); sb.append("</header><ul class='o_testpartnavigation_inner list-unstyled'>"); - sectionNode.getChildren().forEach((child) + sectionNode.getChildren().forEach(child -> renderNavigation(renderer, sb, component, child, ubu, translator, options)); sb.append("</ul></li>"); } @@ -221,6 +221,10 @@ public class AssessmentTreeComponentRenderer extends AssessmentObjectComponentRe int num = component.getCandidateSessionContext().getNumber(itemNode); title = translator.translate("question.title", new String[] { Integer.toString(num) }); } + if(title != null) { + title = title.replace("_", " "); + } + sb.append("<span class='questionTitle'>").append(title).append("</span>"); if(event == null) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java index 085c5ae39ed738e43a7366db63165d5722db5645..15b4bd6f72aebfe6e46bdfccfe7cdd4ad59151fc 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java @@ -275,8 +275,8 @@ public class AssessmentItemEditorController extends BasicController implements A switch(type) { case sc: itemBuilder = initSingleChoiceEditors(ureq, item); break; case mc: itemBuilder = initMultipleChoiceEditors(ureq, item); break; - case fib: itemBuilder = initFIBEditors(ureq, type, item); break; - case numerical: itemBuilder = initFIBEditors(ureq, type, item); break; + case fib: itemBuilder = initFIBEditors(ureq, item); break; + case numerical: itemBuilder = initFIBEditors(ureq, item); break; case kprim: itemBuilder = initKPrimChoiceEditors(ureq, item); break; case match: itemBuilder = initMatchChoiceEditors(ureq, item); break; case matchdraganddrop: itemBuilder = initMatchDragAndDropEditors(ureq, item); break; @@ -408,9 +408,9 @@ public class AssessmentItemEditorController extends BasicController implements A return matchItemBuilder; } - private AssessmentItemBuilder initFIBEditors(UserRequest ureq, QTI21QuestionType preferedType, AssessmentItem item) { + private AssessmentItemBuilder initFIBEditors(UserRequest ureq, AssessmentItem item) { FIBAssessmentItemBuilder fibItemBuilder = new FIBAssessmentItemBuilder(item, qtiService.qtiSerializer()); - itemEditor = new FIBEditorController(ureq, getWindowControl(), preferedType, fibItemBuilder, + itemEditor = new FIBEditorController(ureq, getWindowControl(), fibItemBuilder, rootDirectory, rootContainer, itemFile, restrictedEdit, readOnly); listenTo(itemEditor); scoreEditor = new FIBScoreController(ureq, getWindowControl(), fibItemBuilder, itemRef, diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionExpertOptionsEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionExpertOptionsEditorController.java index dfd417da4a73d34f06a8cc71e57fe4e18918ff8f..27cf3481b1238ce725c744fe93cd1b061784f2e7 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionExpertOptionsEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionExpertOptionsEditorController.java @@ -41,6 +41,7 @@ public class AssessmentSectionExpertOptionsEditorController extends ItemSessionC private static final String[] yesnoKeys = new String[]{ "y", "n"}; private SingleSelection visibleEl; + private SingleSelection positionEl; private final AssessmentSection section; @@ -75,6 +76,18 @@ public class AssessmentSectionExpertOptionsEditorController extends ItemSessionC } else { visibleEl.select("n", true); } + + String[] fixOrNotValues = new String[]{ translate("form.section.position.fixed"), translate("form.section.position.not.fixed") }; + positionEl = uifactory.addRadiosHorizontal("position", "form.section.position", formLayout, yesnoKeys, fixOrNotValues); + positionEl.setHelpTextKey("form.section.position.hint", null); + positionEl.setElementCssClass("o_sel_assessment_section_position"); + positionEl.setEnabled(!restrictedEdit && editable); + positionEl.setVisible(section.getParentSection() != null); + if (section.getFixed()) { + positionEl.select("y", true); + } else { + positionEl.select("n", true); + } FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("butons", getTranslator()); formLayout.add(buttonsCont); @@ -107,6 +120,18 @@ public class AssessmentSectionExpertOptionsEditorController extends ItemSessionC //visible boolean visible = visibleEl.isOneSelected() && visibleEl.isSelected(0); section.setVisible(visible); + + if(positionEl.isVisible()) { + section.setFixed(Boolean.valueOf(positionEl.isSelected(0))); + if(!section.getFixed()) { + section.setKeepTogether(Boolean.TRUE); + } else { + section.setKeepTogether(Boolean.FALSE); + } + } else { + section.setFixed(null); + section.setKeepTogether(null); + } fireEvent(ureq, new AssessmentSectionEvent(AssessmentSectionEvent.ASSESSMENT_SECTION_CHANGED, section)); } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionOptionsEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionOptionsEditorController.java index 09187a3e7c75e1b60b5d8bc9fb650076951f8b72..37b28eaf1517aa1987c94a4247db4a93a5a13cbd 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionOptionsEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionOptionsEditorController.java @@ -122,6 +122,7 @@ public class AssessmentSectionOptionsEditorController extends FormBasicControlle //shuffle String[] yesnoValues = new String[]{ translate("yes"), translate("no") }; shuffleEl = uifactory.addRadiosHorizontal("shuffle", "form.section.shuffle", formLayout, yesnoKeys, yesnoValues); + shuffleEl.setHelpTextKey("form.section.position.hint", null); if (section.getOrdering() != null && section.getOrdering().getShuffle()) { shuffleEl.select("y", true); } else { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java index 35ff41396d5b31722f74ce6d2a13cb6dd6320939..9facae8af191f76f9bc2c66850cb9f3394106ded 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java @@ -650,7 +650,12 @@ public class AssessmentTestComposerController extends MainLayoutBasicController } if(targetObject instanceof AssessmentSection) { AssessmentSection targetSection = (AssessmentSection)targetObject; + boolean shuffledSections = AssessmentTestFactory.shuffledSections(targetSection); targetSection.getChildAbstractParts().add(droppedSection); + if(shuffledSections) { + droppedSection.setFixed(Boolean.FALSE); + droppedSection.setKeepTogether(Boolean.TRUE); + } } else if(targetObject instanceof TestPart) { TestPart targetTestPart = (TestPart)targetObject; targetTestPart.getAssessmentSections().add(droppedSection); @@ -688,6 +693,11 @@ public class AssessmentTestComposerController extends MainLayoutBasicController AssessmentSection targetSection = (AssessmentSection)targetObject; if(targetSection.getParentSection() != null) { AssessmentSection targetParentSection = targetSection.getParentSection(); + boolean shuffledSections = AssessmentTestFactory.shuffledSections(targetParentSection); + if(shuffledSections) { + droppedSection.setFixed(Boolean.FALSE); + droppedSection.setKeepTogether(Boolean.TRUE); + } int pos = targetParentSection.getChildAbstractParts().indexOf(targetSection) + 1; if(pos >= targetParentSection.getChildAbstractParts().size()) { targetParentSection.getChildAbstractParts().add(droppedSection); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties index 77ac21517fe800ebfe56e41d46a054bbc21f7579..91fde54faf72ad80146d938ee28635c745b27c5d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties @@ -117,6 +117,8 @@ form.imd.correctSolution.text=Korrekte L\u00F6sung form.imd.correctSolution.text.word=$\:form.imd.correctSolution.text (nur f\u00FCr Word Export) form.imd.correctSolution.title=Titel form.imd.descr=Frage +form.imd.duplicate.answers=Doppelte Eingaben erlauben +form.imd.duplicate.answers.hint=Limitiert zu Eingaben von Typ Text form.imd.empty.text=Feedback bei keiner Antwort form.imd.empty.title=Titel form.imd.feedback.text=Feedback @@ -161,10 +163,15 @@ form.score.answer.summary=Antwort \u00DCberblick form.score.assessment.all.correct=Alle korrekten Antworten form.score.assessment.mode=Bewertungsmethode form.score.assessment.per.answer=Punkte pro Antwort +form.score.assessment.per.answer.and.alternatives=Punkte pro Antwort und Varianten +form.section.position=Position +form.section.position.fixed=Fest +form.section.position.hint=Um die Sektionen zu mischen, die untere Sektionen m\u00FCssen ihre Position auf "$\:form.section.position.not.fixed" und die oberere Sektion braucht "$\:form.section.shuffle". +form.section.position.not.fixed=Zuf\u00E4llig form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=Anzahl Fragen in dieser Sektion form.section.selection_pre.hover=Legen Sie fest ob alle oder nur eine bestimmte Anzahl Fragen im Test angezeigt werden sollen. -form.section.shuffle=Zuf\u00E4llige Reihenfolge der Fragen? +form.section.shuffle=Zuf\u00E4llige Reihenfolge der Fragen oder der Sektionen? form.section.visible=Sektionstitel sichtbar in Test form.test.correct.text=Feedback, wenn notwendige Punktzahl f\u00FCr "Bestanden" erreicht form.test.correct.title=Titel @@ -248,10 +255,12 @@ table.header.learning.time=Zeit table.header.license=Lizenz table.header.points=Punkte table.header.review=R\u00FCckblick erlauben +table.header.shuffled=Zuf\u00E4llig table.header.skipping=\u00DCberspringen erlauben table.header.solution=L\u00F6sung anzeigen table.header.title=Titel table.header.type=Fragetyp +table.shuffled.hint=Die Position von diesem Part ist zuf\u00E4llig. time.limit.max=Zeitbeschr\u00E4nkung title.add=$org.olat.ims.qti.editor\:title.add tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties index 16b6798e6d025ac2be7def0ac67db07c0ff353f3..09c90c462b977d8db139ddbc709a876063729a54 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties @@ -117,6 +117,8 @@ form.imd.correctSolution.text=Correct solution form.imd.correctSolution.text.word=$\:form.imd.correctSolution.text (only for Word export) form.imd.correctSolution.title=Title form.imd.descr=Question +form.imd.duplicate.answers=Allow twice the same input +form.imd.duplicate.answers.hint=Limited to input of type text form.imd.empty.text=Empty feedback form.imd.empty.title=Empty title form.imd.feedback.text=Feedback @@ -161,10 +163,15 @@ form.score.answer.summary=Answer summary form.score.assessment.all.correct=All correct answers form.score.assessment.mode=Method of assessment form.score.assessment.per.answer=Score per answer +form.score.assessment.per.answer.and.alternatives=Score per answer and alternatives +form.section.position=Position +form.section.position.fixed=Fixed +form.section.position.hint=To shuffle sections, the child sections need their position to "$\:form.section.position.not.fixed" and the parent section "$\:form.section.shuffle" set. +form.section.position.not.fixed=At random form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=Number of questions in this section form.section.selection_pre.hover=Select whether all or just a specified number of questions should be displayed in the test. -form.section.shuffle=Random order of questions? +form.section.shuffle=Random order of questions or sections? form.section.visible=Section's title visible in test form.test.correct.text=Feedback for all correct answers form.test.correct.title=Title @@ -249,9 +256,11 @@ table.header.license=License table.header.points=Points table.header.review=Allow review table.header.skipping=Allow skipping +table.header.shuffled=Shuffled table.header.solution=Show solution table.header.title=Title table.header.type=Type +table.shuffled.hint=The position of this part is randomized. time.limit.max=Time limit title.add=$org.olat.ims.qti.editor\:title.add tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties index e2baac9010bbf76eb70a1c6b690bb413cfd8073f..539babbfa07306aa88d0e843064807c517ae32a8 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties @@ -165,7 +165,7 @@ form.score.assessment.per.answer=Points par r\u00E9ponse form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=Nombre de questions dans la section form.section.selection_pre.hover=Indiquez si la totalit\u00E9 ou au contraire un certain nombre seulement de questions seront affich\u00E9s dans le test. -form.section.shuffle=Ordre al\u00E9atoire des questions? +form.section.shuffle=Ordre al\u00E9atoire des questions ou des sections? form.section.visible=Titre des sections visibles dans l'\u00E9valuation form.test.correct.text=Feedback lors du choix de tous les r\u00E9ponses correctes form.test.correct.title=Titre diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties index 9eee468a2152d35b4ea21d686d45156f49247917..822db0d1a20a57d3a07336d06282d2f98c3b2219 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_it.properties @@ -95,7 +95,6 @@ form.score.assessment.per.answer=Punti per risposta form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=Numero di domande in questa sezione form.section.selection_pre.hover=Selezionare se tutte o solo un numero specificato di domande debbano essere visualizzate nel test. -form.section.shuffle=Ordine casuale delle domande? form.section.visible=Titolo della sezione visibile nel test form.test.correct.text=Feedback se si raggiunge punteggio per "Superato" form.test.correct.title=Titolo diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties index 8e75ff741b69b8237e0e6bd8d9edc119529175db..c8a85e5f534d07a50b294c4216bacdf911856858 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_pt_BR.properties @@ -164,7 +164,6 @@ form.score.assessment.per.answer=Pontua\u00E7\u00E3o por resposta form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=N\u00FAmero de perguntas nesta se\u00E7\u00E3o form.section.selection_pre.hover=Selecione se todas ou apenas um n\u00FAmero especificado de perguntas devem ser exibidos no teste. -form.section.shuffle=Ordem aleat\u00F3ria de perguntas? form.section.visible=T\u00EDtulo da se\u00E7\u00E3o vis\u00EDvel no teste form.test.correct.text=Feedback para todas as respostas corretas form.test.correct.title=T\u00EDtulo diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties index bf33ac6e6f67fc52876a3d0b37a3162b98bcb003..a5dd696d977f15863f5535319415a6e452a6a747 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_zh_CN.properties @@ -93,7 +93,6 @@ form.score.assessment.per.answer=\u6BCF\u4E2A\u7B54\u6848\u5206\u6570 form.section.selection_all=$org.olat.ims.qti.editor\:form.section.selection_all form.section.selection_pre=\u672C\u8282\u7684\u95EE\u9898\u6570 form.section.selection_pre.hover=\u9009\u62E9\u662F\u6D4B\u9A8C\u4E2D\u662F\u663E\u793A\u6240\u6709\u95EE\u9898\u8FD8\u662F\u6307\u5B9A\u6570\u91CF\u7684\u95EE\u9898 -form.section.shuffle=\u95EE\u9898\u968F\u673A\u6392\u5E8F\u5417\uFF1F form.section.visible=\u5728\u6D4B\u9A8C\u4E2D\u663E\u793A\u8282\u7684\u6807\u9898 form.test.correct.text=\u6240\u6709\u6B63\u786E\u7B54\u6848\u7684\u53CD\u9988 form.test.correct.title=\u6807\u9898 diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java index 19741c22651cb7cccccb530e17927ffc563549d9..384ef40ec5af8a378d344aba6caa26a7f565392f 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java @@ -74,19 +74,17 @@ public class FIBEditorController extends FormBasicController { private final File itemFile; private final File rootDirectory; private final VFSContainer rootContainer; - private final QTI21QuestionType preferredType; - private final boolean restrictedEdit, readOnly; + private final boolean readOnly; + private final boolean restrictedEdit; private final FIBAssessmentItemBuilder itemBuilder; - public FIBEditorController(UserRequest ureq, WindowControl wControl, - QTI21QuestionType preferredType, FIBAssessmentItemBuilder itemBuilder, + public FIBEditorController(UserRequest ureq, WindowControl wControl, FIBAssessmentItemBuilder itemBuilder, File rootDirectory, VFSContainer rootContainer, File itemFile, boolean restrictedEdit, boolean readOnly) { super(ureq, wControl, LAYOUT_DEFAULT_2_10); setTranslator(Util.createPackageTranslator(AssessmentTestEditorController.class, getLocale())); this.itemFile = itemFile; this.itemBuilder = itemBuilder; - this.preferredType = preferredType; this.rootDirectory = rootDirectory; this.rootContainer = rootContainer; this.readOnly = readOnly; @@ -113,20 +111,8 @@ public class FIBEditorController extends FormBasicController { textEl.setElementCssClass("o_sel_assessment_item_fib_text"); RichTextConfiguration richTextConfig = textEl.getEditorConfiguration(); richTextConfig.setReadOnly(restrictedEdit || readOnly); - - boolean hasNumericals = itemBuilder.hasNumericalInputs(); - boolean hasTexts = itemBuilder.hasTextEntry(); - if(!hasNumericals && !hasTexts) { - if(preferredType == QTI21QuestionType.numerical) { - hasNumericals = true; - } else if(preferredType == QTI21QuestionType.fib) { - hasNumericals = false; - } else { - hasNumericals = true; - } - } richTextConfig.enableQTITools(true, true, false); - + // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setElementCssClass("o_sel_fib_save"); @@ -210,7 +196,7 @@ public class FIBEditorController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; + boolean allOk = super.validateFormLogic(ureq); String questionText = textEl.getRawValue(); if(!StringHelper.containsNonWhitespace(questionText)) { @@ -221,7 +207,7 @@ public class FIBEditorController extends FormBasicController { allOk &= false; } - return allOk & super.validateFormLogic(ureq); + return allOk; } @Override diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java index 4ba2e7b9157605bf99b29f887d12d31624b80611..6e8317b094dd8c5c5f7ce66400664562c26e47be 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBScoreController.java @@ -34,6 +34,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.ims.qti21.model.xml.AssessmentItemBuilder; import org.olat.ims.qti21.model.xml.ScoreBuilder; @@ -41,6 +42,7 @@ import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.AbstractEntry; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.NumericalEntry; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntry; +import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntryAlternative; import org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation; import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController; import org.olat.ims.qti21.ui.editor.SyncAssessmentItem; @@ -56,15 +58,17 @@ import uk.ac.ed.ph.jqtiplus.types.Identifier; * */ public class FIBScoreController extends AssessmentItemRefEditorController implements SyncAssessmentItem { - + + private static final String[] yesnoKeys = new String[]{ "y", "n"}; private static final String[] modeKeys = new String[]{ - ScoreEvaluation.allCorrectAnswers.name(), ScoreEvaluation.perAnswer.name() + ScoreEvaluation.allCorrectAnswers.name(), ScoreEvaluation.perAnswer.name(), "perAnswerAndAlternatives" }; private TextElement minScoreEl; private TextElement maxScoreEl; private FormLayoutContainer scoreCont; private SingleSelection assessmentModeEl; + private SingleSelection duplicateAllowedEl; private FIBAssessmentItemBuilder itemBuilder; private final List<FIBEntryWrapper> wrappers = new ArrayList<>(); @@ -93,15 +97,32 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem maxScoreEl.setElementCssClass("o_sel_assessment_item_max_score"); maxScoreEl.setEnabled(!restrictedEdit && !readOnly); + String[] yesnoValues = new String[]{ translate("yes"), translate("no") }; + duplicateAllowedEl = uifactory.addRadiosHorizontal("duplicate", "form.imd.duplicate.answers", formLayout, yesnoKeys, yesnoValues); + duplicateAllowedEl.setElementCssClass("o_sel_assessment_item_fib_duplicate"); + duplicateAllowedEl.setEnabled(!restrictedEdit && !readOnly); + duplicateAllowedEl.setVisible(hasSeveralTextEntryWithSharedAlternatives()); + duplicateAllowedEl.setHelpTextKey("form.imd.duplicate.answers.hint", null); + if(itemBuilder.isAllowDuplicatedAnswers()) { + duplicateAllowedEl.select(yesnoKeys[0], true); + } else { + duplicateAllowedEl.select(yesnoKeys[1], true); + } + String[] modeValues = new String[]{ translate("form.score.assessment.all.correct"), - translate("form.score.assessment.per.answer") + translate("form.score.assessment.per.answer"), + translate("form.score.assessment.per.answer.and.alternatives") }; assessmentModeEl = uifactory.addRadiosHorizontal("assessment.mode", "form.score.assessment.mode", formLayout, modeKeys, modeValues); assessmentModeEl.addActionListener(FormEvent.ONCHANGE); assessmentModeEl.setEnabled(!restrictedEdit && !readOnly); if(itemBuilder.getScoreEvaluationMode() == ScoreEvaluation.perAnswer) { - assessmentModeEl.select(ScoreEvaluation.perAnswer.name(), true); + if(itemBuilder.alternativesWithSpecificScore()) { + assessmentModeEl.select("perAnswerAndAlternatives", true); + } else { + assessmentModeEl.select(ScoreEvaluation.perAnswer.name(), true); + } } else { assessmentModeEl.select(ScoreEvaluation.allCorrectAnswers.name(), true); } @@ -115,7 +136,8 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem wrappers.add(createTextEntryWrapper(entry)); } scoreCont.contextPut("choices", wrappers); - scoreCont.setVisible(assessmentModeEl.isSelected(1)); + scoreCont.setVisible(assessmentModeEl.isSelected(1) || assessmentModeEl.isSelected(2)); + scoreCont.contextPut("withAlternatives", Boolean.valueOf(assessmentModeEl.isSelected(2))); // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); @@ -124,6 +146,19 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem formLayout.add(buttonsContainer); uifactory.addFormSubmitButton("submit", buttonsContainer); } + + private boolean hasSeveralTextEntryWithSharedAlternatives() { + int count = 0; + + List<AbstractEntry> entries = itemBuilder.getOrderedTextEntries(); + for(AbstractEntry entry:entries) { + if(entry instanceof TextEntry) { + count++; + } + } + + return count > 1 && itemBuilder.entriesSharesAlternatives(); + } @Override public void sync(UserRequest ureq, AssessmentItemBuilder assessmentItemBuilder) { @@ -133,6 +168,8 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem FIBEntryWrapper wrapper = getTextEntryWrapper(entry); if(wrapper == null) { wrappers.add(createTextEntryWrapper(entry)); + } else if(entry instanceof TextEntry) { + syncAlternatives(wrapper, (TextEntry)entry); } } @@ -167,9 +204,52 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem } wrappers.clear(); wrappers.addAll(reorderedWrappers); + + // duplicated only for text entry + duplicateAllowedEl.setVisible(hasSeveralTextEntryWithSharedAlternatives()); } } + private void syncAlternatives(FIBEntryWrapper wrapper, TextEntry entry) { + List<FIBAlternativeWrapper> alternativeWrappers = wrapper.getAlternatives(); + List<TextEntryAlternative> alternatives = entry.getAlternatives(); + + for(Iterator<FIBAlternativeWrapper> it=alternativeWrappers.iterator(); it.hasNext(); ) { + FIBAlternativeWrapper alternativeWrapper = it.next(); + + boolean found = false; + for(TextEntryAlternative alternative:alternatives) { + if(alternativeWrapper.getAlternative() == alternative) { + found = true; + } + } + + if(!found) { + it.remove(); + } + } + + for(TextEntryAlternative alternative:alternatives) { + boolean found = false; + + for(FIBAlternativeWrapper alternativeWrapper:alternativeWrappers) { + if(alternativeWrapper.getAlternative() == alternative) { + found = true; + } + } + + if(!found) { + FIBAlternativeWrapper alternativeWrapper = createAlternativeWrapper(alternative); + wrapper.getAlternatives().add(alternativeWrapper); + } + + + } + + + + } + private FIBEntryWrapper getTextEntryWrapper(AbstractEntry entry) { for(FIBEntryWrapper wrapper:wrappers) { if(wrapper.getEntry() == entry) { @@ -190,39 +270,91 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem pointEl.setDisplaySize(5); pointEl.setEnabled(!restrictedEdit && !readOnly); scoreCont.add(pointElId, pointEl); - return new FIBEntryWrapper(entry, pointEl); - } + + List<FIBAlternativeWrapper> alternativeWrappers = new ArrayList<>(); + if(entry instanceof TextEntry) { + TextEntry textEntry = (TextEntry)entry; + if(textEntry.getAlternatives() != null) { + for(TextEntryAlternative alternative:textEntry.getAlternatives()) { + FIBAlternativeWrapper alternativeWrapper = createAlternativeWrapper(alternative); + alternativeWrappers.add(alternativeWrapper); + } + } + } + return new FIBEntryWrapper(entry, pointEl, alternativeWrappers); + } + + private FIBAlternativeWrapper createAlternativeWrapper(TextEntryAlternative alternative) { + String altPointElId = "points_" + counter++; + String altScoreStr = alternative.getScore() == -1.0d ? "" : Double.toString(alternative.getScore()); + TextElement altPointEl = uifactory.addTextElement(altPointElId, null, 5, altScoreStr, scoreCont); + altPointEl.setDisplaySize(5); + altPointEl.setEnabled(!restrictedEdit && !readOnly); + scoreCont.add(altPointElId, altPointEl); + return new FIBAlternativeWrapper(alternative, altPointEl); + } @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; + boolean allOk = super.validateFormLogic(ureq); allOk &= validateDouble(maxScoreEl); - if(assessmentModeEl.isOneSelected() && assessmentModeEl.isSelected(1)) { + if(assessmentModeEl.isOneSelected() && (assessmentModeEl.isSelected(1) || assessmentModeEl.isSelected(2))) { + boolean alternativeSpecificScore = assessmentModeEl.isSelected(2); for(FIBEntryWrapper wrapper:wrappers) { allOk &= validateDouble(wrapper.getPointsEl()); + if(alternativeSpecificScore && wrapper.getAlternatives() != null && !wrapper.getAlternatives().isEmpty()) { + for(FIBAlternativeWrapper alternativeWrapper:wrapper.getAlternatives()) { + allOk &= validateDouble(alternativeWrapper.getPointsEl()); + } + } } } - return allOk & super.validateFormLogic(ureq); + return allOk; } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(assessmentModeEl.isOneSelected()) { - boolean perAnswer = assessmentModeEl.isSelected(1); - scoreCont.setVisible(perAnswer); - if(perAnswer) { - for(FIBEntryWrapper wrapper:wrappers) { - Double points = wrapper.getEntry().getScore(); - if(points != null && points.doubleValue() == -1.0d) {//replace the all answers score - wrapper.getEntry().setScore(1.0d); - wrapper.getPointsEl().setValue("1.0"); + updateScoresUI(); + } + super.formInnerEvent(ureq, source, event); + } + + private void updateScoresUI() { + boolean perAnswer = assessmentModeEl.isSelected(1) || assessmentModeEl.isSelected(2); + scoreCont.setVisible(perAnswer); + scoreCont.contextPut("withAlternatives", Boolean.valueOf(assessmentModeEl.isSelected(2))); + if(perAnswer) { + for(FIBEntryWrapper wrapper:wrappers) { + AbstractEntry entry = wrapper.getEntry(); + Double points = entry.getScore(); + if(points != null && points.doubleValue() == -1.0d) {//replace the all answers score + wrapper.getEntry().setScore(1.0d); + wrapper.getPointsEl().setValue("1.0"); + } + + if(entry instanceof TextEntry && wrapper.getAlternatives() != null && !wrapper.getAlternatives().isEmpty()) { + for(FIBAlternativeWrapper alternativeWrapper:wrapper.getAlternatives()) { + TextEntryAlternative alternative = alternativeWrapper.getAlternative(); + if(StringHelper.containsNonWhitespace(alternativeWrapper.getPointsEl().getValue())) { + if(points != null && points.doubleValue() >= 0.0d && alternative.getScore() == 1.0d) { + alternative.setScore(points.doubleValue()); + alternativeWrapper.getPointsEl().setValue(points.toString()); + } + } else { + if(alternative.getScore() >= 0.0) { + alternativeWrapper.getPointsEl().setValue(Double.toString(alternative.getScore())); + } else if(points != null && points.doubleValue() == -1.0d) { + alternative.setScore(points.doubleValue()); + alternativeWrapper.getPointsEl().setValue(points.toString()); + } + } } } } } - super.formInnerEvent(ureq, source, event); } @Override @@ -233,14 +365,36 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem String maxScoreValue = maxScoreEl.getValue(); Double maxScore = Double.parseDouble(maxScoreValue); itemBuilder.setMaxScore(maxScore); - itemBuilder.setMinScore(new Double(0d)); + itemBuilder.setMinScore(Double.valueOf(0.0d)); - if(assessmentModeEl.isOneSelected() && assessmentModeEl.isSelected(1)) { + if(duplicateAllowedEl.isVisible()) { + boolean allowDuplicates = duplicateAllowedEl.isOneSelected() && duplicateAllowedEl.isSelected(0); + itemBuilder.setAllowDuplicatedAnswers(allowDuplicates); + } else { + itemBuilder.setAllowDuplicatedAnswers(true); + } + + if(assessmentModeEl.isOneSelected() && (assessmentModeEl.isSelected(1) || assessmentModeEl.isSelected(2))) { itemBuilder.setScoreEvaluationMode(ScoreEvaluation.perAnswer); + boolean alternativeSpecificScore = assessmentModeEl.isSelected(2); + for(FIBEntryWrapper wrapper:wrappers) { String pointsStr = wrapper.getPointsEl().getValue(); - Double points = new Double(pointsStr); + Double points = Double.valueOf(pointsStr); wrapper.getEntry().setScore(points); + if(wrapper.getAlternatives() != null && !wrapper.getAlternatives().isEmpty()) { + if(alternativeSpecificScore) { + for(FIBAlternativeWrapper alternativeWrapper:wrapper.getAlternatives()) { + String scoreStr = alternativeWrapper.getPointsEl().getValue(); + double score = Double.parseDouble(scoreStr); + alternativeWrapper.getAlternative().setScore(score); + } + } else { + for(FIBAlternativeWrapper alternativeWrapper:wrapper.getAlternatives()) { + alternativeWrapper.getAlternative().setScore(points.doubleValue()); + } + } + } } } else { itemBuilder.setScoreEvaluationMode(ScoreEvaluation.allCorrectAnswers); @@ -258,10 +412,12 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem private final AbstractEntry entry; private final TextElement pointsEl; + private final List<FIBAlternativeWrapper> alternatives; - public FIBEntryWrapper(AbstractEntry entry, TextElement pointsEl) { + public FIBEntryWrapper(AbstractEntry entry, TextElement pointsEl, List<FIBAlternativeWrapper> alternatives) { this.entry = entry; this.pointsEl = pointsEl; + this.alternatives = alternatives; pointsEl.setUserObject(this); } @@ -286,6 +442,10 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem return entry; } + public List<FIBAlternativeWrapper> getAlternatives() { + return alternatives; + } + @Override public int hashCode() { return entry.hashCode(); @@ -304,4 +464,27 @@ public class FIBScoreController extends AssessmentItemRefEditorController implem return false; } } + + public final class FIBAlternativeWrapper { + + private final TextElement pointsEl; + private final TextEntryAlternative alternative; + + public FIBAlternativeWrapper(TextEntryAlternative alternative, TextElement pointsEl) { + this.pointsEl = pointsEl; + this.alternative = alternative; + } + + public String getSummary() { + return alternative.getAlternative(); + } + + public TextElement getPointsEl() { + return pointsEl; + } + + public TextEntryAlternative getAlternative() { + return alternative; + } + } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java index 7dced0f3be3874f73183e2d5cf04b6b886cac596..9294d751d22f27a163f0016603793746ad9e1894 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java @@ -62,7 +62,8 @@ public class FIBTextEntrySettingsController extends FormBasicController { private final List<AlternativeRow> alternativeRows = new ArrayList<>(); private int count = 0; - private final boolean restrictedEdit, readOnly; + private final boolean readOnly; + private final boolean restrictedEdit; private final TextEntry interaction; public FIBTextEntrySettingsController(UserRequest ureq, WindowControl wControl, TextEntry interaction, @@ -106,7 +107,7 @@ public class FIBTextEntrySettingsController extends FormBasicController { addFirstAlternative.setVisible(!restrictedEdit && !readOnly); List<TextEntryAlternative> alternatives = interaction.getAlternatives(); - if(alternatives != null && alternatives.size() > 0) { + if(alternatives != null && !alternatives.isEmpty()) { for(TextEntryAlternative alternative:alternatives) { appendAlternative(alternative, null, false); } @@ -191,7 +192,7 @@ public class FIBTextEntrySettingsController extends FormBasicController { @Override protected boolean validateFormLogic(UserRequest ureq) { - boolean allOk = true; + boolean allOk = super.validateFormLogic(ureq); expectedLengthEl.clearError(); if(StringHelper.containsNonWhitespace(expectedLengthEl.getValue())) { @@ -208,13 +209,17 @@ public class FIBTextEntrySettingsController extends FormBasicController { } } - return allOk & super.validateFormLogic(ureq); + return allOk; } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(source == addFirstAlternative) { - appendAlternative(new TextEntryAlternative(), null, true); + TextEntryAlternative alternative = new TextEntryAlternative(); + if(interaction.getScore() != null) { + alternative.setScore(interaction.getScore().doubleValue()); + } + appendAlternative(alternative, null, true); } else if(source instanceof FormLink) { for(AlternativeRow alternativeRow:alternativeRows) { if(alternativeRow.getRemoveButton() == source) { @@ -222,7 +227,11 @@ public class FIBTextEntrySettingsController extends FormBasicController { flc.setDirty(true); break; } else if(alternativeRow.getAddButton() == source) { - appendAlternative(new TextEntryAlternative(), alternativeRow, true); + TextEntryAlternative alternative = new TextEntryAlternative(); + if(interaction.getScore() != null) { + alternative.setScore(interaction.getScore().doubleValue()); + } + appendAlternative(alternative, alternativeRow, true); break; } } @@ -276,7 +285,8 @@ public class FIBTextEntrySettingsController extends FormBasicController { public class AlternativeRow { private final TextElement alternativeEl; - private final FormLink addButton, removeButton; + private final FormLink addButton; + private final FormLink removeButton; private final TextEntryAlternative alternative; diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/fib_score.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/fib_score.html index a4979cad25e067060a375dd22687f12bca3099ae..7ac288fd83b3566f8d117b97f5750030ef02776d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/fib_score.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/fib_score.html @@ -1,7 +1,7 @@ <table class="table o_sel_gap_entries_scores"> <thead><tr> - <th>$r.translate("form.score.answer.summary")</th> - <th>$r.translate("form.score.answer.points")</th> + <th scope='col'>$r.translate("form.score.answer.summary")</th> + <th scope='col'>$r.translate("form.score.answer.points")</th> </tr></thead> <tbody> #foreach($choice in $choices) @@ -13,6 +13,19 @@ #end </td> </tr> + #if($r.isTrue($withAlternatives)) + #set($alternatives = ${choice.getAlternatives()}) + #foreach($alternative in $alternatives) + <tr> + <td><span class='o_qti_gaptext_score_alternative'>$alternative.summary</span></td> + <td>$r.render(${alternative.getPointsEl().getComponent().getComponentName()}) + #if($f.hasError($alternative.getPointsEl().getComponent().getComponentName())) + <div>$r.render("${alternative.getPointsEl().getComponent().getComponentName()}_ERROR")</div> + #end + </td> + </tr> + #end + #end #end </tbody> </table> \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewConfigurationController.java b/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewConfigurationController.java index e564520001efe05c33cadfa7e44cecdd4c6cd2e1..1a20059c022ab957870dbb1b5ae80cc4a1b13350 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewConfigurationController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewConfigurationController.java @@ -205,6 +205,11 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont // max attempts tableColumnModel.addFlexiColumnModel(new DefaultFlexiColumnModel(PartCols.attempts, SelectionTarget.attempts.name(), new MaxAttemptsCellRenderer(getTranslator()))); + // shuffled + DefaultFlexiColumnModel shuffledCol = new DefaultFlexiColumnModel(PartCols.shuffled); + shuffledCol.setCellRenderer(new ShuffledRenderer()); + shuffledCol.setIconHeader("o_icon o_icon_shuffle"); + tableColumnModel.addFlexiColumnModel(shuffledCol); // skipping allowed DefaultFlexiColumnModel skippingCol = new DefaultFlexiColumnModel(PartCols.skipping, SelectionTarget.expert.name()); skippingCol.setCellRenderer(new TestAndSectionCellRenderer(SelectionTarget.expert.name(), new OptionCellRenderer(getTranslator()))); @@ -440,6 +445,17 @@ public class AssessmentTestOverviewConfigurationController extends FormBasicCont } } + private class ShuffledRenderer implements FlexiCellRenderer { + @Override + public void render(Renderer renderer, StringOutput target, Object cellValue, int row, + FlexiTableComponent source, URLBuilder ubu, Translator translator) { + if(cellValue instanceof Boolean && ((Boolean)cellValue).booleanValue()) { + String title = translate("table.shuffled.hint"); + target.append("<span title='").append(title).append("'><i class='o_icon o_icon_shuffle'> </i></span>"); + } + } + } + private static class TestAndSectionCellRenderer implements FlexiCellRenderer { private final FlexiCellRenderer delegate; diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewDataModel.java b/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewDataModel.java index 7d344ffbd36edd993830628b11b20658a147dc4f..1cb619720e1d391d8810ef4ab437b595b99c03b9 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewDataModel.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/overview/AssessmentTestOverviewDataModel.java @@ -23,6 +23,11 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFle import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.util.Formatter; +import org.olat.ims.qti21.model.xml.AssessmentTestFactory; + +import uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef; +import uk.ac.ed.ph.jqtiplus.node.test.AssessmentSection; +import uk.ac.ed.ph.jqtiplus.node.test.ControlObject; /** * @@ -52,10 +57,25 @@ public class AssessmentTestOverviewDataModel extends DefaultFlexiTableDataModel< case feedback: return partRow.getFeedbacks(); case learningTime: return partRow.getLearningTime(); case license: return shortenedLicense(partRow); + case shuffled: return isShuffled(partRow); default: return "ERROR"; } } + private Boolean isShuffled(ControlObjectRow partRow) { + ControlObject<?> obj = partRow.getControlObject(); + if(obj instanceof AssessmentSection) { + AssessmentSection section = (AssessmentSection)obj; + return AssessmentTestFactory.shuffledSections(section.getParent()); + } + if(obj instanceof AssessmentItemRef) { + AssessmentItemRef itemRef = (AssessmentItemRef)obj; + AssessmentSection section = itemRef.getParentSection(); + return section != null && section.getOrdering() != null && section.getOrdering().getShuffle(); + } + return null; + } + private String shortenedLicense(ControlObjectRow partRow) { String text = partRow.getLicense(); if(text != null && text.length() > 32) { @@ -82,7 +102,8 @@ public class AssessmentTestOverviewDataModel extends DefaultFlexiTableDataModel< identifier("table.header.identifier"), feedback("table.header.feedback"), learningTime("table.header.learning.time"), - license("table.header.license"); + license("table.header.license"), + shuffled("table.header.shuffled"); private final String i18nKey; diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/MatchStatisticsController.java b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/MatchStatisticsController.java index 2071e28954686ad2303629a219ffe5f3ad5a1502..300fa498f2882fbbc78e61c1d9e507dc31fcc8c8 100644 --- a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/MatchStatisticsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/MatchStatisticsController.java @@ -110,7 +110,7 @@ public class MatchStatisticsController extends BasicController { @Override protected void event(UserRequest ureq, Component source, Event event) { - + // } private void renderMatch() { @@ -206,15 +206,15 @@ public class MatchStatisticsController extends BasicController { return 0; } - long val = 0; + double val = 0; if(statistics.getNumOfCorrect() > 0) { val = statistics.getNumOfCorrect(); } else if(statistics.getNumOfIncorrect() > 0) { val = statistics.getNumOfIncorrect(); } - long point = ref / max; - return point * val; + double point = (double)ref / (double)max; + return Math.round(point * val); } public long getRelativeBorder(int ref) { @@ -223,7 +223,7 @@ public class MatchStatisticsController extends BasicController { } public long getRelativeMargin(int ref) { - long val = this.getRelative(ref); + long val = getRelative(ref); return val == 0 ? ref : (ref - val) / 2; } } diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/match_interaction.html b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/match_interaction.html index b6b1d8ed1a13c2d1b17990761ca6df9969b51338..3ccc29b73036a52a283cbdf63497f576aa5fe3e5 100644 --- a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/match_interaction.html +++ b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/match_interaction.html @@ -3,16 +3,16 @@ <table class="table matchInteraction score"> <thead> <tr> - <th></th> + <td></td> #foreach($targetChoice in $targetChoices) - <th>$r.render(${targetChoice.getSummary()})</th> + <th scope='col'>$r.render(${targetChoice.getSummary()})</th> #end </tr> </thead> <tbody> #foreach($sourceChoice in $sourceChoices) <tr> - <th>$r.render(${sourceChoice.getSummary()})</th> + <th scope='row'>$r.render(${sourceChoice.getSummary()})</th> #foreach($targetChoice in $targetChoices) <td> #set($scoreWrapper = $r.get("${sourceChoice.getChoiceIdentifier().toString()}-${targetChoice.getChoiceIdentifier().toString()}")) diff --git a/src/main/java/org/olat/modules/ceditor/ui/component/PageEditorComponentRenderer.java b/src/main/java/org/olat/modules/ceditor/ui/component/PageEditorComponentRenderer.java index 4aad022f38ee7b9a87b03129c436f523cb22e144..1abb7230621afd885ee9bbccc3d68f43f05059df 100644 --- a/src/main/java/org/olat/modules/ceditor/ui/component/PageEditorComponentRenderer.java +++ b/src/main/java/org/olat/modules/ceditor/ui/component/PageEditorComponentRenderer.java @@ -147,8 +147,7 @@ public class PageEditorComponentRenderer extends DefaultComponentRenderer { sb.append("</div>"); } - sb.append("<div class='o_page_others_above'>") - .append("<span class='o_page_type'><i class='o_icon $fragment.typeCssClass'> </i> $r.translate($fragment.type)</span>"); + sb.append("<div class='o_page_others_above'>"); Component saveLink = fragment.getSaveLink(); saveLink.getHTMLRendererSingleton().render(renderer, sb, saveLink, ubu, translator, renderResult, args); diff --git a/src/main/java/org/olat/modules/forms/EvaluationFormManager.java b/src/main/java/org/olat/modules/forms/EvaluationFormManager.java index 32bb2666882f4bbd0cd7d9018548753f458e670d..b29bac8fd691e11c94ac4084b52f0f300f9cc72f 100644 --- a/src/main/java/org/olat/modules/forms/EvaluationFormManager.java +++ b/src/main/java/org/olat/modules/forms/EvaluationFormManager.java @@ -31,6 +31,7 @@ import org.olat.core.id.Identity; import org.olat.core.util.vfs.VFSLeaf; import org.olat.modules.ceditor.DataStorage; import org.olat.modules.forms.model.jpa.EvaluationFormResponses; +import org.olat.modules.forms.model.xml.AbstractElement; import org.olat.modules.forms.model.xml.Form; import org.olat.modules.forms.model.xml.Rubric; import org.olat.repository.RepositoryEntry; @@ -48,6 +49,14 @@ public interface EvaluationFormManager { public Form loadForm(RepositoryEntry formEntry); public DataStorage loadStorage(RepositoryEntry formEntry); + + /** + * Removes all Containers and returns the elements in the right order. + * + * @param form + * @return + */ + public List<AbstractElement> getUncontainerizedElements(Form form); public EvaluationFormSurvey createSurvey(EvaluationFormSurveyIdentifier identifier, RepositoryEntry formEntry); diff --git a/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java b/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java index f4bf6f7163e7d5e733a1091e96c162ae7423c429..9c7dbfeef06770e82ec51927d57b980a77b7e3a9 100644 --- a/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java +++ b/src/main/java/org/olat/modules/forms/manager/EvaluationFormManagerImpl.java @@ -31,6 +31,8 @@ import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; import org.olat.basesecurity.IdentityRef; @@ -68,6 +70,8 @@ import org.olat.modules.forms.model.SlidersStepCountsImpl; import org.olat.modules.forms.model.StepCountsBuilder; import org.olat.modules.forms.model.jpa.CalculatedLong; import org.olat.modules.forms.model.jpa.EvaluationFormResponses; +import org.olat.modules.forms.model.xml.AbstractElement; +import org.olat.modules.forms.model.xml.Container; import org.olat.modules.forms.model.xml.Form; import org.olat.modules.forms.model.xml.FormXStream; import org.olat.modules.forms.model.xml.Rubric; @@ -124,6 +128,34 @@ public class EvaluationFormManagerImpl implements EvaluationFormManager { return new FormDataElementStorage(formFile); } + @Override + public List<AbstractElement> getUncontainerizedElements(Form form) { + List<AbstractElement> rawElements = form.getElements(); + Map<String, AbstractElement> elementIdToElement = rawElements.stream() + .collect(Collectors.toMap(AbstractElement::getId, Function.identity())); + + List<AbstractElement> uncontainerizedElements = new ArrayList<>(rawElements.size()); + for (AbstractElement element : rawElements) { + if (element instanceof Container) { + Container container = (Container)element; + List<String> allElementIds = container.getContainerSettings().getAllElementIds(); + for (String elementId : allElementIds) { + AbstractElement uncontainerizedElement = elementIdToElement.remove(elementId); + if (uncontainerizedElement != null) { + uncontainerizedElements.add(uncontainerizedElement); + } + } + } else { + AbstractElement uncontainerizedElement = elementIdToElement.remove(element.getId()); + // If null, it was already in a container + if (uncontainerizedElement != null) { + uncontainerizedElements.add(uncontainerizedElement); + } + } + } + return uncontainerizedElements; + } + @Override public EvaluationFormSurvey createSurvey(EvaluationFormSurveyIdentifier identifier, RepositoryEntry formEntry) { return evaluationFormSurveyDao.createSurvey(identifier.getOLATResourceable(), identifier.getSubident(), diff --git a/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java b/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java index 18021e82c3ea54ce1136a652d424d6a3c8b8821d..57543d01ea64349c15d388548990cea7f449c754 100644 --- a/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java +++ b/src/main/java/org/olat/modules/forms/manager/RubricStatisticCalculator.java @@ -203,7 +203,7 @@ class RubricStatisticCalculator { size++; } } - return size > 2? varianceDividend/(size - 1): null; + return size > 1? varianceDividend/(size - 1): null; } Double getStdDev(Double variance) { diff --git a/src/main/java/org/olat/modules/forms/ui/EvaluationFormExcelExport.java b/src/main/java/org/olat/modules/forms/ui/EvaluationFormExcelExport.java index e1eb6004abdca0e576ec75245d739d45cb6edf37..74d900d8619655d832d3b859c60c668bfe631fcd 100644 --- a/src/main/java/org/olat/modules/forms/ui/EvaluationFormExcelExport.java +++ b/src/main/java/org/olat/modules/forms/ui/EvaluationFormExcelExport.java @@ -147,7 +147,8 @@ public class EvaluationFormExcelExport { } private void addContent(OpenXMLWorkbook workbook, OpenXMLWorksheet exportSheet) { - for (AbstractElement element: form.getElements()) { + List<AbstractElement> elements = evaluationFormManager.getUncontainerizedElements(form); + for (AbstractElement element: elements) { String elementType = element.getType(); switch (elementType) { case Title.TYPE: diff --git a/src/main/java/org/olat/modules/forms/ui/EvaluationFormReportController.java b/src/main/java/org/olat/modules/forms/ui/EvaluationFormReportController.java index 5b4f7f42a5821b699fb2bee00ed5df636fbc01a8..16064f9f736b47e33c4f3e089420e4af7d197bb7 100644 --- a/src/main/java/org/olat/modules/forms/ui/EvaluationFormReportController.java +++ b/src/main/java/org/olat/modules/forms/ui/EvaluationFormReportController.java @@ -30,6 +30,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.CodeHelper; import org.olat.modules.ceditor.DataStorage; +import org.olat.modules.forms.EvaluationFormManager; import org.olat.modules.forms.RubricsComparison; import org.olat.modules.forms.SessionFilter; import org.olat.modules.forms.handler.DefaultReportProvider; @@ -40,6 +41,7 @@ import org.olat.modules.forms.model.xml.AbstractElement; import org.olat.modules.forms.model.xml.Form; import org.olat.modules.forms.model.xml.Rubric; import org.olat.modules.forms.ui.model.EvaluationFormReportElement; +import org.springframework.beans.factory.annotation.Autowired; /** * @@ -57,6 +59,9 @@ public class EvaluationFormReportController extends FormBasicController { private final Component header; private final List<ReportFragment> fragments = new ArrayList<>(); + @Autowired + private EvaluationFormManager evaluationFormManager; + public EvaluationFormReportController(UserRequest ureq, WindowControl wControl, Form form, DataStorage storage, SessionFilter filter) { this(ureq, wControl, form, storage, filter, null, null, null); } @@ -89,7 +94,8 @@ public class EvaluationFormReportController extends FormBasicController { if (header != null) { flc.put("header", header); } - for (AbstractElement element: form.getElements()) { + List<AbstractElement> elements = evaluationFormManager.getUncontainerizedElements(form); + for (AbstractElement element: elements) { EvaluationFormReportHandler reportHandler = provider.getReportHandler(element); if (reportHandler != null) { EvaluationFormReportElement reportElement = reportHandler.getReportElement(ureq, getWindowControl(), element, filter, diff --git a/src/main/java/org/olat/modules/forms/ui/MultipleChoiceEditorController.java b/src/main/java/org/olat/modules/forms/ui/MultipleChoiceEditorController.java index 2456e82cf9fb27d1566ad0a70249a3df7fd5ba79..70bab83247c95d99eac6375c6057627969aec211 100644 --- a/src/main/java/org/olat/modules/forms/ui/MultipleChoiceEditorController.java +++ b/src/main/java/org/olat/modules/forms/ui/MultipleChoiceEditorController.java @@ -133,6 +133,7 @@ public class MultipleChoiceEditorController extends FormBasicController implemen loadModel(); addChoiceEl = uifactory.addFormLink("choice.add", settingsCont, Link.BUTTON); + addChoiceEl.setElementCssClass("o_sel_add_multiple_choice"); addChoiceEl.setIconLeftCSS("o_icon o_icon_add"); addChoiceEl.setVisible(!restrictedEdit); } @@ -155,7 +156,7 @@ public class MultipleChoiceEditorController extends FormBasicController implemen } // value - TextElement valueEl = uifactory.addTextElement("o_value_" + CodeHelper.getRAMUniqueID(), 255, null, flc); + TextElement valueEl = uifactory.addTextElement("o_value_" + CodeHelper.getRAMUniqueID(), null, 255, null, flc); valueEl.setValue(choice.getValue()); valueEl.addActionListener(FormEvent.ONCHANGE); diff --git a/src/main/java/org/olat/modules/forms/ui/SingleChoiceEditorController.java b/src/main/java/org/olat/modules/forms/ui/SingleChoiceEditorController.java index 564254b66ad7ec89ae4021073274720539275300..7ae3185d8993817fc7021a23a0823cb473450c63 100644 --- a/src/main/java/org/olat/modules/forms/ui/SingleChoiceEditorController.java +++ b/src/main/java/org/olat/modules/forms/ui/SingleChoiceEditorController.java @@ -134,6 +134,7 @@ public class SingleChoiceEditorController extends FormBasicController implements loadModel(); addChoiceEl = uifactory.addFormLink("choice.add", settingsCont, Link.BUTTON); + addChoiceEl.setElementCssClass("o_sel_add_single_choice"); addChoiceEl.setIconLeftCSS("o_icon o_icon_add"); addChoiceEl.setVisible(!restrictedEdit); } @@ -156,7 +157,7 @@ public class SingleChoiceEditorController extends FormBasicController implements } // value - TextElement valueEl = uifactory.addTextElement("o_value_" + CodeHelper.getRAMUniqueID(), 255, null, flc); + TextElement valueEl = uifactory.addTextElement("o_value_" + CodeHelper.getRAMUniqueID(), null, 255, null, flc); valueEl.setValue(choice.getValue()); valueEl.addActionListener(FormEvent.ONCHANGE); diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModel.java b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModel.java index 3fcc24cef2c26088ac3d6159282088a8fdfcb86f..404c1be33ae8592173826396aa07b03c248be2db 100644 --- a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModel.java +++ b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModel.java @@ -22,11 +22,13 @@ package org.olat.modules.lecture.ui.coach; import java.util.List; import java.util.Locale; +import org.apache.logging.log4j.Logger; import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiSortableColumnDef; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.SortableFlexiTableDataModel; +import org.olat.core.logging.Tracing; import org.olat.modules.lecture.model.LectureReportRow; /** @@ -38,6 +40,8 @@ import org.olat.modules.lecture.model.LectureReportRow; public class LecturesReportTableModel extends DefaultFlexiTableDataModel<LectureReportRow> implements SortableFlexiTableDataModel<LectureReportRow> { + private static final Logger log = Tracing.createLoggerFor(LecturesReportTableModel.class); + private final Locale locale; public LecturesReportTableModel(FlexiTableColumnModel columnsModel, Locale locale) { @@ -48,8 +52,12 @@ implements SortableFlexiTableDataModel<LectureReportRow> { @Override public void sort(SortKey orderBy) { if(orderBy != null) { - List<LectureReportRow> rows = new LecturesReportTableModelSortDelegate(orderBy, this, locale).sort(); - setObjects(rows); + try { + List<LectureReportRow> rows = new LecturesReportTableModelSortDelegate(orderBy, this, locale).sort(); + setObjects(rows); + } catch (Exception e) { + log.error("", e); + } } } diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModelSortDelegate.java b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModelSortDelegate.java index c8e6ac3876b0d34277ab7c6a77a89adb9d24b0cb..f45f9db11f6c577a5fa748cb1e0523d34b82f30c 100644 --- a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModelSortDelegate.java +++ b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesReportTableModelSortDelegate.java @@ -30,6 +30,7 @@ import org.olat.core.id.Identity; import org.olat.modules.lecture.LectureRollCallStatus; import org.olat.modules.lecture.model.LectureReportRow; import org.olat.modules.lecture.ui.coach.LecturesReportTableModel.ReportCols; +import org.olat.modules.lecture.ui.component.IdentityComparator; /** * @@ -39,8 +40,11 @@ import org.olat.modules.lecture.ui.coach.LecturesReportTableModel.ReportCols; */ public class LecturesReportTableModelSortDelegate extends SortableFlexiTableModelDelegate<LectureReportRow> { + private final Locale locale; + public LecturesReportTableModelSortDelegate(SortKey orderBy, LecturesReportTableModel tableModel, Locale locale) { super(orderBy, tableModel, locale); + this.locale = locale; } @Override @@ -85,7 +89,17 @@ public class LecturesReportTableModelSortDelegate extends SortableFlexiTableMode c = 1; } else if(i1.isEmpty() && !i2.isEmpty()) { c = -1; + } else if(i1.size() == 1 && i2.size() == 1) { + c = compareIdentity(i1.get(0), i2.get(0)); } else { + // make sure the order are the same + if(i1.size() > 1) { + Collections.sort(i1, new IdentityComparator(locale)); + } + if(i2.size() > 1) { + Collections.sort(i2, new IdentityComparator(locale)); + } + int max = Math.min(i1.size(), i2.size()); for(int i=0; i<max && c == 0; i++) { c = compareIdentity(i1.get(i), i2.get(i)); @@ -99,7 +113,7 @@ public class LecturesReportTableModelSortDelegate extends SortableFlexiTableMode return compareNullObjects(i1, i2); } - int c = compareString(i1.getUser().getLastName(), i2.getUser().getLastName()); + int c = compareString(i1.getUser().getLastName(), i1.getUser().getLastName()); if(c == 0) { c = compareString(i1.getUser().getFirstName(), i2.getUser().getFirstName()); } diff --git a/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java b/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java index d1ac6777551cf0e68f854e717a72c179ff058edb..da4747aaab64a76305e1bd9b20ee594e58c2ae85 100644 --- a/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java +++ b/src/main/java/org/olat/modules/quality/analysis/ui/GroupByController.java @@ -66,6 +66,7 @@ import org.olat.core.gui.control.creator.ControllerCreator; import org.olat.core.util.StringHelper; import org.olat.modules.curriculum.model.CurriculumElementRefImpl; import org.olat.modules.curriculum.model.CurriculumRefImpl; +import org.olat.modules.forms.EvaluationFormManager; import org.olat.modules.forms.RubricsComparison.Attribute; import org.olat.modules.forms.model.xml.AbstractElement; import org.olat.modules.forms.model.xml.Form; @@ -162,6 +163,8 @@ public abstract class GroupByController extends FormBasicController implements F private QualityAnalysisService analysisService; @Autowired private QualityService qualityService; + @Autowired + private EvaluationFormManager evaluationFormManager; public GroupByController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, FilterController filterCtrl, Form evaluationForm, AvailableAttributes availableAttributes, @@ -186,7 +189,8 @@ public abstract class GroupByController extends FormBasicController implements F private List<SliderWrapper> initSliders(Form evaluationForm) { int counter = 1; List<SliderWrapper> sliderWrappers = new ArrayList<>(); - for (AbstractElement element : evaluationForm.getElements()) { + List<AbstractElement> elements = evaluationFormManager.getUncontainerizedElements(evaluationForm); + for (AbstractElement element : elements) { if (element instanceof Rubric) { Rubric rubric = (Rubric) element; for (Slider slider : rubric.getSliders()) { diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java index 4b48de9c2e9fba5d80ab15eb8f89b5c3e9724494..34f1e515602ac8c0f4e4855ef5519f015fe5d175 100644 --- a/src/main/java/org/olat/user/ChangePrefsController.java +++ b/src/main/java/org/olat/user/ChangePrefsController.java @@ -364,7 +364,6 @@ class UserPrefsResetForm extends FormBasicController { UserManager um = UserManager.getInstance(); User user = um.loadUserByKey(tobeChangedIdentity.getUser().getKey()); org.olat.core.id.Preferences preferences = user.getPreferences(); - preferences.setFontsize(null); preferences.setNotificationInterval(null); preferences.setPresenceMessagesPublic(false); preferences.setReceiveRealMail(null); diff --git a/src/main/java/org/olat/user/PreferencesFormController.java b/src/main/java/org/olat/user/PreferencesFormController.java index e7e8425c5d6a11dfed9a12ce3a146d453b1a48da..5da21938aeeed848f89b954d96da91fcbc5d3adc 100644 --- a/src/main/java/org/olat/user/PreferencesFormController.java +++ b/src/main/java/org/olat/user/PreferencesFormController.java @@ -29,13 +29,10 @@ import org.olat.admin.user.SystemRolesAndRightsController; import org.olat.basesecurity.BaseSecurity; import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.WindowManager; -import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.StaticTextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; -import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; @@ -65,9 +62,8 @@ import org.springframework.beans.factory.annotation.Autowired; * @author gwassmann */ public class PreferencesFormController extends FormBasicController { - private static final String[] cssFontsizeKeys = new String[] { "80", "90", "100", "110", "120", "140" }; private Identity tobeChangedIdentity; - private SingleSelection language, fontsize, charset, notificationInterval, mailSystem; + private SingleSelection language, charset, notificationInterval, mailSystem; private static final String[] mailIntern = new String[]{"intern.only","send.copy"}; @Autowired @@ -103,20 +99,10 @@ public class PreferencesFormController extends FormBasicController { tobeChangedIdentity = securityManager.loadIdentityByKey(tobeChangedIdentity.getKey()); Preferences prefs = tobeChangedIdentity.getUser().getPreferences(); prefs.setLanguage(language.getSelectedKey()); - prefs.setFontsize(fontsize.getSelectedKey()); if (notificationInterval != null) { // only read notification interval if available, could be disabled by configuration prefs.setNotificationInterval(notificationInterval.getSelectedKey()); } - - // Maybe the user changed the font size - if (ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) { - int fontSize = Integer.parseInt(fontsize.getSelectedKey()); - WindowManager wm = getWindowControl().getWindowBackOffice().getWindowManager(); - if(fontSize != wm.getFontSize()) { - getWindowControl().getWindowBackOffice().getWindow().setDirty(true); - } - } if(mailSystem != null && mailSystem.isOneSelected()) { String val = mailSystem.isSelected(1) ? "true" : "false"; @@ -184,20 +170,6 @@ public class PreferencesFormController extends FormBasicController { } else { language.select(I18nModule.getDefaultLocale().toString(), true); } - - // Font size - String[] cssFontsizeValues = new String[] { - translate("form.fontsize.xsmall"), - translate("form.fontsize.small"), - translate("form.fontsize.normal"), - translate("form.fontsize.large"), - translate("form.fontsize.xlarge"), - translate("form.fontsize.presentation") - }; - fontsize = uifactory.addDropdownSingleselect("form.fontsize", formLayout, cssFontsizeKeys, cssFontsizeValues, null); - fontsize.setElementCssClass("o_sel_home_settings_fontsize"); - fontsize.select(prefs.getFontsize(), true); - fontsize.addActionListener(FormEvent.ONCHANGE); // Email notification interval List<String> intervals = notificiationMgr.getEnabledNotificationIntervals(); @@ -259,17 +231,6 @@ public class PreferencesFormController extends FormBasicController { uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl()); } - @Override - protected void formInnerEvent (UserRequest ureq, FormItem source, FormEvent event) { - if (source == fontsize && ureq.getIdentity().equalsByPersistableKey(tobeChangedIdentity)) { - int fontSize = Integer.parseInt(fontsize.getSelectedKey()); - WindowManager wm = getWindowControl().getWindowBackOffice().getWindowManager(); - if(fontSize != wm.getFontSize()) { - getWindowControl().getWindowBackOffice().getWindow().setDirty(true); - } - } - } - @Override protected void doDispose() { // nothing to do diff --git a/src/main/java/org/olat/user/PreferencesImpl.java b/src/main/java/org/olat/user/PreferencesImpl.java index 6e9196831e36df0c1d7d66c2c58caebd7ab3df03..14fa8e347291f0055192c28cdfffb5980de7fc8e 100644 --- a/src/main/java/org/olat/user/PreferencesImpl.java +++ b/src/main/java/org/olat/user/PreferencesImpl.java @@ -50,7 +50,7 @@ public class PreferencesImpl implements Preferences { @Column(name="language", nullable=true, insertable=true, updatable=true) private String language; @Column(name="fontsize", nullable=true, insertable=true, updatable=true) - private String fontsize; + private String fontsize; // not used anymore @Column(name="notification_interval", nullable=true, insertable=true, updatable=true) private String notificationInterval; @Column(name="informsessiontimeout", nullable=true, insertable=true, updatable=true) @@ -69,6 +69,7 @@ public class PreferencesImpl implements Preferences { * Get users language settings * @return Users language */ + @Override public String getLanguage() { return this.language; } @@ -77,40 +78,17 @@ public class PreferencesImpl implements Preferences { * Set users language settings * @param l new language */ + @Override public void setLanguage(String l) { // validate the language; fallback to default I18nManager i18n = I18nManager.getInstance(); this.language = i18n.getLocaleOrDefault(l).toString(); } - /** - * Get users fontsize settings - * @return Users fontsize - */ - public String getFontsize() { - if(this.fontsize == null || this.fontsize.equals("")) - fontsize = "100"; //100% is default - return this.fontsize; - } - - /** - * Set users fontsize settings - * @param f new fontsize - */ - public void setFontsize(String f) { - // since OLAT 6 the font size is not text but a number. It is the relative - // size to the default size - try { - Integer.parseInt(f); - this.fontsize = f; - } catch (NumberFormatException e) { - this.fontsize = "100"; // default value - } - } - /** * @param notificationInterval The notificationInterval to set. */ + @Override public void setNotificationInterval(String notificationInterval) { this.notificationInterval = notificationInterval; } @@ -118,6 +96,7 @@ public class PreferencesImpl implements Preferences { /** * @return Returns the notificationInterval. */ + @Override public String getNotificationInterval() { // Always return a valid notification interval NotificationsManager notiMgr = NotificationsManager.getInstance(); @@ -135,6 +114,7 @@ public class PreferencesImpl implements Preferences { /** * @return True if user wants to be informed about the session timeout (popup) */ + @Override public boolean getInformSessionTimeout() { return informSessionTimeout; } @@ -142,6 +122,7 @@ public class PreferencesImpl implements Preferences { /** * @param b Set information about wether session timeout should be displayed or not */ + @Override public void setInformSessionTimeout(boolean b) { informSessionTimeout = b; } @@ -166,6 +147,7 @@ public class PreferencesImpl implements Preferences { /** * @see org.olat.user.Preferences#getPresenceMessagesPublic() */ + @Override public boolean getPresenceMessagesPublic() { return presenceMessagesPublic; } @@ -173,6 +155,7 @@ public class PreferencesImpl implements Preferences { /** * @see org.olat.user.Preferences#setPresenceMessagesPublic(boolean) */ + @Override public void setPresenceMessagesPublic(boolean b) { this.presenceMessagesPublic = b; } diff --git a/src/main/java/org/olat/user/UserManagerImpl.java b/src/main/java/org/olat/user/UserManagerImpl.java index 0708adfb1d93cb40d395ce86f02c45c2a489d826..be14c27d0e304c725c5fc8cd2e1d36d1ffed0900 100644 --- a/src/main/java/org/olat/user/UserManagerImpl.java +++ b/src/main/java/org/olat/user/UserManagerImpl.java @@ -38,6 +38,7 @@ import javax.annotation.PostConstruct; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; +import org.apache.logging.log4j.Logger; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.GroupRoles; import org.olat.basesecurity.IdentityImpl; @@ -53,7 +54,6 @@ import org.olat.core.id.Preferences; import org.olat.core.id.User; import org.olat.core.id.UserConstants; import org.olat.core.logging.AssertException; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; @@ -144,7 +144,6 @@ public class UserManagerImpl extends UserManager implements UserDataDeletable, U } //Locale loc prefs.setLanguage(loc.toString()); - prefs.setFontsize("normal"); prefs.setPresenceMessagesPublic(false); prefs.setInformSessionTimeout(false); return newUser; @@ -643,7 +642,6 @@ public class UserManagerImpl extends UserManager implements UserDataDeletable, U sheet.newRow(); sheet.newRow().addCell(0, "Settings"); Preferences preferences = user.getPreferences(); - exportKeyValue("Font size", preferences.getFontsize(), sheet); exportKeyValue("Language", preferences.getLanguage(), sheet); exportKeyValue("Notification", preferences.getNotificationInterval(), sheet); exportKeyValue("Real mail", preferences.getReceiveRealMail(), sheet); diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_ar.properties index 7e7812d100aedb809b76e34738f12ce03d2d72ee..82d90f68ccc4e85eb4dc9ccbffdfd53b1d738f8f 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_ar.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_ar.properties @@ -28,14 +28,6 @@ form.charset=\u0645\u062C\u0645\u0648\u0639\u0629 \u0631\u0645\u0648\u0632 \u062 form.description=\u064A\u0631\u062C\u0649 \u0643\u062A\u0627\u0628\u0629 \u0628\u064A\u0627\u0646\u0627\u062A\u0643 \u0627\u0644\u0634\u062E\u0635\u064A\u0629 \u0641\u0649 \u0647\u0630\u0627 \u0627\u0644\u0646\u0645\u0648\u0630\u062C\u060C \u0648\u0639\u0646 \u0637\u0631\u064A\u0642 \u0645\u0631\u0628\u0639\u0627\u062A \u0627\u0644\u0627\u062E\u062A\u064A\u0627\u0631 \u064A\u0645\u0643\u0646\u0643 \u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u062A\u0649 \u062A\u0631\u064A\u062F \u0623\u0646 \u062A\u0638\u0647\u0631 \u0641\u0649 \u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u062A\u0639\u0627\u0631\u0641 \u0627\u0644\u062E\u0627\u0635\u0629 \u0628\u0643. form.email=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0627\u0644\u0643\u062A\u0631\u0648\u0646\u0649 form.fields=\u0627\u062E\u062A\u064A\u0627\u0631 \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062A -form.fontsize=\u062D\u062C\u0645 \u0627\u0644\u062E\u0637 -form.fontsize.large=\u0643\u0628\u064A\u0631 -form.fontsize.normal=\u0639\u0627\u062F\u0649 -form.fontsize.presentation=\u0637\u0631\u064A\u0642\u0629 \u0627\u0644\u0639\u0631\u0636 -form.fontsize.small=\u0635\u063A\u064A\u0631 -form.fontsize.xlarge=\u0643\u0628\u064A\u0631 \u062C\u062F\u0627\u064B -form.fontsize.xsmall=\u0635\u063A\u064A\u0631 \u062C\u062F\u0627\u064B -form.informSessionTimeout=\u0627\u0644\u0625\u062E\u0637\u0627\u0631 \u0628\u0627\u0646\u062A\u0647\u0627\u0621 \u0627\u0644\u062C\u0644\u0633\u0629 \u0628\u0639\u062F 25 \u062F\u0642\u064A\u0642\u0629 form.language=\u0627\u0644\u0644\u063A\u0629 form.notification=\u0625\u062E\u0637\u0627\u0631\u0627\u062A \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0627\u0644\u0643\u062A\u0631\u0648\u0646\u0649 form.password.new1=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062C\u062F\u064A\u062F\u0629 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_bg.properties index 2c75c8c2ca3e66a49b8c5ddae23db2dc6571a051..802e70e73ebb93a1a2c1059a0857c4ebe7332b02 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_bg.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_bg.properties @@ -29,14 +29,6 @@ form.checkUsername=\u041F\u043E\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043B\ form.description=\u041C\u043E\u043B\u044F, \u043D\u0430\u043F\u0438\u0448\u0435\u0442\u0435 \u0432\u0430\u0448\u0438\u0442\u0435 \u043B\u0438\u0447\u043D\u0438 \u0434\u0430\u043D\u043D\u0438 \u0432\u044A\u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0430 \u043F\u043E-\u0434\u043E\u043B\u0443. \u0421 \u043F\u043E\u043C\u043E\u0449\u0430 \u043D\u0430 \u043A\u0443\u0442\u0438\u0438\u0442\u0435 \u0437\u0430 \u043E\u0442\u043C\u044F\u0442\u0430\u043D\u0435, \u043C\u043E\u0436\u0435\u0442\u0435 \u0434\u0430 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u0435 \u043A\u043E\u0438 \u0432\u043F\u0438\u0441\u0432\u0430\u043D\u0438\u044F \u0449\u0435 \u0441\u0435 \u043F\u043E\u044F\u0432\u044F\u0432\u0430\u0442 \u043D\u0430 \u0432\u0430\u0448\u0430\u0442\u0430 \u0432\u0438\u0437\u0438\u0442\u043D\u0430 \u043A\u0430\u0440\u0442\u0438\u0447\u043A\u0430. form.email=\u0418-\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441 form.fields=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0432\u043F\u0438\u0441\u0432\u0430\u043D\u0438\u044F -form.fontsize=\u0420\u0430\u0437\u043C\u0435\u0440 \u043D\u0430 \u0448\u0440\u0438\u0444\u0442\u0430 -form.fontsize.large=\u0413\u043E\u043B\u044F\u043C -form.fontsize.normal=\u041D\u043E\u0440\u043C\u0430\u043B\u0435\u043D -form.fontsize.presentation=\u0420\u0435\u0436\u0438\u043C \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u044F -form.fontsize.small=\u041C\u0430\u043B\u044A\u043A -form.fontsize.xlarge=\u041C\u043D\u043E\u0433\u043E \u0433\u043E\u043B\u044F\u043C -form.fontsize.xsmall=\u041C\u043D\u043E\u0433\u043E \u043C\u0430\u043B\u044A\u043A -form.informSessionTimeout=\u0421\u044A\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0437\u0430 \u0438\u0437\u0442\u0438\u0447\u0430\u043D\u0435 \u043D\u0430 \u0441\u0435\u0441\u0438\u044F\u0442\u0430 \u0441\u043B\u0435\u0434 25 \u043C\u0438\u043D\u0443\u0442\u0438 form.language=\u0415\u0437\u0438\u043A form.password.new1=\u041D\u043E\u0432\u0430 \u043F\u0430\u0440\u043E\u043B\u0430 \u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u0442\u0430 form.password.new2=\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u0430\u0442\u0430 \u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043C\u0430\u0442\u0430 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_cs.properties index d74b60be7a53fbc6e28478f68331ad3c26b560ac..e2ad82d3cfec0aad056fa31fc203d74fb88128ec 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_cs.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_cs.properties @@ -16,14 +16,6 @@ form.charset=K\u00F3dovac\u00ED mapa pro stahov\u00E1n\u00ED form.checkUsername=U\u017Eivatelsk\u00E9 jm\u00E9no mus\u00ED obsahovat alespo\u0148 4 znaky od a do z (bez diakritiky) nebo \u010D\u00EDsla od 0 do 9. D\u00E1le m\u016F\u017Eete pou\u017E\u00EDvat . @ _ a -. form.email=E-mailov\u00E1 adresa form.fields=Vybrat polo\u017Eky -form.fontsize=Velikost fontu -form.fontsize.large=Velk\u00E1 -form.fontsize.normal=Normaln\u00ED -form.fontsize.presentation=Prezenta\u010Dn\u00ED m\u00F3d -form.fontsize.small=Mal\u00E1 -form.fontsize.xlarge=Extra vlk\u00E9 -form.fontsize.xsmall=Extra mal\u00E9 -form.informSessionTimeout=\u010Cas uplinut\u00ED u\u017Eivalsk\u00E9 relace po 25 minut\u00E1ch form.language=Jazyk form.password.new1=Nov\u00E9 helso form.password.new2=Potvrzen\u00ED hesla diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_da.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_da.properties index 3ce5a7dd5d540a2b53679a4480b5893aea3b099f..c9742d35aac6e4b694e0ce991921f8209bda7acf 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_da.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_da.properties @@ -15,11 +15,6 @@ form.address=Adresse form.charset=Tegns\u00E6t benyttet i download form.checkUsername=Brugernavnet skal v\u00E6re mindst 4 tegn og m\u00E5 kun indeholder bogstaver fra a-z og tal. Dog m\u00E5 du bruge punktum, understregning og bindestreg (.@_-). form.fields=V\u00E6lg felter -form.fontsize=Skriftst\u00F8rrelse -form.fontsize.large=Stor -form.fontsize.normal=Normal -form.fontsize.small=Lille -form.informSessionTimeout=Session time-out besked efter 25 minutter form.language=Sprog form.password.new1=Nye OLAT kodeord form.password.new2=Bekr\u00E6ft nye OLAT kodeord diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties index 107b77d4ddbc0d7d52f94a28b5d65210fdbb780e..7be23432b05d5fd64eacc36c6047910cdc8176fc 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_de.properties @@ -35,14 +35,6 @@ form.checkUsername=Der Benutzername muss mindestens 4 Zeichen lang sein und darf form.description=Geben Sie im untenstehenden Formular Ihre pers\u00F6nlichen Daten an. Unter "Meine Visitenkarte" bestimmen Sie mit Hilfe der Check-Boxen welche Eintr\u00E4ge auf Ihrer Visitenkarte erscheinen sollen. Dort finden Sie auch die Vorschau. form.email=E-Mail form.fields=Auswahl der Eintr\u00E4ge -form.fontsize=Schriftgr\u00F6sse -form.fontsize.large=Gross -form.fontsize.normal=Normal -form.fontsize.presentation=Pr\u00E4sentationsmodus -form.fontsize.small=Klein -form.fontsize.xlarge=Extra gross -form.fontsize.xsmall=Extra klein -form.informSessionTimeout=Benachrichtigung Session Timeout nach 25 Minuten form.language=Sprache form.notification=E-Mail-Benachrichtigung form.organisations=Organisationen diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_el.properties index 1851674e917a8d1c5520e8994bf259394b7cfead..17ca168b8fd6efbdf2e3948a61f78b08f7523fac 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_el.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_el.properties @@ -29,14 +29,6 @@ form.checkUsername=\u03A4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03A form.description=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B5 \u03C4\u03B1 \u03C0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03AC \u03C3\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 \u03C3\u03C4\u03B7\u03BD \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03C6\u03CC\u03C1\u03BC\u03B1. \u039C\u03C0\u03BF\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BD\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03B7\u03BD \u03BA\u03AC\u03C1\u03C4\u03B1 \u03B5\u03C0\u03B9\u03C3\u03BA\u03AD\u03C0\u03C4\u03B7 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03CE\u03BD\u03C4\u03B1\u03C2 \u03C4\u03B1 \u03BA\u03BF\u03C5\u03C4\u03B9\u03AC \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE\u03C2. form.email=\u0394\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 E-mail form.fields=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BA\u03B1\u03C1\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03C9\u03BD -form.fontsize=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 -form.fontsize.large=\u039C\u03B5\u03B3\u03AC\u03BB\u03BF -form.fontsize.normal=\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC -form.fontsize.presentation=\u039A\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03B5\u03C0\u03AF\u03B4\u03B5\u03B9\u03BE\u03B7\u03C2 -form.fontsize.small=\u039C\u03B9\u03BA\u03C1\u03CC -form.fontsize.xlarge=\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF -form.fontsize.xsmall=\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC -form.informSessionTimeout=\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03C4\u03B5\u03C1\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03BF\u03CD \u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B1\u03C2 \u03BC\u03B5\u03C4\u03AC \u03B1\u03C0\u03CC 25 \u03BB\u03B5\u03C0\u03C4\u03AC form.language=\u0393\u03BB\u03CE\u03C3\u03C3\u03B1 form.notification=\u0395\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 e-mail form.password.new1=\u039D\u03AD\u03BF\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties index 1608f478bb1f3b23d2000b9622a4882bc49e9388..e45f52cc66b2c8293a93bf392180f2710056c34b 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_en.properties @@ -35,14 +35,6 @@ form.checkUsername=User names have to contain at least 4 characters and only let form.description=Please indicate your personal data in the form below. By means of check boxes you can determine the entries that should appear on your visiting card. form.email=E-mail form.fields=Selection of entries -form.fontsize=Font size -form.fontsize.large=Large -form.fontsize.normal=Normal -form.fontsize.presentation=Presentational mode -form.fontsize.small=Small -form.fontsize.xlarge=Extra large -form.fontsize.xsmall=Extra small -form.informSessionTimeout=Session time-out notification after 25 minutes form.language=Language form.notification=E-mail notification form.organisations=Organisations diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_es.properties index 718185f3a03b572285da1f70b531a9d0b5890ef0..011dc61c5a59a02b6ec289b9cd348c9a849f0e5c 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_es.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_es.properties @@ -29,14 +29,6 @@ form.checkUsername=El nombre de usuario debe contener al menos 4 caracteres y s\ form.description=Por favor, indique sus datos personales en el formulario de abajo. Por medio de las casillas de verificaci\u00F3n se puede determinar las entradas que deben aparecer en su tarjeta de visita. form.email=E-mail form.fields=Seleccionar entradas -form.fontsize=Tama\u00F1o de letra -form.fontsize.large=Grande -form.fontsize.normal=Normal -form.fontsize.presentation=Modo de Presentaci\u00F3n -form.fontsize.small=Peque\u00F1a -form.fontsize.xlarge=Extra grande -form.fontsize.xsmall=Extra peque\u00F1o -form.informSessionTimeout=Notificaci\u00F3n de fin de sesi\u00F3n tras 25 minutos form.language=Idioma form.password.new1=Nueva contrase\u00F1a OLAT form.password.new2=Confirmar la contrase\u00F1a OLAT diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_et_EE.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_et_EE.properties index dab48d774779de2d1862bf1f8b5b8b0ff371379d..c0800e55b5c98e601ca69c1501e7f3326feb8d14 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_et_EE.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_et_EE.properties @@ -5,10 +5,6 @@ email.notsent=Selle e-kirja saatmine eba\u00F5nnestus. email.sent=E-kiri edukalt saadetud. form.address=Aadress form.email=E-posti aadress -form.fontsize=Fondi suurus -form.fontsize.large=Suur -form.fontsize.normal=Keskmine -form.fontsize.small=V\u00E4ike form.language=Keel form.password.new1=Uus OLATi salas\u00F5na form.password.new2=Kinnita OLATi salas\u00F5na diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_fa.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_fa.properties index 341898400db89a9edfb7a4db577af50f40192073..8dc661f73763e4d62d046f75961c54088a58a7d8 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_fa.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_fa.properties @@ -14,11 +14,6 @@ error.password.nomatch=\u062F\u0648 \u06A9\u0644\u0645\u0647 \u0639\u0628\u0648\ form.address=\u0622\u062F\u0631\u0633 form.charset=Character set used in download form.fields=\u0627\u0646\u062A\u062E\u0627\u0628 \u0645\u062F\u062E\u0644 -form.fontsize=\u0627\u0646\u062F\u0627\u0632\u0647 \u0641\u0648\u0646\u062A -form.fontsize.large=\u0628\u0632\u0631\u06AF -form.fontsize.normal=\u0637\u0628\u06CC\u0639\u06CC -form.fontsize.small=\u06A9\u0648\u0686\u06A9 -form.informSessionTimeout=Session time-out notification after 25 minutes form.language=\u0632\u0628\u0627\u0646 form.password.new1=\u06A9\u0644\u0645\u0647 \u0639\u0628\u0648\u0631 \u062C\u062F\u06CC\u062F form.password.new2=\u062A\u0627\u06CC\u06CC\u062F \u06A9\u0644\u0645\u0647 \u0639\u0628\u0648\u0631 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties index 029dcff2b2aaf23e0376edeeb1e442a57ce5199f..03c3a68938d39bc734b11b3aa6b9ad8e716ad78f 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties @@ -35,14 +35,6 @@ form.checkUsername=Le nom d'utilisateur doit \u00EAtre compos\u00E9 d'au moins 4 form.description=Indiquez vos donn\u00E9es personnelles dans le formulaire ci-dessous. Vous pouvez d\u00E9cider laquelle des entr\u00E9es sera visible sur votre carte de visite gr\u00E2ce au bo\u00EEtes \u00E0 cocher. form.email=E-mail form.fields=S\u00E9lection des entr\u00E9es -form.fontsize=Taille de la police -form.fontsize.large=grande -form.fontsize.normal=normale -form.fontsize.presentation=mode de pr\u00E9sentation -form.fontsize.small=petite -form.fontsize.xlarge=tr\u00E8s grande -form.fontsize.xsmall=tr\u00E8s petite -form.informSessionTimeout=Avis de fin de session apr\u00E8s 25 minutes form.language=Langue form.notification=Notification e-mail form.organisations=Organisations diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_it.properties index 124d4146ae6c8e63ce5b80d894b3c3186d27d238..24208ad4ee823d428ca15de8d65ae320003c50fc 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_it.properties @@ -32,14 +32,6 @@ form.checkUsername=Il nome d'utente deve contenere almeno 4 segni e consistere s form.description=Indichi nel formulario sottostante i Suoi dati personali, p.f. Utilizzando le caselle a selezione pu\u00F2 stabilire quali informazioni saranno visibili sul Suo biglietto da visita. form.email=E-mail form.fields=Selezione delle entrate -form.fontsize=Dimensione caratteri -form.fontsize.large=grande -form.fontsize.normal=normale -form.fontsize.presentation=Modalit\u00E0 presentazione -form.fontsize.small=piccola -form.fontsize.xlarge=extra grande -form.fontsize.xsmall=extra piccola -form.informSessionTimeout=Avviso di sessione esaurita dopo 25 minuti form.language=Lingua form.notification=Avviso e-mail form.password.new1=Nuova password OLAT diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_jp.properties index 5e20a56cf3d175b4d3bf789fbe62925cd2b5f934..4e79eaf6d1b69928114b2874206fc1196f3850f3 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_jp.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_jp.properties @@ -22,13 +22,6 @@ form.charset=\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u306B\u4F7F\u7528\u3059\u308B\ form.description=\u4E0B\u8A18\u306E\u30D5\u30A9\u30FC\u30E0\u306B\u3001\u3042\u306A\u305F\u306E\u500B\u4EBA\u30C7\u30FC\u30BF\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u3067\u3001\u3042\u306A\u305F\u306E\u30D3\u30B8\u30C6\u30A3\u30F3\u30B0\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3059\u308B\u30A8\u30F3\u30C8\u30EA\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002 form.email=E\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9 form.fields=\u30A8\u30F3\u30C8\u30EA\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002 -form.fontsize=\u30D5\u30A9\u30F3\u30C8\u30B5\u30A4\u30BA -form.fontsize.large=\u5927 -form.fontsize.normal=\u6A19\u6E96 -form.fontsize.presentation=\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u30E2\u30FC\u30C9 -form.fontsize.small=\u5C0F -form.fontsize.xlarge=\u7279\u5927 -form.fontsize.xsmall=\u6975\u5C0F form.language=\u8A00\u8A9E form.password.new1=\u65B0\u3057\u3044OLAT\u30D1\u30B9\u30EF\u30FC\u30C9 form.password.new2=OLAT\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u3082\u3046\u4E00\u5EA6 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_lt.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_lt.properties index c62f0b44b19d664bb614ee9da09336dea2febdb9..05732ab22bdbb7a627c06a92680ee75a7667bf5e 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_lt.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_lt.properties @@ -15,11 +15,6 @@ form.address=Adresas form.charset=\u017Denkl\u0173 rinkinys naudojamas siun\u010Diantis form.checkUsername=Vartotojo vard\u0105 turi sudaryti ma\u017Eiausiai 4 simboliai, raid\u0117s\: a-z (be umliaut\u0173), skai\u010Diai\: 0-9. J\u016Bs galite naudoti . @ _ ir -. form.fields=Pa\u017Eym\u0117kite \u012Fvestis -form.fontsize=\u0160rifto dydis -form.fontsize.large=Didelis -form.fontsize.normal=Normalus -form.fontsize.small=Ma\u017Eas -form.informSessionTimeout=Sesijos pabaigos prane\u0161imas po 25 minu\u010Di\u0173 form.language=Kalba form.password.new1=Naujas slapta\u017Eodis. form.password.new2=Pakartokite slapta\u017Eod\u012F diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_nl_NL.properties index 50459941002c01265ab67705e59e63a1e9ff87a1..808f6a0b43e21cc7a02e46b6e30223b72709153f 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_nl_NL.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_nl_NL.properties @@ -28,14 +28,6 @@ form.charset=Tekenset gebruikt bij download form.description=Gelieve uw persoonlijke data in te geven in het onderstaande formulier. Doormiddel van de check-boxen kunt u bepalen welke gegevens moeten verschijnen op uw visitekaartje. form.email=E-mailadres form.fields=Kies gegevens -form.fontsize=Lettergrootte -form.fontsize.large=Groot -form.fontsize.normal=Normaal -form.fontsize.presentation=Presentatiemodus -form.fontsize.small=Klein -form.fontsize.xlarge=Extra groot -form.fontsize.xsmall=Extra klein -form.informSessionTimeout=Waarschuwing time-out sessie na 25 minuten form.language=Taal form.notification=E-mail melding form.password.new1=Nieuwe OLAT-wachtwoord diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_pl.properties index 78e57a36ae969d3f3e3302b9f0350bc4857d0a90..5592d17e128d2593127116f35e8623f66c3a0fe7 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_pl.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_pl.properties @@ -29,14 +29,6 @@ form.checkUsername=Nazwa u\u017Cytkownika musi zawiera\u0107 co najmniej 4 znaki form.description=Uzupe\u0142nij swoje dane osobowe w formularzu poni\u017Cej. Za pomoc\u0105 pola wyboru mo\u017Cna okre\u015Bli\u0107 pozycje, kt\u00F3re powinny znajdowa\u0107 si\u0119 na Twojej wizyt\u00F3wce. form.email=Adres e-mail form.fields=Wybierz wpisy -form.fontsize=Rozmiar czcionki -form.fontsize.large=Du\u017Cy -form.fontsize.normal=Normalny -form.fontsize.presentation=Prezentacja -form.fontsize.small=Ma\u0142y -form.fontsize.xlarge=Bardzo du\u017Cy -form.fontsize.xsmall=Bardzo ma\u0142y -form.informSessionTimeout=Powiadomienie o up\u0142yni\u0119ciu czasu sesji po 25 minutach form.language=J\u0119zyk form.notification=Powiadomienie e-mail form.password.new1=Nowe has\u0142o diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_pt_BR.properties index 9c45ebee6833a4b4f95d2c139f6b41395ff52e50..eb2f107dbb18cbf7bdcc2187263e2ee7e0a0bc8a 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_pt_BR.properties @@ -35,14 +35,6 @@ form.checkUsername=O nome de usu\u00E1rio tem que ter pelo menos 4 caracteres e form.description=Indique os seus dados pessoais no formul\u00E1rio abaixo. Atrav\u00E9s das lacunas voc\u00EA pode determinar as entradas que devem aparecer no seu cart\u00E3o de visita. form.email=Endere\u00E7o de E-mail form.fields=Selecionar itens -form.fontsize=Tamanho de fonte -form.fontsize.large=Grande -form.fontsize.normal=Normal -form.fontsize.presentation=Modo Apresenta\u00E7\u00E3o -form.fontsize.small=Pequena -form.fontsize.xlarge=Muito grande -form.fontsize.xsmall=Muito pequena -form.informSessionTimeout=Notifica\u00E7\u00E3o de encerramento de sess\u00E3o ap\u00F3s 25 minutos form.language=Idioma form.notification=Notifica\u00E7\u00E3o por E-mail form.organisations=Organiza\u00E7\u00F5es diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_pt_PT.properties index 3942be6e81dec9b0e6c0dc8932468e6fc3adee13..57975719727b69c167a057f57e7b85f40bb09cad 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_pt_PT.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_pt_PT.properties @@ -15,11 +15,6 @@ form.address=Endere\u00E7o form.charset=Cadeia de caracteres utilizada no download form.checkUsername=O nome de usu\u00E1rio tem que ter pelo menos 4 caracteres e somente letras de a a z (min\u00FAsculas) bem como d\u00EDgitos de 0 a 9. Adicionalmente voc\u00EA pode usar . @ _ e -. form.fields=Selecionar itens -form.fontsize=Tamanho de fonte -form.fontsize.large=Grande -form.fontsize.normal=Normal -form.fontsize.small=Pequena -form.informSessionTimeout=Notifica\u00E7\u00E3o de encerramento de sess\u00E3o ap\u00F3s 25 minutos form.language=Idioma form.password.new1=Nova senha OLAT form.password.new2=Confirme senha OLAT diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_ru.properties index e6773780a238102c5f53ed77c256aa7f03c35226..854b0d6854406c405d3adb6e27d85a79d37a2c75 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_ru.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_ru.properties @@ -29,14 +29,6 @@ form.checkUsername=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432 form.description=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u0444\u043E\u0440\u043C\u0443\u043B\u044F\u0440 \u0412\u0430\u0448\u0438 \u043F\u0435\u0440\u0441\u043E\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435. \u0421 \u043F\u043E\u043C\u043E\u0449\u044C\u044E \u043E\u043A\u043E\u0448\u0435\u043A \u0434\u043B\u044F \u0432\u044B\u0431\u043E\u0440\u0430 \u0412\u044B \u043C\u043E\u0436\u0435\u0442\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C, \u0447\u0442\u043E \u0434\u043E\u043B\u0436\u043D\u043E \u043F\u043E\u044F\u0432\u0438\u0442\u044C\u0441\u044F \u043D\u0430 \u0412\u0430\u0448\u0435\u0439 \u0432\u0438\u0437\u0438\u0442\u043D\u043E\u0439 \u043A\u0430\u0440\u0442\u043E\u0447\u043A\u0435. form.email=E-mail \u0430\u0434\u0440\u0435\u0441 form.fields=\u0412\u044B\u0431\u043E\u0440 \u0434\u0430\u043D\u043D\u044B\u0445 -form.fontsize=\u0420\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430 -form.fontsize.large=\u0411\u043E\u043B\u044C\u0448\u043E\u0439 -form.fontsize.normal=\u041E\u0431\u044B\u0447\u043D\u044B\u0439 -form.fontsize.presentation=\u041C\u043E\u0434\u0443\u0441 \u043F\u0440\u0435\u0437\u0435\u043D\u0442\u0430\u0446\u0438\u0438 -form.fontsize.small=\u041C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 -form.fontsize.xlarge=\u041E\u0447\u0435\u043D\u044C \u0431\u043E\u043B\u044C\u0448\u043E\u0439 -form.fontsize.xsmall=\u041E\u0447\u0435\u043D\u044C \u043C\u0430\u043B\u0435\u043D\u0438\u043A\u0438\u0439 -form.informSessionTimeout=\u041E\u043F\u043E\u0432\u0435\u0449\u0435\u043D\u0438\u0435 \u043E \u043F\u0440\u0435\u0440\u044B\u0432\u0430\u043D\u0438\u0438 \u0441\u0435\u0430\u043D\u0441\u0430 \u0440\u0430\u0431\u043E\u0442\u044B (session timeout) \u043F\u043E\u0441\u043B\u0435 25 \u043C\u0438\u043D\u0443\u0442 form.language=\u042F\u0437\u044B\u043A form.notification=\u0423\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u0435 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435 form.password.new1=\u041D\u043E\u0432\u044B\u0439 OLAT-\u043F\u0430\u0440\u043E\u043B\u044C diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_sq.properties index a8149b74918546e9f1f4d7e79d4968c770267581..cd2940445340b8f00114a6ef0d7b94ca941a7c91 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_sq.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_sq.properties @@ -15,11 +15,6 @@ form.address=Adresa form.charset=karakteret e shfryt\u00EBzuara gjat\u00EB shkarkimit form.checkUsername=Emri i shfryt\u00EBzuesit duhet t\u00EB p\u00EBrmbaj\u00EB s\u00EB paku 4 karaktere dhe shkronja vet\u00EBm prej a deri n\u00EB zh (pa dyshim zanoreje) si dhe numrat prej 0 deri n\u00EB 9. Poashtu ju mund t\u00EB shfryt\u00EBzoni . @ _ dhe -. form.fields=Zgjedh hyrjet -form.fontsize=Madh\u00EBsia e shkronjave -form.fontsize.large=T\u00EB m\u00EBdhaja -form.fontsize.normal=Normale -form.fontsize.small=T\u00EB vogla -form.informSessionTimeout=Njoftimi p\u00EBr kalimin e koh\u00EBs s\u00EB sesionit pas 25 minutave form.language=Gjuha form.password.new1=Fjal\u00EBkalimi i ri n\u00EB OLAT form.password.new2=Konfirmoni fjal\u00EBkalimin e ri n\u00EB OLAT diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_zh_CN.properties index 53ec1e70119d823ae35e569c625e7a7fd2cc4b1f..2516b7fcba997bb38e7b6844e1d8d9d6be81e3c3 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_zh_CN.properties @@ -30,14 +30,6 @@ form.charset=\u5728\u4E0B\u8F7D\u4E2D\u7528\u5230\u7684\u5B57\u7B26\u96C6 form.description=\u8BF7\u5728\u4E0B\u9762\u7684\u8868\u683C\u4E2D\u8868\u660E\u4F60\u7684\u4E2A\u4EBA\u4FE1\u606F\u3002\u901A\u8FC7\u70B9\u51FB\u590D\u9009\u6846\u4F60\u53EF\u4EE5\u51B3\u5B9A\u8FD9\u4E9B\u6761\u76EE\u662F\u5426\u51FA\u73B0\u5728\u4F60\u7684\u8BBF\u95EE\u5361\u7247\u4E0A\u3002 form.email=e-mail\u5730\u5740 form.fields=\u9009\u62E9\u6761\u76EE -form.fontsize=\u5B57\u4F53\u5927\u5C0F -form.fontsize.large=\u5927 -form.fontsize.normal=\u4E2D -form.fontsize.presentation=\u6F14\u793A\u6A21\u5F0F -form.fontsize.small=\u5C0F -form.fontsize.xlarge=\u7279\u5927 -form.fontsize.xsmall=\u7279\u5C0F -form.informSessionTimeout=\u4F1A\u8BDD\u8D85\u8FC725\u5206\u949F\u540E\u63D0\u9192\u8D85\u65F6 form.language=\u8BED\u8A00 form.notification=E-mail\u90AE\u4EF6\u901A\u77E5 form.password.new1=\u65B0\u5BC6\u7801 diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_zh_TW.properties index baa7b355fe0182cf1637087a9a4a22731960d182..01e6d5a8f8342a4483ecbf9e3e59c1d16e06f46b 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_zh_TW.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_zh_TW.properties @@ -28,14 +28,6 @@ form.checkUsername=\u4F7F\u7528\u8005\u540D\u7A31\u5FC5\u9808\u5305\u542B\u81F3\ form.description=\u8ACB\u5728\u4E0B\u5217\u7684\u8868\u55AE\u4E2D\u8F38\u5165\u60A8\u7684\u500B\u4EBA\u8CC7\u6599\u3002\u85C9\u7531\u6838\u9078\u65B9\u584A\u60A8\u53EF\u4EE5\u6C7A\u5B9A\u90A3\u4E9B\u9805\u76EE\u61C9\u8A72\u51FA\u73FE\u5728\u60A8\u7684\u540D\u7247\u4E0A\u3002 form.email=\u96FB\u5B50\u90F5\u4EF6\u5730\u5740 form.fields=\u9078\u64C7\u9805\u76EE -form.fontsize=\u5B57\u9AD4\u5927\u5C0F -form.fontsize.large=\u5927 -form.fontsize.normal=\u4E2D -form.fontsize.presentation=\u7C21\u5831\u6A21\u5F0F -form.fontsize.small=\u5C0F -form.fontsize.xlarge=\u7279\u5927 -form.fontsize.xsmall=\u7279\u5C0F -form.informSessionTimeout=\u5DE5\u4F5C\u968E\u6BB5\u903E\u6642 25 \u5206\u9418\u5F8C\u901A\u77E5 form.language=\u8A9E\u8A00 form.notification=\u96FB\u5B50\u90F5\u4EF6\u901A\u77E5 form.password.new1=\u65B0\u7684 OLAT \u5BC6\u78BC diff --git a/src/main/resources/database/postgresql/alter_14_1_x_to_14_2_0.sql b/src/main/resources/database/postgresql/alter_14_1_x_to_14_2_0.sql index 5c46c36430a22890ae2bfd05a046f79497690818..caca9df4e8a7fa131724139cce39c41dc90b5bc4 100644 --- a/src/main/resources/database/postgresql/alter_14_1_x_to_14_2_0.sql +++ b/src/main/resources/database/postgresql/alter_14_1_x_to_14_2_0.sql @@ -15,4 +15,7 @@ create table o_gta_task_revision ( alter table o_gta_task_revision add constraint task_rev_to_task_idx foreign key (fk_task) references o_gta_task (id); create index idx_task_rev_to_task_idx on o_gta_task_revision (fk_task); alter table o_gta_task_revision add constraint task_rev_to_ident_idx foreign key (fk_comment_author) references o_bs_identity (id); -create index idx_task_rev_to_ident_idx on o_gta_task_revision (fk_comment_author); \ No newline at end of file +create index idx_task_rev_to_ident_idx on o_gta_task_revision (fk_comment_author); + +-- livestream +create index idx_log_livestream_idx on o_loggingtable(targetresid, creationdate, parentresid, user_id) where actionverb = 'launch' and targetrestype = 'livestream'; diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 82085e77bcd7c51e6c1f487ed0349ce0e733ec03..89ef00db7126f57b7b11c0069e38fa0445c2740b 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -4104,6 +4104,8 @@ create index log_ptarget_resid_idx on o_loggingtable(parentresid); create index log_gptarget_resid_idx on o_loggingtable(grandparentresid); create index log_ggptarget_resid_idx on o_loggingtable(greatgrandparentresid); create index log_creationdate_idx on o_loggingtable(creationdate); +create index idx_log_livestream_idx on o_loggingtable(targetresid, creationdate, parentresid, user_id) where actionverb = 'launch' and targetrestype = 'livestream'; + insert into hibernate_unique_key values ( 0 ); diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index e9ccf88cc1ab1cab163d12c46a0b94ce18030ea4..10610f39f9ebfc87e2f582b72c845c40fb601eaf 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -1656,9 +1656,15 @@ youtube.api.key= # Options for the live stream course node ############################################################################### live.stream.enabled=false +# Enable multiple streams pre event. Actually two streams are supported. +live.stream.multi.stream.enabled=false +# Char / String to separate multiple urls of a single event +live.stream.url.separator=, # Buffer time to switch from the announcement page to the live stream (in minutes) # and vice versa. live.stream.buffer.before.min=5 live.stream.buffer.after.min=5 live.stream.edit.coach=false - +# Profile to control witch stream is visible for the watchers. +live.stream.player.profile=both +live.stream.player.profile.values=both,stream1,stream2 diff --git a/src/main/webapp/static/js/paella/README b/src/main/webapp/static/js/paella/README new file mode 100644 index 0000000000000000000000000000000000000000..b6982fc90e57c1058ca914bc2ca99fcf60d23a50 --- /dev/null +++ b/src/main/webapp/static/js/paella/README @@ -0,0 +1,8 @@ +Paella Player +============= + +Used in live stream course element to display multiple streams in one movie panel. + +Version: 6.3.1 +https://github.com/polimediaupv/paella +https://paellaplayer.upv.es/ diff --git a/src/main/webapp/static/js/paella/player/config/config.json b/src/main/webapp/static/js/paella/player/config/config.json new file mode 100644 index 0000000000000000000000000000000000000000..699c54da148e0ca9f4aa682699581224f1bf8832 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/config/config.json @@ -0,0 +1,201 @@ +{ + "player":{ + "accessControlClass":"paella.AccessControl", + "profileFrameStrategy": "paella.ProfileFrameStrategy", + "videoQualityStrategy": "paella.LimitedBestFitVideoQualityStrategy", + "videoQualityStrategyParams":{ "maxAutoQualityRes":720 }, + "reloadOnFullscreen": true, + "videoZoom": { + "enabled":true, + "max":800 + }, + + "deprecated-methods":[{"name":"streaming","enabled":true}, + {"name":"html","enabled":true}, + {"name":"flash","enabled":true}, + {"name":"image","enabled":true}], + + "methods":[ + { "factory":"ChromaVideoFactory", "enabled":true }, + { "factory":"WebmVideoFactory", "enabled":true }, + { "factory":"Html5VideoFactory", "enabled":true }, + { "factory":"MpegDashVideoFactory", "enabled":true }, + { + "factory":"HLSVideoFactory", + "enabled":true, + "config": { + "*** You can add more hls.js settings here": "", + "https://github.com/video-dev/hls.js/blob/master/docs/API.md": "", + "maxBufferLength": 30, + "maxMaxBufferLength": 600, + "maxBufferSize": 60000000, + "maxBufferHole": 0.5, + "lowBufferWatchdogPeriod": 0.5, + "highBufferWatchdogPeriod": 3 + }, + "iOSMaxStreams": 2, + "androidMaxStreams": 2 + }, + { "factory":"RTMPVideoFactory", "enabled":true }, + { "factory":"ImageVideoFactory", "enabled":true }, + { "factory":"YoutubeVideoFactory", "enabled":true }, + { "factory":"Video360ThetaFactory", "enabled":true }, + { "factory":"Video360Factory", "enabled":true } + ], + "audioMethods":[ + { "factory":"MultiformatAudioFactory", "enabled":true } + ], + "defaultAudioTag": "", + "slidesMarks":{ + "enabled":true, + "color":"gray" + } + }, + "defaultProfile":"presenter_presentation", + "data":{ + "enabled":true, + "dataDelegates":{ + "trimming":"CookieDataDelegate", + "metadata":"VideoManifestMetadataDataDelegate", + "cameraTrack":"TrackCameraDataDelegate" + } + }, + "folders": { + "profiles": "config/profiles", + "resources": "resources", + "skins": "resources/style" + }, + "experimental":{ + "autoplay":true + }, + "plugins":{ + "enablePluginsByDefault": false, + + "//**** Instructions: Disable any individual plugin by setting its enable property to false": {"enabled": false}, + "//**** For a list of available plugins and configuration, go to": "https://github.com/polimediaupv/paella/blob/master/doc/plugins.md", + "list":{ + "//******* Button plugins": "", + "edu.harvard.dce.paella.flexSkipPlugin": {"enabled":true, "direction": "Rewind", "seconds": 10, "minWindowSize": 510 }, + "edu.harvard.dce.paella.flexSkipForwardPlugin": {"enabled":true, "direction": "Forward", "seconds": 30}, + "es.upv.paella.captionsPlugin": {"enabled":true, "searchOnCaptions":true}, + "es.upv.paella.extendedTabAdapterPlugin": {"enabled":true, "minWindowSize": 400}, + "es.upv.paella.footprintsPlugin": {"enabled":false}, + "es.upv.paella.frameControlPlugin": {"enabled": true, "showFullPreview": "auto", "showCaptions":true, "minWindowSize": 450 }, + "es.upv.paella.fullScreenButtonPlugin": {"enabled":true, "reloadOnFullscreen":{ "enabled":true, "keepUserSelection":true }}, + "es.upv.paella.helpPlugin": {"enabled":true, "langs":["en","es"], "minWindowSize": 650 }, + "es.upv.paella.multipleQualitiesPlugin": {"enabled":true, "showWidthRes":true, "minWindowSize": 550 }, + "es.upv.paella.playbackRatePlugin": {"enabled":true, "availableRates": [0.75, 1, 1.25, 1.5], "minWindowSize": 500 }, + "es.upv.paella.playPauseButtonPlugin": {"enabled":true}, + "es.upv.paella.searchPlugin": {"enabled":true, "sortType":"time", "colorSearch":false, "minWindowSize": 550}, + "es.upv.paella.socialPlugin": {"enabled":true, "minWindowSize": 600}, + "es.upv.paella.themeChooserPlugin": {"enabled":true, "minWindowSize": 600}, + "es.upv.paella.viewModePlugin": { "enabled": true, "minWindowSize": 300 }, + "es.upv.paella.volumeRangePlugin":{"enabled":true, "showMasterVolume": true, "showSlaveVolume": false }, + "es.upv.paella.pipModePlugin": { "enabled":true }, + "es.upv.paella.ratePlugin": { "enabled":true, "minWindowSize": 500 }, + "es.upv.paella.videoZoomPlugin": { "enabled":true }, + "es.upv.paella.audioSelector": { "enabled":true, "minWindowSize": 400 }, + "es.upv.paella.videoZoomToolbarPlugin": { "enabled":false, "targetStreamIndex":0, "minWindowSize": 500 }, + "es.upv.paella.videoZoomTrack4kPlugin": { "enabled":true, "targetStreamIndex":0, "autoModeByDefault":false, "minWindowSize": 500 }, + "es.upv.paella.airPlayPlugin": { "enabled":true }, + + "//***** Video Overlay Button Plugins": "", + "es.upv.paella.liveStreamingIndicatorPlugin": { "enabled": true }, + "es.upv.paella.showEditorPlugin":{"enabled":true,"alwaysVisible":true}, + "es.upv.paella.arrowSlidesNavigatorPlugin": {"enabled": true, "content":["presentation","presenter"] }, + "es.upv.paella.videoDataPlugin": { + "enabled": true, + "excludeLocations":[ + "paellaplayer.upv.es" + ], + "excludeParentLocations":[ + "localhost:8000" + ] + }, + "es.upv.paella.legalPlugin": { + "enabled": true, + "label": "Legal info", + "position": "right", + "legalUrl": "https://en.wikipedia.org/wiki/General_Data_Protection_Regulation" + }, + + "//***** TabBar Plugins": "", + "es.upv.paella.commentsPlugin": {"enabled": false}, + "es.upv.paella.test.tabBarExamplePlugin": {"enabled": false}, + + "//**** Event Driven Plugins": "", + "es.upv.paella.blackBoardPlugin": {"enabled": true}, + "es.upv.paella.breaksPlayerPlugin": {"enabled": true}, + "es.upv.paella.overlayCaptionsPlugin": {"enabled": true}, + "es.upv.paella.playButtonOnScreenPlugin": {"enabled":true}, + "es.upv.paella.translecture.captionsPlugin": {"enabled":true}, + "es.upv.paella.trimmingPlayerPlugin": {"enabled":true}, + "es.upv.paella.windowTitlePlugin": {"enabled": true}, + "es.upv.paella.track4kPlugin": { "enabled":false }, + "es.upv.paella.relatedVideosPlugin": { "enabled":true }, + + "//**** Video profile plugins": "", + "es.upv.paella.singleStreamProfilePlugin": { + "enabled": true, + "videoSets": [ + { "icon":"professor_icon.svg", "id":"presenter", "content":["presenter"]}, + { "icon":"slide_icon.svg", "id":"presentation", "content":["presentation"]} + ] + + }, + "es.upv.paella.dualStreamProfilePlugin": { "enabled":true, + "videoSets": [ + { "icon":"slide_professor_icon.svg", "id":"presenter_presentation", "content":["presenter","presentation"] }, + { "icon":"slide_professor_icon.svg", "id":"presenter2_presentation", "content":["presenter-2","presentation"] }, + { "icon":"slide_professor_icon.svg", "id":"presenter3_presentation", "content":["presenter-3","presentation"] } + ] + }, + "es.upv.paella.tripleStreamProfilePlugin": { + "enabled": true, + "videoSets": [ + { "icon":"three_streams_icon.svg", "id":"presenter_presentation_presenter2", "content":["presenter","presentation","presenter-2"] }, + { "icon":"three_streams_icon.svg", "id":"presenter_presentation_presenter3", "content":["presenter","presentation","presenter-3"] } + ] + }, + + "//**** Captions Parser Plugins": "", + "es.upv.paella.captions.DFXPParserPlugin": {"enabled":true}, + "es.teltek.paella.captions.WebVTTParserPlugin": {"enabled":true}, + + "//**** Search Service Plugins": "", + "es.upv.paella.search.captionsSearchPlugin": {"enabled":true}, + "es.upv.paella.frameCaptionsSearchPlugin": {"enabled":true}, + + "//**** User Tracking Saver Plugins": "", + "es.upv.paella.usertracking.elasticsearchSaverPlugin": { "enabled": false, "url": "http://my.elastic.server"}, + "es.upv.paella.usertracking.GoogleAnalyticsSaverPlugin": { "enabled": false, "trackingID": "UA-XXXXXXXX-Y" }, + "es.upv.paella.usertracking.piwikSaverPlugIn": { "enabled": false, "tracker":"http://localhost/piwik/", "siteId": "1" }, + "org.opencast.usertracking.MatomoSaverPlugIn": { + "enabled": false, + "server": "http://localhost/piwik/", + "site_id": 1, + "heartbeat": 30, + "client_id": "Paella Player" + }, + "org.opencast.usertracking.x5gonSaverPlugIn": { + "enabled": false, + "token": "X5GON_TOKEN", + "testing_environment" : false + }, + "es.teltek.paella.usertracking.xAPISaverPlugin": {"enabled": false, "endpoint":"http://localhost:8081/data/xAPI/", "auth":"auth_key"}, + "//***** Keyboard plugins": "", + "es.upv.paella.defaultKeysPlugin": {"enabled": true } + } + }, + "standalone" : { + "repository": "../repository/" + }, + "skin": { + "available": [ + "dark", + "dark_small", + "light", + "light_small" + ] + } +} diff --git a/src/main/webapp/static/js/paella/player/config/profiles/profiles.json b/src/main/webapp/static/js/paella/player/config/profiles/profiles.json new file mode 100644 index 0000000000000000000000000000000000000000..45435fb5a9a67221485352d4f4fa125c8915b213 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/config/profiles/profiles.json @@ -0,0 +1,195 @@ +{ + "s_p_blackboard2":{ + "name":{"es":"Pizarra"}, + "hidden":false, + "icon":"slide_professor_icon.png", + "slaveVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"10","top":"70","width":"432","height":"243"}],"visible":"true","layer":"1"}, + "masterVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"450","top":"135","width":"816","height":"459"}],"visible":"true","layer":"1"}, + "blackBoardImages":{"left":"10","top":"325","width":"432","height":"324"}, + "background":{"content":"slide_professor_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "slide_professor":{ + "name":{"es":"Presentación y presentador"}, + "hidden":false, + "icon":"slide_professor_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"712","top":"302","width":"560","height":"315"}, + {"aspectRatio":"16/10","left":"712","top":"267","width":"560","height":"350"}, + {"aspectRatio":"4/3","left":"712","top":"198","width":"560","height":"420"}, + {"aspectRatio":"5/3","left":"712","top":"281","width":"560","height":"336"}, + {"aspectRatio":"5/4","left":"712","top":"169","width":"560","height":"448"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"10","top":"225","width":"695","height":"390"}, + {"aspectRatio":"16/10","left":"10","top":"183","width":"695","height":"434"}, + {"aspectRatio":"4/3","left":"10","top":"96","width":"695","height":"521"}, + {"aspectRatio":"5/3","left":"10","top":"200","width":"695","height":"417"}, + {"aspectRatio":"5/4","left":"10","top":"62","width":"695","height":"556"}],"visible":"true","layer":"1"}, + "background":{"content":"slide_professor_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "professor_slide":{ + "name":{"es":"Presentador y presentación"}, + "hidden":false, + "icon":"professor_slide_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"10","top":"225","width":"695","height":"390"}, + {"aspectRatio":"16/10","left":"10","top":"183","width":"695","height":"434"}, + {"aspectRatio":"4/3","left":"10","top":"96","width":"695","height":"521"}, + {"aspectRatio":"5/3","left":"10","top":"200","width":"695","height":"417"}, + {"aspectRatio":"5/4","left":"10","top":"62","width":"695","height":"556"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"712","top":"302","width":"560","height":"315"}, + {"aspectRatio":"16/10","left":"712","top":"267","width":"560","height":"350"}, + {"aspectRatio":"4/3","left":"712","top":"198","width":"560","height":"420"}, + {"aspectRatio":"5/3","left":"712","top":"281","width":"560","height":"336"}, + {"aspectRatio":"5/4","left":"712","top":"169","width":"560","height":"448"}],"visible":"true","layer":"1"}, + "background":{"content":"slide_professor_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "professor":{ + "name":{"es":"Solo profesor"}, + "hidden":false, + "icon":"professor_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"4/3","left":"0","top":"0","width":"300","height":"300"}],"visible":"false","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}], + "isMonostream":true + }, + "slide":{ + "name":{"es":"Solo presentación"}, + "hidden":false, + "icon":"slide_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"320","height":"190"}],"visible":"false","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}], + "isMonostream":true + }, + "slide_over_professor":{ + "name":{"es":"Presentación sobre profesor"}, + "hidden":false, + "icon":"slide_over_professor_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"50","top":"470","width":"350","height":"197"}, + {"aspectRatio":"16/10","left":"50","top":"448","width":"350","height":"219"}, + {"aspectRatio":"5/3","left":"50","top":"457","width":"350","height":"210"}, + {"aspectRatio":"5/4","left":"50","top":"387","width":"350","height":"280"}, + {"aspectRatio":"4/3","left":"50","top":"404","width":"350","height":"262"}],"visible":"true","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "slide_over_professor_right":{ + "name":{"es":"Presentación a la derecha, sobre profesor"}, + "hidden":false, + "icon":"slide_over_professor_right_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"910","top":"470","width":"350","height":"197"}, + {"aspectRatio":"16/10","left":"910","top":"448","width":"350","height":"219"}, + {"aspectRatio":"5/3","left":"910","top":"457","width":"350","height":"210"}, + {"aspectRatio":"5/4","left":"910","top":"387","width":"350","height":"280"}, + {"aspectRatio":"4/3","left":"910","top":"404","width":"350","height":"262"}],"visible":"true","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "professor_over_slide":{ + "name":{"es":"Profesor sobre presentación"}, + "hidden":false, + "icon":"slide_over_professor_icon.png", + "masterVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"50","top":"470","width":"350","height":"197"}, + {"aspectRatio":"16/10","left":"50","top":"448","width":"350","height":"219"}, + {"aspectRatio":"5/3","left":"50","top":"457","width":"350","height":"210"}, + {"aspectRatio":"5/4","left":"50","top":"387","width":"350","height":"280"}, + {"aspectRatio":"4/3","left":"50","top":"404","width":"350","height":"262"}],"visible":"true","layer":"2"}, + "slaveVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "professor_over_slide_right":{ + "name":{"es":"Profesor a la derecha, sobre presentación"}, + "hidden":false, + "icon":"slide_over_professor_right_icon.png", + "masterVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"910","top":"470","width":"350","height":"197"}, + {"aspectRatio":"16/10","left":"910","top":"448","width":"350","height":"219"}, + {"aspectRatio":"5/3","left":"910","top":"457","width":"350","height":"210"}, + {"aspectRatio":"5/4","left":"910","top":"387","width":"350","height":"280"}, + {"aspectRatio":"4/3","left":"910","top":"404","width":"350","height":"262"}],"visible":"true","layer":"2"}, + "slaveVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + }, + "blank_professor":{ + "name":{"es":"Nada y presentador"}, + "hidden":true, + "icon":"slide_professor_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"712","top":"302","width":"560","height":"315"}, + {"aspectRatio":"16/10","left":"712","top":"267","width":"560","height":"350"}, + {"aspectRatio":"4/3","left":"712","top":"198","width":"560","height":"420"}, + {"aspectRatio":"5/3","left":"712","top":"281","width":"560","height":"336"}, + {"aspectRatio":"5/4","left":"712","top":"169","width":"560","height":"448"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"4/3","left":"0","top":"0","width":"300","height":"300"}],"visible":"false","layer":"1"}, + "background":{"content":"slide_professor_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"false","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}], + "isMonostream":true + }, + "chroma":{ + "name":{"es":"Polimedia"}, + "hidden":false, + "icon":"slide_icon.png", + "masterVideo":{"content":"presenter","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"1"}, + "slaveVideo":{"content":"presentation","rect":[ + {"aspectRatio":"16/9","left":"0","top":"0","width":"1280","height":"720"}, + {"aspectRatio":"16/10","left":"64","top":"0","width":"1152","height":"720"}, + {"aspectRatio":"5/3","left":"40","top":"0","width":"1200","height":"720"}, + {"aspectRatio":"5/4","left":"190","top":"0","width":"900","height":"720"}, + {"aspectRatio":"4/3","left":"160","top":"0","width":"960","height":"720"}],"visible":"true","layer":"0"}, + "background":{"content":"default_background_paella.jpg","zIndex":5,"rect":{"left":"0","top":"0","width":"1280","height":"720"},"visible":"true","layer":"0"}, + "logos":[{"content":"paella_logo.png","zIndex":5,"rect":{"top":"10","left":"10","width":"49","height":"42"}}] + } +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb8c19933662de96b89eed218849222a73b4237 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background.jpg differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background_paella.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ef5f20f725889cb38b37b8e48ae63d8c88c05f1 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/default_background_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/logo.png b/src/main/webapp/static/js/paella/player/config/profiles/resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed155f37afaf7be0d4b9259f13bff8d8e51d3f94 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/logo.png differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo.png b/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9abb99d8c2e57bcd6d0aac7ea374233c22dc71b1 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo.png differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo_old.png b/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo_old.png new file mode 100644 index 0000000000000000000000000000000000000000..de2727678a3a7b36babf8be323777bbfaf9e16bf Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/paella_logo_old.png differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2ccd471f44e2de39f46e5d6b8eac48823592ea9 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide.jpg differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide_paella.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d97008a9b51463de8432eb8eac17b3824ffb158 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/professor_slide_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb8c19933662de96b89eed218849222a73b4237 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor.jpg differ diff --git a/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor_paella.jpg b/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7484910f897ea7e9a9e70343f495eec10002ee06 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/config/profiles/resources/slide_professor_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/example.html b/src/main/webapp/static/js/paella/player/example.html new file mode 100644 index 0000000000000000000000000000000000000000..85a3610ff3c270ecb360dac4eb173ab459d4ce96 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/example.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8;"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <title>Paella Engage Example</title> + <script type="text/javascript" src="javascript/swfobject.js"></script> + <script type="text/javascript" src="javascript/base.js"></script> + <script type="text/javascript" src="javascript/jquery.min.js"></script> + <script type="text/javascript" src="javascript/require.js"></script> + <script type="text/javascript" src="javascript/traceur-runtime.min.js"></script> + <script type="text/javascript" src="javascript/paella_player.js"></script> + + <script type="text/javascript" src="resources/bootstrap/js/bootstrap.min.js"></script> + <link rel="stylesheet" href="resources/style/style.css" type="text/css" media="screen" charset="utf-8"> + <link rel="stylesheet" href="resources/bootstrap/css/bootstrap.slate.min.css" type="text/css" media="screen" charset="utf-8"> + <script type="text/javascript" src="example.js"></script> + </head> + <body id="body" onload="loadPaella('playerContainer');"> + <div id="playerContainer" style="display:block;width:100%"> + </div> + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/index-custom.html b/src/main/webapp/static/js/paella/player/index-custom.html new file mode 100644 index 0000000000000000000000000000000000000000..ed8aa05fe65a48a2af9870dd4113c8c75a1ba2fc --- /dev/null +++ b/src/main/webapp/static/js/paella/player/index-custom.html @@ -0,0 +1,71 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8;"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name = "viewport" content = "user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width"> + <title>Paella Engage Example</title> + <script type="text/javascript" src="javascript/polyfill.min.js"></script> + <script type="text/javascript" src="javascript/swfobject.js"></script> + <script type="text/javascript" src="javascript/base.js"></script> + <script type="text/javascript" src="javascript/jquery.min.js"></script> + <script type="text/javascript" src="javascript/lunr.min.js"></script> + <script type="text/javascript" src="javascript/require.js"></script> + <script type="text/javascript" src="javascript/paella_player.js"></script> + + <link rel="stylesheet" href="resources/bootstrap/css/bootstrap.min.css" type="text/css" media="screen" charset="utf-8"> + + <script> + + function doLoad() { + paella.load('playerContainer',{ + config:null, // You can put here your configuration file + + // Custom configuration load: this function is called only if the + // previous parameter is null or undefined + loadConfig: function(defaultConfigUrl) { + return new Promise((resolve) => { + base.ajax.get({ url:defaultConfigUrl }, (data,type,returnCode) => { + resolve(data); + }) + }); + }, + + // paella.player.repoUrl + url:'../repository/', + + // paella.player.videoUrl + videoUrl:function () { + return paella.player.repoUrl + paella.player.videoId + '/'; + }, + + // paella.player.dataUrl + dataUrl:function () { + return paella.player.videoUrl + 'data.json' + }, + + loadVideo: function() { + return new Promise((resolve) => { + let url = paella.player.dataUrl; + base.ajax.get({ url:url }, + function(data,type,err) { + if (typeof(data)=="string") { + try { + data = JSON.parse(data); + } + catch(e) {} + } + resolve(data); + } + ); + }) + } + }) + } + </script> + </head> + <body id="body" onload="doLoad()"> + <div id="playerContainer" style="display:block;width:100%"> + </div> + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/index-debug.html b/src/main/webapp/static/js/paella/player/index-debug.html new file mode 100644 index 0000000000000000000000000000000000000000..848e5f0105e8c1599ad56ce61129385cf9aafa23 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/index-debug.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8;"> + <title>Paella Engage Example</title> + <script type="text/javascript" src="javascript/polyfill.min.js"></script> + <script type="text/javascript" src="build/player/javascript/jquery.min.js"></script> + <script> + try { + $ = jQuery = module.exports; + } catch(e) {} + </script> + <script type="text/javascript" src="build/player/javascript/base.js"></script> + <script type="text/javascript" src="build/player/javascript/lunr.min.js"></script> + <script type="text/javascript" src="build/player/javascript/require.js"></script> + + <script type="text/javascript" src="paella-debug.js"></script> + + <link rel="stylesheet" href="build/player/resources/bootstrap/css/bootstrap.min.css" type="text/css" media="screen" charset="utf-8"> + + <style> + .paella-debug-tools { + position: fixed; + left: 0px; + top: 0px; + z-index: 1000000; + } + </style> + </head> + <body id="body" onload="loadPaellaDebug('playerContainer',{ url:'repository_test/repository/', configUrl:'build/player/config/config.json', dictionaryUrl:'build/player/localization/paella' })"> + <div id="playerContainer" style="display:block;width:100%"> + </div> + + <div class="paella-debug-tools"> + <select id="videoSelector"> + </select> + + </div> + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/index.html b/src/main/webapp/static/js/paella/player/index.html new file mode 100644 index 0000000000000000000000000000000000000000..d3fb7d4c17bb49a22fb37f7ceb3ebd5555bd54ce --- /dev/null +++ b/src/main/webapp/static/js/paella/player/index.html @@ -0,0 +1,27 @@ +<!DOCTYPE html> +<html> + <head> + <meta http-equiv="Content-type" content="text/html; charset=utf-8;"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name = "viewport" content = "user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width"> + <title>Paella Engage Example</title> + <!--- Include this file to support Internet Explorer + <script type="text/javascript" src="javascript/polyfill.min.js"></script> + --> + <script type="text/javascript" src="javascript/swfobject.js"></script> + <script type="text/javascript" src="javascript/base.js"></script> + <script type="text/javascript" src="javascript/jquery.min.js"></script> + <script type="text/javascript" src="javascript/lunr.min.js"></script> + <script type="text/javascript" src="javascript/require.js"></script> + <script type="text/javascript" src="javascript/paella_player_es2015.js"></script> + <!-- Include this file, instead paella_player_es2015, to support Internet Explorer + <script type="text/javascript" src="javascript/paella_player.js"></script> + --> + + <link rel="stylesheet" href="resources/bootstrap/css/bootstrap.min.css" type="text/css" media="screen" charset="utf-8"> + </head> + <body id="body" onload="paella.lazyLoad('playerContainer',{});"> + <div id="playerContainer" style="display:block;width:100%"> + </div> + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/javascript/base.js b/src/main/webapp/static/js/paella/player/javascript/base.js new file mode 100644 index 0000000000000000000000000000000000000000..e335a024f6e512cb84565eb7fedbdb8fcda8e6b4 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/base.js @@ -0,0 +1,1334 @@ +/* base.js: some utility functions to complement jQuery library + Copyright (c) 2012 Fernando Serrano Carpena + fernando@vitaminew.com + http://www.vitaminew.com/basejs +*/ + +/* + Part 1: + Class, version 2.7 + Copyright (c) 2006, 2007, 2008, Alex Arnell <alex@twologic.com> + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + * Neither the name of typicalnoise.com nor the names of its contributors may be + used to endorse or promote products derived from this software without specific prior + written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/* + Class definition improved by Fernando Serrano Carpena to support C++ typed dynamic casting. + // Default method, defined by Alex Arnell: + var MyClass = Class.extend.apply(parent,{ class definition }) + + // New method: + Class.create("MyClass",parent,{ class definition }) + + // Improvements + // - automatic namespace creation: + Class.create("myns.MyClass",myns.Parent, { class definition }) + + // - Dynamic casting: + var instance = dynamic_cast("myns.MyClass",anObject); + + // You can also use: + var MyClass = Class.create({ class definition }) + // or + var MyClass = Class.create(parent, { class definition }) +*/ + +var ClassBase = (function() { + var __extending = {}; + + return { + extend: function(parent, def) { + if (arguments.length == 1) { def = parent; parent = null; } + var func = function() { + if (arguments[0] == __extending) { return; } + if (!this.initialize) { + this.initialize = function() {} + } + this.initialize.apply(this, arguments); + }; + if (typeof(parent) == 'function') { + func.prototype = new parent( __extending); + } + var mixins = []; + if (def && def.include) { + if (def.include.reverse) { + // methods defined in later mixins should override prior + mixins = mixins.concat(def.include.reverse()); + } else { + mixins.push(def.include); + } + delete def.include; // clean syntax sugar + } + if (def) ClassBase.inherit(func.prototype, def); + for (var i = 0; (mixin = mixins[i]); i++) { + ClassBase.mixin(func.prototype, mixin); + } + return func; + }, + mixin: function (dest, src, clobber) { + clobber = clobber || false; + if (typeof(src) != 'undefined' && src !== null) { + for (var prop in src) { + if (clobber || (!dest[prop] && typeof(src[prop]) == 'function')) { + dest[prop] = src[prop]; + } + } + } + return dest; + }, + inherit: function(dest, src, fname) { + if (arguments.length == 3) { + var ancestor = dest[fname], descendent = src[fname], method = descendent; + descendent = function() { + var ref = this.parent; this.parent = ancestor; + var result = method.apply(this, arguments); + ref ? this.parent = ref : delete this.parent; + return result; + }; + // mask the underlying method + descendent.valueOf = function() { return method; }; + descendent.toString = function() { return method.toString(); }; + dest[fname] = descendent; + } else { + for (var prop in src) { + if (dest[prop] && typeof(src[prop]) == 'function') { + ClassBase.inherit(dest, src, prop); + } else { + dest[prop] = src[prop]; + } + } + } + return dest; + }, + singleton: function() { + var args = arguments; + if (args.length == 2 && args[0].getInstance) { + var klass = args[0].getInstance(__extending); + // we're extending a singleton swap it out for it's class + if (klass) { args[0] = klass; } + } + + return (function(args){ + // store instance and class in private variables + var instance = false; + var klass = ClassBase.extend.apply(args.callee, args); + return { + getInstance: function () { + if (arguments[0] == __extending) return klass; + if (instance) return instance; + return (instance = new klass()); + } + }; + })(args); + } + }; +})(); + +// New method +ClassBase.create = function() { + return ClassBase.extend.apply(this, arguments); +}; + +function Class_createNamespace(nsAndClass) { + var nsArray = nsAndClass.split("."); + nsArray.pop(); // Remove the class name + var ns = null; + if (nsArray.length>0) { + for (var i=0;i<nsArray.length;++i) { + var name = nsArray[i]; + if (ns) { + if (ns[name]==undefined) { + ns[name] = {} + ns = ns[name]; + } + else { + ns = ns[name]; + } + } + else { + if (window[name]==undefined) { + window[name] = {} + ns = window[name]; + } + else { + ns = window[name]; + } + } + } + } + + if (ns) { + return ns; + } + else { + return window; + } +} + +function Class_getClassName(nsAndClass) { + return nsAndClass.split(".").pop(); +} + +function Class(a,b,c) { + if (typeof(a)=='object' && !b) { + return ClassBase.create(a); + } + else if (typeof(a)=='function' && typeof(b)=='object' && !c) { + return ClassBase.create(a,b); + } + else if (typeof(a)=='string' && typeof(b)=='object' && !c) { + // a es el nombre de la clase con su NS, y b es la definición + var ns = Class_createNamespace(a); + var cn = Class_getClassName(a); + b[a] = true; + ns[cn] = ClassBase.create(b); + return ns[cn]; + } + else if (typeof(a)=='string' && typeof(b)=='function' && typeof(c)=='object') { + // a es el nombre de la clase con su NS, b es el padre y c es la definición + var ns = Class_createNamespace(a); + var cn = Class_getClassName(a); + c[a] = true; + ns[cn] = ClassBase.create(b,c); + return ns[cn]; + } +} + +Class.create = function() { + return ClassBase.extend.apply(this, arguments); +} + +function dynamic_cast(type,object) { + return (object && object[type]) ? object:null; +} + +Class.fromString = function(str) { + var arr = str.split("."); + + var fn = (window || this); + for (var i = 0, len = arr.length; i < len; i++) { + fn = fn[arr[i]]; + } + + if (typeof fn !== "function") { + throw new Error("function not found"); + } + + return fn; +}; + + +/* Part 2: javascript extension */ +Array.prototype.contains = function(obj) { + var i = this.length; + while (i--) { + if (this[i] == obj) { + return true; + } + } + return false; +} + +Array.prototype.remove = function(from, to) { + var rest = this.slice((to || from) + 1 || this.length); + this.length = from < 0 ? this.length + from : from; + return this.push.apply(this, rest); +}; + +String.prototype.trim = function () { + return this.replace(/^\s*/, "").replace(/\s*$/, ""); +} + +/* Part 3: base.js library */ +var base = {}; + +Class ("base.UserAgent",{ + system:{}, + browser:{}, + + // ie11: "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko" + // ie10: + + initialize:function(userAgentString) { + if (!userAgentString) { + userAgentString = navigator.userAgent; + } + this.parseOperatingSystem(userAgentString); + this.parseBrowser(userAgentString); + }, + + parseOperatingSystem:function(userAgentString) { + this.system.MacOS = /Macintosh/.test(userAgentString); + this.system.Windows = /Windows/.test(userAgentString); + this.system.iPhone = /iPhone/.test(userAgentString); + this.system.iPodTouch = /iPod/.test(userAgentString); + this.system.iPad = /iPad/.test(userAgentString); + this.system.iOS = this.system.iPhone || this.system.iPad || this.system.iPodTouch; + this.system.Android = /Android/.test(userAgentString); + this.system.Linux = (this.system.Android) ? false:/Linux/.test(userAgentString); + + if (this.system.MacOS) { + this.system.OSName = "Mac OS X"; + this.parseMacOSVersion(userAgentString); + } + else if (this.system.Windows) { + this.system.OSName = "Windows"; + this.parseWindowsVersion(userAgentString); + } + else if (this.system.Linux) { + this.system.OSName = "Linux"; + this.parseLinuxVersion(userAgentString); + } + else if (this.system.iOS) { + this.system.OSName = "iOS"; + this.parseIOSVersion(userAgentString); + } + else if (this.system.Android) { + this.system.OSName = "Android"; + this.parseAndroidVersion(userAgentString); + } + }, + + parseBrowser:function(userAgentString) { + // Safari: Version/X.X.X Safari/XXX + // Chrome: Chrome/XX.X.XX.XX Safari/XXX + // Opera: Opera/X.XX + // Firefox: Gecko/XXXXXX Firefox/XX.XX.XX + // Explorer: MSIE X.X + this.browser.Version = {}; + this.browser.Safari = /Version\/([\d\.]+) Safari\//.test(userAgentString); + if (this.browser.Safari) { + this.browser.Name = "Safari"; + this.browser.Vendor = "Apple"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Chrome = /Chrome\/([\d\.]+) Safari\//.test(userAgentString) || + /Chrome\/([\d\.]+) Electron\//.test(userAgentString); + if (this.browser.Chrome) { + this.browser.Name = "Chrome"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Opera = /Opera\/[\d\.]+/.test(userAgentString); + if (this.browser.Opera) { + this.browser.Name = "Opera"; + this.browser.Vendor = "Opera Software"; + var versionString = /Version\/([\d\.]+)/.test(userAgentString); + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Firefox = /Gecko\/[\d\.]+ Firefox\/([\d\.]+)/.test(userAgentString); + if (this.browser.Firefox) { + this.browser.Name = "Firefox"; + this.browser.Vendor = "Mozilla Foundation"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Edge = /Edge\/(.*)/.test(userAgentString); + if (this.browser.Edge) { + var result = /Edge\/(.*)/.exec(userAgentString); + this.browser.Name = "Edge"; + this.browser.Chrome = false; + this.browser.Vendor = "Microsoft"; + this.browser.Version.versionString = result[1]; + } + + this.browser.Explorer = /MSIE ([\d\.]+)/.test(userAgentString); + if (!this.browser.Explorer) { + var re = /\Mozilla\/5.0 \(([^)]+)\) like Gecko/ + var matches = re.exec(userAgentString); + if (matches) { + re = /rv:(.*)/ + var version = re.exec(matches[1]); + this.browser.Explorer = true; + this.browser.Name = "Internet Explorer"; + this.browser.Vendor = "Microsoft"; + if (version) { + this.browser.Version.versionString = version[1]; + } + else { + this.browser.Version.versionString = "unknown"; + } + } + } + else { + this.browser.Name = "Internet Explorer"; + this.browser.Vendor = "Microsoft"; + this.browser.Version.versionString = RegExp.$1; + } + + if (this.system.iOS) { + this.browser.IsMobileVersion = true; + this.browser.MobileSafari = /Version\/([\d\.]+) Mobile/.test(userAgentString); + if (this.browser.MobileSafari) { + this.browser.Name = "Mobile Safari"; + this.browser.Vendor = "Apple"; + this.browser.Version.versionString = RegExp.$1; + } + this.browser.Android = false; + } + else if (this.system.Android) { + this.browser.IsMobileVersion = true; + this.browser.Android = /Version\/([\d\.]+) Mobile/.test(userAgentString); + if (this.browser.MobileSafari) { + this.browser.Name = "Android Browser"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + else { + this.browser.Chrome = /Chrome\/([\d\.]+)/.test(userAgentString); + this.browser.Name = "Chrome"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Safari = false; + } + else { + this.browser.IsMobileVersion = false; + } + + this.parseBrowserVersion(userAgentString); + }, + + parseBrowserVersion:function(userAgentString) { + if (/([\d]+)\.([\d]+)\.*([\d]*)/.test(this.browser.Version.versionString)) { + this.browser.Version.major = Number(RegExp.$1); + this.browser.Version.minor = Number(RegExp.$2); + this.browser.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + }, + + parseMacOSVersion:function(userAgentString) { + var versionString = (/Mac OS X (\d+_\d+_*\d*)/.test(userAgentString)) ? RegExp.$1:''; + this.system.Version = {}; + // Safari/Chrome + if (versionString!='') { + if (/(\d+)_(\d+)_*(\d*)/.test(versionString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + } + // Firefox/Opera + else { + versionString = (/Mac OS X (\d+\.\d+\.*\d*)/.test(userAgentString)) ? RegExp.$1:'Unknown'; + if (/(\d+)\.(\d+)\.*(\d*)/.test(versionString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + } + if (!this.system.Version.major) { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + } + this.system.Version.stringValue = this.system.Version.major + '.' + this.system.Version.minor + '.' + this.system.Version.revision; + switch (this.system.Version.minor) { + case 0: + this.system.Version.name = "Cheetah"; + break; + case 1: + this.system.Version.name = "Puma"; + break; + case 2: + this.system.Version.name = "Jaguar"; + break; + case 3: + this.system.Version.name = "Panther"; + break; + case 4: + this.system.Version.name = "Tiger"; + break; + case 5: + this.system.Version.name = "Leopard"; + break; + case 6: + this.system.Version.name = "Snow Leopard"; + break; + case 7: + this.system.Version.name = "Lion"; + break; + case 8: + this.system.Version.name = "Mountain Lion"; + break; + } + }, + + parseWindowsVersion:function(userAgentString) { + this.system.Version = {}; + if (/NT (\d+)\.(\d*)/.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = 0; // Solo por compatibilidad + this.system.Version.stringValue = "NT " + this.system.Version.major + "." + this.system.Version.minor; + var major = this.system.Version.major; + var minor = this.system.Version.minor; + var name = 'undefined'; + if (major==5) { + if (minor==0) this.system.Version.name = '2000'; + else this.system.Version.name = 'XP'; + } + else if (major==6) { + if (minor==0) this.system.Version.name = 'Vista'; + else if (minor==1) this.system.Version.name = '7'; + else if (minor==2) this.system.Version.name = '8'; + } + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.name = "Unknown"; + this.system.Version.stringValue = "Unknown"; + } + }, + + parseLinuxVersion:function(userAgentString) { + // Muchos navegadores no proporcionan información sobre la distribución de linux... no se puede hacer mucho más que esto + this.system.Version = {}; + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + this.system.Version.name = ""; + this.system.Version.stringValue = "Unknown distribution"; + }, + + parseIOSVersion:function(userAgentString) { + this.system.Version = {}; + if (/iPhone OS (\d+)_(\d+)_*(\d*)/i.test(userAgentString) || /iPad; CPU OS (\d+)_(\d+)_*(\d*)/i.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + this.system.Version.name = "iOS"; + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.name = "Unknown"; + this.system.Version.stringValue = "Unknown"; + } + }, + + parseAndroidVersion:function(userAgentString) { + this.system.Version = {}; + if (/Android (\d+)\.(\d+)\.*(\d*)/.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + } + if (/Build\/([a-zA-Z]+)/.test(userAgentString)) { + this.system.Version.name = RegExp.$1; + } + else { + this.system.Version.name = "Unknown version"; + } + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + }, + + getInfoString:function() { + return navigator.userAgent; + } +}); + +base.userAgent = new base.UserAgent(); + +Class ("base.TimerManager", { + timerArray:new Array(), + lastId:0, + + setupTimer:function(timer,time) { + this.lastId++; + timer.timerId = this.lastId; + timer.timeout = time; + this.timerArray[this.lastId] = timer; + timer.jsTimerId = setTimeout("timerManager.executeTimerCallback(" + this.lastId + ")",time); + }, + + executeTimerCallback:function(timerId) { + var timer = this.timerArray[timerId]; + if (timer && timer.callback) { + timer.callback(timer,timer.params); + } + if (timer.repeat) { + timer.jsTimerId = setTimeout("timerManager.executeTimerCallback(" + timer.timerId + ")",timer.timeout); + } + } +}); + +base.timerManager = new base.TimerManager(); + +Class ("base.Timer",{ + timerId:0, + callback:null, + params:null, + jsTimerId:0, + repeat:false, + timeout:0, + + initialize:function(callback,time,params) { + this.callback = callback; + this.params = params; + base.timerManager.setupTimer(this,time); + }, + + cancel:function() { + clearTimeout(this.jsTimerId); + } +}); + +// Deprecated +var TimerManager = base.TimerManager +var timerManager = base.timerManager +var Timer = base.Timer; + +base.Timer.sleep = function(milliseconds) { + var start = new Date().getTime(); + for (var i = 0; i < 1e7; i++) { + if ((new Date().getTime() - start) > milliseconds){ + break; + } + } +} + +base.cookies = { + set:function(name,value) { + document.cookie = name + "=" + value; + }, + + get:function(name) { + var i,x,y,ARRcookies=document.cookie.split(";"); + for (i=0;i<ARRcookies.length;i++) { + x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); + y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); + x=x.replace(/^\s+|\s+$/g,""); + if (x==name) { + return unescape(y); + } + } + } +}; + +base.hashParams = { + extractUrl:function() { + var urlOnly = window.location.href; + if (urlOnly.lastIndexOf('#')>=0) { + urlOnly = urlOnly.substr(0,urlOnly.lastIndexOf('#')); + } + return urlOnly; + }, + + extractParams:function() { + var params = window.location.href; + if (params.lastIndexOf('#')>=0) { + params = params.substr(window.location.href.lastIndexOf('#')); + } + else { + params = ""; + } + return params; + }, + + clear:function() { + window.location.href = this.extractUrl() + '#'; + }, + + unset:function(key) { + var url = location.href; + var lastIndex = url.lastIndexOf('#'); + var urlOnly = this.extractUrl(); + if (lastIndex>=0 && lastIndex+1<url.length) { + var newParams = ""; + var params = url.substr(url.lastIndexOf('#')+1); + params = params.split('&'); + for (var i=0;i<params.length;++i) { + var current = params[i]; + var keyValue = current.split('='); + if ((keyValue.length>=2 && keyValue[0]!=key) || keyValue.length<2) { + if (newParams=="") newParams += '#'; + else newParams += "&"; + newParams += current; + } + } + if (newParams=="") newParams = "#"; + location.href = urlOnly + newParams; + } + }, + + set:function(key,value) { + if (key && value) { + this.unset(key); + var url = this.extractUrl(); + var params = this.extractParams(); + var result = url; + if (params.length==0) { + result += '#' + key + '=' + value; + } + else if (params.length==1) { + result += params + key + '=' + value; + } + else { + result += params + "&" + key + '=' + value; + } + location.href = result; + } + }, + + get:function(key) { + var url = location.href; + var index = url.indexOf("#"); + if (index==-1) return ""; + index = url.indexOf(key,index) + key.length; + if (url.charAt(index)=="=") { + var result = url.indexOf("&",index); + if (result==-1) { + result = url.length; + } + return url.substring(index + 1, result); + } + return ""; + } +} + +base.parameters = { + list:null, + + parse:function() { + if (!this.list) { + var url = window.location.href; + this.list = {}; + + if (/(http|https|file)?:\/\/([a-z0-9.\-_\/\~:]*\?)([a-z0-9.\/\-_\%\=\&]*)\#*/i.test(url)) { + var params = RegExp.$3; + var paramArray = params.split('&'); + this.list = {}; + for (var i=0; i<paramArray.length;++i) { + var keyValue = paramArray[i].split('='); + var key = keyValue[0]; + var value = keyValue.length==2 ? keyValue[1]:''; + this.list[key] = value; + } + } + } + }, + + get:function(parameter) { + if (this.list==null) { + this.parse(); + } + return this.list[parameter]; + }, + + extractUrl:function() { + var urlOnly = base.hashParams.extractUrl(); + if (urlOnly.lastIndexOf('?')>=0) { + urlOnly = urlOnly.substr(0,urlOnly.lastIndexOf('?')); + } + return urlOnly; + }, + + extractParams:function() { + // Primero quitar los parámetros hash + var urlAndParams = base.hashParams.extractUrl(); + var params = urlAndParams; + if (params.lastIndexOf('?')>=0) { + params = params.substr(window.location.href.lastIndexOf('?')); + } + else { + params = ""; + } + return params; + }, + + // Pasa los parámetros de la URL a hash. Esta acción recargará la página + toHash:function() { + var urlOnly = this.extractUrl(); + var hashParameters = base.hashParams.extractParams(); + var parameters = this.extractParams(); + var newHashParams = ""; + var result = urlOnly; + if (parameters.length==0 || parameters.length==1) { + result += hashParameters; + } + else { + parameters = parameters.substr(1); + parameters = parameters.split('&'); + for (var i=0;i<parameters.length;++i) { + keyValue = parameters[i].split('='); + if (keyValue.length>=2 && base.hashParams.get(keyValue[0])=='') { + if (hashParameters=="" && newHashParams=="") newHashParams += '#'; + else newHashParams += '&'; + newHashParams += keyValue[0] + '=' + keyValue[1]; + } + } + result += hashParameters + newHashParams; + } + if (location.href!=result) { + location.href = result; + } + } +} + +base.require = function(libraryName) { + var script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = libraryName; + document.getElementsByTagName('head')[0].appendChild(script); +} + +base.importStylesheet = function(stylesheetFile) { + var link = document.createElement('link'); + link.setAttribute("rel","stylesheet"); + link.setAttribute("href",stylesheetFile); + link.setAttribute("type","text/css"); + link.setAttribute("media","screen"); + document.getElementsByTagName('head')[0].appendChild(link); +} + +// Deprecated +base.dom = { + createElement: function(type,params,attributes) { + if (!params) params = {}; + var elem = document.createElement(type); + if (params.className) elem.className = params.className; + if (params.id) elem.id = params.id; + if (params.style) $(elem).css(params.style); + if (params.innerHTML) elem.innerHTML = params.innerHTML; + + if (attributes) { + for (var key in attributes) { + var value = attributes[key]; + if (value===undefined) { value = "" } + if (typeof(value)=='string') { + value.trim(); + } + + elem.setAttribute(key,value); + } + } + + return elem; + }, + + fontSize:function(domElement) { + var size = {size:0,units:'px'} + var measure = $(domElement).css('font-size'); + if (/(\d+\.*\d*)(\D+)/.test(measure)) { + size.size = RegExp.$1; + size.units = RegExp.$2; + } + return size; + }, + + // Convert all measures in px into %, inside domNode. + toPercent:function(domNode) { + var baseSize = {w:$(domNode).width(),h:$(domNode).height()}; + + for (var i=0;i<domNode.children.length;++i) { + var child = domNode.children[i]; + var nodeSize = {x:$(child).position().left,y:$(child).position().top,w:$(child).width(),h:$(child).height()}; + + child.originalSize = {fontSize:this.fontSize(child)} + child.originalSize.x = nodeSize.x; + child.originalSize.y = nodeSize.y; + child.originalSize.w = nodeSize.w; + child.originalSize.h = nodeSize.h; + + nodeSize.x = nodeSize.x * 100 / baseSize.w; + nodeSize.y = nodeSize.y * 100 / baseSize.h; + nodeSize.w = nodeSize.w * 100 / baseSize.w; + nodeSize.h = nodeSize.h * 100 / baseSize.h; + child.style.left = nodeSize.x + '%'; + child.style.top = nodeSize.y + '%'; + child.style.width = nodeSize.w + '%'; + child.style.height = nodeSize.h + '%'; + //console.log(nodeSize); + } + }, + + prepareToScaleTexts:function(domNode) { + for (var i=0;i<domNode.children.length;++i) { + var child = domNode.children[i]; + var nodeSize = {x:$(child).position().left,y:$(child).position().top,w:$(child).width(),h:$(child).height()}; + + child.originalSize = {fontSize:this.fontSize(child)} + child.originalSize.x = nodeSize.x; + child.originalSize.y = nodeSize.y; + child.originalSize.w = nodeSize.w; + child.originalSize.h = nodeSize.h; + } + }, + + scaleTexts:function(domNode) { + for (var i=0;i<domNode.children.length;++i) { + var child = domNode.children[i]; + var nodeSize = {x:$(child).position().left, + y:$(child).position().top, + w:$(child).width(), + h:$(child).height()}; + + var originalSize = child.originalSize; + + if (!originalSize) { + base.log.debug("base.dom.scaleTexts(): domNode could not be scaled. Original element size not found."); + return; + } + + var scaleFactor = nodeSize.w / originalSize.w; + var fontSize = originalSize.fontSize.size * scaleFactor; + child.style.fontSize = fontSize + originalSize.fontSize.units; + } + }, + + proportionalSize: function(domElement,width,height,animate) { + var parent = domElement.parentNode; + var parentSize = {w:$(parent).width(),h:$(parent).height()}; + var parentRatio = parentSize.w/parentSize.h; + var childRatio = width / height; + var finalWidth = parentSize.w; + var finalHeight = parentSize.h; + var marginTop = ""; + + // DEBUG: coloreamos el fondo para ver que pasa + //domElement.style.backgroundColor = "blue"; + if (parentRatio>childRatio) { + finalWidth = finalHeight * childRatio; + } + else { + finalHeight = finalWidth / childRatio; + var margin = (parentSize.h - finalHeight) / 2; + marginTop = margin + "px"; + } + + if (animate) { + $(domElement).animate({'width':finalWidth + 'px','height':finalHeight + 'px',marginTop:marginTop}); + } + else { + $(domElement).css({'width':finalWidth + 'px','height':finalHeight + 'px',marginTop:marginTop}); + } + } +} + +Class ("base.Log", { + _currentLevel:0, + + initialize:function() { + var logLevelParam = base.parameters.get("logLevel"); + logLevelParam = logLevelParam ? logLevelParam:base.hashParams.get("logLevel"); + logLevelParam = logLevelParam.toLowerCase(); + switch (logLevelParam) { + case "error": + this.setLevel(base.Log.kLevelError); + break; + case "warning": + this.setLevel(base.Log.kLevelWarning); + break; + case "debug": + this.setLevel(base.Log.kLevelDebug); + break; + case "log": + this.setLevel(base.Log.kLevelLog); + break; + } + }, + + logMessage:function(level,message) { + var prefix = ""; + if (typeof(level)=="string") { + message = level; + } + else if (level>=base.Log.kLevelError && level<=base.Log.kLevelLog) { + switch (level) { + case base.Log.kLevelError: + prefix = "ERROR: "; + break; + case base.Log.kLevelWarning: + prefix = "WARNING: "; + break; + case base.Log.kLevelDebug: + prefix = "DEBUG: "; + break; + case base.Log.kLevelLog: + prefix = "LOG: "; + break; + } + } + + if (this._currentLevel>=level && console.log) { + console.log(prefix + message); + } + }, + + error:function(message) { + this.logMessage(base.Log.kLevelError, message); + }, + + warning:function(message) { + this.logMessage(base.Log.kLevelWarning, message); + }, + + debug:function(message) { + this.logMessage(base.Log.kLevelDebug, message); + }, + + log:function(message) { + this.logMessage(base.Log.kLevelLog, message); + }, + + setLevel:function(level) { + this._currentLevel = level; + } +}); + +base.Log.kLevelError = 1; +base.Log.kLevelWarning = 2; +base.Log.kLevelDebug = 3; +base.Log.kLevelLog = 4; + +base.log = new base.Log(); + +// Deprecated +base.debug = { + log:function(message) { + base.log.warning("Use of deprecated function base.debug.log()"); + base.log.debug(message); + } +} + +// This class requires jquery +base.ajax = { + // onSuccess/onFail(data,type,returnCode,rawData) + send:function(type,params,onSuccess,onFail) { + this.assertParams(params); + + var ajaxObj = jQuery.ajax({ + url:params.url, + data:params.params, + type:type + }); + + if (typeof(onSuccess)=='function') { + ajaxObj.done(function(data,textStatus,jqXHR) { + var contentType = jqXHR.getResponseHeader('content-type') + onSuccess(data,contentType,jqXHR.status,jqXHR.responseText); + }); + } + + if (typeof(onFail)=='function') { + ajaxObj.fail(function(jqXHR,textStatus,error) { + onFail(textStatus + ' : ' + error,'text/plain',jqXHR.status,jqXHR.responseText); + }); + } + }, + + assertParams:function(params) { + if (!params.url) throw new Error("base.ajax.send: url parameter not found"); + if (!params.params) params.params = {} + } +} + +base.ajax["get"] = function(params,onSuccess,onFail) { + base.ajax.send('get',params,onSuccess,onFail); +} + +base.ajax["post"] = function(params,onSuccess,onFail) { + base.ajax.send('post',params,onSuccess,onFail); +} + +base.ajax["put"] = function(params,onSuccess,onFail) { + base.ajax.send('put',params,onSuccess,onFail); +} + +base.ajax["delete"] = function(params,onSuccess,onFail) { + base.ajax.send('delete',params,onSuccess,onFail); +} + +Class ("base.AsyncLoaderCallback", { + name:"", + prevCb:null, + nextCb:null, + loader:null, + + initialize:function(name) { + this.name = name; + }, + + load:function(onSuccess,onError) { + base.debug.log("loading " + this.name); + onSuccess(); + // If error: onError() + } +}); + +Class ("base.AjaxCallback", base.AsyncLoaderCallback,{ + params:null, + type:'get', + + data:null, + mimeType:null, + statusCode:null, + rawData:null, + + getParams:function() { + return this.params; + }, + + willLoad:function(callback) { + + }, + + didLoadSuccess:function(callback) { + return true; + }, + + didLoadFail:function(callback) { + return false; + }, + + initialize:function(params,type) { + this.name = "ajaxCallback"; + if (type) this.type = type; + if (typeof(params)=='string') this.params = {url:params} + else if (typeof(params)=='object') this.params = params; + else this.params = {} + }, + + load:function(onSuccess,onError) { + var This = this; + if (typeof(this.willLoad)=='function') this.willLoad(this); + base.ajax.send(this.type,this.getParams(), + function(data,type,code,rawData) { + var status = true; + This.data = data; + This.mimeType = type; + This.statusCode = code; + This.rawData = rawData; + if (typeof(This.didLoadSuccess)=='function') status = This.didLoadSuccess(This); + if (status) onSuccess(); + else onError(); + }, + function(data,type,code,rawData) { + var status = false; + This.data = data; + This.mimeType = type; + This.statusCode = code; + This.rawData = rawData; + if (typeof(This.didLoadFail)=='function') status = This.didLoadFail(This); + if (status) onSuccess(); + else onError(); + }); + } +}); + +Class ("base.JSONCallback", base.AjaxCallback, { + initialize:function(params,type) { this.parent(params,type); }, + + didLoadSuccess:function(callback) { + if (typeof(callback.data)=='object') return true; + + try { + callback.data = JSON.parse(callback.data); + return true; + } + catch (e) { + callback.data = {error:"Unexpected data format",data:callback.data} + return false; + } + } +}); + +Class ("base.DictionaryCallback", base.AjaxCallback,{ + initialize:function(dictionaryUrl) { this.parent({url:dictionaryUrl}); }, + + getParams:function() { + var lang = base.dictionary.currentLanguage(); + this.params.url = this.params.url + '_' + lang + '.json'; + return this.params; + }, + + didLoadSuccess:function(callback) { + if (typeof(callback.data)=="string") { + try { + callback.data = JSON.parse(callback.data); + } + catch (e) { + return false; + } + } + base.dictionary.addDictionary(callback.data); + return true; + }, + + didLoadFail:function(callback) { + return true; + } +}) + +Class ("base.AsyncLoader", { + firstCb:null, + lastCb:null, + callbackArray:null, + generatedId:0, + + continueOnError:false, + errorCallbacks:null, + + currentCb:null, + + clearError:function() { + this.errorCallbacks = []; + }, + + initialize:function() { + this.callbackArray = {}; + this.errorCallbacks = []; + this.generatedId = 0; + }, + + addCallback:function(cb,name) { + if (!name) { + name = "callback_" + this.generatedId++; + } + cb.__cbName__ = name; + this.callbackArray[name] = cb; + if (!this.firstCb) { + this.firstCb = cb; + this.currentCb = cb; + } + cb.prevCb = this.lastCb; + if (this.lastCb) this.lastCb.nextCb = cb; + this.lastCb = cb; + cb.loader = this; + return cb; + }, + + getCallback:function(name) { + return this.callbackArray[name]; + }, + + load:function(onSuccess,onError) { + var This = this; + if (this.currentCb) { + this.currentCb.load(function() { + This.onComplete(This.currentCb,This.currentCb.__cbName__,true); + This.currentCb = This.currentCb.nextCb; + This.load(onSuccess,onError); + }, + function() { + This.onComplete(This.currentCb,This.currentCb.__cbName__,false); + if (This.continueOnError) { + This.errorCallbacks.push(This.currentCb); + This.currentCb = This.currentCb.nextCb; + This.load(onSuccess,onError); + } + else if (typeof(onError)=='function') { + onError(); + } + }); + } + else if (typeof(onSuccess)=='function') { + onSuccess(); + } + }, + + onComplete:function(callback,cbName,status) { + + } +}); + +Class ("base.Dictionary", { + dictionary:{}, + + initialize:function() { + + }, + + addDictionary:function(dict) { + for (var key in dict) { + this.dictionary[key] = dict[key]; + } + }, + + translate:function(key) { + var value = base.dictionary.dictionary[key]; + if (value) return value; + else return key; + }, + + currentLanguage:function() { + var lang = navigator.language || window.navigator.userLanguage; + return lang.substr(0, 2).toLowerCase(); + } +}); + +base.dictionary = new base.Dictionary(); + +base.types = { + parseNumber:function(num) { + return parseFloat(num); + }, + + parseBoolean:function(num) { + return /^true$/i.test(num) || /^1$/i.test(num) || /^yes$/.test(num); + }, + + parseDictionary:function(num) { + try { + return JSON.parse(num); + } + catch (e) { + return null; + } + } +} + +base.uuid = function() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0,v=c=='x'?r:r&0x3|0x8;return v.toString(16);}); +} + +base.imgBase64 = function(url) { + var img = new Image(); + img.onload = function(event) { + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + canvas.width = event.srcElement.width; + canvas.height = event.srcElement.height; + ctx.drawImage(event.srcElement,0,0); + var dataUrl = canvas.toDataURL('image/png'); + event.srcElement.onload = null; + event.srcElement.src = dataUrl; + canvas = null; + }; + img.src = url; + return img; +} diff --git a/src/main/webapp/static/js/paella/player/javascript/bg2e-es2015.js b/src/main/webapp/static/js/paella/player/javascript/bg2e-es2015.js new file mode 100644 index 0000000000000000000000000000000000000000..4d60ed46d8f40a1fc9e1d6d9f905e456524aa391 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/bg2e-es2015.js @@ -0,0 +1,18394 @@ + +const bg = {}; +bg.version = "1.3.31 - build: 2e48aa1"; +bg.utils = {}; + +Reflect.defineProperty = Reflect.defineProperty || Object.defineProperty; + +(function(win) { + win.requestAnimFrame = (function() { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(callback,element) { window.setTimeout(callback,1000/60); }; + })(); + + bg.utils.initWebGLContext = function(canvas) { + let context = { + gl:null, + supported:false, + experimental:false + } + try { + context.gl = canvas.getContext("webgl",{ preserveDrawingBuffer:true }); + context.supported = context.gl!=null; + } + catch (e) { + context.supported = false; + } + + if (!context.supported) { + try { + context.gl = canvas.getContext("experimental-webgl", { preserveDrawingBuffer:true }); + context.supported = context.gl!=null; + context.experimental = true; + } + catch(e) { + } + } + + if (context) { + context.gl.uuid = Symbol(context.gl); + } + return context; + }; + + bg.utils.isBigEndian = function() { + let arr32 = new Uint32Array(1); + var arr8 = new Uint8Array(arr32.buffer); + arr32[0] = 255; + return arr32[3]==255; + }; + + bg.utils.isLittleEndian = function() { + let arr32 = new Uint32Array(1); + var arr8 = new Uint8Array(arr32.buffer); + arr32[0] = 255; + return arr32[0]==255; + }; + + class UserAgent { + + constructor(userAgentString) { + this.system = {}; + this.browser = {}; + + if (!userAgentString) { + userAgentString = navigator.userAgent; + } + this.parseOperatingSystem(userAgentString); + this.parseBrowser(userAgentString); + } + + parseOperatingSystem(userAgentString) { + this.system.OSX = /Macintosh/.test(userAgentString); + this.system.Windows = /Windows/.test(userAgentString); + this.system.iPhone = /iPhone/.test(userAgentString); + this.system.iPodTouch = /iPod/.test(userAgentString); + this.system.iPad = /iPad/.test(userAgentString); + this.system.iOS = this.system.iPhone || this.system.iPad || this.system.iPodTouch; + this.system.Android = /Android/.test(userAgentString); + this.system.Linux = (this.system.Android) ? false:/Linux/.test(userAgentString); + + if (this.system.OSX) { + this.system.OSName = "OS X"; + this.parseOSXVersion(userAgentString); + } + else if (this.system.Windows) { + this.system.OSName = "Windows"; + this.parseWindowsVersion(userAgentString); + } + else if (this.system.Linux) { + this.system.OSName = "Linux"; + this.parseLinuxVersion(userAgentString); + } + else if (this.system.iOS) { + this.system.OSName = "iOS"; + this.parseIOSVersion(userAgentString); + } + else if (this.system.Android) { + this.system.OSName = "Android"; + this.parseAndroidVersion(userAgentString); + } + } + + parseBrowser(userAgentString) { + // Safari: Version/X.X.X Safari/XXX + // Chrome: Chrome/XX.X.XX.XX Safari/XXX + // Opera: Opera/X.XX + // Firefox: Gecko/XXXXXX Firefox/XX.XX.XX + // Explorer: MSIE X.X + this.browser.Version = {}; + this.browser.Safari = /Version\/([\d\.]+) Safari\//.test(userAgentString); + if (this.browser.Safari) { + this.browser.Name = "Safari"; + this.browser.Vendor = "Apple"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Chrome = /Chrome\/([\d\.]+) Safari\//.test(userAgentString); + if (this.browser.Chrome) { + this.browser.Name = "Chrome"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Opera = /Opera\/[\d\.]+/.test(userAgentString); + if (this.browser.Opera) { + this.browser.Name = "Opera"; + this.browser.Vendor = "Opera Software"; + var versionString = /Version\/([\d\.]+)/.test(userAgentString); + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Firefox = /Gecko\/[\d\.]+ Firefox\/([\d\.]+)/.test(userAgentString); + if (this.browser.Firefox) { + this.browser.Name = "Firefox"; + this.browser.Vendor = "Mozilla Foundation"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Edge = /Edge\/(.*)/.test(userAgentString); + if (this.browser.Edge) { + var result = /Edge\/(.*)/.exec(userAgentString); + this.browser.Name = "Edge"; + this.browser.Chrome = false; + this.browser.Vendor = "Microsoft"; + this.browser.Version.versionString = result[1]; + } + + this.browser.Explorer = /MSIE ([\d\.]+)/.test(userAgentString); + if (!this.browser.Explorer) { + var re = /\Mozilla\/5.0 \(([^)]+)\) like Gecko/ + var matches = re.exec(userAgentString); + if (matches) { + re = /rv:(.*)/ + var version = re.exec(matches[1]); + this.browser.Explorer = true; + this.browser.Name = "Internet Explorer"; + this.browser.Vendor = "Microsoft"; + if (version) { + this.browser.Version.versionString = version[1]; + } + else { + this.browser.Version.versionString = "unknown"; + } + } + } + else { + this.browser.Name = "Internet Explorer"; + this.browser.Vendor = "Microsoft"; + this.browser.Version.versionString = RegExp.$1; + } + + if (this.system.iOS) { + this.browser.IsMobileVersion = true; + this.browser.MobileSafari = /Version\/([\d\.]+) Mobile/.test(userAgentString); + if (this.browser.MobileSafari) { + this.browser.Name = "Mobile Safari"; + this.browser.Vendor = "Apple"; + this.browser.Version.versionString = RegExp.$1; + } + this.browser.Android = false; + } + else if (this.system.Android) { + this.browser.IsMobileVersion = true; + this.browser.Android = /Version\/([\d\.]+) Mobile/.test(userAgentString); + if (this.browser.MobileSafari) { + this.browser.Name = "Android Browser"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + else { + this.browser.Chrome = /Chrome\/([\d\.]+)/.test(userAgentString); + this.browser.Name = "Chrome"; + this.browser.Vendor = "Google"; + this.browser.Version.versionString = RegExp.$1; + } + + this.browser.Safari = false; + } + else { + this.browser.IsMobileVersion = false; + } + + this.parseBrowserVersion(userAgentString); + } + + parseBrowserVersion(userAgentString) { + if (/([\d]+)\.([\d]+)\.*([\d]*)/.test(this.browser.Version.versionString)) { + this.browser.Version.major = Number(RegExp.$1); + this.browser.Version.minor = Number(RegExp.$2); + this.browser.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + } + + parseOSXVersion(userAgentString) { + var versionString = (/Mac OS X (\d+_\d+_*\d*)/.test(userAgentString)) ? RegExp.$1:''; + this.system.Version = {}; + // Safari/Chrome + if (versionString!='') { + if (/(\d+)_(\d+)_*(\d*)/.test(versionString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + } + // Firefox/Opera + else { + versionString = (/Mac OS X (\d+\.\d+\.*\d*)/.test(userAgentString)) ? RegExp.$1:'Unknown'; + if (/(\d+)\.(\d+)\.*(\d*)/.test(versionString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + } + } + if (!this.system.Version.major) { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + } + this.system.Version.stringValue = this.system.Version.major + '.' + this.system.Version.minor + '.' + this.system.Version.revision; + switch (this.system.Version.minor) { + case 0: + this.system.Version.name = "Cheetah"; + break; + case 1: + this.system.Version.name = "Puma"; + break; + case 2: + this.system.Version.name = "Jaguar"; + break; + case 3: + this.system.Version.name = "Panther"; + break; + case 4: + this.system.Version.name = "Tiger"; + break; + case 5: + this.system.Version.name = "Leopard"; + break; + case 6: + this.system.Version.name = "Snow Leopard"; + break; + case 7: + this.system.Version.name = "Lion"; + break; + case 8: + this.system.Version.name = "Mountain Lion"; + break; + } + } + + parseWindowsVersion(userAgentString) { + this.system.Version = {}; + if (/NT (\d+)\.(\d*)/.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = 0; // Solo por compatibilidad + this.system.Version.stringValue = "NT " + this.system.Version.major + "." + this.system.Version.minor; + var major = this.system.Version.major; + var minor = this.system.Version.minor; + var name = 'undefined'; + if (major==5) { + if (minor==0) this.system.Version.name = '2000'; + else this.system.Version.name = 'XP'; + } + else if (major==6) { + if (minor==0) this.system.Version.name = 'Vista'; + else if (minor==1) this.system.Version.name = '7'; + else if (minor==2) this.system.Version.name = '8'; + } + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.name = "Unknown"; + this.system.Version.stringValue = "Unknown"; + } + } + + parseLinuxVersion(userAgentString) { + this.system.Version = {}; + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + this.system.Version.name = ""; + this.system.Version.stringValue = "Unknown distribution"; + } + + parseIOSVersion(userAgentString) { + this.system.Version = {}; + if (/iPhone OS (\d+)_(\d+)_*(\d*)/i.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + this.system.Version.name = "iOS"; + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.name = "Unknown"; + this.system.Version.stringValue = "Unknown"; + } + } + + parseAndroidVersion(userAgentString) { + this.system.Version = {}; + if (/Android (\d+)\.(\d+)\.*(\d*)/.test(userAgentString)) { + this.system.Version.major = Number(RegExp.$1); + this.system.Version.minor = Number(RegExp.$2); + this.system.Version.revision = (RegExp.$3) ? Number(RegExp.$3):0; + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + } + else { + this.system.Version.major = 0; + this.system.Version.minor = 0; + this.system.Version.revision = 0; + } + if (/Build\/([a-zA-Z]+)/.test(userAgentString)) { + this.system.Version.name = RegExp.$1; + } + else { + this.system.Version.name = "Unknown version"; + } + this.system.Version.stringValue = this.system.Version.major + "." + this.system.Version.minor + '.' + this.system.Version.revision; + } + + getInfoString() { + return navigator.userAgent; + } + } + + bg.utils.UserAgent = UserAgent; + bg.utils.userAgent = new UserAgent(); + + class Path { + get sep() { return "/"; } + + join(a,b) { + if (a.lastIndexOf(this.sep)!=a.length-1) { + return a + this.sep + b; + } + else { + return a + b; + } + } + + extension(path) { + return path.split(".").pop(); + } + + fileName(path) { + return path.split(this.sep).pop(); + } + + removeFileName(path) { + let result = path.split(this.sep); + result.pop(); + return result.join(this.sep); + } + } + + bg.utils.Path = Path; + bg.utils.path = new Path(); +})(window); + +(function() { + let s_preventImageDump = []; + let s_preventVideoDump = []; + + class ResourceProvider { + getRequest(url,onSuccess,onFail,onProgress) {} + loadImage(url,onSucces,onFail) {} + loadVideo(url,onSuccess,onFail) {} + } + + let g_videoLoaders = {}; + g_videoLoaders["mp4"] = function(url,onSuccess,onFail) { + var video = document.createElement('video'); + s_preventVideoDump.push(video); + video.crossOrigin = ""; + video.autoplay = true; + video.setAttribute("playsinline",null); + video.addEventListener('canplay',(evt) => { + let videoIndex = s_preventVideoDump.indexOf(evt.target); + if (videoIndex!=-1) { + s_preventVideoDump.splice(videoIndex,1); + } + onSuccess(event.target); + }); + video.addEventListener("error",(evt) => { + onFail(new Error(`Error loading video: ${url}`)); + }); + video.addEventListener("abort",(evt) => { + onFail(new Error(`Error loading video: ${url}`)); + }); + video.src = url; + } + g_videoLoaders["m4v"] = g_videoLoaders["mp4"]; + + class HTTPResourceProvider extends ResourceProvider { + static AddVideoLoader(type,callback) { + g_videoLoaders[type] = callback; + } + + static GetVideoLoaderForType(type) { + return g_videoLoaders[type]; + } + + static GetCompatibleVideoFormats() { + return Object.keys(g_videoLoaders); + } + + static IsVideoCompatible(videoUrl) { + let ext = Resource.GetExtension(videoUrl); + return bg.utils.HTTPResourceProvider.GetCompatibleVideoFormats().indexOf(ext)!=-1; + } + + getRequest(url,onSuccess,onFail,onProgress) { + var req = new XMLHttpRequest(); + if (!onProgress) { + onProgress = function(progress) { + console.log(`Loading ${ progress.file }: ${ progress.loaded / progress.total * 100 } %`); + } + } + req.open("GET",url,true); + req.addEventListener("load", function() { + if (req.status===200) { + onSuccess(req); + } + else { + onFail(new Error(`Error receiving data: ${req.status}, url: ${url}`)); + } + }, false); + req.addEventListener("error", function() { + onFail(new Error(`Cannot make AJAX request. Url: ${url}`)); + }, false); + req.addEventListener("progress", function(evt) { + onProgress({ file:url, loaded:evt.loaded, total:evt.total }); + }, false); + return req; + } + + loadImage(url,onSuccess,onFail) { + var img = new Image(); + s_preventImageDump.push(img); + img.crossOrigin = ""; + img.addEventListener("load",function(event) { + let imageIndex = s_preventImageDump.indexOf(event.target); + if (imageIndex!=-1) { + s_preventImageDump.splice(imageIndex,1); + } + onSuccess(event.target); + }); + img.addEventListener("error",function(event) { + onFail(new Error(`Error loading image: ${url}`)); + }); + img.addEventListener("abort",function(event) { + onFail(new Error(`Image load aborted: ${url}`)); + }); + img.src = url + '?' + bg.utils.generateUUID(); + } + + loadVideo(url,onSuccess,onFail) { + let ext = Resource.GetExtension(url); + let loader = bg.utils.HTTPResourceProvider.GetVideoLoaderForType(ext); + if (loader) { + loader.apply(this,[url,onSuccess,onFail]); + } + else { + onFail(new Error(`Could not find video loader for resource: ${ url }`)); + } + } + } + + bg.utils.ResourceProvider = ResourceProvider; + bg.utils.HTTPResourceProvider = HTTPResourceProvider; + + let g_resourceProvider = new HTTPResourceProvider(); + + class Resource { + static SetResourceProvider(provider) { + g_resourceProvider = provider; + } + + static GetResourceProvider() { + return g_resourceProvider; + } + + static GetExtension(url) { + let match = /\.([a-z0-9-_]*)$/i.exec(url); + return (match && match[1].toLowerCase()) || ""; + } + + static JoinUrl(url,path) { + if (url.length==0) return path; + if (path.length==0) return url; + return /\/$/.test(url) ? url + path : url + "/" + path; + } + + static IsFormat(url,formats) { + return formats.find(function(fmt) { + return fmt==this; + },Resource.GetExtension(url))!=null; + } + + static IsImage(url) { + return Resource.IsFormat(url,["jpg","jpeg","gif","png"]); + } + + static IsBinary(url,binaryFormats = ["vwglb","bg2"]) { + return Resource.IsFormat(url,binaryFormats); + } + + static IsVideo(url,videoFormats = ["mp4","m4v","ogg","ogv","m3u8","webm"]) { + return Resource.IsFormat(url,videoFormats); + } + + static LoadMultiple(urlArray,onProgress) { + let progressFiles = {} + + let progressFunc = function(progress) { + progressFiles[progress.file] = progress; + let total = 0; + let loaded = 0; + for (let key in progressFiles) { + let file = progressFiles[key]; + total += file.total; + loaded += file.loaded; + } + if (onProgress) { + onProgress({ fileList:urlArray, total:total, loaded:loaded }); + } + else { + console.log(`Loading ${ Object.keys(progressFiles).length } files: ${ loaded / total * 100}% completed`); + } + } + + let resources = []; + urlArray.forEach(function(url) { + resources.push(Resource.Load(url,progressFunc)); + }); + + let resolvingPromises = resources.map(function(promise) { + return new Promise(function(resolve) { + let payload = new Array(2); + promise.then(function(result) { + payload[0] = result; + }) + .catch(function(error) { + payload[1] = error; + }) + .then(function() { + resolve(payload); + }); + }); + }); + + let errors = []; + let results = []; + + return Promise.all(resolvingPromises) + .then(function(loadedData) { + let result = {}; + urlArray.forEach(function(url,index) { + let pl = loadedData[index]; + result[url] = pl[1] ? null : pl[0]; + }); + return result; + }); + } + + static Load(url,onProgress) { + let loader = null; + switch (true) { + case url.constructor===Array: + loader = Resource.LoadMultiple; + break; + case Resource.IsImage(url): + loader = Resource.LoadImage; + break; + case Resource.IsBinary(url): + loader = Resource.LoadBinary; + break; + case Resource.IsVideo(url): + loader = Resource.LoadVideo; + break; + case Resource.GetExtension(url)=='json': + loader = Resource.LoadJson; + break; + default: + loader = Resource.LoadText; + } + return loader(url,onProgress); + } + + static LoadText(url,onProgress) { + return new Promise(function(resolve,reject) { + g_resourceProvider.getRequest(url, + function(req) { + resolve(req.responseText); + }, + function(error) { + reject(error); + },onProgress).send(); + }); + } + + static LoadVideo(url,onProgress) { + return new Promise(function(resolve,reject) { + g_resourceProvider.loadVideo( + url, + (target) => { + resolve(target); + bg.emitImageLoadEvent(target); + }, + (err) => { + reject(err); + } + ); + }); + } + + static LoadBinary(url,onProgress) { + return new Promise(function(resolve,reject) { + var req = g_resourceProvider.getRequest(url, + function(req) { + resolve(req.response); + }, + function(error) { + reject(error); + },onProgress); + req.responseType = "arraybuffer"; + req.send(); + }); + } + + static LoadImage(url) { + return new Promise(function(resolve,reject) { + g_resourceProvider.loadImage( + url, + (target) => { + resolve(target); + bg.emitImageLoadEvent(target); + }, + (err) => { + reject(err); + } + ); + }); + } + + static LoadJson(url) { + return new Promise(function(resolve,reject) { + g_resourceProvider.getRequest(url, + function(req) { + try { + resolve(JSON.parse(req.responseText)); + } + catch(e) { + reject(new Error("Error parsing JSON data")); + } + }, + function(error) { + reject(error); + }).send(); + }); + } + } + + bg.utils.Resource = Resource; + + bg.utils.requireGlobal = function(src) { + let s = document.createElement('script'); + s.src = src; + s.type = "text/javascript"; + s.async = false; + document.getElementsByTagName('head')[0].appendChild(s); + } + +})(); +(function() { + let s_Engine = null; + + class Engine { + static Set(engine) { + s_Engine = engine; + } + + static Get() { + return s_Engine; + } + + get id() { return this._engineId; } + + get texture() { return this._texture; } + get pipeline() { return this._pipeline; } + get polyList() { return this._polyList; } + get shader() { return this._shader; } + get colorBuffer() { return this._colorBuffer; } + get textureBuffer() { return this._textureBuffer; } + get shaderSource() { return this._shaderSource; } + } + + bg.Engine = Engine; +})(); +(function() { + + class LifeCycle { + init() {} + frame(delta) {} + + displayGizmo(pipeline,matrixState) {} + + ////// Direct rendering methods: will be deprecated soon + willDisplay(pipeline,matrixState) {} + display(pipeline,matrixState,forceDraw=false) {} + didDisplay(pipeline,matrixState) {} + ////// End direct rendering methods + + ////// Render queue methods + willUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) {} + draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack) {} + didUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) {} + ////// End render queue methods + + reshape(pipeline,matrixState,width,height) {} + keyDown(evt) {} + keyUp(evt) {} + mouseUp(evt) {} + mouseDown(evt) {} + mouseMove(evt) {} + mouseOut(evt) {} + mouseDrag(evt) {} + mouseWheel(evt) {} + touchStart(evt) {} + touchMove(evt) {} + touchEnd(evt) {} + + // Utility functions: do not override + // 4 frames to ensure that the reflections are fully updated + postRedisplay(frames=4) { + bg.app.MainLoop.singleton.postRedisplay(frames); + } + + postReshape() { + bg.app.MainLoop.singleton.postReshape(); + } + } + + bg.LifeCycle = LifeCycle; + +})(); +// https://github.com/xibre/FastMD5 +(function() { + !function(r){function n(r){for(var n="",t="",o=0,e=0,a=0,i=r.length;i>a;a++){var f=r.charCodeAt(a);128>f?e++:(t=2048>f?String.fromCharCode(f>>6|192,63&f|128):String.fromCharCode(f>>12|224,f>>6&63|128,63&f|128),e>o&&(n+=r.slice(o,e)),n+=t,o=e=a+1)}return e>o&&(n+=r.slice(o,i)),n}function t(r){var n,t;if(r+="",s=!1,v=w=r.length,w>63){for(o(r.substring(0,64)),i(A),s=!0,n=128;w>=n;n+=64)o(r.substring(n-64,n)),f(A);r=r.substring(n-64),w=r.length}for(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,n=0;w>n;n++)t=3&n,0===t?d[n>>2]=r.charCodeAt(n):d[n>>2]|=r.charCodeAt(n)<<C[t];return d[n>>2]|=h[3&n],n>55?(s?f(d):(i(d),s=!0),f([0,0,0,0,0,0,0,0,0,0,0,0,0,0,v<<3,0])):(d[14]=v<<3,void(s?f(d):i(d)))}function o(r){for(var n=16;n--;){var t=n<<2;A[n]=r.charCodeAt(t)+(r.charCodeAt(t+1)<<8)+(r.charCodeAt(t+2)<<16)+(r.charCodeAt(t+3)<<24)}}function e(r,o,e){t(o?r:n(r));var a=g[0];return u[1]=l[15&a],u[0]=l[15&(a>>=4)],u[3]=l[15&(a>>=4)],u[2]=l[15&(a>>=4)],u[5]=l[15&(a>>=4)],u[4]=l[15&(a>>=4)],u[7]=l[15&(a>>=4)],u[6]=l[15&(a>>=4)],a=g[1],u[9]=l[15&a],u[8]=l[15&(a>>=4)],u[11]=l[15&(a>>=4)],u[10]=l[15&(a>>=4)],u[13]=l[15&(a>>=4)],u[12]=l[15&(a>>=4)],u[15]=l[15&(a>>=4)],u[14]=l[15&(a>>=4)],a=g[2],u[17]=l[15&a],u[16]=l[15&(a>>=4)],u[19]=l[15&(a>>=4)],u[18]=l[15&(a>>=4)],u[21]=l[15&(a>>=4)],u[20]=l[15&(a>>=4)],u[23]=l[15&(a>>=4)],u[22]=l[15&(a>>=4)],a=g[3],u[25]=l[15&a],u[24]=l[15&(a>>=4)],u[27]=l[15&(a>>=4)],u[26]=l[15&(a>>=4)],u[29]=l[15&(a>>=4)],u[28]=l[15&(a>>=4)],u[31]=l[15&(a>>=4)],u[30]=l[15&(a>>=4)],e?u:u.join("")}function a(r,n,t,o,e,a,i){return n+=r+o+i,(n<<e|n>>>a)+t<<0}function i(r){c(0,0,0,0,r),g[0]=y[0]+1732584193<<0,g[1]=y[1]-271733879<<0,g[2]=y[2]-1732584194<<0,g[3]=y[3]+271733878<<0}function f(r){c(g[0],g[1],g[2],g[3],r),g[0]=y[0]+g[0]<<0,g[1]=y[1]+g[1]<<0,g[2]=y[2]+g[2]<<0,g[3]=y[3]+g[3]<<0}function c(r,n,t,o,e){var i,f;s?(r=a((t^o)&n^o,r,n,e[0],7,25,-680876936),o=a((n^t)&r^t,o,r,e[1],12,20,-389564586),t=a((r^n)&o^n,t,o,e[2],17,15,606105819),n=a((o^r)&t^r,n,t,e[3],22,10,-1044525330)):(r=e[0]-680876937,r=(r<<7|r>>>25)-271733879<<0,o=e[1]-117830708+(2004318071&r^-1732584194),o=(o<<12|o>>>20)+r<<0,t=e[2]-1126478375+((-271733879^r)&o^-271733879),t=(t<<17|t>>>15)+o<<0,n=e[3]-1316259209+((o^r)&t^r),n=(n<<22|n>>>10)+t<<0),r=a((t^o)&n^o,r,n,e[4],7,25,-176418897),o=a((n^t)&r^t,o,r,e[5],12,20,1200080426),t=a((r^n)&o^n,t,o,e[6],17,15,-1473231341),n=a((o^r)&t^r,n,t,e[7],22,10,-45705983),r=a((t^o)&n^o,r,n,e[8],7,25,1770035416),o=a((n^t)&r^t,o,r,e[9],12,20,-1958414417),t=a((r^n)&o^n,t,o,e[10],17,15,-42063),n=a((o^r)&t^r,n,t,e[11],22,10,-1990404162),r=a((t^o)&n^o,r,n,e[12],7,25,1804603682),o=a((n^t)&r^t,o,r,e[13],12,20,-40341101),t=a((r^n)&o^n,t,o,e[14],17,15,-1502002290),n=a((o^r)&t^r,n,t,e[15],22,10,1236535329),r=a((n^t)&o^t,r,n,e[1],5,27,-165796510),o=a((r^n)&t^n,o,r,e[6],9,23,-1069501632),t=a((o^r)&n^r,t,o,e[11],14,18,643717713),n=a((t^o)&r^o,n,t,e[0],20,12,-373897302),r=a((n^t)&o^t,r,n,e[5],5,27,-701558691),o=a((r^n)&t^n,o,r,e[10],9,23,38016083),t=a((o^r)&n^r,t,o,e[15],14,18,-660478335),n=a((t^o)&r^o,n,t,e[4],20,12,-405537848),r=a((n^t)&o^t,r,n,e[9],5,27,568446438),o=a((r^n)&t^n,o,r,e[14],9,23,-1019803690),t=a((o^r)&n^r,t,o,e[3],14,18,-187363961),n=a((t^o)&r^o,n,t,e[8],20,12,1163531501),r=a((n^t)&o^t,r,n,e[13],5,27,-1444681467),o=a((r^n)&t^n,o,r,e[2],9,23,-51403784),t=a((o^r)&n^r,t,o,e[7],14,18,1735328473),n=a((t^o)&r^o,n,t,e[12],20,12,-1926607734),i=n^t,r=a(i^o,r,n,e[5],4,28,-378558),o=a(i^r,o,r,e[8],11,21,-2022574463),f=o^r,t=a(f^n,t,o,e[11],16,16,1839030562),n=a(f^t,n,t,e[14],23,9,-35309556),i=n^t,r=a(i^o,r,n,e[1],4,28,-1530992060),o=a(i^r,o,r,e[4],11,21,1272893353),f=o^r,t=a(f^n,t,o,e[7],16,16,-155497632),n=a(f^t,n,t,e[10],23,9,-1094730640),i=n^t,r=a(i^o,r,n,e[13],4,28,681279174),o=a(i^r,o,r,e[0],11,21,-358537222),f=o^r,t=a(f^n,t,o,e[3],16,16,-722521979),n=a(f^t,n,t,e[6],23,9,76029189),i=n^t,r=a(i^o,r,n,e[9],4,28,-640364487),o=a(i^r,o,r,e[12],11,21,-421815835),f=o^r,t=a(f^n,t,o,e[15],16,16,530742520),n=a(f^t,n,t,e[2],23,9,-995338651),r=a(t^(n|~o),r,n,e[0],6,26,-198630844),o=a(n^(r|~t),o,r,e[7],10,22,1126891415),t=a(r^(o|~n),t,o,e[14],15,17,-1416354905),n=a(o^(t|~r),n,t,e[5],21,11,-57434055),r=a(t^(n|~o),r,n,e[12],6,26,1700485571),o=a(n^(r|~t),o,r,e[3],10,22,-1894986606),t=a(r^(o|~n),t,o,e[10],15,17,-1051523),n=a(o^(t|~r),n,t,e[1],21,11,-2054922799),r=a(t^(n|~o),r,n,e[8],6,26,1873313359),o=a(n^(r|~t),o,r,e[15],10,22,-30611744),t=a(r^(o|~n),t,o,e[6],15,17,-1560198380),n=a(o^(t|~r),n,t,e[13],21,11,1309151649),r=a(t^(n|~o),r,n,e[4],6,26,-145523070),o=a(n^(r|~t),o,r,e[11],10,22,-1120210379),t=a(r^(o|~n),t,o,e[2],15,17,718787259),n=a(o^(t|~r),n,t,e[9],21,11,-343485551),y[0]=r,y[1]=n,y[2]=t,y[3]=o}var u=[],d=[],A=[],h=[],l="0123456789abcdef".split(""),C=[],g=[],s=!1,v=0,w=0,y=[];if(r.Int32Array)d=new Int32Array(16),A=new Int32Array(16),h=new Int32Array(4),C=new Int32Array(4),g=new Int32Array(4),y=new Int32Array(4);else{var I;for(I=0;16>I;I++)d[I]=A[I]=0;for(I=0;4>I;I++)h[I]=C[I]=g[I]=y[I]=0}h[0]=128,h[1]=32768,h[2]=8388608,h[3]=-2147483648,C[0]=0,C[1]=8,C[2]=16,C[3]=24,r.md5=r.md5||e}("undefined"==typeof global?window:global); + + bg.utils.md5 = md5; +})(); + +(function() { + function generateUUID () { // Public Domain/MIT + var d = new Date().getTime(); + if (typeof performance !== 'undefined' && typeof performance.now === 'function'){ + d += performance.now(); //use high-precision timer if available + } + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = (d + Math.random() * 16) % 16 | 0; + d = Math.floor(d / 16); + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); + }); + } + + bg.utils.generateUUID = generateUUID; +})(); +bg.app = {}; +(function() { + + class Canvas { + constructor(domElem) { + let initContext = () => { + this._context = bg.utils.initWebGLContext(domElem); + return this._context.supported; + } + + + // Attributes + this._domElem = domElem; + this._domElem.style.MozUserSelect = 'none'; + this._domElem.style.WebkitUserSelect = 'none'; + this._domElem.setAttribute("onselectstart","return false"); + + this._multisample = 1.0; + + // Initialization + if (!initContext()) { + throw new Error("Sorry, your browser does not support WebGL."); + } + } + + get multisample() { + return this._multisample; + } + + set multisample(ms) { + this._multisample = ms; + } + + get context() { + return this._context; + } + + get domElement() { + return this._domElem; + } + + get width() { + return this._domElem.clientWidth; + } + + get height() { + return this._domElem.clientHeight; + } + + screenshot(format, width, height) { + let canvasStyle = ""; + let prevSize = {} + if (width) { + height = height ? height:width; + canvasStyle = this.domElement.style.cssText; + prevSize.width = this.domElement.width; + prevSize.height = this.domElement.height; + + this.domElement.style.cssText = "top:auto;left:auto;bottom:auto;right:auto;width:" + width + "px;height:" + height + "px;"; + this.domElement.width = width; + this.domElement.height = height; + bg.app.MainLoop.singleton.windowController.reshape(width,height); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + bg.app.MainLoop.singleton.windowController.display(); + } + var data = this.domElement.toDataURL(format); + if (width) { + this.domElement.style.cssText = canvasStyle; + this.domElement.width = prevSize.width; + this.domElement.height = prevSize.height; + bg.app.MainLoop.singleton.windowController.reshape(prevSize.width,prevSize.height); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + bg.app.MainLoop.singleton.windowController.display(); + } + return data; + } + + } + + bg.app.Canvas = Canvas; + + class ContextObject { + constructor(context) { + this._context = context; + } + + get context() { return this._context; } + set context(c) { this._context = c; } + } + + bg.app.ContextObject = ContextObject; +})(); +(function() { + bg.app.SpecialKey = { + BACKSPACE: "Backspace", + TAB: "Tab", + ENTER: "Enter", + SHIFT: "Shift", + SHIFT_LEFT: "ShiftLeft", + SHIFT_RIGHT: "ShiftRight", + CTRL: "Control", + CTRL_LEFT: "ControlLeft", + CTRL_LEFT: "ControlRight", + ALT: "Alt", + ALT_LEFT: "AltLeft", + ALT_RIGHT: "AltRight", + PAUSE: "Pause", + CAPS_LOCK: "CapsLock", + ESCAPE: "Escape", + PAGE_UP: "PageUp", + PAGEDOWN: "PageDown", + END: "End", + HOME: "Home", + LEFT_ARROW: "ArrowLeft", + UP_ARROW: "ArrowUp", + RIGHT_ARROW: "ArrowRight", + DOWN_ARROW: "ArrowDown", + INSERT: "Insert", + DELETE: "Delete" + }; + + class EventBase { + constructor() { + this._executeDefault = false; + } + + get executeDefault() { return this._executeDefault; } + set executeDefault(d) { this._executeDefault = d; } + } + bg.app.EventBase = EventBase; + + class KeyboardEvent extends EventBase { + static IsSpecialKey(event) { + return bg.app.SpecialKey[event.code]!=null; + } + + constructor(key,event) { + super(); + this.key = key; + this.event = event; + } + + isSpecialKey() { + return KeyboardEvent.IsSpecialKey(this.event); + } + } + + bg.app.KeyboardEvent = KeyboardEvent; + + bg.app.MouseButton = { + LEFT: 0, + MIDDLE: 1, + RIGHT: 2, + NONE: -1 + }; + + class MouseEvent extends EventBase { + + constructor(button = bg.app.MouseButton.NONE, x=-1, y=-1, delta=0,event=null) { + super(); + + this.button = button; + this.x = x; + this.y = y; + this.delta = delta; + this.event = event; + } + } + + bg.app.MouseEvent = MouseEvent; + + class TouchEvent extends EventBase { + constructor(touches,event) { + super(); + this.touches = touches; + this.event = event; + } + } + + bg.app.TouchEvent = TouchEvent; + +})(); +(function() { + let s_mainLoop = null; + let s_mouseStatus = { + leftButton:false, + middleButton:false, + rightButton:false, + pos: { + x:-1, + y:-1 + } + } + Object.defineProperty(s_mouseStatus, "anyButton", { + get: function() { + return this.leftButton || this.middleButton || this.rightButton; + } + }); + let s_delta = -1; + + class Mouse { + static LeftButton() { return s_mouseStatus.leftButton; } + static MiddleButton() { return s_mouseStatus.middleButton; } + static RightButton() { return s_mouseStatus.rightButton; } + static Position() { return s_mouseStatus.pos; } + } + + bg.app.Mouse = Mouse; + + bg.app.FrameUpdate = { + AUTO: 0, + MANUAL: 1 + }; + + class MainLoop { + constructor() { + this._canvas = null; + this._windowController = null; + this._updateMode = bg.app.FrameUpdate.AUTO; + this._redisplayFrames = 1; + bg.bindImageLoadEvent(() => { + this.postRedisplay(); + }); + } + + get canvas() { return this._canvas; } + set canvas(c) { + this._canvas = new bg.app.Canvas(c); + } + get windowController() { return this._windowController; } + get updateMode() { return this._updateMode; } + set updateMode(m) { + this._updateMode = m; + if (this._updateMode==bg.app.FrameUpdate.AUTO) { + this._redisplayFrames = 1; + } + } + get redisplay() { return this._redisplayFrames>0; } + get mouseButtonStatus() { return s_mouseStatus; } + + run(windowController) { + this._windowController = windowController; + this.postRedisplay(); + this.windowController.init(); + initEvents(); + animationLoop(); + } + + // 4 frames to ensure that the reflections are fully updated + postRedisplay(frames=4) { + this._redisplayFrames = frames; + } + + postReshape() { + onResize(); + } + } + + let lastTime = 0; + function animationLoop(totalTime) { + totalTime = totalTime || 0; + requestAnimFrame(animationLoop); + let elapsed = totalTime - lastTime; + lastTime = totalTime; + onUpdate(elapsed); + } + + function initEvents() { + onResize(); + + window.addEventListener("resize", function(evt) { onResize(); }); + + if (s_mainLoop.canvas) { + let c = s_mainLoop.canvas.domElement; + c.addEventListener("mousedown", function(evt) { + if (!onMouseDown(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("mousemove", function(evt) { + if (!onMouseMove(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("mouseout", function(evt) { + if (!onMouseOut(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("mouseover", function(evt) { + if (!onMouseOver(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("mouseup", function(evt) { + if (!onMouseUp(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + + c.addEventListener("touchstart", function(evt) { + if (!onTouchStart(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("touchmove", function(evt) { + if (!onTouchMove(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + c.addEventListener("touchend", function(evt) { + if (!onTouchEnd(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + + var mouseWheelEvt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"; + c.addEventListener(mouseWheelEvt, function(evt) { + if (!onMouseWheel(evt).executeDefault) { + evt.preventDefault(); + return false; + } + }); + + window.addEventListener("keydown", function(evt) { onKeyDown(evt); }); + window.addEventListener("keyup", function(evt) { onKeyUp(evt); }); + + c.oncontextmenu = function(e) { return false; }; + } + else { + throw new Error("Configuration error in MainLoop: no canvas defined"); + } + } + + function onResize() { + if (s_mainLoop.canvas && s_mainLoop.windowController) { + let multisample = s_mainLoop.canvas.multisample; + s_mainLoop.canvas.domElement.width = s_mainLoop.canvas.width * multisample; + s_mainLoop.canvas.domElement.height = s_mainLoop.canvas.height * multisample; + s_mainLoop.windowController.reshape(s_mainLoop.canvas.width * multisample, s_mainLoop.canvas.height * multisample); + } + } + + function onUpdate(elapsedTime) { + if (s_mainLoop.redisplay) { + //if (s_delta==-1) s_delta = Date.now(); + //s_mainLoop.windowController.frame((Date.now() - s_delta) * 2); + //s_delta = Date.now(); + s_mainLoop.windowController.frame(elapsedTime); + if (s_mainLoop.updateMode==bg.app.FrameUpdate.AUTO) { + s_mainLoop._redisplayFrames = 1; + } + else { + s_mainLoop._redisplayFrames--; + } + s_mainLoop.windowController.display(); + } + } + + function onMouseDown(event) { + let offset = s_mainLoop.canvas.domElement.getBoundingClientRect(); + let multisample = s_mainLoop.canvas.multisample; + s_mouseStatus.pos.x = (event.clientX - offset.left) * multisample; + s_mouseStatus.pos.y = (event.clientY - offset.top) * multisample; + switch (event.button) { + case bg.app.MouseButton.LEFT: + s_mouseStatus.leftButton = true; + break; + case bg.app.MouseButton.MIDDLE: + s_mouseStatus.middleButton = true; + break; + case bg.app.MouseButton.RIGHT: + s_mouseStatus.rightButton = true; + break; + } + + let bgEvent = new bg.app.MouseEvent(event.button,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,event); + s_mainLoop.windowController.mouseDown(bgEvent); + return bgEvent; + } + + function onMouseMove(event) { + let offset = s_mainLoop.canvas.domElement.getBoundingClientRect(); + let multisample = s_mainLoop.canvas.multisample; + s_mouseStatus.pos.x = (event.clientX - offset.left) * multisample; + s_mouseStatus.pos.y = (event.clientY - offset.top) * multisample; + let evt = new bg.app.MouseEvent(bg.app.MouseButton.NONE, + s_mouseStatus.pos.x, + s_mouseStatus.pos.y, + 0, + event); + s_mainLoop.windowController.mouseMove(evt); + if (s_mouseStatus.anyButton) { + s_mainLoop.windowController.mouseDrag(evt); + } + return evt; + } + + function onMouseOut() { + let bgEvt = new bg.app.MouseEvent(bg.app.MouseButton.NONE,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,{}); + s_mainLoop.windowController.mouseOut(bgEvt); + if (s_mouseStatus.leftButton) { + s_mouseStatus.leftButton = false; + bgEvt = new bg.app.MouseEvent(bg.app.MouseButton.LEFT,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,{}); + s_mainLoop.windowController.mouseUp(bgEvt); + } + if (s_mouseStatus.middleButton) { + s_mouseStatus.middleButton = false; + bgEvt = new bg.app.MouseEvent(bg.app.MouseButton.MIDDLE,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,{}); + s_mainLoop.windowController.mouseUp(bgEvt); + } + if (s_mouseStatus.rightButton) { + bgEvt = new bg.app.MouseEvent(bg.app.MouseButton.RIGHT,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,{}); + s_mainLoop.windowController.mouseUp(bgEvt); + s_mouseStatus.rightButton = false; + } + return bgEvt; + } + + function onMouseOver(event) { + return onMouseMove(event); + } + + function onMouseUp(event) { + switch (event.button) { + case bg.app.MouseButton.LEFT: + s_mouseStatus.leftButton = false; + break; + case bg.app.MouseButton.MIDDLE: + s_mouseStatus.middleButton = false; + break; + case bg.app.MouseButton.RIGHT: + s_mouseStatus.rightButton = false; + break; + } + let offset = s_mainLoop.canvas.domElement.getBoundingClientRect(); + let multisample = s_mainLoop.canvas.multisample; + s_mouseStatus.pos.x = (event.clientX - offset.left) * multisample; + s_mouseStatus.pos.y = (event.clientY - offset.top) * multisample; + let bgEvt = new bg.app.MouseEvent(event.button,s_mouseStatus.pos.x,s_mouseStatus.pos.y,0,event) + s_mainLoop.windowController.mouseUp(bgEvt); + return bgEvt; + } + + function onMouseWheel(event) { + let offset = s_mainLoop.canvas.domElement.getBoundingClientRect(); + let multisample = s_mainLoop.canvas.multisample; + s_mouseStatus.pos.x = (event.clientX - offset.left) * multisample; + s_mouseStatus.pos.y = (event.clientY - offset.top) * multisample; + let delta = event.wheelDelta ? event.wheelDelta * -1:event.detail * 10; + let bgEvt = new bg.app.MouseEvent(bg.app.MouseButton.NONE,s_mouseStatus.pos.x,s_mouseStatus.pos.y,delta,event) + s_mainLoop.windowController.mouseWheel(bgEvt); + return bgEvt; + } + + function getTouchEvent(event) { + let offset = s_mainLoop.canvas.domElement.getBoundingClientRect(); + let touches = []; + for (let i=0; i<event.touches.length; ++i) { + let touch = event.touches[i]; + touches.push({ + identifier: touch.identifier, + x: touch.clientX - offset.left, + y: touch.clientY - offset.top, + force: touch.force, + rotationAngle: touch.rotationAngle, + radiusX: touch.radiusX, + radiusY: touch.radiusY + }); + } + return new bg.app.TouchEvent(touches,event); + } + + function onTouchStart(event) { + let bgEvt = getTouchEvent(event) + s_mainLoop.windowController.touchStart(bgEvt); + return bgEvt; + } + + function onTouchMove(event) { + let bgEvt = getTouchEvent(event) + s_mainLoop.windowController.touchMove(bgEvt); + return bgEvt; + } + + function onTouchEnd(event) { + let bgEvt = getTouchEvent(event) + s_mainLoop.windowController.touchEnd(bgEvt); + return bgEvt; + } + + function onKeyDown(event) { + let code = bg.app.KeyboardEvent.IsSpecialKey(event) ? event.keyCode: + event.code; + s_mainLoop.windowController.keyDown(new bg.app.KeyboardEvent(code,event)); + } + + function onKeyUp(event) { + let code = bg.app.KeyboardEvent.IsSpecialKey(event) ? event.keyCode: + event.code; + s_mainLoop.windowController.keyUp(new bg.app.KeyboardEvent(code,event)); + } + + bg.app.MainLoop = {}; + + Object.defineProperty(bg.app.MainLoop,"singleton",{ + get: function() { + if (!s_mainLoop) { + s_mainLoop = new MainLoop(); + } + return s_mainLoop; + } + }); + +})(); + +(function() { + class WindowController extends bg.LifeCycle { + // Functions from LifeCycle: + // init() + // frame(delta) + // display() + // reshape(width,height) + // keyDown(evt) + // keyUp(evt) + // mouseUp(evt) + // mouseDown(evt) + // mouseMove(evt) + // mouseOut(evt) + // mouseDrag(evt) + // mouseWheel(evt) + // touchStart(evt) + // touchMove(evt) + // touchEnd(evt) + + // 4 frames to ensure that the reflections are fully updated + postRedisplay(frames=4) { + bg.app.MainLoop.singleton.postRedisplay(frames); + } + + postReshape() { + bg.app.MainLoop.singleton.postReshape(); + } + + get canvas() { + return bg.app.MainLoop.singleton.canvas; + } + + get context() { + return bg.app.MainLoop.singleton.canvas.context; + } + + get gl() { + return bg.app.MainLoop.singleton.canvas.context.gl; + } + } + + bg.app.WindowController = WindowController; +})(); +bg.base = {} + +bg.s_log = []; +bg.log = function(l) { + if (console.log) console.log(l); + bg.s_log.push(l); +}; + +bg.flushLog = function() { + if (console.log) { + bg.s_log.forEach(function(l) { + console.log(l); + }); + } + bg.s_log = []; +}; + +bg.emitImageLoadEvent = function(img) { + let event = new CustomEvent("bg2e:image-load", { image:img }); + document.dispatchEvent(event); +}; + +bg.bindImageLoadEvent = function(callback) { + document.addEventListener("bg2e:image-load",callback); +}; + +bg.Axis = { + NONE: 0, + X: 1, + Y: 2, + Z: 3 +}; + +Object.defineProperty(bg, "isElectronApp", { + get: function() { + return typeof module !== 'undefined' && module.exports && true; + } +}); + + +(function() { + class Effect extends bg.app.ContextObject { + constructor(context) { + super(context); + this._shader = null; + this._inputVars = []; + } + + /* + * Override the following functions to create a custom effect: + * get inputVars(): returns an object with the input attribute for each + * vertex buffer in the shader + * get shader(): create and initialize the shader if not exists + * setupVars(): bind the input vars in the shader + */ + get inputVars() { + // Return the corresponding names for input vars + //this._inputVars = { + // vertex:null, + // normal:null, + // tex0:null, + // tex1:null, + // tex2:null, + // color:null, + // tangent:null + //}; + + return this._inputVars; + } + + get shader() { + // Create and initialize the shader if not exists. + return this._shader; + } + + // Automatic method: with ShaderSource objects it isn't necesary to + // overrdide the previous functions + setupShaderSource(sourceArray) { + this._shader = new bg.base.Shader(this.context); + this._inputVars = []; + let inputAttribs = []; + let inputVars = []; + + sourceArray.forEach((source) => { + source.params.forEach((param) => { + if (param) { + if (param.role=="buffer") { + this._inputVars[param.target] = param.name; + inputAttribs.push(param.name); + } + else if (param.role=="value") { + inputVars.push(param.name); + } + } + }); + + this._shader.addShaderSource(source.type,source.toString()); + }); + this._shader.link(); + if (!this._shader.status) { + bg.log(this._shader.compileError); + if (this._shader.compileErrorSource) { + bg.log("Shader source:"); + bg.log(this._shader.compileErrorSource); + } + bg.log(this._shader.linkError); + } + else { + this._shader.initVars(inputAttribs,inputVars); + } + } + + // This function is used to setup shader variables that are the same for all + // scene object, such as lights or color correction + beginDraw() { + + } + + // This function is called before draw each polyList. The material properties will be + // set in this.material + setupVars() { + // pass the input vars values to this.shader + } + + setActive() { + this.shader.setActive(); + this.beginDraw(); + } + + clearActive() { + this.shader.clearActive(); + } + + bindPolyList(plist) { + var s = this.shader; + if (this.inputVars.vertex) { + s.setInputBuffer(this.inputVars.vertex, plist.vertexBuffer, 3); + } + if (this.inputVars.normal) { + s.setInputBuffer(this.inputVars.normal, plist.normalBuffer, 3); + } + if (this.inputVars.tex0) { + s.setInputBuffer(this.inputVars.tex0, plist.texCoord0Buffer, 2); + } + if (this.inputVars.tex1) { + s.setInputBuffer(this.inputVars.tex1, plist.texCoord1Buffer, 2); + } + if (this.inputVars.tex2) { + s.setInputBuffer(this.inputVars.tex2, plist.texCoord2Buffer, 2); + } + if (this.inputVars.color) { + s.setInputBuffer(this.inputVars.color, plist.colorBuffer, 4); + } + if (this.inputVars.tangent) { + s.setInputBuffer(this.inputVars.tangent, plist.tangentBuffer, 3); + } + this.setupVars(); + } + + unbind() { + var s = this.shader; + if (this.inputVars.vertex) { + s.disableInputBuffer(this.inputVars.vertex); + } + if (this.inputVars.normal) { + s.disableInputBuffer(this.inputVars.normal); + } + if (this.inputVars.tex0) { + s.disableInputBuffer(this.inputVars.tex0); + } + if (this.inputVars.tex1) { + s.disableInputBuffer(this.inputVars.tex1); + } + if (this.inputVars.tex2) { + s.disableInputBuffer(this.inputVars.tex2); + } + if (this.inputVars.color) { + s.disableInputBuffer(this.inputVars.color); + } + if (this.inputVars.tangent) { + s.disableInputBuffer(this.inputVars.tangent); + } + } + } + + bg.base.Effect = Effect; + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class TextureEffect extends Effect { + constructor(context) { + super(context); + + this._frame = new bg.base.PolyList(context); + + this._frame.vertex = [ 1, 1, 0, -1, 1, 0, -1,-1, 0,1,-1, 0 ]; + this._frame.texCoord0 = [ 1, 1, 0, 1, 0, 0, 1, 0 ]; + this._frame.index = [ 0, 1, 2, 2, 3, 0 ]; + + this._frame.build(); + + this.rebuildShaders(); + } + + rebuildShaders() { + this.setupShaderSource([ + this.vertexShaderSource, + this.fragmentShaderSource + ]); + } + + get vertexShaderSource() { + if (!this._vertexShaderSource) { + this._vertexShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + this._vertexShaderSource.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + { name:"fsTexCoord", dataType:"vec2", role:"out" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + this._vertexShaderSource.setMainBody(` + gl_Position = vec4(inVertex,1.0); + fsTexCoord = inTex0;`); + } + } + return this._vertexShaderSource; + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + this._fragmentShaderSource.addParameter( + { name:"fsTexCoord", dataType:"vec2", role:"in" } + ); + + if (bg.Engine.Get().id=="webgl1") { + this._fragmentShaderSource.setMainBody(` + gl_FragColor = vec4(1.0,0.0,0.0,1.0);`); + } + } + return this._fragmentShaderSource; + } + + //setupVars() { + // this._surface contains the surface passed to drawSurface + //} + + drawSurface(surface) { + this.setActive(); + this._surface = surface; + this.bindPolyList(this._frame); + this._frame.draw(); + this.unbind(); + this.clearActive(); + } + + } + + bg.base.TextureEffect = TextureEffect; + +})(); +(function() { + + class LoaderPlugin { + + acceptType(url,data) { return false; } + load(context,url,data) { + return new Promise((resolve,reject) => { + reject(new Error("Not implemented")); + }); + } + + } + + bg.base.LoaderPlugin = LoaderPlugin; + + let s_loaderPlugins = []; + + function loadUrl(context,url,onProgress = null,extraData = null) { + return new Promise((accept,reject) => { + bg.utils.Resource.Load(url,onProgress) + .then(function(data) { + return Loader.LoadData(context,url,data,extraData); + }) + + .then((result,extendedData) => { + accept(result,extendedData); + }) + + .catch(function(err) { + reject(err); + }); + }); + } + + function loadUrlArray(context,url,onProgress = null,extraData = null) { + return new Promise((accept,reject) => { + bg.utils.Resource.LoadMultiple(url,onProgress) + .then((result) => { + let promises = []; + + for (let itemUrl in result) { + let data = result[itemUrl]; + promises.push(loadData(context,itemUrl,data,extraData)); + } + + return Promise.all(promises); + }) + .then((loadedResults) => { + let resolvedData = {} + url.forEach((itemUrl,index) => { + resolvedData[itemUrl] = loadedResults[index]; + }) + accept(resolvedData); + }) + .catch((err) => { + reject(err); + }) + }) + } + + function loadData(context,url,data,extraData = null) { + return new Promise((accept,reject) => { + let selectedPlugin = null; + s_loaderPlugins.some((plugin) => { + if (plugin.acceptType(url,data)) { + selectedPlugin = plugin; + return true; + } + }) + + if (selectedPlugin) { + if (!extraData) { + extraData = {}; + } + accept(selectedPlugin.load(context,url,data,extraData)); + } + else { + return reject(new Error("No suitable plugin found for load " + url)); + } + }); + } + + class Loader { + static RegisterPlugin(p) { s_loaderPlugins.push(p); } + + static Load(context,url,onProgress = null,extraData = null) { + if (Array.isArray(url)) { + return loadUrlArray(context,url,onProgress,extraData); + } + else { + return loadUrl(context,url,onProgress,extraData); + } + } + + static LoadData(context,url,data,extraData = null) { + return loadData(context,url,data,extraData); + } + } + + bg.base.Loader = Loader; + +})(); +(function() { + // NOTE: All the writer functions and classes are intended to be used + // only in an Electron.js application + if (!bg.isElectronApp) { + return false; + } + + class WriterPlugin { + acceptType(url,data) { return false; } + write(url,data) {} + } + + bg.base.WriterPlugin = WriterPlugin; + + let s_writerPlugins = []; + + class Writer { + static RegisterPlugin(p) { s_writerPlugins.push(p); } + + static Write(url,data) { + return new Promise((resolve,reject) => { + let selectedPlugin = null; + s_writerPlugins.some((plugin) => { + if (plugin.acceptType(url,data)) { + selectedPlugin = plugin; + return true; + } + }); + + if (selectedPlugin) { + resolve(selectedPlugin.write(url,data)); + } + else { + reject(new Error("No suitable plugin found for write " + url)); + } + }) + } + + static PrepareDirectory(dir) { + let targetDir = Writer.ToSystemPath(dir); + const fs = require('fs'); + const path = require('path'); + const sep = path.sep; + const initDir = path.isAbsolute(targetDir) ? sep : ''; + targetDir.split(sep).reduce((parentDir,childDir) => { + const curDir = path.resolve(parentDir, childDir); + if (!fs.existsSync(curDir)) { + fs.mkdirSync(curDir); + } + return curDir; + }, initDir); + } + + static StandarizePath(inPath) { + return inPath.replace(/\\/g,'/'); + } + + static ToSystemPath(inPath) { + const path = require('path'); + const sep = path.sep; + return inPath.replace(/\\/g,sep).replace(/\//g,sep); + } + + static CopyFile(source,target) { + return new Promise((resolve,reject) => { + const fs = require("fs"); + const path = require("path"); + let cbCalled = false; + + source = Writer.StandarizePath(path.resolve(source)); + target = Writer.StandarizePath(path.resolve(target)); + + if (source==target) { + resolve(); + } + else { + let rd = fs.createReadStream(source); + rd.on("error", function(err) { + done(err); + }); + let wr = fs.createWriteStream(target); + wr.on("error", function(err) { + done(err); + }); + wr.on("close", function(ex) { + done(); + }); + rd.pipe(wr); + + function done(err) { + if (!cbCalled) { + err ? reject(err) : resolve(); + cbCalled = true; + } + } + } + }) + } + } + + bg.base.Writer = Writer; +})(); +(function() { + // NOTE: this plugin is intended to be used only in an Electron.js app + if (!bg.isElectronApp) { + return false; + } + + let fs = require('fs'); + let path = require('path'); + + function writeTexture(texture,fileData) { + if (texture) { + let dstPath = bg.base.Writer.StandarizePath(fileData.path).split("/"); + dstPath.pop(); + let paths = { + src: bg.base.Writer.StandarizePath(texture.fileName), + dst: null + }; + + let srcFileName = paths.src.split("/").pop(); + dstPath.push(srcFileName); + dstPath = dstPath.join("/"); + paths.dst = dstPath; + + if (paths.src!=paths.dst) { + fileData.copyFiles.push(paths); + } + return srcFileName; + } + else { + return ""; + } + } + function getMaterialString(fileData) { + let mat = []; + fileData.node.drawable.forEach((plist,material) => { + mat.push({ + "name": plist.name, + "class": "GenericMaterial", + + "diffuseR": material.diffuse.r, + "diffuseG": material.diffuse.g, + "diffuseB": material.diffuse.b, + "diffuseA": material.diffuse.a, + + "specularR": material.specular.r, + "specularG": material.specular.g, + "specularB": material.specular.b, + "specularA": material.specular.a, + + "shininess": material.shininess, + "refractionAmount": material.refractionAmount, + "reflectionAmount": material.reflectionAmount, + "lightEmission": material.lightEmission, + + "textureOffsetX": material.textureOffset.x, + "textureOffsetY": material.textureOffset.y, + "textureScaleX": material.textureScale.x, + "textureScaleY": material.textureScale.y, + + "lightmapOffsetX": material.lightmapOffset.x, + "lightmapOffsetY": material.lightmapOffset.y, + "lightmapScaleX": material.lightmapScale.x, + "lightmapScaleY": material.lightmapScale.y, + + "normalMapOffsetX": material.normalMapOffset.x, + "normalMapOffsetY": material.normalMapOffset.y, + "normalMapScaleX": material.normalMapScale.x, + "normalMapScaleY": material.normalMapScale.y, + + "castShadows": material.castShadows, + "receiveShadows": material.receiveShadows, + + "alphaCutoff": material.alphaCutoff, + + "shininessMaskChannel": material.shininessMaskChannel, + "invertShininessMask": material.shininessMaskInvert, + "lightEmissionMaskChannel": material.lightEmissionMaskChannel, + "invertLightEmissionMask": material.lightEmissionMaskInvert, + + "displacementFactor": 0, + "displacementUV": 0, + "tessDistanceFarthest": 40.0, + "tessDistanceFar": 30.0, + "tessDistanceNear": 15.0, + "tessDistanceNearest": 8.0, + "tessFarthestLevel": 1, + "tessFarLevel": 1, + "tessNearLevel": 1, + "tessNearestLevel": 1, + + "reflectionMaskChannel": material.reflectionMaskChannel, + "invertReflectionMask": material.reflectionMaskInvert, + + "roughness": material.roughness, + "roughnessMaskChannel": material.roughnessMaskChannel, + "invertRoughnessMask": material.roughnessMaskInvert, + + "cullFace": material.cullFace, + + "unlit": material.unlit, + + "texture": writeTexture(material.texture,fileData), + "lightmap": writeTexture(material.lightmap,fileData), + "normalMap": writeTexture(material.normalMap,fileData), + "shininessMask": writeTexture(material.shininessMask,fileData), + "lightEmissionMask": writeTexture(material.lightEmissionMask,fileData), + "displacementMap": "", + "reflectionMask": writeTexture(material.reflectionMask,fileData), + "roughnessMask": writeTexture(material.roughnessMask,fileData), + "visible": plist.visible, + "visibleToShadows": plist.visibleToShadows, + "groupName": plist.groupName + }); + }); + return JSON.stringify(mat); + } + + function getJointString(fileData) { + let joints = {}; + let inJoint = fileData.node.component("bg.scene.InputChainJoint"); + let outJoint = fileData.node.component("bg.scene.OutputChainJoint"); + if (inJoint) { + joints.input = { + "type":"LinkJoint", + "offset":[ + inJoint.joint.offset.x, + inJoint.joint.offset.y, + inJoint.joint.offset.z + ], + "pitch": inJoint.joint.pitch, + "roll": inJoint.joint.roll, + "yaw": inJoint.joint.yaw + }; + } + if (outJoint) { + joints.output = [{ + "type":"LinkJoint", + "offset":[ + outJoint.joint.offset.x, + outJoint.joint.offset.y, + outJoint.joint.offset.z + ], + "pitch": outJoint.joint.pitch, + "roll": outJoint.joint.roll, + "yaw": outJoint.joint.yaw + }]; + } + return JSON.stringify(joints); + } + + function ensurePolyListName(fileData) { + let plistNames = []; + let plIndex = 0; + fileData.node.drawable.forEach((plist,matName) => { + let plName = plist.name; + if (!plName || plistNames.indexOf(plName)!=-1) { + do { + plName = "polyList_" + plIndex; + ++plIndex; + } + while (plistNames.indexOf(plName)!=-1); + plist.name = plName; + } + plistNames.push(plName); + }); + } + + class FileData { + constructor(path,node) { + this._path = path; + this._node = node; + this._copyFiles = []; + this._stream = fs.createWriteStream(path); + } + + get path() { return this._path; } + get node() { return this._node; } + get copyFiles() { return this._copyFiles; } + + get stream() { return this._stream; } + + writeUInt(number) { + let buffer = Buffer.alloc(4); + buffer.writeUInt32BE(number,0); + this.stream.write(buffer); + } + + writeBlock(blockName) { + this.stream.write(Buffer.from(blockName,"utf-8")); + } + + writeString(stringData) { + this.writeUInt(stringData.length); + this.stream.write(Buffer.from(stringData,"utf-8")); + } + + writeBuffer(name,arrayBuffer) { + this.writeBlock(name); + this.writeUInt(arrayBuffer.length); + let buffer = Buffer.alloc(4 * arrayBuffer.length); + if (name=="indx") { + arrayBuffer.forEach((d,i) => buffer.writeUInt32BE(d,i * 4)); + } + else { + arrayBuffer.forEach((d,i) => buffer.writeFloatBE(d,i * 4)); + } + this.stream.write(buffer); + } + + writeTextures() { + let promises = []; + this.copyFiles.forEach((copyData) => { + promises.push(new Promise((resolve,reject) => { + let rd = fs.createReadStream(copyData.src); + rd.on('error',rejectCleanup); + let wr = fs.createWriteStream(copyData.dst); + wr.on('error',rejectCleanup); + function rejectCleanup(err) { + rd.destroy(); + wr.end(); + reject(err); + } + wr.on('finish',resolve); + rd.pipe(wr); + })) + }); + return Promise.all(promises); + } + } + + function writeHeader(fileData) { + let buffer = Buffer.alloc(4); + [ + 0, // big endian + 1, // major version + 2, // minor version + 0 // review + ].forEach((d,i) => buffer.writeInt8(d,i)); + fileData.stream.write(buffer); + + // Header + fileData.writeBlock("hedr"); + + // Ensure that all poly list have name and material name + ensurePolyListName(fileData); + + // Number of polyLists + let drw = fileData.node.drawable; + let plistItems = 0; + drw.forEach(() => plistItems++); + fileData.writeUInt(plistItems); + + // Material header + fileData.writeBlock("mtrl"); + fileData.writeString(getMaterialString(fileData)); + + // Joints header + fileData.writeBlock("join"); + fileData.writeString(getJointString(fileData)); + } + + function writePolyList(fileData,plist,material,trx) { + //let buffer = Buffer.alloc(4); + //fileData.stream.write(Buffer.from("plst","utf-8")); // poly list + fileData.writeBlock("plst"); + + // Poly list name + fileData.writeBlock("pnam"); + fileData.writeString(plist.name); + + // Material name, the same as plist name in version 1.2.0 + fileData.writeBlock("mnam"); + fileData.writeString(plist.name); + + fileData.writeBuffer("varr",plist.vertex); + fileData.writeBuffer("narr",plist.normal); + fileData.writeBuffer("t0ar",plist.texCoord0); + fileData.writeBuffer("t1ar",plist.texCoord1); + fileData.writeBuffer("indx",plist.index); + } + + function writeNode(fileData) { + writeHeader(fileData); + fileData.node.drawable.forEach((plist,mat,trx) => { + writePolyList(fileData,plist,mat,trx); + }); + fileData.writeBlock("endf"); + fileData.stream.end(); + } + + class Bg2WriterPlugin extends bg.base.WriterPlugin { + acceptType(url,data) { + let ext = url.split(".").pop(); + return /bg2/i.test(ext) || /vwglb/i.test(ext); + } + + write(url,data) { + return new Promise((resolve,reject) => { + if (!data || !data instanceof bg.scene.Node || !data.drawable) { + reject(new Error("Invalid data format. Expecting scene node.")); + } + let fileData = new FileData(url,data); + + try { + writeNode(fileData); + fileData.writeTextures() + .then(() => resolve()) + .catch((err) => reject(err)); + } + catch (err) { + reject(err); + } + }) + } + } + + bg.base.Bg2WriterPlugin = Bg2WriterPlugin; +})(); +(function() { + + class Bg2matLoaderPlugin extends bg.base.LoaderPlugin { + acceptType(url,data) { + return bg.utils.Resource.GetExtension(url)=="bg2mat"; + } + + load(context,url,data) { + return new Promise((resolve,reject) => { + if (data) { + try { + if (typeof(data)=="string") { + data = JSON.parse(data); + } + let promises = []; + let basePath = url.substring(0,url.lastIndexOf('/')+1); + + data.forEach((matData) => { + promises.push(bg.base.Material.FromMaterialDefinition(context,matData,basePath)); + }); + + Promise.all(promises) + .then((result) => { + resolve(result); + }); + } + catch(e) { + reject(e); + } + } + else { + reject(new Error("Error loading material. Data is null.")); + } + }); + } + } + + bg.base.Bg2matLoaderPlugin = Bg2matLoaderPlugin; + +})(); +(function() { + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class DrawTextureEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + + let vertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + let fragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + vertex.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + { name:"fsTexCoord", dataType:"vec2", role:"out" } + ]); + + fragment.addParameter([ + lib().inputs.material.texture, + { name:"fsTexCoord", dataType:"vec2", role:"in" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + vertex.setMainBody(` + gl_Position = vec4(inVertex,1.0); + fsTexCoord = inTex0;`); + fragment.setMainBody("gl_FragColor = texture2D(inTexture,fsTexCoord);"); + } + + this.setupShaderSource([ + vertex, + fragment + ]); + } + + setupVars() { + let texture = null; + if (this._surface instanceof bg.base.Texture) { + texture = this._surface; + } + else if (this._surface instanceof bg.base.RenderSurface) { + texture = this._surface.getTexture(0); + } + + if (texture) { + this.shader.setTexture("inTexture",texture,bg.base.TextureUnit.TEXTURE_0); + } + } + } + + bg.base.DrawTextureEffect = DrawTextureEffect; +})(); +(function() { + let shaders = {}; + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let s_vertexSource = null; + let s_fragmentSource = null; + + function vertexShaderSource() { + if (!s_vertexSource) { + s_vertexSource = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_vertexSource.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.normal, + lib().inputs.buffers.tangent, + lib().inputs.buffers.tex0, + lib().inputs.buffers.tex1 + ]); + + s_vertexSource.addParameter(lib().inputs.matrix.all); + + s_vertexSource.addParameter([ + { name:"inLightProjectionMatrix", dataType:"mat4", role:"value" }, + { name:"inLightViewMatrix", dataType:"mat4", role:"value" }, + ]); + + s_vertexSource.addParameter([ + { name:"fsPosition", dataType:"vec3", role:"out" }, + { name:"fsTex0Coord", dataType:"vec2", role:"out" }, + { name:"fsTex1Coord", dataType:"vec2", role:"out" }, + { name:"fsNormal", dataType:"vec3", role:"out" }, + { name:"fsTangent", dataType:"vec3", role:"out" }, + { name:"fsBitangent", dataType:"vec3", role:"out" }, + { name:"fsSurfaceToView", dataType:"vec3", role:"out" }, + + { name:"fsVertexPosFromLight", dataType:"vec4", role:"out" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + s_vertexSource.setMainBody(` + mat4 ScaleMatrix = mat4(0.5, 0.0, 0.0, 0.0, + 0.0, 0.5, 0.0, 0.0, + 0.0, 0.0, 0.5, 0.0, + 0.5, 0.5, 0.5, 1.0); + + vec4 viewPos = inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + gl_Position = inProjectionMatrix * viewPos; + + fsNormal = normalize((inNormalMatrix * vec4(inNormal,1.0)).xyz); + fsTangent = normalize((inNormalMatrix * vec4(inTangent,1.0)).xyz); + fsBitangent = cross(fsNormal,fsTangent); + + fsVertexPosFromLight = ScaleMatrix * inLightProjectionMatrix * inLightViewMatrix * inModelMatrix * vec4(inVertex,1.0); + + fsTex0Coord = inTex0; + fsTex1Coord = inTex1; + fsPosition = viewPos.xyz;`); + } + } + return s_vertexSource; + } + + function fragmentShaderSource() { + if (!s_fragmentSource) { + s_fragmentSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + s_fragmentSource.addParameter(lib().inputs.material.all); + s_fragmentSource.addParameter(lib().inputs.lightingForward.all); + s_fragmentSource.addParameter(lib().inputs.shadows.all); + s_fragmentSource.addParameter(lib().inputs.colorCorrection.all); + s_fragmentSource.addParameter([ + { name:"fsPosition", dataType:"vec3", role:"in" }, + { name:"fsTex0Coord", dataType:"vec2", role:"in" }, + { name:"fsTex1Coord", dataType:"vec2", role:"in" }, + { name:"fsNormal", dataType:"vec3", role:"in" }, + { name:"fsTangent", dataType:"vec3", role:"in" }, + { name:"fsBitangent", dataType:"vec3", role:"in" }, + { name:"fsSurfaceToView", dataType:"vec3", role:"in" }, + + { name:"fsVertexPosFromLight", dataType:"vec4", role:"in" }, + + { name:"inCubeMap", dataType:"samplerCube", role:"value" }, + { name:"inLightEmissionFactor", dataType:"float", role:"value" } + ]); + + s_fragmentSource.addFunction(lib().functions.materials.all); + s_fragmentSource.addFunction(lib().functions.colorCorrection.all); + s_fragmentSource.addFunction(lib().functions.utils.unpack); + s_fragmentSource.addFunction(lib().functions.utils.random); + s_fragmentSource.addFunction(lib().functions.lighting.all); + s_fragmentSource.addFunction(lib().functions.blur.blurCube); + + if (bg.Engine.Get().id=="webgl1") { + s_fragmentSource.setMainBody(` + vec4 diffuseColor = samplerColor(inTexture,fsTex0Coord,inTextureOffset,inTextureScale); + vec4 lightmapColor = samplerColor(inLightMap,fsTex1Coord,inLightMapOffset,inLightMapScale); + + if (inUnlit && diffuseColor.a>=inAlphaCutoff) { + gl_FragColor = diffuseColor * lightmapColor; + } + else if (diffuseColor.a>=inAlphaCutoff) { + vec3 normalMap = samplerNormal(inNormalMap,fsTex0Coord,inNormalMapOffset,inNormalMapScale); + // This doesn't work on many Mac Intel GPUs + // vec3 frontFacingNormal = fsNormal; + // if (!gl_FrontFacing) { + // frontFacingNormal *= -1.0; + // } + normalMap = combineNormalWithMap(fsNormal,fsTangent,fsBitangent,normalMap); + vec4 shadowColor = vec4(1.0); + if (inReceiveShadows) { + shadowColor = getShadowColor(fsVertexPosFromLight,inShadowMap,inShadowMapSize,inShadowType,inShadowStrength,inShadowBias,inShadowColor); + } + + vec4 specular = specularColor(inSpecularColor,inShininessMask,fsTex0Coord,inTextureOffset,inTextureScale, + inShininessMaskChannel,inShininessMaskInvert); + float lightEmission = applyTextureMask(inLightEmission, + inLightEmissionMask,fsTex0Coord,inTextureOffset,inTextureScale, + inLightEmissionMaskChannel,inLightEmissionMaskInvert); + diffuseColor = diffuseColor * inDiffuseColor * lightmapColor; + + vec4 light = vec4(0.0,0.0,0.0,1.0); + vec4 specularColor = vec4(0.0,0.0,0.0,1.0); + // This doesn't work on A11 and A12 chips on Apple devices. + // for (int i=0; i<${ bg.base.MAX_FORWARD_LIGHTS}; ++i) { + // if (i>=inNumLights) break; + // light.rgb += getLight( + // inLightType[i], + // inLightAmbient[i], inLightDiffuse[i], inLightSpecular[i],inShininess, + // inLightPosition[i],inLightDirection[i], + // inLightAttenuation[i].x,inLightAttenuation[i].y,inLightAttenuation[i].z, + // inSpotCutoff[i],inSpotExponent[i],inLightCutoffDistance[i], + // fsPosition,normalMap, + // diffuseColor,specular,shadowColor, + // specularColor + // ).rgb; + // light.rgb += specularColor.rgb; + // } + + // Workaround for A11 and A12 chips + if (inNumLights>0) { + light.rgb += getLight( + inLightType[0], + inLightAmbient[0], inLightDiffuse[0], inLightSpecular[0],inShininess, + inLightPosition[0],inLightDirection[0], + inLightAttenuation[0].x,inLightAttenuation[0].y,inLightAttenuation[0].z, + inSpotCutoff[0],inSpotExponent[0],inLightCutoffDistance[0], + fsPosition,normalMap, + diffuseColor,specular,shadowColor, + specularColor + ).rgb; + light.rgb += specularColor.rgb; + } + if (inNumLights>1) { + light.rgb += getLight( + inLightType[1], + inLightAmbient[1], inLightDiffuse[1], inLightSpecular[1],inShininess, + inLightPosition[1],inLightDirection[1], + inLightAttenuation[1].x,inLightAttenuation[1].y,inLightAttenuation[1].z, + inSpotCutoff[0],inSpotExponent[1],inLightCutoffDistance[1], + fsPosition,normalMap, + diffuseColor,specular,shadowColor, + specularColor + ).rgb; + light.rgb += specularColor.rgb; + } + + vec3 cameraPos = vec3(0.0); + vec3 cameraVector = fsPosition - cameraPos; + vec3 lookup = reflect(cameraVector,normalMap); + + // Roughness using gaussian blur has been deactivated because it is very inefficient + //float dist = distance(fsPosition,cameraPos); + //float maxRough = 50.0; + //float rough = max(inRoughness * 10.0,1.0); + //rough = max(rough*dist,rough); + //float blur = min(rough,maxRough); + //vec3 cubemapColor = blurCube(inCubeMap,lookup,int(blur),vec2(10),dist).rgb; + + vec3 cubemapColor = textureCube(inCubeMap,lookup).rgb; + + float reflectionAmount = applyTextureMask(inReflection, + inReflectionMask,fsTex0Coord,inTextureOffset,inTextureScale, + inReflectionMaskChannel,inReflectionMaskInvert); + + light.rgb = clamp(light.rgb + (lightEmission * diffuseColor.rgb * 10.0), vec3(0.0), vec3(1.0)); + + + gl_FragColor = vec4(light.rgb * (1.0 - reflectionAmount) + cubemapColor * reflectionAmount * diffuseColor.rgb, diffuseColor.a); + } + else { + discard; + }` + ); + } + } + return s_fragmentSource; + } + + class ColorCorrectionSettings { + constructor() { + this._hue = 1; + this._saturation = 1; + this._lightness = 1; + this._brightness = 0.5; + this._contrast = 0.5; + } + + set hue(h) { this._hue = h; } + get hue() { return this._hue; } + set saturation(s) { this._saturation = s; } + get saturation() { return this._saturation; } + set lightness(l) { this._lightness = l; } + get lightness() { return this._lightness; } + set brightness(b) { this._brightness = b; } + get brightness() { return this._brightness; } + set contrast(c) { this._contrast = c; } + get contrast() { return this._contrast; } + + apply(shader,varNames={ hue:'inHue', + saturation:'inSaturation', + lightness:'inLightness', + brightness:'inBrightness', + contrast:'inContrast' }) + { + shader.setValueFloat(varNames['hue'], this._hue); + shader.setValueFloat(varNames['saturation'], this._saturation); + shader.setValueFloat(varNames['lightness'], this._lightness); + shader.setValueFloat(varNames['brightness'], this._brightness); + shader.setValueFloat(varNames['contrast'], this._contrast); + } + } + + bg.base.ColorCorrectionSettings = ColorCorrectionSettings; + + class ForwardEffect extends bg.base.Effect { + constructor(context) { + super(context); + this._material = null; + this._light = null; + this._lightTransform = bg.Matrix4.Identity(); + + this._lightArray = new bg.base.LightArray(); + + this._shadowMap = null; + + let sources = [ + vertexShaderSource(), + fragmentShaderSource() + ]; + this.setupShaderSource(sources); + this._colorCorrection = new bg.base.ColorCorrectionSettings(); + } + + get material() { return this._material; } + set material(m) { this._material = m; } + + // Individual light mode + get light() { return this._light; } + set light(l) { this._light = l; this._lightArray.reset(); } + get lightTransform() { return this._lightTransform; } + set lightTransform(trx) { this._lightTransform = trx; this._lightArray.reset();} + + // Multiple light mode: use light arrays + get lightArray() { return this._lightArray; } + + set shadowMap(sm) { this._shadowMap = sm; } + get shadowMap() { return this._shadowMap; } + + get colorCorrection() { return this._colorCorrection; } + set colorCorrection(cc) { this._colorCorrection = cc; } + + beginDraw() { + if (this._light) { + // Individual mode: initialize light array + this.lightArray.reset(); + this.lightArray.push(this.light,this.lightTransform); + } + + if (this.lightArray.numLights) { + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + + // Update lights positions and directions using the current view matrix + this.lightArray.updatePositionAndDirection(viewMatrix); + + // Forward render only supports one shadow map + let lightTransform = this.shadowMap ? this.shadowMap.viewMatrix : this.lightArray.shadowLightTransform; + this.shader.setMatrix4("inLightProjectionMatrix", this.shadowMap ? this.shadowMap.projection : this.lightArray.shadowLight.projection); + let shadowColor = this.shadowMap ? this.shadowMap.shadowColor : bg.Color.Transparent(); + + let blackTex = bg.base.TextureCache.BlackTexture(this.context); + this.shader.setMatrix4("inLightViewMatrix",lightTransform); + this.shader.setValueInt("inShadowType",this._shadowMap ? this._shadowMap.shadowType : 0); + this.shader.setTexture("inShadowMap",this._shadowMap ? this._shadowMap.texture : blackTex,bg.base.TextureUnit.TEXTURE_5); + this.shader.setVector2("inShadowMapSize",this._shadowMap ? this._shadowMap.size : new bg.Vector2(32,32)); + this.shader.setValueFloat("inShadowStrength",this.lightArray.shadowLight.shadowStrength); + this.shader.setVector4("inShadowColor",shadowColor); + this.shader.setValueFloat("inShadowBias",this.lightArray.shadowLight.shadowBias); + this.shader.setValueInt("inCastShadows",this.lightArray.shadowLight.castShadows); + + this.shader.setVector4Ptr('inLightAmbient',this.lightArray.ambient); + this.shader.setVector4Ptr('inLightDiffuse',this.lightArray.diffuse); + this.shader.setVector4Ptr('inLightSpecular',this.lightArray.specular); + this.shader.setValueIntPtr('inLightType',this.lightArray.type); + this.shader.setVector3Ptr('inLightAttenuation',this.lightArray.attenuation); + this.shader.setValueFloatPtr('inLightCutoffDistance',this.lightArray.cutoffDistance); + + // TODO: promote this value to a variable + let lightEmissionFactor = 10; + this.shader.setValueFloat('inLightEmissionFactor',lightEmissionFactor); + + this.shader.setTexture('inCubeMap',bg.scene.Cubemap.Current(this.context),bg.base.TextureUnit.TEXTURE_6); + + this.shader.setVector3Ptr('inLightDirection',this.lightArray.direction); + this.shader.setVector3Ptr('inLightPosition',this.lightArray.position); + this.shader.setValueFloatPtr('inSpotCutoff',this.lightArray.spotCutoff); + this.shader.setValueFloatPtr('inSpotExponent',this.lightArray.spotExponent); + + this.shader.setValueInt('inNumLights',this.lightArray.numLights); + } + else { + let BLACK = bg.Color.Black(); + this.shader.setVector4Ptr('inLightAmbient',BLACK.toArray()); + this.shader.setVector4Ptr('inLightDiffuse',BLACK.toArray()); + this.shader.setVector4Ptr('inLightSpecular',BLACK.toArray()); + this.shader.setVector3Ptr('inLightDirection',(new bg.Vector3(0,0,0)).toArray()); + this.shader.setValueInt('inNumLights',0); + } + + this.colorCorrection.apply(this.shader); + } + + setupVars() { + if (this.material) { + // Matrix state + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + this.shader.setMatrix4('inModelMatrix',matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',viewMatrix); + this.shader.setMatrix4('inProjectionMatrix',matrixState.projectionMatrixStack.matrixConst); + this.shader.setMatrix4('inNormalMatrix',matrixState.normalMatrix); + this.shader.setMatrix4('inViewMatrixInv',matrixState.viewMatrixInvert); + + // Material + // Prepare textures + let whiteTex = bg.base.TextureCache.WhiteTexture(this.context); + let blackTex = bg.base.TextureCache.BlackTexture(this.context); + let normalTex = bg.base.TextureCache.NormalTexture(this.context); + let texture = this.material.texture || whiteTex; + let lightMap = this.material.lightmap || whiteTex; + let normalMap = this.material.normalMap || normalTex; + let shininessMask = this.material.shininessMask || whiteTex; + let lightEmissionMask = this.material.lightEmissionMask || whiteTex; + + this.shader.setVector4('inDiffuseColor',this.material.diffuse); + this.shader.setVector4('inSpecularColor',this.material.specular); + this.shader.setValueFloat('inShininess',this.material.shininess); + this.shader.setTexture('inShininessMask',shininessMask,bg.base.TextureUnit.TEXTURE_3); + this.shader.setVector4('inShininessMaskChannel',this.material.shininessMaskChannelVector); + this.shader.setValueInt('inShininessMaskInvert',this.material.shininessMaskInvert); + this.shader.setValueFloat('inLightEmission',this.material.lightEmission); + this.shader.setTexture('inLightEmissionMask',lightEmissionMask,bg.base.TextureUnit.TEXTURE_4); + this.shader.setVector4('inLightEmissionMaskChannel',this.material.lightEmissionMaskChannelVector); + this.shader.setValueInt('inLightEmissionMaskInvert',this.material.lightEmissionMaskInvert); + this.shader.setValueFloat('inAlphaCutoff',this.material.alphaCutoff); + + this.shader.setTexture('inTexture',texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2('inTextureOffset',this.material.textureOffset); + this.shader.setVector2('inTextureScale',this.material.textureScale); + + this.shader.setTexture('inLightMap',lightMap,bg.base.TextureUnit.TEXTURE_1); + this.shader.setVector2('inLightMapOffset',this.material.lightmapOffset); + this.shader.setVector2('inLightMapScale',this.material.lightmapScale); + + this.shader.setTexture('inNormalMap',normalMap,bg.base.TextureUnit.TEXTURE_2); + this.shader.setVector2('inNormalMapScale',this.material.normalMapScale); + this.shader.setVector2('inNormalMapOffset',this.material.normalMapOffset); + + this.shader.setValueInt('inReceiveShadows',this.material.receiveShadows); + + let reflectionMask = this.material.reflectionMask || whiteTex; + this.shader.setValueFloat('inReflection',this.material.reflectionAmount); + this.shader.setTexture('inReflectionMask',reflectionMask,bg.base.TextureUnit.TEXTURE_7); + this.shader.setVector4('inReflectionMaskChannel',this.material.reflectionMaskChannelVector); + this.shader.setValueInt('inReflectionMaskInvert',this.material.reflectionMaskInvert); + + let roughnessMask = this.material.roughnessMask || whiteTex; + this.shader.setValueFloat('inRoughness',this.material.roughness); + if (this.context.getParameter(this.context.MAX_TEXTURE_IMAGE_UNITS)<9) { + this.shader.setTexture('inRoughnessMask',roughnessMask,bg.base.TextureUnit.TEXTURE_7); + } + else { + this.shader.setTexture('inRoughnessMask',roughnessMask,bg.base.TextureUnit.TEXTURE_8); + } + this.shader.setVector4('inRoughnessMaskChannel',this.material.roughnessMaskChannelVector); + this.shader.setValueInt('inRoughnessMaskInvert',this.material.roughnessMaskInvert); + + // Other settings + this.shader.setValueInt('inSelectMode',false); + + this.shader.setValueInt('inUnlit',this.material.unlit); + } + } + + } + + bg.base.ForwardEffect = ForwardEffect; + + // Define the maximum number of lights that can be used in forward render + bg.base.MAX_FORWARD_LIGHTS = 4; + +})(); + +(function() { + + bg.base.LightType = { + DIRECTIONAL: 4, + SPOT: 1, + POINT: 5, + DISABLED: 10 + }; + + class Light extends bg.app.ContextObject { + constructor(context) { + super(context); + + this._enabled = true; + + this._type = bg.base.LightType.DIRECTIONAL; + + this._direction = new bg.Vector3(0,0,-1); + + this._ambient = new bg.Color(0.2,0.2,0.2,1); + this._diffuse = new bg.Color(0.9,0.9,0.9,1); + this._specular = bg.Color.White(); + this._attenuation = new bg.Vector3(1,0.5,0.1); + this._spotCutoff = 20; + this._spotExponent = 30; + this._shadowStrength = 0.7; + this._cutoffDistance = -1; + this._castShadows = true; + this._shadowBias = 0.00002; + + this._projection = bg.Matrix4.Ortho(-10,10,-10,10,0.5,300.0); + } + + // If context is null, it will be used the same context as this light + clone(context) { + let newLight = new bg.base.Light(context || this.context); + newLight.assign(this); + return newLight; + } + + assign(other) { + this.enabled = other.enabled; + this.type = other.type; + this.direction.assign(other.direction); + this.ambient.assign(other.ambient); + this.diffuse.assign(other.diffuse); + this.specular.assign(other.specular); + this._attenuation.assign(other._attenuation); + this.spotCutoff = other.spotCutoff; + this.spotExponent = other.spotExponent; + this.shadowStrength = other.shadowStrength; + this.cutoffDistance = other.cutoffDistance; + this.castShadows = other.castShadows; + this.shadowBias = other.shadowBias; + } + + get enabled() { return this._enabled; } + set enabled(v) { this._enabled = v; } + + get type() { return this._type; } + set type(t) { this._type = t; } + + get direction() { return this._direction; } + set direction(d) { this._direction = d; } + + get ambient() { return this._ambient; } + set ambient(a) { this._ambient = a; } + get diffuse() { return this._diffuse; } + set diffuse(d) { this._diffuse = d; } + get specular() { return this._specular; } + set specular(s) { this._specular = s; } + + get attenuationVector() { return this._attenuation; } + get constantAttenuation() { return this._attenuation.x; } + get linearAttenuation() { return this._attenuation.y; } + get quadraticAttenuation() { return this._attenuation.z; } + set attenuationVector(a) { this._attenuation = a; } + set constantAttenuation(a) { this._attenuation.x = a; } + set linearAttenuation(a) { this._attenuation.y = a; } + set quadraticAttenuation(a) { this._attenuation.z = a; } + + get cutoffDistance() { return this._cutoffDistance; } + set cutoffDistance(c) { this._cutoffDistance = c; } + + get spotCutoff() { return this._spotCutoff; } + set spotCutoff(c) { this._spotCutoff = c; } + get spotExponent() { return this._spotExponent; } + set spotExponent(e) { this._spotExponent = e; } + + get shadowStrength() { return this._shadowStrength; } + set shadowStrength(s) { this._shadowStrength = s; } + get castShadows() { return this._castShadows; } + set castShadows(s) { this._castShadows = s; } + get shadowBias() { return this._shadowBias; } + set shadowBias(s) { this._shadowBias = s; } + + get projection() { return this._projection; } + set projection(p) { this._projection = p; } + + deserialize(sceneData) { + switch (sceneData.lightType) { + case 'kTypeDirectional': + this._type = bg.base.LightType.DIRECTIONAL; + // Use the predefined shadow bias for directional lights + //this._shadowBias = sceneData.shadowBias; + break; + case 'kTypeSpot': + this._type = bg.base.LightType.SPOT; + this._shadowBias = sceneData.shadowBias; + break; + case 'kTypePoint': + this._type = bg.base.LightType.POINT; + break; + } + + this._ambient = new bg.Color(sceneData.ambient); + this._diffuse = new bg.Color(sceneData.diffuse); + this._specular = new bg.Color(sceneData.specular); + this._attenuation = new bg.Vector3( + sceneData.constantAtt, + sceneData.linearAtt, + sceneData.expAtt + ); + this._spotCutoff = sceneData.spotCutoff || 20; + this._spotExponent = sceneData.spotExponent || 30; + this._shadowStrength = sceneData.shadowStrength; + this._cutoffDistance = sceneData.cutoffDistance; + this._projection = new bg.Matrix4(sceneData.projection); + this._castShadows = sceneData.castShadows; + } + + serialize(sceneData) { + let lightTypes = []; + lightTypes[bg.base.LightType.DIRECTIONAL] = "kTypeDirectional"; + lightTypes[bg.base.LightType.SPOT] = "kTypeSpot"; + lightTypes[bg.base.LightType.POINT] = "kTypePoint"; + sceneData.lightType = lightTypes[this._type]; + sceneData.ambient = this._ambient.toArray(); + sceneData.diffuse = this._diffuse.toArray(); + sceneData.specular = this._specular.toArray(); + sceneData.intensity = 1; + sceneData.constantAtt = this._attenuation.x; + sceneData.linearAtt = this._attenuation.y; + sceneData.expAtt = this._attenuation.z; + sceneData.spotCutoff = this._spotCutoff || 20; + sceneData.spotExponent = this._spotExponent || 30; + sceneData.shadowStrength = this._shadowStrength; + sceneData.cutoffDistance = this._cutoffDistance; + sceneData.projection = this._projection.toArray(); + sceneData.castShadows = this._castShadows; + sceneData.shadowBias = this._shadowBias || 0.0029; + } + } + + bg.base.Light = Light; + + // Store a light array, optimized to be used as shader input + class LightArray { + constructor() { + this.reset(); + } + + get type() { return this._type; } + get ambient() { return this._ambient; } + get diffuse() { return this._diffuse; } + get specular() { return this._specular; } + get position() { return this._position; } + get direction() { return this._direction; } + get rawDirection() { return this._rawDirection; } + get attenuation() { return this._attenuation; } + get spotCutoff() { return this._spotCutoff; } + get spotExponent() { return this._spotExponent; } + get shadowStrength() { return this._shadowStrength; } + get cutoffDistance() { return this._cutoffDistance; } + get numLights() { return this._numLights; } + + get lightTransform() { return this._lightTransform; } + + get shadowLight() { return this._shadowLight || { + shadowStrength: 0, + shadowColor: bg.Color.Black(), + shadowBias: 0, + castShadows: false, + projection: bg.Matrix4.Identity() + }} + get shadowLightTransform() { return this._shadowLightTransform || bg.Matrix4.Identity(); } + get shadowLightIndex() { return this._shadowLightIndex; } + + reset() { + this._type = []; + this._ambient = []; + this._diffuse = []; + this._specular = []; + this._position = []; + this._direction = []; + this._rawDirection = []; + this._attenuation = []; + this._spotCutoff = []; + this._spotExponent = []; + this._shadowStrength = []; + this._cutoffDistance = []; + this._numLights = 0; + this._lightTransform = []; + + // Forward render only supports one shadow map, so will only store + // one projection + this._shadowLightTransform = null; + this._shadowLightIndex = -1; + this._shadowLight = null; + } + + push(light,lightTransform) { + if (this._numLights==bg.base.MAX_FORWARD_LIGHTS) { + return false; + } + else { + if (this._shadowLightIndex==-1 && light.type!=bg.base.LightType.POINT && light.castShadows) { + this._shadowLightTransform = lightTransform; + this._shadowLight = light; + this._shadowLightIndex = this._numLights; + } + this._type.push(light.type); + this._ambient.push(...(light.ambient.toArray())); + this._diffuse.push(...(light.diffuse.toArray())); + this._specular.push(...(light.specular.toArray())); + this._rawDirection.push(light.direction); + this._attenuation.push(light.constantAttenuation); + this._attenuation.push(light.linearAttenuation); + this._attenuation.push(light.quadraticAttenuation); + this._spotCutoff.push(light.spotCutoff); + this._spotExponent.push(light.spotExponent); + this._shadowStrength.push(light.shadowStrength); + this._cutoffDistance.push(light.cutoffDistance); + + this._numLights++; + this._lightTransform.push(lightTransform); + return true; + } + } + + updatePositionAndDirection(viewMatrix) { + this._direction = []; + this._position = []; + for (let i=0; i<this._numLights; ++i) { + let vm = new bg.Matrix4(viewMatrix); + let dir = vm.mult(this._lightTransform[i]) + .rotation + .multVector(this._rawDirection[i]) + .xyz; + vm = new bg.Matrix4(viewMatrix); + let pos = vm.mult(this._lightTransform[i]).position; + this._direction.push(...(dir.toArray())); + this._position.push(...(pos.toArray())); + } + } + } + + bg.base.LightArray = LightArray; + +})(); +(function() { + bg.base.MaterialFlag = { + DIFFUSE : 1 << 0, + SPECULAR : 1 << 1, + SHININESS : 1 << 2, + LIGHT_EMISSION : 1 << 3, + REFRACTION_AMOUNT : 1 << 4, + REFLECTION_AMOUNT : 1 << 5, + TEXTURE : 1 << 6, + LIGHT_MAP : 1 << 7, + NORMAL_MAP : 1 << 8, + TEXTURE_OFFSET : 1 << 9, + TEXTURE_SCALE : 1 << 10, + LIGHT_MAP_OFFSET : 1 << 11, + LIGHT_MAP_SCALE : 1 << 12, + NORMAL_MAP_OFFSET : 1 << 13, + NORMAL_MAP_SCALE : 1 << 14, + CAST_SHADOWS : 1 << 15, + RECEIVE_SHADOWS : 1 << 16, + ALPHA_CUTOFF : 1 << 17, + SHININESS_MASK : 1 << 18, + SHININESS_MASK_CHANNEL : 1 << 19, + SHININESS_MASK_INVERT : 1 << 20, + LIGHT_EMISSION_MASK : 1 << 21, + LIGHT_EMISSION_MASK_CHANNEL : 1 << 22, + LIGHT_EMISSION_MASK_INVERT : 1 << 23, + REFLECTION_MASK : 1 << 24, + REFLECTION_MASK_CHANNEL : 1 << 25, + REFLECTION_MASK_INVERT : 1 << 26, + CULL_FACE : 1 << 27, + ROUGHNESS : 1 << 28, // All the roughness attributes are controlled by this flag + UNLIT : 1 << 29 + }; + + function loadTexture(context,image,url) { + let texture = null; + if (image) { + texture = bg.base.TextureCache.Get(context).find(url); + if (!texture) { + bg.log(`Texture ${url} not found. Loading texture`); + texture = new bg.base.Texture(context); + texture.create(); + texture.bind(); + texture.minFilter = bg.base.TextureLoaderPlugin.GetMinFilter(); + texture.magFilter = bg.base.TextureLoaderPlugin.GetMagFilter(); + texture.setImage(image); + texture.fileName = url; + bg.base.TextureCache.Get(context).register(url,texture); + } + } + return texture; + } + + class MaterialModifier { + constructor(jsonData) { + this._modifierFlags = 0; + + this._diffuse = bg.Color.White(); + this._specular = bg.Color.White(); + this._shininess = 0; + this._lightEmission = 0; + this._refractionAmount = 0; + this._reflectionAmount = 0; + this._texture = null; + this._lightmap = null; + this._normalMap = null; + this._textureOffset = new bg.Vector2(); + this._textureScale = new bg.Vector2(1); + this._lightmapOffset = new bg.Vector2(); + this._lightmapScale = new bg.Vector2(1); + this._normalMapOffset = new bg.Vector2(); + this._normalMapScale = new bg.Vector2(1); + this._castShadows = true; + this._receiveShadows = true; + this._alphaCutoff = 0.5; + this._shininessMask = null; + this._shininessMaskChannel = 0; + this._shininessMaskInvert = false; + this._lightEmissionMask = null; + this._lightEmissionMaskChannel = 0; + this._lightEmissionMaskInvert = false; + this._reflectionMask = null; + this._reflectionMaskChannel = 0; + this._reflectionMaskInvert = false; + this._cullFace = true; + this._roughness = true; + this._roughnessMask = null; + this._roughnessMaskChannel = 0; + this._roughnessMaskInvert = false; + this._unlit = false; + + if (jsonData) { + if (jsonData.diffuseR!==undefined && jsonData.diffuseG!==undefined && jsonData.diffuseB!==undefined) { + this.diffuse = new bg.Color(jsonData.diffuseR, + jsonData.diffuseG, + jsonData.diffuseB, + jsonData.diffuseA ? jsonData.diffuseA : 1.0); + } + if (jsonData.specularR!==undefined && jsonData.specularG!==undefined && jsonData.specularB!==undefined) { + this.specular = new bg.Color(jsonData.specularR, + jsonData.specularG, + jsonData.specularB, + jsonData.specularA ? jsonData.specularA : 1.0); + } + + if (jsonData.shininess!==undefined) { + this.shininess = jsonData.shininess; + } + + if (jsonData.lightEmission!==undefined) { + this.lightEmission = jsonData.lightEmission; + } + + if (jsonData.refractionAmount!==undefined) { + this.refractionAmount = jsonData.refractionAmount; + } + + if (jsonData.reflectionAmount!==undefined) { + this.reflectionAmount = jsonData.reflectionAmount; + } + + if (jsonData.texture!==undefined) { + this.texture = jsonData.texture; + } + + if (jsonData.lightmap!==undefined) { + this.lightmap = jsonData.lightmap; + } + + + if (jsonData.normalMap!==undefined) { + this.normalMap = jsonData.normalMap; + } + + if (jsonData.textureOffsetX!==undefined && jsonData.textureOffsetY!==undefined) { + this.textureOffset = new bg.Vector2(jsonData.textureOffsetX, + jsonData.textureOffsetY); + } + + if (jsonData.textureScaleX!==undefined && jsonData.textureScaleY!==undefined) { + this.textureScale = new bg.Vector2(jsonData.textureScaleX, + jsonData.textureScaleY); + } + + if (jsonData.lightmapOffsetX!==undefined && jsonData.lightmapOffsetY!==undefined) { + this.lightmapOffset = new bg.Vector2(jsonData.lightmapOffsetX, + jsonData.lightmapOffsetY); + } + + if (jsonData.lightmapScaleX!==undefined && jsonData.lightmapScaleY!==undefined) { + this.lightmapScale = new bg.Vector2(jsonData.lightmapScaleX, + jsonData.lightmapScaleY); + } + + if (jsonData.normalMapScaleX!==undefined && jsonData.normalMapScaleY!==undefined) { + this.normalMapScale = new bg.Vector2(jsonData.normalMapScaleX, + jsonData.normalMapScaleY); + } + + if (jsonData.normalMapOffsetX!==undefined && jsonData.normalMapOffsetY!==undefined) { + this.normalMapOffset = new bg.Vector2(jsonData.normalMapOffsetX, + jsonData.normalMapOffsetY); + } + + if (jsonData.castShadows!==undefined) { + this.castShadows = jsonData.castShadows; + } + if (jsonData.receiveShadows!==undefined) { + this.receiveShadows = jsonData.receiveShadows; + } + + if (jsonData.alphaCutoff!==undefined) { + this.alphaCutoff = jsonData.alphaCutoff; + } + + if (jsonData.shininessMask!==undefined) { + this.shininessMask = jsonData.shininessMask; + } + if (jsonData.shininessMaskChannel!==undefined) { + this.shininessMaskChannel = jsonData.shininessMaskChannel; + } + if (jsonData.invertShininessMask!==undefined) { + this.shininessMaskInvert = jsonData.invertShininessMask; + } + + if (jsonData.lightEmissionMask!==undefined) { + this.lightEmissionMask = jsonData.lightEmissionMask; + } + if (jsonData.lightEmissionMaskChannel!==undefined) { + this.lightEmissionMaskChannel = jsonData.lightEmissionMaskChannel; + } + if (jsonData.invertLightEmissionMask!==undefined) { + this.lightEmissionMaskInvert = jsonData.invertLightEmissionMask; + } + + if (jsonData.reflectionMask!==undefined) { + this.reflectionMask = jsonData.reflectionMask; + } + if (jsonData.reflectionMaskChannel!==undefined) { + this.reflectionMaskChannel = jsonData.reflectionMaskChannel; + } + if (jsonData.invertReflectionMask!==undefined) { + this.reflectionMaskInvert = jsonData.reflectionMaskInvert; + } + + if (jsonData.roughness!==undefined) { + this.roughness = jsonData.roughness; + } + if (jsonData.roughnessMask!==undefined) { + this.roughnessMask = jsonData.roughnessMask; + } + if (jsonData.roughnessMaskChannel!==undefined) { + this.roughnessMaskChannel = jsonData.roughnessMaskChannel; + } + if (jsonData.invertRoughnessMask!==undefined) { + this.roughnessMaskInvert = jsonData.roughnessMaskInvert; + } + + if (jsonData.unlit!==undefined) { + this.unlit = jsonData.unlit; + } + } + } + + get modifierFlags() { return this._modifierFlags; } + set modifierFlags(f) { this._modifierFlags = f; } + setEnabled(flag) { this._modifierFlags = this._modifierFlags | flag; } + isEnabled(flag) { return (this._modifierFlags & flag)!=0; } + + get diffuse() { return this._diffuse; } + get specular() { return this._specular; } + get shininess() { return this._shininess; } + get lightEmission() { return this._lightEmission; } + get refractionAmount() { return this._refractionAmount; } + get reflectionAmount() { return this._reflectionAmount; } + get texture() { return this._texture; } + get lightmap() { return this._lightmap; } + get normalMap() { return this._normalMap; } + get textureOffset() { return this._textureOffset; } + get textureScale() { return this._textureScale; } + get lightmapOffset() { return this._lightmapOffset; } + get lightmapScale() { return this._lightmapScale; } + get normalMapOffset() { return this._normalMapOffset; } + get normalMapScale() { return this._normalMapScale; } + get castShadows() { return this._castShadows; } + get receiveShadows() { return this._receiveShadows; } + get alphaCutoff() { return this._alphaCutoff; } + get shininessMask() { return this._shininessMask; } + get shininessMaskChannel() { return this._shininessMaskChannel; } + get shininessMaskInvert() { return this._shininessMaskInvert; } + get lightEmissionMask() { return this._lightEmissionMask; } + get lightEmissionMaskChannel() { return this._lightEmissionMaskChannel; } + get lightEmissionMaskInvert() { return this._lightEmissionMaskInvert; } + get reflectionMask() { return this._reflectionMask; } + get reflectionMaskChannel() { return this._reflectionMaskChannel; } + get reflectionMaskInvert() { return this._reflectionMaskInvert; } + get cullFace() { return this._cullFace; } + get roughness() { return this._roughness; } + get roughnessMask() { return this._roughnessMask; } + get roughnessMaskChannel() { return this._roughnessMaskChannel; } + get roughnessMaskInvert() { return this._roughnessMaskInvert; } + get unlit() { return this._unlit; } + + set diffuse(newVal) { this._diffuse = newVal; this.setEnabled(bg.base.MaterialFlag.DIFFUSE); } + set specular(newVal) { this._specular = newVal; this.setEnabled(bg.base.MaterialFlag.SPECULAR); } + set shininess(newVal) { if (!isNaN(newVal)) { this._shininess = newVal; this.setEnabled(bg.base.MaterialFlag.SHININESS); } } + set lightEmission(newVal) { if (!isNaN(newVal)) { this._lightEmission = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_EMISSION); } } + set refractionAmount(newVal) { if (!isNaN(newVal)) { this._refractionAmount = newVal; this.setEnabled(bg.base.MaterialFlag.REFRACTION_AMOUNT); } } + set reflectionAmount(newVal) { if (!isNaN(newVal)) { this._reflectionAmount = newVal; this.setEnabled(bg.base.MaterialFlag.REFLECTION_AMOUNT); } } + set texture(newVal) { this._texture = newVal; this.setEnabled(bg.base.MaterialFlag.TEXTURE); } + set lightmap(newVal) { this._lightmap = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_MAP); } + set normalMap(newVal) { this._normalMap = newVal; this.setEnabled(bg.base.MaterialFlag.NORMAL_MAP); } + set textureOffset(newVal) { this._textureOffset = newVal; this.setEnabled(bg.base.MaterialFlag.TEXTURE_OFFSET); } + set textureScale(newVal) { this._textureScale = newVal; this.setEnabled(bg.base.MaterialFlag.TEXTURE_SCALE); } + set lightmapOffset(newVal) { this._lightmapOffset = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_MAP_OFFSET); } + set lightmapScale(newVal) { this._lightmapScale = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_MAP_SCALE); } + set normalMapOffset(newVal) { this._normalMapOffset = newVal; this.setEnabled(bg.base.MaterialFlag.NORMAL_MAP_OFFSET); } + set normalMapScale(newVal) { this._normalMapScale = newVal; this.setEnabled(bg.base.MaterialFlag.NORMAL_MAP_SCALE); } + set castShadows(newVal) { this._castShadows = newVal; this.setEnabled(bg.base.MaterialFlag.CAST_SHADOWS); } + set receiveShadows(newVal) { this._receiveShadows = newVal; this.setEnabled(bg.base.MaterialFlag.RECEIVE_SHADOWS); } + set alphaCutoff(newVal) { if (!isNaN(newVal)) { this._alphaCutoff = newVal; this.setEnabled(bg.base.MaterialFlag.ALPHA_CUTOFF); } } + set shininessMask(newVal) { this._shininessMask = newVal; this.setEnabled(bg.base.MaterialFlag.SHININESS_MASK); } + set shininessMaskChannel(newVal) { this._shininessMaskChannel = newVal; this.setEnabled(bg.base.MaterialFlag.SHININESS_MASK_CHANNEL); } + set shininessMaskInvert(newVal) { this._shininessMaskInvert = newVal; this.setEnabled(bg.base.MaterialFlag.SHININESS_MASK_INVERT); } + set lightEmissionMask(newVal) { this._lightEmissionMask = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK); } + set lightEmissionMaskChannel(newVal) { this._lightEmissionMaskChannel = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_CHANNEL); } + set lightEmissionMaskInvert(newVal) { this._lightEmissionMaskInvert = newVal; this.setEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_INVERT); } + set reflectionMask(newVal) { this._reflectionMask = newVal; this.setEnabled(bg.base.MaterialFlag.REFLECTION_MASK); } + set reflectionMaskChannel(newVal) { this._reflectionMaskChannel = newVal; this.setEnabled(bg.base.MaterialFlag.REFLECTION_MASK_CHANNEL); } + set reflectionMaskInvert(newVal) { this._reflectionMaskInvert = newVal; this.setEnabled(bg.base.MaterialFlag.REFLECTION_MASK_INVERT); } + set cullFace(newVal) { this._cullFace = newVal; this.setEnabled(bg.base.MaterialFlag.CULL_FACE); } + set roughness(newVal) { this._roughness = newVal; this.setEnabled(bg.base.MaterialFlag.ROUGHNESS); } + set roughnessMask(newVal) { this._roughnessMask = newVal; this.setEnabled(bg.base.MaterialFlag.ROUGHNESS); } + set roughnessMaskChannel(newVal) { this._roughnessMaskChannel = newVal; this.setEnabled(bg.base.MaterialFlag.ROUGHNESS); } + set roughnessMaskInvert(newVal) { this._roughnessMaskInvert = newVal; this.setEnabled(bg.base.MaterialFlag.ROUGHNESS); } + set unlit(newVal) { this._unlit = newVal; this.setEnabled(bg.base.MaterialFlag.UNLIT); } + + clone() { + let copy = new MaterialModifier(); + copy.assign(this); + return copy; + } + + assign(mod) { + this._modifierFlags = mod._modifierFlags; + + this._diffuse = mod._diffuse; + this._specular = mod._specular; + this._shininess = mod._shininess; + this._lightEmission = mod._lightEmission; + this._refractionAmount = mod._refractionAmount; + this._reflectionAmount = mod._reflectionAmount; + this._texture = mod._texture; + this._lightmap = mod._lightmap; + this._normalMap = mod._normalMap; + this._textureOffset = mod._textureOffset; + this._textureScale = mod._textureScale; + this._lightmapOffset = mod._lightmapOffset; + this._lightmapScale = mod._lightmapScale; + this._normalMapOffset = mod._normalMapOffset; + this._normalMapScale = mod._normalMapScale; + this._castShadows = mod._castShadows; + this._receiveShadows = mod._receiveShadows; + this._alphaCutoff = mod._alphaCutoff; + this._shininessMask = mod._shininessMask; + this._shininessMaskChannel = mod._shininessMaskChannel; + this._shininessMaskInvert = mod._shininessMaskInvert; + this._lightEmissionMask = mod._lightEmissionMask; + this._lightEmissionMaskChannel = mod._lightEmissionMaskChannel; + this._lightEmissionMaskInvert = mod._lightEmissionMaskInvert; + this._reflectionMask = mod._reflectionMask; + this._reflectionMaskChannel = mod._reflectionMaskChannel; + this._reflectionMaskInvert = mod._reflectionMaskInvert; + this._cullFace = mod._cullFace; + this._roughness = mod._roughness; + this._roughnessMask = mod._roughnessMask; + this._roughnessMaskChannel = mod._roughnessMaskChannel; + this._roughnessMaskInvert = mod._roughnessMaskInvert; + this._unlit = mod._unlit; + } + + serialize() { + let result = {}; + let mask = this._modifierFlags; + + if ( mask & bg.base.MaterialFlag.DIFFUSE) { + result.diffuseR = this._diffuse.r; + result.diffuseG = this._diffuse.g; + result.diffuseB = this._diffuse.b; + result.diffuseA = this._diffuse.a; + } + if ( mask & bg.base.MaterialFlag.SPECULAR) { + result.specularR = this._specular.r; + result.specularG = this._specular.g; + result.specularB = this._specular.b; + result.specularA = this._specular.a; + } + if ( mask & bg.base.MaterialFlag.SHININESS) { + result.shininess = this._shininess; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK) { + result.shininessMask = this._shininessMask; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK_CHANNEL) { + result.shininessMaskChannel = this._shininessMaskChannel; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK_INVERT) { + result.invertShininessMask = this._shininessMaskInvert; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION) { + result.lightEmission = this._lightEmission; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK) { + result.lightEmissionMask = this._lightEmissionMask; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK_CHANNEL) { + result.lightEmissionMaskChannel = this._lightEmissionMaskChannel; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK_INVERT) { + result.invertLightEmissionMask = this._lightEmissionMaskInvert; + } + if ( mask & bg.base.MaterialFlag.REFRACTION_AMOUNT) { + result.reflectionAmount = this._refractionAmount; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_AMOUNT) { + result.refractionAmount = this._reflectionAmount; + } + if ( mask & bg.base.MaterialFlag.TEXTURE) { + result.texture = this._texture; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP) { + result.lightmap = this._lightmap; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP) { + result.normalMap = this._normalMap; + } + if ( mask & bg.base.MaterialFlag.TEXTURE_OFFSET) { + result.textureScaleX = this._textureScale.x; + result.textureScaleY = this._textureScale.y; + } + if ( mask & bg.base.MaterialFlag.TEXTURE_SCALE) { + result.textureScaleX = this._textureScale.x; + result.textureScaleY = this._textureScale.y; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP_OFFSET) { + result.lightmapOffsetX = this._lightmapOffset.x; + result.lightmapOffsetY = this._lightmapOffset.y; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP_SCALE) { + result.lightmapScaleX = this._lightmapScale.x; + result.lightmapScaleY = this._lightmapScale.y; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP_OFFSET) { + result.normalMapOffsetX = this._normalMapOffset.x; + result.normalMapOffsetY = this._normalMapOffset.y; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP_SCALE) { + result.normalMapScaleX = this._normalMapScale.x; + result.normalMapScaleY = this._normalMapScale.y; + } + if ( mask & bg.base.MaterialFlag.CAST_SHADOWS) { + result.castShadows = this._castShadows; + } + if ( mask & bg.base.MaterialFlag.RECEIVE_SHADOWS) { + result.receiveShadows = this._receiveShadows; + } + if ( mask & bg.base.MaterialFlag.ALPHA_CUTOFF) { + result.alphaCutoff = this._alphaCutoff; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK) { + result.reflectionMask = this._reflectionMask; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK_CHANNEL) { + result.reflectionMaskChannel = this._reflectionMaskChannel; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK_INVERT) { + result.invertReflectionMask = this._reflectionMaskInvert; + } + if ( mask & bg.base.MaterialFlag.CULL_FACE) { + result.cullFace = this._cullFace; + } + if ( mask & bg.base.MaterialFlag.ROUGHNESS) { + result.roughness = this._roughness; + result.roughnessMask = this._roughnessMask; + result.roughnessMaskChannel = this._roughnessMaskChannel; + result.invertRoughnessMask = this._roughnessMaskInvert; + } + if (mask & bg.base.MaterialFlag.UNLIT) { + result.unlit = this._unlit; + } + return result; + } + } + + bg.base.MaterialModifier = MaterialModifier; + + function isAbsolutePath(path) { + return /^(f|ht)tps?:\/\//i.test(path); + } + + function getTexture(context,texturePath,resourcePath) { + let texture = null; + if (texturePath) { + if (!isAbsolutePath(texturePath)) { + if (resourcePath.slice(-1)!='/') { + resourcePath += '/'; + } + texturePath = `${resourcePath}${texturePath}`; + } + + texture = bg.base.TextureCache.Get(context).find(texturePath); + if (!texture) { + texture = new bg.base.Texture(context); + texture.create(); + texture.fileName = texturePath; + bg.base.TextureCache.Get(context).register(texturePath,texture); + + (function(path,tex) { + bg.utils.Resource.Load(path) + .then(function(imgData) { + tex.bind(); + texture.minFilter = bg.base.TextureLoaderPlugin.GetMinFilter(); + texture.magFilter = bg.base.TextureLoaderPlugin.GetMinFilter(); + tex.fileName = path; + tex.setImage(imgData); + }); + })(texturePath,texture); + } + } + return texture; + } + + function getPath(texture) { + return texture ? texture.fileName:""; + } + + function channelVector(channel) { + return new bg.Vector4( + channel==0 ? 1:0, + channel==1 ? 1:0, + channel==2 ? 1:0, + channel==3 ? 1:0 + ); + } + + function readVector(data) { + if (!data) return null; + switch (data.length) { + case 2: + return new bg.Vector2(data[0],data[1]); + case 3: + return new bg.Vector3(data[0],data[1],data[2]); + case 4: + return new bg.Vector4(data[0],data[1],data[2],data[3]); + } + return null; + } + + let g_base64Images = {}; + + function readTexture(context,basePath,texData,mat,property) { + return new Promise((resolve) => { + if (!texData) { + resolve(); + } + else if (/data\:image\/[a-z]+\;base64\,/.test(texData)) { + let hash = bg.utils.md5(texData); + if (g_base64Images[hash]) { + mat[property] = g_base64Images[hash]; + } + else { + mat[property] = bg.base.Texture.FromBase64Image(context,texData); + g_base64Images[hash] = mat[property]; + } + resolve(mat[property]); + } +// else if (/data\:md5/.test(texData)) { + +// } + else { + let fullPath = basePath + texData; // TODO: add full path + bg.base.Loader.Load(context,fullPath) + .then(function(tex) { + mat[property] = tex; + resolve(tex); + }); + } + }); + } + + class Material { + // Create and initialize a material from the json material definition + static FromMaterialDefinition(context,def,basePath="") { + return new Promise((resolve,reject) => { + let mat = new Material(); + + mat.diffuse = readVector(def.diffuse) || bg.Color.White(); + mat.specular = readVector(def.specular) || bg.Color.White(); + mat.shininess = def.shininess || 0; + mat.shininessMaskChannel = def.shininessMaskChannel || 0; + mat.shininessMaskInvert = def.shininessMaskInvert || false; + mat.lightEmission = def.lightEmission || 0; + mat.lightEmissionMaskChannel = def.lightEmissionMaskChannel || 0; + mat.lightEmissionMaskInvert = def.lightEmissionMaskInvert || false; + mat.refractionAmount = def.refractionAmount || 0; + mat.reflectionAmount = def.reflectionAmount || 0; + mat.reflectionMaskChannel = def.reflectionMaskChannel || 0; + mat.reflectionMaskInvert = def.reflectionMaskInvert || false; + mat.textureOffset = readVector(def.textureOffset) || new bg.Vector2(0,0); + mat.textureScale = readVector(def.textureScale) || new bg.Vector2(1,1); + mat.normalMapOffset = readVector(def.normalMapOffset) || new bg.Vector2(0,0); + mat.normalMapScale = readVector(def.normalMapScale) || new bg.Vector2(1,1); + mat.cullFace = def.cullFace===undefined ? true : def.cullFace; + mat.castShadows = def.castShadows===undefined ? true : def.castShadows; + mat.receiveShadows = def.receiveShadows===undefined ? true : def.receiveShadows; + mat.alphaCutoff = def.alphaCutoff===undefined ? 0.5 : def.alphaCutoff; + mat.name = def.name; + mat.description = def.description; + mat.roughness = def.roughness || 0; + mat.roughnessMaskChannel = def.roughnessMaskChannel || 0; + mat.roughnessMaskInvert = def.roughnessMaskInvert || false; + mat.unlit = def.unlit || false; + + let texPromises = []; + texPromises.push(readTexture(context,basePath,def.shininessMask,mat,"shininessMask")); + texPromises.push(readTexture(context,basePath,def.lightEmissionMask,mat,"lightEmissionMask")); + texPromises.push(readTexture(context,basePath,def.reflectionMask,mat,"reflectionMask")); + texPromises.push(readTexture(context,basePath,def.texture,mat,"texture")); + texPromises.push(readTexture(context,basePath,def.normalMap,mat,"normalMap")); + texPromises.push(readTexture(context,basePath,def.roughnessMask,mat,"roughnessMask")); + + Promise.all(texPromises) + .then(() => { + resolve(mat); + }); + }); + } + + constructor() { + this._diffuse = bg.Color.White(); + this._specular = bg.Color.White(); + this._shininess = 0; + this._lightEmission = 0; + this._refractionAmount = 0; + this._reflectionAmount = 0; + this._texture = null; + this._lightmap = null; + this._normalMap = null; + this._textureOffset = new bg.Vector2(); + this._textureScale = new bg.Vector2(1); + this._lightmapOffset = new bg.Vector2(); + this._lightmapScale = new bg.Vector2(1); + this._normalMapOffset = new bg.Vector2(); + this._normalMapScale = new bg.Vector2(1); + this._castShadows = true; + this._receiveShadows = true; + this._alphaCutoff = 0.5; + this._shininessMask = null; + this._shininessMaskChannel = 0; + this._shininessMaskInvert = false; + this._lightEmissionMask = null; + this._lightEmissionMaskChannel = 0; + this._lightEmissionMaskInvert = false; + this._reflectionMask = null; + this._reflectionMaskChannel = 0; + this._reflectionMaskInvert = false; + this._cullFace = true; + this._roughness = 0; + this._roughnessMask = null; + this._roughnessMaskChannel = 0; + this._roughnessMaskInvert = false; + this._unlit = false; + + this._selectMode = false; + } + + clone() { + let copy = new Material(); + copy.assign(this); + return copy; + } + + assign(other) { + this._diffuse = new bg.Color(other.diffuse); + this._specular = new bg.Color(other.specular); + this._shininess = other.shininess; + this._lightEmission = other.lightEmission; + this._refractionAmount = other.refractionAmount; + this._reflectionAmount = other.reflectionAmount; + this._texture = other.texture; + this._lightmap = other.lightmap; + this._normalMap = other.normalMap; + this._textureOffset = new bg.Vector2(other.textureOffset); + this._textureScale = new bg.Vector2(other.textureScale); + this._lightmapOffset = new bg.Vector2(other.ligthmapOffset); + this._lightmapScale = new bg.Vector2(other.lightmapScale); + this._normalMapOffset = new bg.Vector2(other.normalMapOffset); + this._normalMapScale = new bg.Vector2(other.normalMapScale); + this._castShadows = other.castShadows; + this._receiveShadows = other.receiveShadows; + this._alphaCutoff = other.alphaCutoff; + this._shininessMask = other.shininessMask; + this._shininessMaskChannel = other.shininessMaskChannel; + this._shininessMaskInvert = other.shininessMaskInvert; + this._lightEmissionMask = other.lightEmissionMask; + this._lightEmissionMaskChannel = other.lightEmissionMaskChannel; + this._lightEmissionMaskInvert = other.lightEmissionMaskInvert; + this._reflectionMask = other.reflectionMask; + this._reflectionMaskChannel = other.reflectionMaskChannel; + this._reflectionMaskInvert = other.reflectionMaskInvert; + this._cullFace = other.cullFace; + this._roughness = other.roughness; + this._roughnessMask = other.roughnessMask; + this._roughnessMaskChannel = other.roughnessMaskChannel; + this._roughnessMaskInvert = other.roughnessMaskInvert; + this._unlit = other.unlit; + } + + get isTransparent() { + return this._diffuse.a<1; + } + + get diffuse() { return this._diffuse; } + get specular() { return this._specular; } + get shininess() { return this._shininess; } + get lightEmission() { return this._lightEmission; } + get refractionAmount() { return this._refractionAmount; } + get reflectionAmount() { return this._reflectionAmount; } + get texture() { return this._texture; } + get lightmap() { return this._lightmap; } + get normalMap() { return this._normalMap; } + get textureOffset() { return this._textureOffset; } + get textureScale() { return this._textureScale; } + get lightmapOffset() { return this._lightmapOffset; } + get lightmapScale() { return this._lightmapScale; } + get normalMapOffset() { return this._normalMapOffset; } + get normalMapScale() { return this._normalMapScale; } + get castShadows() { return this._castShadows; } + get receiveShadows() { return this._receiveShadows; } + get alphaCutoff() { return this._alphaCutoff; } + get shininessMask() { return this._shininessMask; } + get shininessMaskChannel() { return this._shininessMaskChannel; } + get shininessMaskInvert() { return this._shininessMaskInvert; } + get lightEmissionMask() { return this._lightEmissionMask; } + get lightEmissionMaskChannel() { return this._lightEmissionMaskChannel; } + get lightEmissionMaskInvert() { return this._lightEmissionMaskInvert; } + get reflectionMask() { return this._reflectionMask; } + get reflectionMaskChannel() { return this._reflectionMaskChannel; } + get reflectionMaskInvert() { return this._reflectionMaskInvert; } + get cullFace() { return this._cullFace; } + get roughness() { return this._roughness; } + get roughnessMask() { return this._roughnessMask; } + get roughnessMaskChannel() { return this._roughnessMaskChannel; } + get roughnessMaskInvert() { return this._roughnessMaskInvert; } + get unlit() { return this._unlit; } + + + set diffuse(newVal) { this._diffuse = newVal; } + set specular(newVal) { this._specular = newVal; } + set shininess(newVal) { if (!isNaN(newVal)) this._shininess = newVal; } + set lightEmission(newVal) { if (!isNaN(newVal)) this._lightEmission = newVal; } + set refractionAmount(newVal) { this._refractionAmount = newVal; } + set reflectionAmount(newVal) { this._reflectionAmount = newVal; } + set texture(newVal) { this._texture = newVal; } + set lightmap(newVal) { this._lightmap = newVal; } + set normalMap(newVal) { this._normalMap = newVal; } + set textureOffset(newVal) { this._textureOffset = newVal; } + set textureScale(newVal) { this._textureScale = newVal; } + set lightmapOffset(newVal) { this._lightmapOffset = newVal; } + set lightmapScale(newVal) { this._lightmapScale = newVal; } + set normalMapOffset(newVal) { this._normalMapOffset = newVal; } + set normalMapScale(newVal) { this._normalMapScale = newVal; } + set castShadows(newVal) { this._castShadows = newVal; } + set receiveShadows(newVal) { this._receiveShadows = newVal; } + set alphaCutoff(newVal) { if (!isNaN(newVal)) this._alphaCutoff = newVal; } + set shininessMask(newVal) { this._shininessMask = newVal; } + set shininessMaskChannel(newVal) { this._shininessMaskChannel = newVal; } + set shininessMaskInvert(newVal) { this._shininessMaskInvert = newVal; } + set lightEmissionMask(newVal) { this._lightEmissionMask = newVal; } + set lightEmissionMaskChannel(newVal) { this._lightEmissionMaskChannel = newVal; } + set lightEmissionMaskInvert(newVal) { this._lightEmissionMaskInvert = newVal; } + set reflectionMask(newVal) { this._reflectionMask = newVal; } + set reflectionMaskChannel(newVal) { this._reflectionMaskChannel = newVal; } + set reflectionMaskInvert(newVal) { this._reflectionMaskInvert = newVal; } + set cullFace(newVal) { this._cullFace = newVal; } + set roughness(newVal) { this._roughness = newVal; } + set roughnessMask(newVal) { this._roughnessMask = newVal; } + set roughnessMaskChannel(newVal) { this._roughnessMaskChannel = newVal; } + set roughnessMaskInvert(newVal) { this._roughnessMaskInvert = newVal; } + + get unlit() { return this._unlit; } + set unlit(u) { this._unlit = u; } + + get selectMode() { return this._selectMode; } + set selectMode(s) { this._selectMode = s; } + + // Mask channel vectors: used to pass the mask channel to a shader + get lightEmissionMaskChannelVector() { + return channelVector(this.lightEmissionMaskChannel) + } + + get shininessMaskChannelVector() { + return channelVector(this.shininessMaskChannel); + } + + get reflectionMaskChannelVector() { + return channelVector(this.reflectionMaskChannel); + } + + get roughnessMaskChannelVector() { + return channelVector(this.roughnessMaskChannel); + } + + // Returns an array of the external resources used by this material, for example, + // the paths to the textures. If the "resources" parameter (array) is passed, the resources + // will be added to this array, and the parameter will be modified to include the new + // resources. If a resource exists in the "resources" parameter, it will not be added + getExternalResources(resources=[]) { + function tryadd(texture) { + if (texture && texture.fileName && texture.fileName!="" && resources.indexOf(texture.fileName)==-1) { + resources.push(texture.fileName); + } + } + tryadd(this.texture); + tryadd(this.lightmap); + tryadd(this.normalMap); + tryadd(this.shininessMask); + tryadd(this.lightEmissionMask); + tryadd(this.reflectionMask); + tryadd(this.roughnessMask); + return resources; + } + + copyMaterialSettings(mat,mask) { + if ( mask & bg.base.MaterialFlag.DIFFUSE) { + mat.diffuse = this.diffuse; + } + if ( mask & bg.base.MaterialFlag.SPECULAR) { + mat.specular = this.specular; + } + if ( mask & bg.base.MaterialFlag.SHININESS) { + mat.shininess = this.shininess; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION) { + mat.lightEmission = this.lightEmission; + } + if ( mask & bg.base.MaterialFlag.REFRACTION_AMOUNT) { + mat.refractionAmount = this.refractionAmount; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_AMOUNT) { + mat.reflectionAmount = this.reflectionAmount; + } + if ( mask & bg.base.MaterialFlag.TEXTURE) { + mat.texture = this.texture; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP) { + mat.lightmap = this.lightmap; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP) { + mat.normalMap = this.normalMap; + } + if ( mask & bg.base.MaterialFlag.TEXTURE_OFFSET) { + mat.textureOffset = this.textureOffset; + } + if ( mask & bg.base.MaterialFlag.TEXTURE_SCALE) { + mat.textureScale = this.textureScale; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP_OFFSET) { + mat.lightmapOffset = this.lightmapOffset; + } + if ( mask & bg.base.MaterialFlag.LIGHT_MAP_SCALE) { + mat.lightmapScale = this.lightmapScale; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP_OFFSET) { + mat.normalMapOffset = this.normalMapOffset; + } + if ( mask & bg.base.MaterialFlag.NORMAL_MAP_SCALE) { + mat.normalMapScale = this.normalMapScale; + } + if ( mask & bg.base.MaterialFlag.CAST_SHADOWS) { + mat.castShadows = this.castShadows; + } + if ( mask & bg.base.MaterialFlag.RECEIVE_SHADOWS) { + mat.receiveShadows = this.receiveShadows; + } + if ( mask & bg.base.MaterialFlag.ALPHA_CUTOFF) { + mat.alphaCutoff = this.alphaCutoff; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK) { + mat.shininessMask = this.shininessMask; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK_CHANNEL) { + mat.shininessMaskChannel = this.shininessMaskChannel; + } + if ( mask & bg.base.MaterialFlag.SHININESS_MASK_INVERT) { + mat.shininessMaskInvert = this.shininessMaskInvert; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK) { + mat.lightEmissionMask = this.lightEmissionMask; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK_CHANNEL) { + mat.lightEmissionMaskChannel = this.lightEmissionMaskChannel; + } + if ( mask & bg.base.MaterialFlag.LIGHT_EMISSION_MASK_INVERT) { + mat.lightEmissionMaskInvert = this.lightEmissionMaskInvert; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK) { + mat.reflectionMask = this.reflectionMask; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK_CHANNEL) { + mat.reflectionMaskChannel = this.reflectionMaskChannel; + } + if ( mask & bg.base.MaterialFlag.REFLECTION_MASK_INVERT) { + mat.reflectionMaskInvert = this.reflectionMaskInvert; + } + if ( mask & bg.base.MaterialFlag.CULL_FACE) { + mat.cullFace = this.cullFace; + } + + // All the roughness attributes are copied together using this flag. In + // the future, the *_MASK, *_MASK_CHANNEL and *_MASK_INVERT for shininess, + // light emission and reflection, will be deprecated and will work in the + // same way as ROUGHNESS here + if ( mask & bg.base.MaterialFlag.ROUGHNESS) { + mat.reflectionAmount = this.reflectionAmount; + mat.reflectionMask = this.reflectionMask; + mat.reflectionMaskChannel = this.reflectionMaskChannel; + mat.reflectionMaskInvert = this.reflectionMaskInvert; + } + + if (mask & bg.base.MaterialFlag.UNLIT) { + mat.unlit = this.unlit; + } + } + + applyModifier(context, mod, resourcePath) { + if (mod.isEnabled(bg.base.MaterialFlag.DIFFUSE)) { + this.diffuse = mod.diffuse; + } + if (mod.isEnabled(bg.base.MaterialFlag.SPECULAR)) { + this.specular = mod.specular; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS)) { + this.shininess = mod.shininess; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION)) { + this.lightEmission = mod.lightEmission; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFRACTION_AMOUNT)) { + this.refractionAmount = mod.refractionAmount; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_AMOUNT)) { + this.reflectionAmount = mod.reflectionAmount; + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE)) { + this.texture = getTexture(context,mod.texture,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP)) { + this.lightmap = getTexture(context,mod.lightmap,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP)) { + this.normalMap = getTexture(context,mod.normalMap,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE_OFFSET)) { + this.textureOffset = mod.textureOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE_SCALE)) { + this.textureScale = mod.textureScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP_OFFSET)) { + this.lightmapOffset = mod.lightmapOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP_SCALE)) { + this.lightmapScale = mod.lightmapScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP_OFFSET)) { + this.normalMapOffset = mod.normalMapOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP_SCALE)) { + this.normalMapScale = mod.normalMapScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.CAST_SHADOWS)) { + this.castShadows = mod.castShadows; + } + if (mod.isEnabled(bg.base.MaterialFlag.RECEIVE_SHADOWS)) { + this.receiveShadows = mod.receiveShadows; + } + if (mod.isEnabled(bg.base.MaterialFlag.ALPHA_CUTOFF)) { + this.alphaCutoff = mod.alphaCutoff; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK)) { + this.shininessMask = getTexture(context,mod.shininessMask,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK_CHANNEL)) { + this.shininessMaskChannel = mod.shininessMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK_INVERT)) { + this.shininessMaskInvert = mod.shininessMaskInvert; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK)) { + this.lightEmissionMask = getTexture(context,mod.lightEmissionMask,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_CHANNEL)) { + this.lightEmissionMaskChannel = mod.lightEmissionMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_INVERT)) { + this.lightEmissionMaskInvert = mod.lightEmissionMaskInvert; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK)) { + this.reflectionMask = getTexture(context,mod.reflectionMask,resourcePath); + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK_CHANNEL)) { + this.reflectionMaskChannel = mod.reflectionMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK_INVERT)) { + this.reflectionMaskInvert = mod.reflectionMaskInvert; + } + if (mod.isEnabled(bg.base.MaterialFlag.CULL_FACE)) { + this.cullFace = mod.cullFace; + } + + // See above note for ROUGHNESS flags + if (mod.isEnabled(bg.base.MaterialFlag.ROUGHNESS)) { + this.roughness = mod.roughness; + this.roughnessMask = getTexture(context,mod.roughnessMask,resourcePath); + this.roughnessMaskChannel = mod.roughnessMaskChannel; + this.roughnessMaskInvert = mod.roughnessMaskInvert; + } + + if (mod.isEnabled(bg.base.MaterialFlag.UNLIT)) { + this.unlit = mod.unlit; + } + } + + getModifierWithMask(modifierMask) { + var mod = new MaterialModifier(); + + mod.modifierFlags = modifierMask; + + if (mod.isEnabled(bg.base.MaterialFlag.DIFFUSE)) { + mod.diffuse = this.diffuse; + } + if (mod.isEnabled(bg.base.MaterialFlag.SPECULAR)) { + mod.specular = this.specular; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS)) { + mod.shininess = this.shininess; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION)) { + mod.lightEmission = this.lightEmission; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFRACTION_AMOUNT)) { + mod.refractionAmount = this.refractionAmount; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_AMOUNT)) { + mod.reflectionAmount = this.reflectionAmount; + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE)) { + mod.texture = getPath(this.texture); + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP)) { + mod.lightmap = getPath(this.lightmap); + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP)) { + mod.normalMap = getPath(this.normalMap); + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE_OFFSET)) { + mod.textureOffset = this.textureOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.TEXTURE_SCALE)) { + mod.textureScale = this.textureScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP_OFFSET)) { + mod.lightmapOffset = this.lightmapOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_MAP_SCALE)) { + mod.lightmapScale = this.lightmapScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP_OFFSET)) { + mod.normalMapOffset = this.normalMapOffset; + } + if (mod.isEnabled(bg.base.MaterialFlag.NORMAL_MAP_SCALE)) { + mod.normalMapScale = this.normalMapScale; + } + if (mod.isEnabled(bg.base.MaterialFlag.CAST_SHADOWS)) { + mod.castShadows = this.castShadows; + } + if (mod.isEnabled(bg.base.MaterialFlag.RECEIVE_SHADOWS)) { + mod.receiveShadows = this.receiveShadows; + } + if (mod.isEnabled(bg.base.MaterialFlag.ALPHA_CUTOFF)) { + mod.alphaCutoff = this.alphaCutoff; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK)) { + mod.shininessMask = getPath(this.shininessMask); + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK_CHANNEL)) { + mod.shininessMaskChannel = this.shininessMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.SHININESS_MASK_INVERT)) { + mod.shininessMaskInvert = this.shininessMaskInvert; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK)) { + mod.lightEmissionMask = getPath(this.lightEmissionMask); + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_CHANNEL)) { + mod.lightEmissionMaskChannel = this.lightEmissionMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.LIGHT_EMISSION_MASK_INVERT)) { + mod.lightEmissionMaskInver = this.lightEmissionMaskInver; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK)) { + mod.reflectionMask = getPath(this.reflectionMask); + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK_CHANNEL)) { + mod.reflectionMaskChannel = this.reflectionMaskChannel; + } + if (mod.isEnabled(bg.base.MaterialFlag.REFLECTION_MASK_INVERT)) { + mod.reflectionMaskInvert = this.reflectionMaskInvert; + } + if (mod.isEnabled(bg.base.MaterialFlag.CULL_FACE)) { + mod.cullFace = this.cullFace; + } + + // See above note about ROUGHNESS flag + if (mod.isEnabled(bg.base.MaterialFlag.ROUGHNESS)) { + mod.roughness = this.roughness; + mod.roughnessMask = getPath(this.roughnessMask); + mod.roughnessMaskChannel = this.roughnessMaskChannel; + mod.roughnessMaskInvert = this.roughnessMaskInvert; + } + + if (mod.isEnabled(bg.base.MaterialFlag.UNLIT)) { + mod.unlit = this.unlit; + } + + return mod; + } + + static GetMaterialWithJson(context,data,path) { + let material = new Material(); + if (data.cullFace===undefined) { + data.cullFace = true; + } + + material.diffuse.set(data.diffuseR,data.diffuseG,data.diffuseB,data.diffuseA); + material.specular.set(data.specularR,data.specularG,data.specularB,data.specularA); + material.shininess = data.shininess; + material.lightEmission = data.lightEmission; + + material.refractionAmount = data.refractionAmount; + material.reflectionAmount = data.reflectionAmount; + + material.textureOffset.set(data.textureOffsetX,data.textureOffsetY); + material.textureScale.set(data.textureScaleX,data.textureScaleY); + + material.lightmapOffset.set(data.lightmapOffsetX,data.lightmapOffsetY); + material.lightmapScale.set(data.lightmapScaleX,data.lightmapScaleY); + + material.normalMapOffset.set(data.normalMapOffsetX,data.normalMapOffsetY); + material.normalMapScale.set(data.normalMapScaleX,data.normalMapScaleY); + + material.alphaCutoff = data.alphaCutoff; + material.castShadows = data.castShadows; + material.receiveShadows = data.receiveShadows; + + material.shininessMaskChannel = data.shininessMaskChannel; + material.shininessMaskInvert = data.invertShininessMask; + + material.lightEmissionMaskChannel = data.lightEmissionMaskChannel; + material.lightEmissionMaskInvert = data.invertLightEmissionMask; + + material.reflectionMaskChannel = data.reflectionMaskChannel; + material.reflectionMaskInvert = data.invertReflectionMask; + + material.roughness = data.roughness; + material.roughnessMaskChannel = data.roughnessMaskChannel; + material.roughnessMaskInvert = data.invertRoughnessMask; + + material.cullFace = data.cullFace; + + material.unlit = data.unlit; + + if (path && path[path.length-1]!='/') { + path += '/'; + } + + function mergePath(path,file) { + if (!file) return null; + return path ? path + file:file; + } + + data.texture = mergePath(path,data.texture); + data.lightmap = mergePath(path,data.lightmap); + data.normalMap = mergePath(path,data.normalMap); + data.shininessMask = mergePath(path,data.shininessMask); + data.lightEmissionMask = mergePath(path,data.lightEmissionMask); + data.reflectionMask = mergePath(path,data.reflectionMask); + data.roughnessMask = mergePath(path,data.roughnessMask); + + return new Promise((accept,reject) => { + let textures = []; + + if (data.texture) { + textures.push(data.texture); + } + if (data.lightmap && textures.indexOf(data.lightmap)==-1) { + textures.push(data.lightmap); + } + if (data.normalMap && textures.indexOf(data.normalMap)==-1) { + textures.push(data.normalMap); + } + if (data.shininessMask && textures.indexOf(data.shininessMask)==-1) { + textures.push(data.shininessMask); + } + if (data.lightEmissionMask && textures.indexOf(data.lightEmissionMask)==-1) { + textures.push(data.lightEmissionMask); + } + if (data.reflectionMask && textures.indexOf(data.reflectionMask)==-1) { + textures.push(data.reflectionMask); + } + if (data.roughnessMask && textures.indexOf(data.roughnessMask)==-1) { + textures.push(data.roughnessMask); + } + + bg.utils.Resource.Load(textures) + .then(function(images) { + material.texture = loadTexture(context,images[data.texture],data.texture); + material.lightmap = loadTexture(context,images[data.lightmap],data.lightmap); + material.normalMap = loadTexture(context,images[data.normalMap],data.normalMap); + material.shininessMask = loadTexture(context,images[data.shininessMask],data.shininessMask); + material.lightEmissionMask = loadTexture(context,images[data.lightEmissionMask],data.lightEmissionMask); + material.reflectionMask = loadTexture(context,images[data.reflectionMask],data.reflectionMask); + material.roughnessMask = loadTexture(context,images[data.roughnessMask],data.roughnessMask); + accept(material); + }); + }); + } + } + + bg.base.Material = Material; +})(); + +(function() { + class MatrixStack { + constructor() { + this._matrix = bg.Matrix4.Identity(); + this._stack = []; + this._changed = true; + } + + get changed() { return this._changed; } + set changed(c) { this._changed = c; } + + push() { + this._stack.push(new bg.Matrix4(this._matrix)); + } + + set(m) { + this._matrix.assign(m); + this._changed = true; + return this; + } + + mult(m) { + this._matrix.mult(m); + this._changed = true; + return this; + } + + identity() { + this._matrix.identity(); + this._changed = true; + return this; + } + + translate(x, y, z) { + this._matrix.translate(x, y, z); + this._changed = true; + return this; + } + + rotate(alpha, x, y, z) { + this._matrix.rotate(alpha, x, y, z); + this._changed = true; + return this; + } + + scale(x, y, z) { + this._matrix.scale(x, y, z); + this._changed = true; + return this; + } + + setScale(x, y, z) { + this._matrix.setScale(x,y,z); + this._changed = true; + return this; + } + + perspective(fov,aspect,near,far) { + this._matrix + .identity() + .perspective(fov,aspect,near,far); + this._changed = true; + return this; + } + + frustum(left, right, bottom, top, nearPlane, farPlane) { + this._matrix + .identity() + .frustum(left,right,bottom,top,nearPlane,farPlane); + this._changed = true; + return this; + } + + ortho(left, right, bottom, top, nearPlane, farPlane) { + this._matrix + .identity() + .ortho(left,right,bottom,top,nearPlane,farPlane); + this._changed = true; + return this; + } + + invert() { + this._matrix.invert(); + this._changed = true; + return this; + } + + get matrix() { + this._changed = true; + return this._matrix; + } + + // This accessor will return the current matrix without mark the internal state + // to changed. There isn't any way in JavaScript to ensure that the returned matrix + // will not be changed, therefore use this accessor carefully. It's recommended to use this + // accessor ONLY to retrieve the matrix and pass it to the shaders. + get matrixConst() { + return this._matrix; + } + + pop() { + if (this._stack.length) { + this._matrix.assign(this._stack.pop()); + this._changed = true; + } + return this._matrix; + } + } + + bg.base.MatrixStack = MatrixStack; + + let s_MatrixState = null; + + class MatrixState { + static Current() { + if (!s_MatrixState) { + s_MatrixState = new MatrixState(); + } + return s_MatrixState; + } + + static SetCurrent(s) { + s_MatrixState = s; + return s_MatrixState; + } + + constructor() { + // Matrixes + this._modelMatrixStack = new MatrixStack(); + this._viewMatrixStack = new MatrixStack(); + this._projectionMatrixStack = new MatrixStack(); + this._modelViewMatrix = bg.Matrix4.Identity(); + this._normalMatrix = bg.Matrix4.Identity(); + this._cameraDistanceScale = null; + } + + get modelMatrixStack() { + return this._modelMatrixStack; + } + + get viewMatrixStack() { + return this._viewMatrixStack; + } + + get projectionMatrixStack() { + return this._projectionMatrixStack; + } + + get modelViewMatrix() { + if (!this._modelViewMatrix || this._modelMatrixStack.changed || this._viewMatrixStack.changed) { + this._modelViewMatrix = new bg.Matrix4(this._viewMatrixStack._matrix); + this._modelViewMatrix.mult(this._modelMatrixStack._matrix); + this._modelMatrixStack.changed = false; + this._viewMatrixStack.changed = false; + } + return this._modelViewMatrix; + } + + get normalMatrix() { + if (!this._normalMatrix || this._modelMatrixStack.changed || this._viewMatrixStack.changed) { + this._normalMatrix = new bg.Matrix4(this.modelViewMatrix); + this._normalMatrix.invert(); + this._normalMatrix.traspose(); + this._modelMatrixStack.changed = false; + } + return this._normalMatrix; + } + + get viewMatrixInvert() { + if (!this._viewMatrixInvert || this._viewMatrixStack.changed) { + this._viewMatrixInvert = new bg.Matrix4(this.viewMatrixStack.matrixConst); + this._viewMatrixInvert.invert(); + } + return this._viewMatrixInvert; + } + + // This function returns a number that represents the + // distance from the camera to the model. + get cameraDistanceScale() { + return this._cameraDistanceScale = this._viewMatrixStack.matrix.position.magnitude(); + } + } + + bg.base.MatrixState = MatrixState; +})(); +(function() { + + bg.base.ClearBuffers = { + COLOR:null, + DEPTH:null, + COLOR_DEPTH:null + }; + + bg.base.BlendMode = { + NORMAL: 1, // It works as the Photoshop layers does GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA, GL_FUNC_ADD + MULTIPLY: 2, // GL_ZERO GL_SRC_COLOR, GL_FUNC_ADD + ADD: 3, // GL_ONE GL_ONE, GL_FUNC_ADD + SUBTRACT: 4, // GL_ONE GL_ONE, GL_FUNC_SUBTRACT + ALPHA_ADD: 5, // GL_SRC_ALPHA GL_DST_ALPHA, GL_FUNC_ADD + ALPHA_SUBTRACT: 6 // GL_SRC_ALPHA GL_DST_ALPHA, GL_FUNC_SUBTRACT + }; + + bg.base.OpacityLayer = { + TRANSPARENT: 0b1, + OPAQUE: 0b10, + GIZMOS: 0b100, + SELECTION: 0b1000, + GIZMOS_SELECTION: 0b10000, + ALL: 0b1111, + NONE: 0 + }; + + class PipelineImpl { + constructor(context) { + this.initFlags(context); + bg.base.ClearBuffers.COLOR_DEPTH = bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH; + } + + initFlags(context) {} + + setViewport(context,vp) {} + clearBuffers(context,color,buffers) {} + setDepthTestEnabled(context,e) {} + setBlendEnabled(context,e) {} + setBlendMode(context,m) {} + setCullFace(context,e) {} + } + + bg.base.PipelineImpl = PipelineImpl; + + let s_currentPipeline = null; + + function enablePipeline(pipeline) { + if (pipeline._effect) { + pipeline._effect.setActive(); + } + pipeline.renderSurface.setActive(); + + bg.Engine.Get().pipeline.setViewport(pipeline.context,pipeline._viewport); + bg.Engine.Get().pipeline.setDepthTestEnabled(pipeline.context,pipeline._depthTest); + bg.Engine.Get().pipeline.setCullFace(pipeline.context,pipeline._cullFace); + bg.Engine.Get().pipeline.setBlendEnabled(pipeline.context,pipeline._blend); + bg.Engine.Get().pipeline.setBlendMode(pipeline.context,pipeline._blendMode); + } + + class Pipeline extends bg.app.ContextObject { + static SetCurrent(p) { + s_currentPipeline = p; + if (s_currentPipeline) { + enablePipeline(s_currentPipeline); + } + } + + static Current() { return s_currentPipeline; } + + constructor(context) { + super(context); + + // Opacity layer + this._opacityLayer = bg.base.OpacityLayer.ALL; + + // Viewport + this._viewport = new bg.Viewport(0,0,200,200); + + // Clear buffer + this._clearColor = bg.Color.Black(); + + // Effect (used with draw method) + this._effect = null; + + // Texture effect (used with drawTexture method) + this._textureEffect = null; + + + // Other flags + this._depthTest = true; + this._cullFace = true; + + // Render surface + this._renderSurface = null; + + // Blending + this._blend = false; + this._blendMode = bg.base.BlendMode.NORMAL; + + this._buffersToClear = bg.base.ClearBuffers.COLOR_DEPTH; + } + + get isCurrent() { return s_currentPipeline==this; } + + set opacityLayer(l) { this._opacityLayer = l; } + get opacityLayer() { return this._opacityLayer; } + shouldDraw(material) { + return material && + ((material.isTransparent && (this._opacityLayer & bg.base.OpacityLayer.TRANSPARENT)!=0) || + (!material.isTransparent && (this._opacityLayer & bg.base.OpacityLayer.OPAQUE)!=0)); + } + + get effect() { return this._effect; } + set effect(m) { + this._effect = m; + if (this._effect && this.isCurrent) { + this._effect.setActive(); + } + } + + get textureEffect() { + if (!this._textureEffect) { + this._textureEffect = new bg.base.DrawTextureEffect(this.context); + } + return this._textureEffect; + } + + set textureEffect(t) { + this._textureEffect = t; + } + + set buffersToClear(b) { this._buffersToClear = b; } + get buffersToClear() { return this._buffersToClear; } + + get renderSurface() { + if (!this._renderSurface) { + this._renderSurface = new bg.base.ColorSurface(this.context); + this._renderSurface.setActive(); + } + return this._renderSurface; + } + + set renderSurface(r) { + this._renderSurface = r; + if (this.isCurrent) { + this._renderSurface.setActive(); + } + } + + draw(polyList) { + if (this._effect && polyList && this.isCurrent) { + let cf = this.cullFace; + this._effect.bindPolyList(polyList); + if (this._effect.material) { + + this.cullFace = this._effect.material.cullFace; + } + polyList.draw(); + this._effect.unbind(); + this.cullFace = cf; + } + } + + drawTexture(texture) { + let depthTest = this.depthTest; + this.depthTest = false; + this.textureEffect.drawSurface(texture); + this.depthTest = depthTest; + } + + get blend() { return this._blend; } + set blend(b) { + this._blend = b; + if (this.isCurrent) { + bg.Engine.Get().pipeline.setBlendEnabled(this.context,this._blend); + } + } + + get blendMode() { return this._blendMode; } + set blendMode(b) { + this._blendMode = b; + if (this.isCurrent) { + bg.Engine.Get().pipeline.setBlendMode(this.context,this._blendMode); + } + } + + get viewport() { return this._viewport; } + set viewport(vp) { + this._viewport = vp; + if (this.renderSurface.resizeOnViewportChanged) { + this.renderSurface.size = new bg.Vector2(vp.width,vp.height); + } + if (this.isCurrent) { + bg.Engine.Get().pipeline.setViewport(this.context,this._viewport); + } + } + + clearBuffers(buffers) { + if (this.isCurrent) { + buffers = buffers!==undefined ? buffers : this._buffersToClear; + bg.Engine.Get().pipeline.clearBuffers(this.context,this._clearColor,buffers); + } + } + + get clearColor() { return this._clearColor; } + set clearColor(c) { this._clearColor = c; } + + get depthTest() { return this._depthTest; } + set depthTest(e) { + this._depthTest = e; + if (this.isCurrent) { + bg.Engine.Get().pipeline.setDepthTestEnabled(this.context,this._depthTest); + } + } + + get cullFace() { return this._cullFace; } + set cullFace(c) { + this._cullFace = c; + if (this.isCurrent) { + bg.Engine.Get().pipeline.setCullFace(this.context,this._cullFace); + } + } + } + + bg.base.Pipeline = Pipeline; +})(); +(function() { + + bg.base.BufferType = { + VERTEX: 1 << 0, + NORMAL: 1 << 1, + TEX_COORD_0: 1 << 2, + TEX_COORD_1: 1 << 3, + TEX_COORD_2: 1 << 4, + COLOR: 1 << 5, + TANGENT: 1 << 6, + INDEX: 1 << 7 + }; + + class PolyListImpl { + constructor(context) { + this.initFlags(context); + } + + initFlags(context) {} + create(context) {} + build(context,plist,vert,norm,t0,t1,t2,col,tan,index) { return false; } + draw(context,plist,drawMode,numberOfIndex) {} + destroy(context,plist) {} + + // NOTE: the new buffer data must have the same size as the old one + update(context,plist,bufferType,newData) {} + } + + function createTangents(plist) { + if (!plist.texCoord0 || !plist.vertex) return; + plist._tangent = []; + + let result = []; + let generatedIndexes = {}; + let invalidUV = false; + if (plist.index.length%3==0) { + for (let i=0; i<plist.index.length - 2; i+=3) { + let v0i = plist.index[i] * 3; + let v1i = plist.index[i + 1] * 3; + let v2i = plist.index[i + 2] * 3; + + let t0i = plist.index[i] * 2; + let t1i = plist.index[i + 1] * 2; + let t2i = plist.index[i + 2] * 2; + + let v0 = new bg.Vector3(plist.vertex[v0i], plist.vertex[v0i + 1], plist.vertex[v0i + 2]); + let v1 = new bg.Vector3(plist.vertex[v1i], plist.vertex[v1i + 1], plist.vertex[v1i + 2]); + let v2 = new bg.Vector3(plist.vertex[v2i], plist.vertex[v2i + 1], plist.vertex[v2i + 2]); + + let t0 = new bg.Vector2(plist.texCoord0[t0i], plist.texCoord0[t0i + 1]); + let t1 = new bg.Vector2(plist.texCoord0[t1i], plist.texCoord0[t1i + 1]); + let t2 = new bg.Vector2(plist.texCoord0[t2i], plist.texCoord0[t2i + 1]); + + let edge1 = (new bg.Vector3(v1)).sub(v0); + let edge2 = (new bg.Vector3(v2)).sub(v0); + + let deltaU1 = t1.x - t0.x; + let deltaV1 = t1.y - t0.y; + let deltaU2 = t2.x - t0.x; + let deltaV2 = t2.y - t0.y; + + let den = (deltaU1 * deltaV2 - deltaU2 * deltaV1); + let tangent = null; + if (den==0) { + let n = new bg.Vector3(plist.normal[v0i], plist.normal[v0i + 1], plist.normal[v0i + 2]); + + invalidUV = true; + tangent = new bg.Vector3(n.y, n.z, n.x); + } + else { + let f = 1 / den; + + tangent = new bg.Vector3(f * (deltaV2 * edge1.x - deltaV1 * edge2.x), + f * (deltaV2 * edge1.y - deltaV1 * edge2.y), + f * (deltaV2 * edge1.z - deltaV1 * edge2.z)); + tangent.normalize(); + } + + if (generatedIndexes[v0i]===undefined) { + result.push(tangent.x); + result.push(tangent.y); + result.push(tangent.z); + generatedIndexes[v0i] = tangent; + } + + if (generatedIndexes[v1i]===undefined) { + result.push(tangent.x); + result.push(tangent.y); + result.push(tangent.z); + generatedIndexes[v1i] = tangent; + } + + if (generatedIndexes[v2i]===undefined) { + result.push(tangent.x); + result.push(tangent.y); + result.push(tangent.z); + generatedIndexes[v2i] = tangent; + } + } + } + else { // other draw modes: lines, line_strip + for (let i=0; i<plist.vertex.length; i+=3) { + plist._tangent.push(0,0,1); + } + } + if (invalidUV) { + console.warn("Invalid UV texture coords found. Some objects may present artifacts in the lighting, and not display textures properly.") + } + return result; + } + + bg.base.PolyListImpl = PolyListImpl; + + bg.base.DrawMode = { + TRIANGLES: null, + TRIANGLE_FAN: null, + TRIANGLE_STRIP: null, + LINES: null, + LINE_STRIP: null + }; + + class PolyList extends bg.app.ContextObject { + constructor(context) { + super(context); + + this._plist = null; + + this._drawMode = bg.base.DrawMode.TRIANGLES; + + this._name = ""; + this._groupName = ""; + this._visible = true; + this._visibleToShadows = true; + + this._vertex = []; + this._normal = []; + this._texCoord0 = []; + this._texCoord1 = []; + this._texCoord2 = []; + this._color = []; + this._tangent = []; + this._index = []; + } + + clone() { + let pl2 = new PolyList(this.context); + + let copy = function(src,dst) { + src.forEach(function(item) { + dst.push(item); + }); + }; + + pl2.name = this.name + " clone"; + pl2.groupName = this.groupName; + pl2.visible = this.visible; + pl2.visibleToShadows = this.visibleToShadows; + pl2.drawMode = this.drawMode; + + copy(this.vertex,pl2.vertex); + copy(this.normal,pl2.normal); + copy(this.texCoord0,pl2.texCoord0); + copy(this.texCoord1,pl2.texCoord1); + copy(this.texCoord2,pl2.texCoord02); + copy(this.color,pl2.color); + copy(this.index,pl2.index); + pl2.build(); + + return pl2; + } + + get name() { return this._name; } + set name(n) { this._name = n; } + + get groupName() { return this._groupName; } + set groupName(n) { this._groupName = n; } + + get visible() { return this._visible; } + set visible(v) { this._visible = v; } + + get visibleToShadows() { return this._visibleToShadows; } + set visibleToShadows(v) { this._visibleToShadows = v; } + + get drawMode() { return this._drawMode; } + set drawMode(m) { this._drawMode = m; } + + set vertex(v) { this._vertex = v; } + set normal(n) { this._normal = n; } + set texCoord0(t) { this._texCoord0 = t; } + set texCoord1(t) { this._texCoord1 = t; } + set texCoord2(t) { this._texCoord2 = t; } + set color(c) { this._color = c; } + // Tangent buffer is calculated from normal buffer + set index(i) { this._index = i; } + + get vertex() { return this._vertex; } + get normal() { return this._normal; } + get texCoord0() { return this._texCoord0; } + get texCoord1() { return this._texCoord1; } + get texCoord2() { return this._texCoord2; } + get color() { return this._color; } + get tangent() { return this._tangent; } + get index() { return this._index; } + + get vertexBuffer() { return this._plist.vertexBuffer; } + get normalBuffer() { return this._plist.normalBuffer; } + get texCoord0Buffer() { return this._plist.tex0Buffer; } + get texCoord1Buffer() { return this._plist.tex1Buffer; } + get texCoord2Buffer() { return this._plist.tex2Buffer; } + get colorBuffer() { return this._plist.colorBuffer; } + get tangentBuffer() { return this._plist.tangentBuffer; } + get indexBuffer() { return this._plist.indexBuffer; } + + // Note that the new buffer must have the same size as the old one, this + // function is intended to be used only to replace the buffer values + updateBuffer(bufferType,newData) { + let status = false; + switch (bufferType) { + case bg.base.BufferType.VERTEX: + status = this.vertex.length==newData.length; + break; + case bg.base.BufferType.NORMAL: + status = this.normal.length==newData.length; + break; + case bg.base.BufferType.TEX_COORD_0: + status = this.texCoord0.length==newData.length; + break; + case bg.base.BufferType.TEX_COORD_1: + status = this.texCoord1.length==newData.length; + break; + case bg.base.BufferType.TEX_COORD_2: + status = this.texCoord2.length==newData.length; + break; + case bg.base.BufferType.COLOR: + status = this.color.length==newData.length; + break; + case bg.base.BufferType.TANGENT: + status = this.tangent.length==newData.length; + break; + case bg.base.BufferType.INDEX: + status = this.index.length==newData.length; + break; + } + if (!status) { + throw new Error("Error updating buffer: The new buffer have different size as the old one."); + } + else { + bg.Engine.Get().polyList.update(this.context,this._plist,bufferType,newData); + } + } + + build() { + if (this.color.length==0) { + // Ensure that the poly list have a color buffer + for (let i = 0; i<this.vertex.length; i+=3) { + this.color.push(1); + this.color.push(1); + this.color.push(1); + this.color.push(1); + } + } + + let plistImpl = bg.Engine.Get().polyList; + if (this._plist) { + plistImpl.destroy(this.context, this._plist); + this._tangent = []; + } + this._tangent = createTangents(this); + this._plist = plistImpl.create(this.context); + return plistImpl.build(this.context, this._plist, + this._vertex, + this._normal, + this._texCoord0, + this._texCoord1, + this._texCoord2, + this._color, + this._tangent, + this._index); + } + + draw() { + bg.Engine.Get().polyList + .draw(this.context,this._plist,this.drawMode,this.index.length); + } + + destroy() { + if (this._plist) { + bg.Engine.Get().polyList + .destroy(this.context, this._plist); + } + + this._plist = null; + + this._name = ""; + this._vertex = []; + this._normal = []; + this._texCoord0 = []; + this._texCoord1 = []; + this._texCoord2 = []; + this._color = []; + this._tangent = []; + this._index = []; + } + + applyTransform(trx) { + var transform = new bg.Matrix4(trx); + var rotation = new bg.Matrix4(trx.getMatrix3()); + + if (this.normal.length>0 && this.normal.length!=this.vertex.length) + throw new Error("Unexpected number of normal coordinates found in polyList"); + + for (let i=0;i<this.vertex.length-2;i+=3) { + let vertex = new bg.Vector4(this.vertex[i],this.vertex[i+1], this.vertex[i+2], 1.0); + vertex = transform.multVector(vertex); + this.vertex[i] = vertex.x; + this.vertex[i+1] = vertex.y; + this.vertex[i+2] = vertex.z; + + if (this.normal.length) { + var normal = new bg.Vector4(this.normal[i],this.normal[i+1], this.normal[i+2], 1.0); + normal = rotation.multVector(normal); + this.normal[i] = normal.x; + this.normal[i+1] = normal.y; + this.normal[i+2] = normal.z; + } + } + this.build(); + } + + + }; + + bg.base.PolyList = PolyList; + +})(); +(function() { + let shaders = {}; + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let s_vertexSource = null; + let s_fragmentSource = null; + + function vertexShaderSource() { + if (!s_vertexSource) { + s_vertexSource = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_vertexSource.addParameter([ + lib().inputs.buffers.vertex + ]); + + s_vertexSource.addParameter(lib().inputs.matrix.all); + + if (bg.Engine.Get().id=="webgl1") { + s_vertexSource.setMainBody(` + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + `); + } + } + return s_vertexSource; + } + + function fragmentShaderSource() { + if (!s_fragmentSource) { + s_fragmentSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + if (bg.Engine.Get().id=="webgl1") { + s_fragmentSource.setMainBody(` + gl_FragColor = vec4(1.0,0.0,0.0,1.0); + `); + } + } + return s_fragmentSource; + } + + class RedEffect extends bg.base.Effect { + constructor(context) { + super(context); + let sources = [ + vertexShaderSource(), + fragmentShaderSource() + ]; + this.setupShaderSource(sources); + } + + beginDraw() { + } + + setupVars() { + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + this.shader.setMatrix4('inModelMatrix',matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',viewMatrix); + this.shader.setMatrix4('inProjectionMatrix',matrixState.projectionMatrixStack.matrixConst); + } + + } + + bg.base.RedEffect = RedEffect; +})(); +(function() { + + class RenderQueue { + constructor() { + this._opaqueQueue = []; + this._transparentQueue = []; + this._worldCameraPosition = new bg.Vector3(0); + } + + beginFrame(worldCameraPosition) { + this._opaqueQueue = []; + this._transparentQueue = []; + this._worldCameraPosition.assign(worldCameraPosition); + } + + renderOpaque(plist, mat, trx, viewMatrix) { + this._opaqueQueue.push({ + plist:plist, + material:mat, + modelMatrix:new bg.Matrix4(trx), + viewMatrix: new bg.Matrix4(viewMatrix) + }); + } + + renderTransparent(plist, mat, trx, viewMatrix) { + let pos = trx.position; + pos.sub(this._worldCameraPosition); + this._opaqueQueue.push({ + plist:plist, + material:mat, + modelMatrix:new bg.Matrix4(trx), + viewMatrix: new bg.Matrix4(viewMatrix), + cameraDistance: pos.magnitude() + }); + } + + sortTransparentObjects() { + this._transparentQueue.sort((a,b) => { + return a.cameraDistance > b.cameraDistance; + }); + } + + get opaqueQueue() { + return this._opaqueQueue; + } + + get transparentQueue() { + return this._transparentQueue; + } + + + } + + bg.base.RenderQueue = RenderQueue; +})(); +(function() { + + class RenderSurfaceBufferImpl { + constructor(context) { + this.initFlags(context); + } + + initFlags(context) {} + + create(context,attachments) {} + setActive(context,renderSurface) {} + readBuffer(context,renderSurface,rectangle) {} + resize(context,renderSurface,size) {} + destroy(context,renderSurface) {} + supportType(type) {} + supportFormat(format) {} + maxColorAttachments() {} + } + + bg.base.RenderSurfaceBufferImpl = RenderSurfaceBufferImpl; + + class RenderSurface extends bg.app.ContextObject { + static DefaultAttachments() { + return [ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]; + } + static SupportFormat(format) { + return bg.Engine.Get().colorBuffer.supportFormat(format); + } + + static SupportType(type) { + return bg.Engine.Get().colorBuffer.supportType(type); + } + + static MaxColorAttachments() { + return bg.Engine.Get().textureBuffer.maxColorAttachments; + } + + constructor(context) { + super(context); + + this._size = new bg.Vector2(256); + this._renderSurface = null; + this._resizeOnViewportChanged = true; + } + + get size() { return this._size; } + set size(s) { + if (this._size.x!=s.x || this._size.y!=s.y) { + this._size = s; + this.surfaceImpl.resize(this.context,this._renderSurface,s); + } + } + + get surfaceImpl() { return null; } + + get resizeOnViewportChanged() { return this._resizeOnViewportChanged; } + set resizeOnViewportChanged(r) { this._resizeOnViewportChanged = r; } + + create(attachments) { + if (!attachments) { + attachments = RenderSurface.DefaultAttachments(); + } + this._renderSurface = this.surfaceImpl.create(this.context,attachments); + } + + setActive() { + this.surfaceImpl.setActive(this.context,this._renderSurface); + } + + readBuffer(rectangle) { + return this.surfaceImpl.readBuffer(this.context,this._renderSurface,rectangle,this.size); + } + + destroy() { + this.surfaceImpl.destroy(this.context,this._renderSurface); + this._renderSurface = null; + } + } + + bg.base.RenderSurface = RenderSurface; + + bg.base.RenderSurfaceType = { + RGBA:null, + DEPTH:null + }; + + bg.base.RenderSurfaceFormat = { + UNSIGNED_BYTE:null, + UNSIGNED_SHORT:null, + FLOAT:null, + RENDERBUFFER:null + }; + + class ColorSurface extends RenderSurface { + static MaxColorAttachments() { + return bg.Engine.Get().colorBuffer.maxColorAttachments; + } + + get surfaceImpl() { return bg.Engine.Get().colorBuffer; } + } + + bg.base.ColorSurface = ColorSurface; + + class TextureSurface extends RenderSurface { + static MaxColorAttachments() { + return bg.Engine.Get().textureBuffer.maxColorAttachments; + } + + get surfaceImpl() { return bg.Engine.Get().textureBuffer; } + + getTexture(attachment = 0) { + return this._renderSurface.attachments[attachment] && + this._renderSurface.attachments[attachment].texture; + } + } + + bg.base.TextureSurface = TextureSurface; + +})(); + +(function() { + if (!bg.isElectronApp) { + return false; + } + + const fs = require('fs'); + const path = require('path'); + + class SaveSceneHelper { + save(filePath,sceneRoot) { + filePath = bg.base.Writer.StandarizePath(filePath); + return new Promise((resolve,reject) => { + this._url = {}; + this._url.path = filePath.split('/'); + this._url.fileName = this._url.path.pop(); + this._url.path = this._url.path.join('/'); + this._sceneData = { + fileType:"vwgl::scene", + version:{ + major:2, + minor:0, + rev:0 + }, + scene:[] + } + this._promises = []; + bg.base.Writer.PrepareDirectory(this._url.path); + + let rootNode = {}; + this._sceneData.scene.push(rootNode); + this.buildSceneNode(sceneRoot,rootNode); + + fs.writeFileSync(path.join(this._url.path,this._url.fileName),JSON.stringify(this._sceneData,"","\t"),"utf-8"); + + Promise.all(this._promises) + .then(() => resolve()) + .catch((err) => reject(err)); + }); + } + + buildSceneNode(node,sceneData) { + sceneData.type = "Node"; + sceneData.name = node.name; + sceneData.enabled = node.enabled; + sceneData.steady = node.steady; + sceneData.children = []; + sceneData.components = []; + node.forEachComponent((component) => { + if (component.shouldSerialize) { + let componentData = {}; + component.serialize(componentData,this._promises,this._url); + sceneData.components.push(componentData) + } + }); + node.children.forEach((child) => { + let childData = {} + this.buildSceneNode(child,childData); + sceneData.children.push(childData); + }) + } + }; + + class SceneWriterPlugin extends bg.base.WriterPlugin { + acceptType(url,data) { + let ext = url.split(".").pop("."); + return /vitscnj/i.test(ext) && data instanceof bg.scene.Node; + } + + write(url,data) { + let saveSceneHelper = new SaveSceneHelper(); + return saveSceneHelper.save(url,data); + } + } + + bg.base.SceneWriterPlugin = SceneWriterPlugin; +})(); +(function() { + + let s_shaderLibrary = null; + + function defineAll(obj) { + Reflect.defineProperty(obj,"all", { + get() { + if (!this._all) { + this._all = []; + for (let key in obj) { + if (typeof(obj[key])=="object" && obj[key].name) { + this._all.push(obj[key]); + } + } + } + return this._all; + } + }); + } + + class ShaderLibrary { + static Get() { + if (!s_shaderLibrary) { + s_shaderLibrary = new ShaderLibrary(); + } + return s_shaderLibrary; + } + + constructor() { + let library = bg[bg.Engine.Get().id].shaderLibrary; + + for (let key in library) { + this[key] = library[key]; + } + + defineAll(this.inputs.matrix); + Object.defineProperty(this.inputs.matrix,"modelViewProjection",{ + get() { + return [ + this.model, + this.view, + this.projection + ] + } + }); + defineAll(this.inputs.material); + defineAll(this.inputs.lighting); + defineAll(this.inputs.lightingForward); + defineAll(this.inputs.shadows); + defineAll(this.inputs.colorCorrection); + defineAll(this.functions.materials); + defineAll(this.functions.colorCorrection); + defineAll(this.functions.lighting); + defineAll(this.functions.utils); + } + } + + bg.base.ShaderLibrary = ShaderLibrary; + + class ShaderSourceImpl { + header(shaderType) { return ""; } + parameter(shaderType,paramData) { return paramData.name; } + func(shaderType,funcData) { return funcData.name; } + } + + bg.base.ShaderSourceImpl = ShaderSourceImpl; + + class ShaderSource { + static FormatSource(src) { + let result = ""; + let lines = src.replace(/^\n*/,"").replace(/\n*$/,"").split("\n"); + let minTabs = 100; + lines.forEach((line) => { + let tabsInLine = /(\t*)/.exec(line)[0].length; + if (minTabs>tabsInLine) { + minTabs = tabsInLine; + } + }); + + lines.forEach((line) => { + let tabsInLine = /(\t*)/.exec(line)[0].length; + let diff = tabsInLine - minTabs; + result += line.slice(tabsInLine - diff,line.length) + "\n"; + }); + + return result.replace(/^\n*/,"").replace(/\n*$/,""); + } + + constructor(type) { + this._type = type; + this._params = []; + this._functions = []; + this._requiredExtensions = []; + this._header = ""; + } + + get type() { return this._type; } + get params() { return this._params; } + get header() { return this._header; } + get functions() { return this._functions; } + + addParameter(param) { + if (param instanceof Array) { + this._params = [...this._params, ...param]; + } + else { + this._params.push(param); + } + this._params.push(null); // This will be translated into a new line character + } + + addFunction(func) { + if (func instanceof Array) { + this._functions = [...this._functions, ...func]; + } + else { + this._functions.push(func); + } + } + + setMainBody(body) { + this.addFunction({ + returnType:"void", name:"main", params:{}, body:body + }); + } + + appendHeader(src) { + this._header += src + "\n"; + } + + toString() { + let impl = bg.Engine.Get().shaderSource; + // Build header + let src = impl.header(this.type) + "\n" + this._header + "\n\n"; + + this.params.forEach((p) => { + src += impl.parameter(this.type,p) + "\n"; + }); + + this.functions.forEach((f) => { + src += "\n" + impl.func(this.type,f) + "\n"; + }) + return src; + } + } + + bg.base.ShaderSource = ShaderSource; +})(); +(function() { + + class ShaderImpl { + constructor(context) { + this.initFlags(context); + } + + initFlags(context) {} + setActive(context,shaderProgram) {} + create(context) {} + addShaderSource(context,shaderProgram,shaderType,source) {} + link(context,shaderProgram) {} + initVars(context,shader,inputBufferVars,valueVars) {} + setInputBuffer(context,shader,varName,vertexBuffer,itemSize) {} + setValueInt(context,shader,name,v) {} + setValueIntPtr(context,shader,name,v) {} + setValueFloat(context,shader,name,v) {} + setValueFloatPtr(context,shader,name,v) {} + setValueVector2(context,shader,name,v) {} + setValueVector3(context,shader,name,v) {} + setValueVector4(context,shader,name,v) {} + setValueVector2v(context,shader,name,v) {} + setValueVector3v(context,shader,name,v) {} + setValueVector4v(context,shader,name,v) {} + setValueMatrix3(context,shader,name,traspose,v) {} + setValueMatrix4(context,shader,name,traspose,v) {} + setTexture(context,shader,name,texture,textureUnit) {} + } + + bg.base.ShaderImpl = ShaderImpl; + + bg.base.ShaderType = { + VERTEX: null, + FRAGMENT: null + }; + + function addLineNumbers(source) { + let result = ""; + source.split("\n").forEach((line,index) => { + ++index; + let prefix = index<10 ? "00":index<100 ? "0":""; + result += prefix + index + " | " + line + "\n"; + }); + return result; + } + + class Shader extends bg.app.ContextObject { + static ClearActive(context) { bg.Engine.Get().shader.setActive(context,null); } + + constructor(context) { + super(context); + + this._shader = bg.Engine.Get().shader.create(context); + this._linked = false; + + this._compileError = null; + this._linkError = null; + } + + get shader() { return this._shader; } + get compileError() { return this._compileError; } + get compileErrorSource() { return this._compileErrorSource; } + get linkError() { return this._linkError; } + get status() { return this._compileError==null && this._linkError==null; } + + addShaderSource(shaderType, shaderSource) { + if (this._linked) { + this._compileError = "Tying to attach a shader to a linked program"; + } + else if (!this._compileError) { + this._compileError = bg.Engine.Get().shader.addShaderSource( + this.context, + this._shader, + shaderType,shaderSource); + if (this._compileError) { + this._compileErrorSource = addLineNumbers(shaderSource); + } + } + return this._compileError==null; + } + + link() { + this._linkError = null; + if (this._linked) { + this._linkError = "Shader already linked"; + } + else { + this._linkError = bg.Engine.Get().shader.link(this.context,this._shader); + this._linked = this._linkError==null; + } + return this._linked; + } + + setActive() { + bg.Engine.Get().shader.setActive(this.context,this._shader); + } + + clearActive() { + Shader.ClearActive(this.context); + } + + initVars(inputBufferVars,valueVars) { + bg.Engine.Get().shader.initVars(this.context,this._shader,inputBufferVars,valueVars); + } + + setInputBuffer(name,vbo,itemSize) { + bg.Engine.Get().shader + .setInputBuffer(this.context,this._shader,name,vbo,itemSize); + } + + disableInputBuffer(name) { + bg.Engine.Get().shader + .disableInputBuffer(this.context,this._shader,name); + } + + setValueInt(name,v) { + bg.Engine.Get().shader + .setValueInt(this.context,this._shader,name,v); + } + + setValueIntPtr(name,v) { + bg.Engine.Get().shader + .setValueIntPtr(this.context,this._shader,name,v); + } + + setValueFloat(name,v) { + bg.Engine.Get().shader + .setValueFloat(this.context,this._shader,name,v); + } + + setValueFloatPtr(name,v) { + bg.Engine.Get().shader + .setValueFloatPtr(this.context,this._shader,name,v); + } + + setVector2(name,v) { + bg.Engine.Get().shader + .setValueVector2(this.context,this._shader,name,v); + } + + setVector3(name,v) { + bg.Engine.Get().shader + .setValueVector3(this.context,this._shader,name,v); + } + + setVector4(name,v) { + bg.Engine.Get().shader + .setValueVector4(this.context,this._shader,name,v); + } + + setVector2Ptr(name,v) { + bg.Engine.Get().shader + .setValueVector2v(this.context,this._shader,name,v); + } + + setVector3Ptr(name,v) { + bg.Engine.Get().shader + .setValueVector3v(this.context,this._shader,name,v); + } + + setVector4Ptr(name,v) { + bg.Engine.Get().shader + .setValueVector4v(this.context,this._shader,name,v); + } + + setMatrix3(name,v,traspose=false) { + bg.Engine.Get().shader + .setValueMatrix3(this.context,this._shader,name,traspose,v); + } + + setMatrix4(name,v,traspose=false) { + bg.Engine.Get().shader + .setValueMatrix4(this.context,this._shader,name,traspose,v); + } + + setTexture(name,texture,textureUnit) { + bg.Engine.Get().shader + .setTexture(this.context,this._shader,name,texture,textureUnit); + } + } + + bg.base.Shader = Shader; +})(); +(function() { + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let s_vertexSource = null; + let s_fragmentSource = null; + + function vertexShaderSource() { + if (!s_vertexSource) { + s_vertexSource = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_vertexSource.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + null, + lib().inputs.matrix.model, + lib().inputs.matrix.view, + lib().inputs.matrix.projection, + null, + { name:"fsTexCoord", dataType:"vec2", role:"out" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + s_vertexSource.setMainBody(` + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + fsTexCoord = inTex0; + `); + } + } + return s_vertexSource; + } + + function fragmentShaderSource() { + if (!s_fragmentSource) { + s_fragmentSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + s_fragmentSource.addParameter([ + lib().inputs.material.castShadows, + lib().inputs.material.texture, + lib().inputs.material.textureOffset, + lib().inputs.material.textureScale, + lib().inputs.material.alphaCutoff, + null, + { name:"fsTexCoord", dataType:"vec2", role:"in" } + ]); + + s_fragmentSource.addFunction(lib().functions.utils.pack); + s_fragmentSource.addFunction(lib().functions.materials.samplerColor); + + if (bg.Engine.Get().id=="webgl1") { + s_fragmentSource.setMainBody(` + + float alpha = samplerColor(inTexture,fsTexCoord,inTextureOffset,inTextureScale).a; + if (inCastShadows && alpha>inAlphaCutoff) { + gl_FragColor = pack(gl_FragCoord.z); + } + else { + discard; + }`); + } + } + return s_fragmentSource; + } + + class ShadowMapEffect extends bg.base.Effect { + constructor(context) { + super(context); + + this._material = null; + this._light = null; + this._lightTransform = null; + + this.setupShaderSource([ + vertexShaderSource(), + fragmentShaderSource() + ]); + } + + get material() { return this._material; } + set material(m) { this._material = m; } + + get light() { return this._light; } + set light(l) { this._light = l; } + + get lightTransform() { return this._lightTransform; } + set lightTransform(t) { this._lightTransform = t; } + + setupVars() { + if (this.material && this.light && this.lightTransform) { + let matrixState = bg.base.MatrixState.Current(); + this.shader.setMatrix4("inModelMatrix",matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4("inViewMatrix",this.lightTransform); + this.shader.setMatrix4("inProjectionMatrix",this.light.projection); + + this.shader.setValueInt("inCastShadows",this.material.castShadows); + let texture = this.material.texture || bg.base.TextureCache.WhiteTexture(this.context); + this.shader.setTexture("inTexture",texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2("inTextureOffset",this.material.textureOffset); + this.shader.setVector2("inTextureScale",this.material.textureScale); + this.shader.setValueFloat("inAlphaCutoff",this.material.alphaCutoff); + } + } + } + + bg.base.ShadowMapEffect = ShadowMapEffect; + + bg.base.ShadowType = { + HARD: 0, + SOFT: 1, + STRATIFIED: 2 + }; + + bg.base.ShadowCascade = { + NEAR: 0, + FAR: 1, + MID: 2 + } + + function updateDirectional(scene,camera,light,lightTransform,cascade) { + let ms = bg.base.MatrixState.Current(); + bg.base.MatrixState.SetCurrent(this._matrixState); + this._pipeline.effect.light = light; + this._viewMatrix = new bg.Matrix4(lightTransform); + + let rotation = this._viewMatrix.rotation; + let cameraTransform = camera.transform ? new bg.Matrix4(camera.transform.matrix) : bg.Matrix4.Identity(); + let cameraPos = cameraTransform.position; + let target = cameraPos.add(cameraTransform.forwardVector.scale(-camera.focus)) + + this._viewMatrix + .identity() + .translate(target) + .mult(rotation) + .translate(0,0,10) + .invert(); + + this._pipeline.effect.lightTransform = this._viewMatrix; + + bg.base.Pipeline.SetCurrent(this._pipeline); + this._pipeline.clearBuffers(bg.base.ClearBuffers.COLOR_DEPTH); + + let mult = 1; + // Far cascade + if (cascade==bg.base.ShadowCascade.FAR) { + mult = 20; + light.shadowBias = 0.0001; + } + // Near cascade + else if (cascade==bg.base.ShadowCascade.NEAR) { + mult = 2; + light.shadowBias = 0.00002; + } + else if (cascade==bg.base.ShadowCascade.MID) { + mult = 4; + light.shadowBias = 0.0001; + } + light.projection = bg.Matrix4.Ortho(-camera.focus * mult ,camera.focus * mult,-camera.focus * mult,camera.focus * mult,1,300*camera.focus); + this._projection = light.projection; + scene.accept(this._drawVisitor); + + bg.base.MatrixState.SetCurrent(ms); + } + + function updateSpot(scene,camera,light,lightTransform) { + let ms = bg.base.MatrixState.Current(); + bg.base.MatrixState.SetCurrent(this._matrixState); + this._pipeline.effect.light = light; + this._viewMatrix = new bg.Matrix4(lightTransform); + + let cutoff = light.spotCutoff; + light.projection = bg.Matrix4.Perspective(cutoff * 2,1,0.1,200.0); + light.shadowBias = 0.0005; + this._viewMatrix.invert(); + + this._projection = light.projection; + this._pipeline.effect.lightTransform = this._viewMatrix; + + bg.base.Pipeline.SetCurrent(this._pipeline); + this._pipeline.clearBuffers(bg.base.ClearBuffers.COLOR_DEPTH); + + scene.accept(this._drawVisitor); + bg.base.MatrixState.SetCurrent(ms); + } + + class ShadowMap extends bg.app.ContextObject { + constructor(context) { + super(context); + + this._pipeline = new bg.base.Pipeline(context); + this._pipeline.renderSurface = new bg.base.TextureSurface(context); + this._pipeline.renderSurface.create(); + this._pipeline.effect = new bg.base.ShadowMapEffect(context); + + this._matrixState = new bg.base.MatrixState(); + this._drawVisitor = new bg.scene.DrawVisitor(this._pipeline,this._matrixState); + + this._shadowMapSize = new bg.Vector2(2048); + this._pipeline.viewport = new bg.Viewport(0,0,this._shadowMapSize.width,this._shadowMapSize.height); + + this._shadowType = bg.base.ShadowType.SOFT; + + this._projection = bg.Matrix4.Ortho(-15,15,-15,15,1,50); + this._viewMatrix = bg.Matrix4.Identity(); + + this._shadowColor = bg.Color.Black(); + } + + get size() { return this._shadowMapSize; } + set size(s) { + this._shadowMapSize = s; + this._pipeline.viewport = new bg.Viewport(0,0,s.width,s.height); + } + + get shadowType() { return this._shadowType; } + set shadowType(t) { this._shadowType = t; } + + get shadowColor() { return this._shadowColor; } + set shadowColor(c) { this._shadowColor = c; } + + get viewMatrix() { return this._viewMatrix; } + get projection() { return this._projection; } + + get texture() { return this._pipeline.renderSurface.getTexture(0); } + + // it's important that the camera has set the focus to calculate the projection of the directional lights + update(scene,camera,light,lightTransform,cascade=bg.base.ShadowCascade.NEAR) { + if (light.type==bg.base.LightType.DIRECTIONAL) { + updateDirectional.apply(this,[scene,camera,light,lightTransform,cascade]); + } + else if (light.type==bg.base.LightType.SPOT) { + updateSpot.apply(this,[scene,camera,light,lightTransform]); + } + } + } + + bg.base.ShadowMap = ShadowMap; + +})(); +(function() { + + class TextProperties { + + constructor() { + this._font = "Verdana"; + this._size = 30; + this._color = "#FFFFFF"; + this._background = "transparent"; + this._align = "start"; + this._bold = false; + this._italic = false; + + this._dirty = true; + } + + clone() { + let newInstance = new TextProperties(); + + newInstance._font = this._font; + newInstance._size = this._size; + newInstance._color = this._color; + newInstance._background = this._background; + newInstance._align = this._align; + newInstance._bold = this._bold; + newInstance._italic = this._italic; + + return newInstance; + } + + get font() { return this._font; } + set font(v) { this._dirty = true; this._font = v; } + get size() { return this._size; } + set size(v) { this._dirty = true; this._size = v; } + get color() { return this._color; } + set color(v) { this._dirty = true; this._color = v; } + get background() { return this._background; } + set background(v) { this._dirty = true; this._background = v; } + get align() { return this._align; } + set align(v) { this._dirty = true; this._align = v; } + get bold() { return this._bold; } + set bold(v) { this._dirty = true; this._bold = v; } + get italic() { return this._italic; } + set italic(v) { this._dirty = true; this._italic = v; } + + + // this property is set to true every time some property is changed + set dirty(d) { this._dirty = d; } + get dirty() { return this._dirty; } + + serialize(jsonData) { + jsonData.font = this.font; + jsonData.size = this.size; + jsonData.color = this.color; + jsonData.background = this.background; + jsonData.align = this.align; + jsonData.bold = this.bold; + jsonData.italic = this.italic; + } + + deserialize(jsonData) { + this.font = jsonData.font; + this.size = jsonData.size; + this.color = jsonData.color; + this.background = jsonData.background; + this.align = jsonData.align; + this.bold = jsonData.bold; + this.italic = jsonData.italic; + this._dirty = true; + } + } + + bg.base.TextProperties = TextProperties; +})(); +(function() { + let s_textureCache = {}; + + let COLOR_TEXTURE_SIZE = 8; + + let s_whiteTexture = "static-white-color-texture"; + let s_blackTexture = "static-black-color-texture"; + let s_normalTexture = "static-normal-color-texture"; + let s_randomTexture = "static-random-color-texture"; + let s_whiteCubemap = "static-white-cubemap-texture"; + + class TextureCache { + static SetColorTextureSize(size) { COLOR_TEXTURE_SIZE = size; } + static GetColorTextureSize() { return COLOR_TEXTURE_SIZE; } + + static WhiteCubemap(context) { + let cache = TextureCache.Get(context); + let tex = cache.find(s_whiteCubemap); + + if (!tex) { + tex = bg.base.Texture.WhiteCubemap(context); + cache.register(s_whiteCubemap,tex); + } + return tex; + } + + static WhiteTexture(context) { + let cache = TextureCache.Get(context); + let tex = cache.find(s_whiteTexture); + + if (!tex) { + tex = bg.base.Texture.WhiteTexture(context,new bg.Vector2(COLOR_TEXTURE_SIZE)); + cache.register(s_whiteTexture,tex); + } + + return tex; + } + + static BlackTexture(context) { + let cache = TextureCache.Get(context); + let tex = cache.find(s_blackTexture); + + if (!tex) { + tex = bg.base.Texture.BlackTexture(context,new bg.Vector2(COLOR_TEXTURE_SIZE)); + cache.register(s_blackTexture,tex); + } + + return tex; + } + + static NormalTexture(context) { + let cache = TextureCache.Get(context); + let tex = cache.find(s_normalTexture); + + if (!tex) { + tex = bg.base.Texture.NormalTexture(context,new bg.Vector2(COLOR_TEXTURE_SIZE)); + cache.register(s_normalTexture,tex); + } + + return tex; + } + + static RandomTexture(context) { + let cache = TextureCache.Get(context); + let tex = cache.find(s_randomTexture); + + if (!tex) { + tex = bg.base.Texture.RandomTexture(context,new bg.Vector2(64)); + cache.register(s_randomTexture,tex); + } + + return tex; + } + + static Get(context) { + if (!s_textureCache[context.uuid]) { + s_textureCache[context.uuid] = new TextureCache(context); + } + return s_textureCache[context.uuid]; + } + + constructor(context) { + this._context = context; + this._textures = {}; + } + + find(url) { + return this._textures[url]; + } + + register(url,texture) { + if (texture instanceof bg.base.Texture) { + this._textures[url] = texture; + } + } + + unregister(url) { + if (this._textures[url]) { + delete this._textures[url]; + } + } + + clear() { + this._textures = {}; + } + } + + bg.base.TextureCache = TextureCache; + + let g_wrapX = null; + let g_wrapY = null; + let g_minFilter = null; + let g_magFilter = null; + + /* Extra data: + * wrapX + * wrapY + * minFilter + * magFilter + */ + class TextureLoaderPlugin extends bg.base.LoaderPlugin { + static GetWrapX() { + return g_wrapX || bg.base.TextureWrap.REPEAT; + } + + static GetWrapY() { + return g_wrapY || bg.base.TextureWrap.REPEAT; + } + + static GetMinFilter() { + return g_minFilter || bg.base.TextureFilter.LINEAR_MIPMAP_NEAREST; + } + + static GetMagFilter() { + return g_magFilter || bg.base.TextureFilter.LINEAR; + } + + static SetMinFilter(f) { + g_minFilter = f; + } + + static SetMagFilter(f) { + g_magFilter = f; + } + + static SetWrapX(w) { + g_wrapX = w; + } + + static SetWrapY(w) { + g_wrapY = w; + } + + acceptType(url,data) { + return bg.utils.Resource.IsImage(url); + } + + load(context,url,data,extraData) { + return new Promise((accept,reject) => { + if (data) { + let texture = bg.base.TextureCache.Get(context).find(url); + if (!texture) { + bg.log(`Texture ${url} not found. Loading texture`); + texture = new bg.base.Texture(context); + texture.create(); + texture.bind(); + texture.wrapX = extraData.wrapX || TextureLoaderPlugin.GetWrapX(); + texture.wrapY = extraData.wrapY || TextureLoaderPlugin.GetWrapY(); + texture.minFilter = extraData.minFilter || TextureLoaderPlugin.GetMinFilter(); + texture.magFilter = extraData.magFilter || TextureLoaderPlugin.GetMagFilter(); + texture.setImage(data); + texture.fileName = url; + bg.base.TextureCache.Get(context).register(url,texture); + } + accept(texture); + } + else { + reject(new Error("Error loading texture image data")); + } + }); + } + } + + bg.base.TextureLoaderPlugin = TextureLoaderPlugin; + + class VideoTextureLoaderPlugin extends bg.base.LoaderPlugin { + acceptType(url,data) { + return bg.utils.Resource.IsVideo(url); + } + + load(context,url,video) { + return new Promise((accept,reject) => { + if (video) { + let texture = new bg.base.Texture(context); + texture.create(); + texture.bind(); + texture.setVideo(video); + texture.fileName = url; + accept(texture); + } + else { + reject(new Error("Error loading video texture data")); + } + }); + } + } + + bg.base.VideoTextureLoaderPlugin = VideoTextureLoaderPlugin; +})(); +(function() { + + bg.base.TextureUnit = { + TEXTURE_0: 0, + TEXTURE_1: 1, + TEXTURE_2: 2, + TEXTURE_3: 3, + TEXTURE_4: 4, + TEXTURE_5: 5, + TEXTURE_6: 6, + TEXTURE_7: 7, + TEXTURE_8: 8, + TEXTURE_9: 9, + TEXTURE_10: 10, + TEXTURE_11: 11, + TEXTURE_12: 12, + TEXTURE_13: 13, + TEXTURE_14: 14, + TEXTURE_15: 15, + TEXTURE_16: 16, + TEXTURE_17: 17, + TEXTURE_18: 18, + TEXTURE_19: 19, + TEXTURE_20: 20, + TEXTURE_21: 21, + TEXTURE_22: 22, + TEXTURE_23: 23, + TEXTURE_24: 24, + TEXTURE_25: 25, + TEXTURE_26: 26, + TEXTURE_27: 27, + TEXTURE_28: 28, + TEXTURE_29: 29, + TEXTURE_30: 30 + }; + + bg.base.TextureWrap = { + REPEAT: null, + CLAMP: null, + MIRRORED_REPEAT: null + }; + + bg.base.TextureFilter = { + NEAREST_MIPMAP_NEAREST: null, + LINEAR_MIPMAP_NEAREST: null, + NEAREST_MIPMAP_LINEAR: null, + LINEAR_MIPMAP_LINEAR: null, + NEAREST: null, + LINEAR: null + }; + + bg.base.TextureTarget = { + TEXTURE_2D: null, + CUBE_MAP: null, + POSITIVE_X_FACE: null, + NEGATIVE_X_FACE: null, + POSITIVE_Y_FACE: null, + NEGATIVE_Y_FACE: null, + POSITIVE_Z_FACE: null, + NEGATIVE_Z_FACE: null + }; + + class TextureImpl { + constructor(context) { + this.initFlags(context); + } + + initFlags(context) { + console.log("TextureImpl: initFlags() method not implemented"); + } + + create(context) { + console.log("TextureImpl: create() method not implemented"); + return null; + } + + setActive(context,texUnit) { + console.log("TextureImpl: setActive() method not implemented"); + } + + bind(context,target,texture) { + console.log("TextureImpl: bind() method not implemented"); + } + + unbind(context,target) { + console.log("TextureImpl: unbind() method not implemented"); + } + + setTextureWrapX(context,target,texture,wrap) { + console.log("TextureImpl: setTextureWrapX() method not implemented"); + } + + setTextureWrapY(context,target,texture,wrap) { + console.log("TextureImpl: setTextureWrapY() method not implemented"); + } + + setImage(context,target,minFilter,magFilter,texture,img,flipY) { + console.log("TextureImpl: setImage() method not implemented"); + } + + setImageRaw(context,target,minFilter,magFilter,texture,width,height,data) { + console.log("TextureImpl: setImageRaw() method not implemented"); + } + + setTextureFilter(context,target,minFilter,magFilter) { + console.log("TextureImpl: setTextureFilter() method not implemented"); + } + + setCubemapImage(context,face,image) { + console.log("TextureImpl: setCubemapImage() method not implemented"); + } + + setCubemapRaw(context,face,rawImage,w,h) { + console.log("TextureImpl: setCubemapRaw() method not implemented"); + } + + setVideo(context,target,texture,video,flipY) { + console.log("TextureImpl: setVideo() method not implemented"); + } + + updateVideoData(context,target,texture,video) { + console.log("TextureImpl: updateVideoData() method not implemented"); + } + + destroy(context,texture) { + console.log("TextureImpl: destroy() method not implemented"); + } + } + + bg.base.TextureImpl = TextureImpl; + + bg.base.TextureDataType = { + NONE: 0, + IMAGE: 1, + IMAGE_DATA: 2, + CUBEMAP: 3, + CUBEMAP_DATA: 4, + VIDEO: 5 + }; + + let g_base64TexturePreventRemove = []; + + class Texture extends bg.app.ContextObject { + static IsPowerOfTwoImage(image) { + return bg.Math.checkPowerOfTwo(image.width) && bg.Math.checkPowerOfTwo(image.height); + } + + static FromCanvas(context,canvas2d) { + return Texture.FromBase64Image(context,canvas2d.toDataURL("image/png")); + } + + static UpdateCanvasImage(texture,canvas2d) { + if (!texture.valid) { + return false; + } + let imageData = canvas2d.toDataURL("image/png"); + let recreate = false; + if (texture.img.width!=imageData.width || texture.img.height!=imageData.height) { + recreate = true; + } + texture.img = new Image(); + g_base64TexturePreventRemove.push(texture); + //tex.onload = function(evt,img) { + // Check this: use onload or setTimeout? + // onload seems to not work in all situations + setTimeout(() => { + texture.bind(); + if (Texture.IsPowerOfTwoImage(texture.img)) { + texture.minFilter = bg.base.TextureLoaderPlugin.GetMinFilter(); + texture.magFilter = bg.base.TextureLoaderPlugin.GetMagFilter(); + } + else { + texture.minFilter = bg.base.TextureFilter.NEAREST; + texture.magFilter = bg.base.TextureFilter.NEAREST; + texture.wrapX = bg.base.TextureWrap.CLAMP; + texture.wrapY = bg.base.TextureWrap.CLAMP; + } + texture.setImage(texture.img,true); + texture.unbind(); + let index = g_base64TexturePreventRemove.indexOf(texture); + if (index!=-1) { + g_base64TexturePreventRemove.splice(index,1); + } + bg.emitImageLoadEvent(); + //} + },10); + texture.img.src = imageData; + + return texture; + } + + static FromBase64Image(context,imgData) { + let tex = new bg.base.Texture(context); + tex.img = new Image(); + g_base64TexturePreventRemove.push(tex); + //tex.onload = function(evt,img) { + // Check this: use onload or setTimeout? + // onload seems to not work in all situations + setTimeout(() => { + tex.create(); + tex.bind(); + if (Texture.IsPowerOfTwoImage(tex.img)) { + tex.minFilter = bg.base.TextureLoaderPlugin.GetMinFilter(); + tex.magFilter = bg.base.TextureLoaderPlugin.GetMagFilter(); + } + else { + tex.minFilter = bg.base.TextureFilter.NEAREST; + tex.magFilter = bg.base.TextureFilter.NEAREST; + tex.wrapX = bg.base.TextureWrap.CLAMP; + tex.wrapY = bg.base.TextureWrap.CLAMP; + } + tex.setImage(tex.img,false); // Check this: flip base64 image? + tex.unbind(); + let index = g_base64TexturePreventRemove.indexOf(tex); + if (index!=-1) { + g_base64TexturePreventRemove.splice(index,1); + } + bg.emitImageLoadEvent(); + //} + },10); + tex.img.src = imgData; + + return tex; + } + + static ColorTexture(context,color,size) { + let colorTexture = new bg.base.Texture(context); + colorTexture.create(); + colorTexture.bind(); + + var dataSize = size.width * size.height * 4; + var textureData = []; + for (var i = 0; i < dataSize; i+=4) { + textureData[i] = color.r * 255; + textureData[i+1] = color.g * 255; + textureData[i+2] = color.b * 255; + textureData[i+3] = color.a * 255; + } + + textureData = new Uint8Array(textureData); + + colorTexture.minFilter = bg.base.TextureFilter.NEAREST; + colorTexture.magFilter = bg.base.TextureFilter.NEAREST; + colorTexture.setImageRaw(size.width,size.height,textureData); + colorTexture.unbind(); + + return colorTexture; + } + + static WhiteTexture(context,size) { + return Texture.ColorTexture(context,bg.Color.White(),size); + } + + static WhiteCubemap(context) { + return Texture.ColorCubemap(context, bg.Color.White()); + } + + static BlackCubemap(context) { + return Texture.ColorCubemap(context, bg.Color.Black()); + } + + static ColorCubemap(context,color) { + let cm = new bg.base.Texture(context); + cm.target = bg.base.TextureTarget.CUBE_MAP; + cm.create(); + cm.bind(); + + let dataSize = 32 * 32 * 4; + let textureData = []; + for (let i = 0; i<dataSize; i+=4) { + textureData[i] = color.r * 255; + textureData[i + 1] = color.g * 255; + textureData[i + 2] = color.b * 255; + textureData[i + 3] = color.a * 255; + } + + textureData = new Uint8Array(textureData); + + cm.setCubemapRaw( + 32, + 32, + textureData, + textureData, + textureData, + textureData, + textureData, + textureData + ); + + cm.unbind(); + return cm; + } + + static NormalTexture(context,size) { + return Texture.ColorTexture(context,new bg.Color(0.5,0.5,1,1),size); + } + + static BlackTexture(context,size) { + return Texture.ColorTexture(context,bg.Color.Black(),size); + } + + static RandomTexture(context,size) { + let colorTexture = new bg.base.Texture(context); + colorTexture.create(); + colorTexture.bind(); + + var dataSize = size.width * size.height * 4; + var textureData = []; + for (var i = 0; i < dataSize; i+=4) { + let randVector = new bg.Vector3(bg.Math.random() * 2.0 - 1.0, + bg.Math.random() * 2.0 - 1.0, + 0); + randVector.normalize(); + + textureData[i] = randVector.x * 255; + textureData[i+1] = randVector.y * 255; + textureData[i+2] = randVector.z * 255; + textureData[i+3] = 1; + } + + textureData = new Uint8Array(textureData); + + colorTexture.minFilter = bg.base.TextureFilter.NEAREST; + colorTexture.magFilter = bg.base.TextureFilter.NEAREST; + colorTexture.setImageRaw(size.width,size.height,textureData); + colorTexture.unbind(); + + return colorTexture; + } + + static SetActive(context,textureUnit) { + bg.Engine.Get().texture.setActive(context,textureUnit); + } + + static Unbind(context, target) { + if (!target) { + target = bg.base.TextureTarget.TEXTURE_2D; + } + bg.Engine.Get().texture.unbind(context,target); + } + + constructor(context) { + super(context); + + this._texture = null; + this._fileName = ""; + this._size = new bg.Vector2(0); + this._target = bg.base.TextureTarget.TEXTURE_2D; + + this._minFilter = bg.base.TextureFilter.LINEAR; + this._magFilter = bg.base.TextureFilter.LINEAR; + + this._wrapX = bg.base.TextureWrap.REPEAT; + this._wrapY = bg.base.TextureWrap.REPEAT; + + this._video = null; + } + + get texture() { return this._texture; } + get target() { return this._target; } + set target(t) { this._target = t; } + get fileName() { return this._fileName; } + set fileName(fileName) { this._fileName = fileName; } + set minFilter(f) { this._minFilter = f; } + set magFilter(f) { this._magFilter = f; } + get minFilter() { return this._minFilter; } + get magFilter() { return this._magFilter; } + set wrapX(w) { this._wrapX = w; } + set wrapY(w) { this._wrapY = w; } + get wrapX() { return this._wrapX; } + get wrapY() { return this._wrapY; } + get size() { return this._size; } + + + // Access to image data structures + get image() { return this._image; } + get imageData() { return this._imageData; } + get cubeMapImages() { return this._cubeMapImages; } + get cubeMapData() { return this._cubeMapData; } + get video() { return this._video; } + + get dataType() { + if (this._image) { + return bg.base.TextureDataType.IMAGE; + } + else if (this._imageData) { + return bg.base.TextureDataType.IMAGE_DATA; + } + else if (this._cubeMapImages) { + return bg.base.TextureDataType.CUBEMAP; + } + else if (this._cubeMapData) { + return bg.base.TextureDataType.CUBEMAP_DATA; + } + else if (this._video) { + return bg.base.TextureDataType.VIDEO; + } + else { + return bg.base.TextureDataType.NONE; + } + } + + create() { + if (this._texture!==null) { + this.destroy() + } + this._texture = bg.Engine.Get().texture.create(this.context); + } + + setActive(textureUnit) { + bg.Engine.Get().texture.setActive(this.context,textureUnit); + } + + + bind() { + bg.Engine.Get().texture.bind(this.context,this._target,this._texture); + } + + unbind() { + Texture.Unbind(this.context,this._target); + } + + setImage(img, flipY) { + if (flipY===undefined) flipY = true; + this._size.width = img.width; + this._size.height = img.height; + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapX); + bg.Engine.Get().texture.setTextureWrapY(this.context,this._target,this._texture,this._wrapY); + bg.Engine.Get().texture.setImage(this.context,this._target,this._minFilter,this._magFilter,this._texture,img,flipY); + + this._image = img; + this._imageData = null; + this._cubeMapImages = null; + this._cubeMapData = null; + this._video = null; + } + + updateImage(img, flipY) { + if (flipY===undefined) flipY = true; + this._size.width = img.width; + this._size.height = img.height; + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapX); + bg.Engine.Get().texture.setTextureWrapY(this.context,this._target,this._texture,this._wrapY); + bg.Engine.Get().texture.setImage(this.context,this._target,this._minFilter,this._magFilter,this._texture,img,flipY); + + this._image = img; + this._imageData = null; + this._cubeMapImages = null; + this._cubeMapData = null; + this._video = null; + } + + setImageRaw(width,height,data,type,format) { + if (!type) { + type = this.context.RGBA; + } + if (!format) { + format = this.context.UNSIGNED_BYTE; + } + this._size.width = width; + this._size.height = height; + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapX); + bg.Engine.Get().texture.setTextureWrapY(this.context,this._target,this._texture,this._wrapY); + bg.Engine.Get().texture.setImageRaw(this.context,this._target,this._minFilter,this._magFilter,this._texture,width,height,data,type,format); + + this._image = null; + this._imageData = data; + this._cubeMapImages = null; + this._cubeMapData = null; + this._video = null; + } + + setCubemap(posX,negX,posY,negY,posZ,negZ) { + bg.Engine.Get().texture.bind(this.context,this._target,this._texture); + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapX); + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapY); + bg.Engine.Get().texture.setTextureFilter(this.context,this._target,this._minFilter,this._magFilter); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.POSITIVE_X_FACE,posX); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.NEGATIVE_X_FACE,negX); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.POSITIVE_Y_FACE,posY); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.NEGATIVE_Y_FACE,negY); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.POSITIVE_Z_FACE,posZ); + bg.Engine.Get().texture.setCubemapImage(this.context,bg.base.TextureTarget.NEGATIVE_Z_FACE,negZ); + + this._image = null; + this._imageData = null; + this._cubeMapImages = { + posX: posX, + negX: negX, + posY: posY, + negY: negY, + posZ: posZ, + negZ: negZ + }; + this._cubeMapData = null; + this._video = null; + } + + setCubemapRaw(w,h,posX,negX,posY,negY,posZ,negZ) { + bg.Engine.Get().texture.bind(this.context,this._target,this._texture); + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapX); + bg.Engine.Get().texture.setTextureWrapX(this.context,this._target,this._texture,this._wrapY); + bg.Engine.Get().texture.setTextureFilter(this.context,this._target,this._minFilter,this._magFilter); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.POSITIVE_X_FACE,posX,w,h); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.NEGATIVE_X_FACE,negX,w,h); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.POSITIVE_Y_FACE,posY,w,h); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.NEGATIVE_Y_FACE,negY,w,h); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.POSITIVE_Z_FACE,posZ,w,h); + bg.Engine.Get().texture.setCubemapRaw(this.context,bg.base.TextureTarget.NEGATIVE_Z_FACE,negZ,w,h); + + this._image = null; + this._imageData = null; + this._cubeMapImages = null; + this._cubeMapData = { + width: w, + height: h, + posX:posX, + negX:negX, + posY:posY, + negY:negY, + posZ:posZ, + negZ:negZ + }; + this._video = null; + } + + setVideo(video, flipY) { + if (flipY===undefined) flipY = true; + this._size.width = video.videoWidth; + this._size.height = video.videoHeight; + bg.Engine.Get().texture.setVideo(this.context,this._target,this._texture,video,flipY); + this._video = video; + + this._image = null; + this._imageData = null; + this._cubeMapImages = null; + this._cubeMapData = null; + } + + destroy() { + bg.Engine.Get().texture.destroy(this.context,this._texture); + this._texture = null; + this._minFilter = null; + this._magFilter = null; + this._fileName = ""; + } + + valid() { + return this._texture!==null; + } + + update() { + bg.Engine.Get().texture.updateVideoData(this.context,this._target,this._texture,this._video); + } + } + + bg.base.Texture = Texture; + +})(); + + +(function() { + bg.Math = { + + seed:1, + + PI:3.141592653589793, + DEG_TO_RAD:0.01745329251994, + RAD_TO_DEG:57.29577951308233, + PI_2:1.5707963267948966, + PI_4:0.785398163397448, + PI_8:0.392699081698724, + TWO_PI:6.283185307179586, + + EPSILON:0.0000001, + Array:Float32Array, + ArrayHighP:Array, + FLOAT_MAX:3.402823e38, + + checkPowerOfTwo:function(n) { + if (typeof n !== 'number') { + return false; + } + else { + return n && (n & (n - 1)) === 0; + } + }, + + checkZero:function(v) { + return v>-this.EPSILON && v<this.EPSILON ? 0:v; + }, + + equals:function(a,b) { + return Math.abs(a - b) < this.EPSILON; + }, + + degreesToRadians:function(d) { + return Math.fround(this.checkZero(d * this.DEG_TO_RAD)); + }, + + radiansToDegrees:function(r) { + return Math.fround(this.checkZero(r * this.RAD_TO_DEG)); + }, + + sin:function(val) { + return Math.fround(this.checkZero(Math.sin(val))); + }, + + cos:function(val) { + return Math.fround(this.checkZero(Math.cos(val))); + }, + + tan:function(val) { + return Math.fround(this.checkZero(Math.tan(val))); + }, + + cotan:function(val) { + return Math.fround(this.checkZero(1.0 / this.tan(val))); + }, + + atan:function(val) { + return Math.fround(this.checkZero(Math.atan(val))); + }, + + atan2:function(i, j) { + return Math.fround(this.checkZero(Math.atan2f(i, j))); + }, + + random:function() { + return Math.random(); + }, + + seededRandom:function() { + let max = 1; + let min = 0; + + this.seed = (this.seed * 9301 + 49297) % 233280; + var rnd = this.seed / 233280; + + return min + rnd * (max - min); + }, + + max:function(a,b) { + return Math.fround(Math.max(a,b)); + }, + + min:function(a,b) { + return Math.fround(Math.min(a,b)); + }, + + abs:function(val) { + return Math.fround(Math.abs(val)); + }, + + sqrt:function(val) { + return Math.fround(Math.sqrt(val)); + }, + + lerp:function(from, to, t) { + return Math.fround((1.0 - t) * from + t * to); + }, + + square:function(n) { + return Math.fround(n * n); + } + }; + + class MatrixStrategy { + constructor(target) { + this._target = target; + } + + get target() { return this._target; } + set target(t) { this._target = t; } + + apply() { + console.log("WARNING: MatrixStrategy::apply() not overloaded by the child class."); + } + } + + bg.MatrixStrategy = MatrixStrategy; + +})(); + +(function() { + +class Matrix3 { + static Identity() { + return new bg.Matrix3(1,0,0, 0,1,0, 0,0,1); + } + + constructor(v00=1,v01=0,v02=0,v10=0,v11=1,v12=0,v20=0,v21=0,v22=1) { + this._m = new bg.Math.Array(9); + if (Array.isArray(typeof(v00))) { + this._m[0] = v00[0]; this._m[1] = v00[1]; this._m[2] = v00[0]; + this._m[3] = v00[3]; this._m[4] = v00[4]; this._m[5] = v00[5]; + this._m[6] = v00[6]; this._m[7] = v00[7]; this._m[8] = v00[8]; + } + else if (typeof(v00)=="number") { + this._m[0] = v00; this._m[1] = v01; this._m[2] = v02; + this._m[3] = v10; this._m[4] = v11; this._m[5] = v12; + this._m[6] = v20; this._m[7] = v21; this._m[8] = v22; + } + else { + this.assign(v00); + } + } + + get m() { return this._m; } + + toArray() { + return [ + this._m[0], this._m[1], this._m[2], + this._m[3], this._m[4], this._m[5], + this._m[6], this._m[7], this._m[8] + ] + } + + get m00() { return this._m[0]; } + get m01() { return this._m[1]; } + get m02() { return this._m[2]; } + get m10() { return this._m[3]; } + get m11() { return this._m[4]; } + get m12() { return this._m[5]; } + get m20() { return this._m[6]; } + get m21() { return this._m[7]; } + get m22() { return this._m[8]; } + + set m00(v) { this._m[0] = v; } + set m01(v) { this._m[1] = v; } + set m02(v) { this._m[2] = v; } + set m10(v) { this._m[3] = v; } + set m11(v) { this._m[4] = v; } + set m12(v) { this._m[5] = v; } + set m20(v) { this._m[6] = v; } + set m21(v) { this._m[7] = v; } + set m22(v) { this._m[8] = v; } + + zero() { + this._m[0] = this._m[1] = this._m[2] = + this._m[3] = this._m[4] = this._m[5] = + this._m[6] = this._m[7] = this._m[8] = 0; + return this; + } + + identity() { + this._m[0] = 1; this._m[1] = 0; this._m[2] = 0; + this._m[3] = 0; this._m[4] = 1; this._m[5] = 0; + this._m[6] = 0; this._m[7] = 0; this._m[8] = 1; + return this; + } + + isZero() { + return this._m[0]==0.0 && this._m[1]==0.0 && this._m[2]==0.0 && + this._m[3]==0.0 && this._m[4]==0.0 && this._m[5]==0.0 && + this._m[6]==0.0 && this._m[7]==0.0 && this._m[8]==0.0; + } + + isIdentity() { + return this._m[0]==1.0 && this._m[1]==0.0 && this._m[2]==0.0 && + this._m[3]==0.0 && this._m[4]==1.0 && this._m[5]==0.0 && + this._m[6]==0.0 && this._m[7]==0.0 && this._m[8]==1.0; + } + + row(i) { return new bg.Vector3(this._m[i*3], this._m[i*3 + 1], this._m[i*3 + 2]); } + setRow(i, row) { this._m[i*3]=row._v[0]; this._m[i*3 + 1]=row._v[1]; this._m[i*3 + 2]=row._v[2]; return this; } + + setScale(x,y,z) { + let rx = new bg.Vector3(this._m[0], this._m[3], this._m[6]).normalize().scale(x); + let ry = new bg.Vector3(this._m[1], this._m[4], this._m[7]).normalize().scale(y); + let rz = new bg.Vector3(this._m[2], this._m[5], this._m[8]).normalize().scale(z); + this._m[0] = rx.x; this._m[3] = rx.y; this._m[6] = rx.z; + this._m[1] = ry.x; this._m[4] = ry.y; this._m[7] = ry.z; + this._m[2] = rz.x; this._m[5] = rz.y; this._m[8] = rz.z; + return this; + } + getScale() { + return new bg.Vector3( + new bg.Vector3(this._m[0], this._m[3], this._m[6]).module, + new bg.Vector3(this._m[1], this._m[4], this._m[7]).module, + new bg.Vector3(this._m[2], this._m[5], this._m[8]).module + ); + } + + get length() { return this._m.length; } + + traspose() { + let r0 = new bg.Vector3(this._m[0], this._m[3], this._m[6]); + let r1 = new bg.Vector3(this._m[1], this._m[4], this._m[7]); + let r2 = new bg.Vector3(this._m[2], this._m[5], this._m[8]); + + this.setRow(0, r0); + this.setRow(1, r1); + this.setRow(2, r2); + + return this; + } + + elemAtIndex(i) { return this._m[i]; } + assign(a) { + if (a.length==9) { + this._m[0] = a._m[0]; this._m[1] = a._m[1]; this._m[2] = a._m[2]; + this._m[3] = a._m[3]; this._m[4] = a._m[4]; this._m[5] = a._m[5]; + this._m[6] = a._m[6]; this._m[7] = a._m[7]; this._m[8] = a._m[8]; + } + else if (a.length==16) { + this._m[0] = a._m[0]; this._m[1] = a._m[1]; this._m[2] = a._m[2]; + this._m[3] = a._m[4]; this._m[4] = a._m[5]; this._m[5] = a._m[6]; + this._m[6] = a._m[8]; this._m[7] = a._m[9]; this._m[8] = a._m[10]; + } + return this; + } + + equals(m) { + return this._m[0] == m._m[0] && this._m[1] == m._m[1] && this._m[2] == m._m[2] && + this._m[3] == m._m[3] && this._m[4] == m._m[4] && this._m[5] == m._m[5] && + this._m[6] == m._m[6] && this._m[7] == m._m[7] && this._m[8] == m._m[8]; + } + + notEquals(m) { + return this._m[0] != m._m[0] || this._m[1] != m._m[1] || this._m[2] != m._m[2] && + this._m[3] != m._m[3] || this._m[4] != m._m[4] || this._m[5] != m._m[5] && + this._m[6] != m._m[6] || this._m[7] != m._m[7] || this._m[8] != m._m[8]; + } + + mult(a) { + if (typeof(a)=="number") { + this._m[0] *= a; this._m[1] *= a; this._m[2] *= a; + this._m[3] *= a; this._m[4] *= a; this._m[5] *= a; + this._m[6] *= a; this._m[7] *= a; this._m[8] *= a; + + } + else { + let rm = this._m; + let lm = a._m; + + let res = new bg.Math.Array(9); + res[0] = lm[0] * rm[0] + lm[1] * rm[1] + lm[2] * rm[2]; + res[1] = lm[0] * rm[1] + lm[1] * rm[4] + lm[2] * rm[7]; + res[2] = lm[0] * rm[2] + lm[1] * rm[5] + lm[2] * rm[8]; + + res[3] = lm[3] * rm[0] + lm[4] * rm[3] + lm[5] * rm[6]; + res[4] = lm[3] * rm[1] + lm[4] * rm[4] + lm[5] * rm[7]; + res[5] = lm[3] * rm[2] + lm[4] * rm[5] + lm[5] * rm[8]; + + res[6] = lm[6] * rm[0] + lm[7] * rm[3] + lm[8] * rm[6]; + res[7] = lm[6] * rm[1] + lm[7] * rm[4] + lm[8] * rm[7]; + res[8] = lm[6] * rm[2] + lm[7] * rm[5] + lm[8] * rm[8]; + this._m = res; + } + return this; + } + + multVector(vec) { + if (typeof(vec)=='object' && vec._v && vec._v.length>=2) { + vec = vec._v; + } + let x=vec[0]; + let y=vec[1]; + let z=1.0; + + return new bg.Vector3( this._m[0]*x + this._m[3]*y + this._m[6]*z, + this._m[1]*x + this._m[4]*y + this._m[7]*z, + this._m[2]*x + this._m[5]*y + this._m[8]*z); + } + + isNan() { + return !Math.isNaN(_m[0]) && !Math.isNaN(_m[1]) && !Math.isNaN(_m[2]) && + !Math.isNaN(_m[3]) && !Math.isNaN(_m[4]) && !Math.isNaN(_m[5]) && + !Math.isNaN(_m[6]) && !Math.isNaN(_m[7]) && !Math.isNaN(_m[8]); + } + + toString() { + return "[" + this._m[0] + ", " + this._m[1] + ", " + this._m[2] + "]\n" + + " [" + this._m[3] + ", " + this._m[4] + ", " + this._m[5] + "]\n" + + " [" + this._m[6] + ", " + this._m[7] + ", " + this._m[8] + "]"; + } +} + +bg.Matrix3 = Matrix3; + +class Matrix4 { + static Unproject(x, y, depth, mvMat, pMat, viewport) { + let mvp = new bg.Matrix4(pMat); + mvp.mult(mvMat); + mvp.invert(); + + let vin = new bg.Vector4(((x - viewport.y) / viewport.width) * 2.0 - 1.0, + ((y - viewport.x) / viewport.height) * 2.0 - 1.0, + depth * 2.0 - 1.0, + 1.0); + + let result = new bg.Vector4(mvp.multVector(vin)); + if (result.z==0) { + result.set(0); + } + else { + result.set( result.x/result.w, + result.y/result.w, + result.z/result.w, + result.w/result.w); + } + + return result; + } + + static Identity() { + return new bg.Matrix4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1); + } + + static Perspective(fovy, aspect, nearPlane, farPlane) { + let fovy2 = bg.Math.tan(fovy * bg.Math.PI / 360.0) * nearPlane; + let fovy2aspect = fovy2 * aspect; + + return bg.Matrix4.Frustum(-fovy2aspect,fovy2aspect,-fovy2,fovy2,nearPlane,farPlane); + } + + static Frustum(left, right, bottom, top, nearPlane, farPlane) { + let res = new bg.Matrix4(); + let A = right-left; + let B = top-bottom; + let C = farPlane-nearPlane; + + res.setRow(0, new bg.Vector4(nearPlane*2.0/A, 0.0, 0.0, 0.0)); + res.setRow(1, new bg.Vector4(0.0, nearPlane*2.0/B, 0.0, 0.0)); + res.setRow(2, new bg.Vector4((right+left)/A, (top+bottom)/B, -(farPlane+nearPlane)/C, -1.0)); + res.setRow(3, new bg.Vector4(0.0, 0.0, -(farPlane*nearPlane*2.0)/C, 0.0)); + + return res; + } + + static Ortho(left, right, bottom, top, nearPlane, farPlane) { + let p = new bg.Matrix4(); + + let m = right-left; + let l = top-bottom; + let k = farPlane-nearPlane;; + + p._m[0] = 2/m; p._m[1] = 0; p._m[2] = 0; p._m[3] = 0; + p._m[4] = 0; p._m[5] = 2/l; p._m[6] = 0; p._m[7] = 0; + p._m[8] = 0; p._m[9] = 0; p._m[10] = -2/k; p._m[11]= 0; + p._m[12]=-(left+right)/m; p._m[13] = -(top+bottom)/l; p._m[14] = -(farPlane+nearPlane)/k; p._m[15]=1; + + return p; + } + + static LookAt(p_eye, p_center, p_up) { + let result = new bg.Matrix4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1); + let forward = new bg.Vector3(p_center); + forward.sub(p_eye); + let up = new bg.Vector3(p_up); + + forward.normalize(); + + let side = new bg.Vector3(forward); + side.cross(up); + up.assign(side); + up.cross(forward); + + result.set00(side.x); result.set10(side.y); result.set20(side.z); + result.set01(up.x); result.set11(up.y); result.set21(up.z); + result.set02(-forward.x); result.set12(-forward.y); result.set22(-forward.z); + result.setRow(3, new vwgl.Vector4(-p_eye.x,-p_eye.y,-p_eye.z,1.0)); + + return result; + } + + static Translation(x, y, z) { + if (typeof(x)=='object' && x._v && x._v.length>=3) { + y = x._v[1]; + z = x._v[2]; + x = x._v[0]; + } + return new bg.Matrix4( + 1.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 1.0, 0.0, + x, y, z, 1.0 + ); + } + + static Rotation(alpha, x, y, z) { + let axis = new bg.Vector3(x,y,z); + axis.normalize(); + let rot = new bg.Matrix4(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1); + + var cosAlpha = bg.Math.cos(alpha); + var acosAlpha = 1.0 - cosAlpha; + var sinAlpha = bg.Math.sin(alpha); + + return new bg.Matrix4( + axis.x * axis.x * acosAlpha + cosAlpha, axis.x * axis.y * acosAlpha + axis.z * sinAlpha, axis.x * axis.z * acosAlpha - axis.y * sinAlpha, 0, + axis.y * axis.x * acosAlpha - axis.z * sinAlpha, axis.y * axis.y * acosAlpha + cosAlpha, axis.y * axis.z * acosAlpha + axis.x * sinAlpha, 0, + axis.z * axis.x * acosAlpha + axis.y * sinAlpha, axis.z * axis.y * acosAlpha - axis.x * sinAlpha, axis.z * axis.z * acosAlpha + cosAlpha, 0, + 0,0,0,1 + ); + } + + static Scale(x, y, z) { + if (typeof(x)=='object' && x._v && x._v.length>=3) { + x = x._v[0]; + y = x._v[1]; + z = x._v[2]; + } + return new bg.Matrix4( + x, 0, 0, 0, + 0, y, 0, 0, + 0, 0, z, 0, + 0, 0, 0, 1 + ) + } + + constructor(m00=0,m01=0,m02=0,m03=0, m10=0,m11=0,m12=0,m13=0, m20=0,m21=0,m22=0,m23=0, m30=0,m31=0,m32=0,m33=0) { + this._m = new bg.Math.Array(16); + if (Array.isArray(m00)) { + this._m[ 0] = m00[0]; this._m[ 1] = m00[1]; this._m[ 2] = m00[2]; this._m[ 3] = m00[3]; + this._m[ 4] = m00[4]; this._m[ 5] = m00[5]; this._m[ 6] = m00[6]; this._m[ 7] = m00[7]; + this._m[ 8] = m00[8]; this._m[ 9] = m00[9]; this._m[10] = m00[10]; this._m[11] = m00[11]; + this._m[12] = m00[12]; this._m[13] = m00[13]; this._m[14] = m00[14]; this._m[15] = m00[15]; + } + else if (typeof(m00)=="number") { + this._m[ 0] = m00; this._m[ 1] = m01; this._m[ 2] = m02; this._m[ 3] = m03; + this._m[ 4] = m10; this._m[ 5] = m11; this._m[ 6] = m12; this._m[ 7] = m13; + this._m[ 8] = m20; this._m[ 9] = m21; this._m[10] = m22; this._m[11] = m23; + this._m[12] = m30; this._m[13] = m31; this._m[14] = m32; this._m[15] = m33; + } + else { + this.assign(m00); + } + } + + get m() { return this._m; } + + toArray() { + return [ + this._m[ 0], this._m[ 1], this._m[ 2], this._m[ 3], + this._m[ 4], this._m[ 5], this._m[ 6], this._m[ 7], + this._m[ 8], this._m[ 9], this._m[10], this._m[11], + this._m[12], this._m[13], this._m[14], this._m[15] + ] + } + + get m00() { return this._m[0]; } + get m01() { return this._m[1]; } + get m02() { return this._m[2]; } + get m03() { return this._m[3]; } + get m10() { return this._m[4]; } + get m11() { return this._m[5]; } + get m12() { return this._m[6]; } + get m13() { return this._m[7]; } + get m20() { return this._m[8]; } + get m21() { return this._m[9]; } + get m22() { return this._m[10]; } + get m23() { return this._m[11]; } + get m30() { return this._m[12]; } + get m31() { return this._m[13]; } + get m32() { return this._m[14]; } + get m33() { return this._m[15]; } + + set m00(v) { this._m[0] = v; } + set m01(v) { this._m[1] = v; } + set m02(v) { this._m[2] = v; } + set m03(v) { this._m[3] = v; } + set m10(v) { this._m[4] = v; } + set m11(v) { this._m[5] = v; } + set m12(v) { this._m[6] = v; } + set m13(v) { this._m[7] = v; } + set m20(v) { this._m[8] = v; } + set m21(v) { this._m[9] = v; } + set m22(v) { this._m[10] = v; } + set m23(v) { this._m[11] = v; } + set m30(v) { this._m[12] = v; } + set m31(v) { this._m[13] = v; } + set m32(v) { this._m[14] = v; } + set m33(v) { this._m[15] = v; } + + + zero() { + this._m[ 0] = 0; this._m[ 1] = 0; this._m[ 2] = 0; this._m[ 3] = 0; + this._m[ 4] = 0; this._m[ 5] = 0; this._m[ 6] = 0; this._m[ 7] = 0; + this._m[ 8] = 0; this._m[ 9] = 0; this._m[10] = 0; this._m[11] = 0; + this._m[12] = 0; this._m[13] = 0; this._m[14] = 0; this._m[15] = 0; + return this; + } + + identity() { + this._m[ 0] = 1; this._m[ 1] = 0; this._m[ 2] = 0; this._m[ 3] = 0; + this._m[ 4] = 0; this._m[ 5] = 1; this._m[ 6] = 0; this._m[ 7] = 0; + this._m[ 8] = 0; this._m[ 9] = 0; this._m[10] = 1; this._m[11] = 0; + this._m[12] = 0; this._m[13] = 0; this._m[14] = 0; this._m[15] = 1; + return this; + } + + isZero() { + return this._m[ 0]==0 && this._m[ 1]==0 && this._m[ 2]==0 && this._m[ 3]==0 && + this._m[ 4]==0 && this._m[ 5]==0 && this._m[ 6]==0 && this._m[ 7]==0 && + this._m[ 8]==0 && this._m[ 9]==0 && this._m[10]==0 && this._m[11]==0 && + this._m[12]==0 && this._m[13]==0 && this._m[14]==0 && this._m[15]==0; + } + + isIdentity() { + return this._m[ 0]==1 && this._m[ 1]==0 && this._m[ 2]==0 && this._m[ 3]==0 && + this._m[ 4]==0 && this._m[ 5]==1 && this._m[ 6]==0 && this._m[ 7]==0 && + this._m[ 8]==0 && this._m[ 9]==0 && this._m[10]==1 && this._m[11]==0 && + this._m[12]==0 && this._m[13]==0 && this._m[14]==0 && this._m[15]==1; + } + + row(i) { return new bg.Vector4(this._m[i*4],this._m[i*4 + 1],this._m[i*4 + 2],this._m[i*4 + 3]); } + setRow(i, row) { this._m[i*4]=row._v[0]; this._m[i*4 + 1]=row._v[1]; this._m[i*4 + 2]=row._v[2]; this._m[i*4 + 3]=row._v[3]; return this; } + setScale(x,y,z) { + let rx = new bg.Vector3(this._m[0], this._m[4], this._m[8]).normalize().scale(x); + let ry = new bg.Vector3(this._m[1], this._m[5], this._m[9]).normalize().scale(y); + let rz = new bg.Vector3(this._m[2], this._m[6], this._m[10]).normalize().scale(z); + this._m[0] = rx.x; this._m[4] = rx.y; this._m[8] = rx.z; + this._m[1] = ry.x; this._m[5] = ry.y; this._m[9] = ry.z; + this._m[2] = rz.x; this._m[6] = rz.y; this._m[10] = rz.z; + return this; + } + getScale() { + return new bg.Vector3( + new bg.Vector3(this._m[0], this._m[4], this._m[8]).module, + new bg.Vector3(this._m[1], this._m[5], this._m[9]).module, + new bg.Vector3(this._m[2], this._m[6], this._m[10]).module + ); + } + + setPosition(pos,y,z) { + if (typeof(pos)=="number") { + this._m[12] = pos; + this._m[13] = y; + this._m[14] = z; + } + else { + this._m[12] = pos.x; + this._m[13] = pos.y; + this._m[14] = pos.z; + } + return this; + } + + get rotation() { + let scale = this.getScale(); + return new bg.Matrix4( + this._m[0]/scale.x, this._m[1]/scale.y, this._m[ 2]/scale.z, 0, + this._m[4]/scale.x, this._m[5]/scale.y, this._m[ 6]/scale.z, 0, + this._m[8]/scale.x, this._m[9]/scale.y, this._m[10]/scale.z, 0, + 0, 0, 0, 1 + ); + } + + get position() { + return new bg.Vector3(this._m[12], this._m[13], this._m[14]); + } + + get length() { return this._m.length; } + + getMatrix3() { + return new bg.Matrix3(this._m[0], this._m[1], this._m[ 2], + this._m[4], this._m[5], this._m[ 6], + this._m[8], this._m[9], this._m[10]); + } + + perspective(fovy, aspect, nearPlane, farPlane) { + this.assign(bg.Matrix4.Perspective(fovy, aspect, nearPlane, farPlane)); + return this; + } + + frustum(left, right, bottom, top, nearPlane, farPlane) { + this.assign(bg.Matrix4.Frustum(left, right, bottom, top, nearPlane, farPlane)); + return this; + } + + ortho(left, right, bottom, top, nearPlane, farPlane) { + this.assign(bg.Matrix4.Ortho(left, right, bottom, top, nearPlane, farPlane)); + return this; + } + + lookAt(origin, target, up) { + this.assign(bg.Matrix4.LookAt(origin,target,up)); + return this; + } + + translate(x, y, z) { + this.mult(bg.Matrix4.Translation(x, y, z)); + return this; + } + + rotate(alpha, x, y, z) { + this.mult(bg.Matrix4.Rotation(alpha, x, y, z)); + return this; + } + + scale(x, y, z) { + this.mult(bg.Matrix4.Scale(x, y, z)); + return this; + } + + elemAtIndex(i) { return this._m[i]; } + + assign(a) { + if (a.length==9) { + this._m[0] = a._m[0]; this._m[1] = a._m[1]; this._m[2] = a._m[2]; this._m[3] = 0; + this._m[4] = a._m[3]; this._m[5] = a._m[4]; this._m[6] = a._m[5]; this._m[7] = 0; + this._m[8] = a._m[6]; this._m[9] = a._m[7]; this._m[10] = a._m[8]; this._m[11] = 0; + this._m[12] = 0; this._m[13] = 0; this._m[14] = 0; this._m[15] = 1; + } + else if (a.length==16) { + this._m[0] = a._m[0]; this._m[1] = a._m[1]; this._m[2] = a._m[2]; this._m[3] = a._m[3]; + this._m[4] = a._m[4]; this._m[5] = a._m[5]; this._m[6] = a._m[6]; this._m[7] = a._m[7]; + this._m[8] = a._m[8]; this._m[9] = a._m[9]; this._m[10] = a._m[10]; this._m[11] = a._m[11]; + this._m[12] = a._m[12]; this._m[13] = a._m[13]; this._m[14] = a._m[14]; this._m[15] = a._m[15]; + } + return this; + } + + equals(m) { + return this._m[ 0]==m._m[ 0] && this._m[ 1]==m._m[ 1] && this._m[ 2]==m._m[ 2] && this._m[ 3]==m._m[ 3] && + this._m[ 4]==m._m[ 4] && this._m[ 5]==m._m[ 5] && this._m[ 6]==m._m[ 6] && this._m[ 7]==m._m[ 7] && + this._m[ 8]==m._m[ 8] && this._m[ 9]==m._m[ 9] && this._m[10]==m._m[10] && this._m[11]==m._m[11] && + this._m[12]==m._m[12] && this._m[13]==m._m[13] && this._m[14]==m._m[14] && this._m[15]==m._m[15]; + } + + notEquals(m) { + return this._m[ 0]!=m._m[ 0] || this._m[ 1]!=m._m[ 1] || this._m[ 2]!=m._m[ 2] || this._m[ 3]!=m._m[ 3] || + this._m[ 4]!=m._m[ 4] || this._m[ 5]!=m._m[ 5] || this._m[ 6]!=m._m[ 6] || this._m[ 7]!=m._m[ 7] || + this._m[ 8]!=m._m[ 8] || this._m[ 9]!=m._m[ 9] || this._m[10]!=m._m[10] || this._m[11]!=m._m[11] || + this._m[12]!=m._m[12] || this._m[13]!=m._m[13] || this._m[14]!=m._m[14] || this._m[15]!=m._m[15]; + } + + mult(a) { + if (typeof(a)=='number') { + this._m[ 0] *= a; this._m[ 1] *= a; this._m[ 2] *= a; this._m[ 3] *= a; + this._m[ 4] *= a; this._m[ 5] *= a; this._m[ 6] *= a; this._m[ 7] *= a; + this._m[ 8] *= a; this._m[ 9] *= a; this._m[10] *= a; this._m[11] *= a; + this._m[12] *= a; this._m[13] *= a; this._m[14] *= a; this._m[15] *= a; + return this; + } + + var rm = this._m; + var lm = a._m; + var res = new bg.Math.Array(16); + + res[0] = lm[ 0] * rm[ 0] + lm[ 1] * rm[ 4] + lm[ 2] * rm[ 8] + lm[ 3] * rm[12]; + res[1] = lm[ 0] * rm[ 1] + lm[ 1] * rm[ 5] + lm[ 2] * rm[ 9] + lm[ 3] * rm[13]; + res[2] = lm[ 0] * rm[ 2] + lm[ 1] * rm[ 6] + lm[ 2] * rm[10] + lm[ 3] * rm[14]; + res[3] = lm[ 0] * rm[ 3] + lm[ 1] * rm[ 7] + lm[ 2] * rm[11] + lm[ 3] * rm[15]; + + res[4] = lm[ 4] * rm[ 0] + lm[ 5] * rm[ 4] + lm[ 6] * rm[ 8] + lm[ 7] * rm[12]; + res[5] = lm[ 4] * rm[ 1] + lm[ 5] * rm[ 5] + lm[ 6] * rm[ 9] + lm[ 7] * rm[13]; + res[6] = lm[ 4] * rm[ 2] + lm[ 5] * rm[ 6] + lm[ 6] * rm[10] + lm[ 7] * rm[14]; + res[7] = lm[ 4] * rm[ 3] + lm[ 5] * rm[ 7] + lm[ 6] * rm[11] + lm[ 7] * rm[15]; + + res[8] = lm[ 8] * rm[ 0] + lm[ 9] * rm[ 4] + lm[10] * rm[ 8] + lm[11] * rm[12]; + res[9] = lm[ 8] * rm[ 1] + lm[ 9] * rm[ 5] + lm[10] * rm[ 9] + lm[11] * rm[13]; + res[10] = lm[ 8] * rm[ 2] + lm[ 9] * rm[ 6] + lm[10] * rm[10] + lm[11] * rm[14]; + res[11] = lm[ 8] * rm[ 3] + lm[ 9] * rm[ 7] + lm[10] * rm[11] + lm[11] * rm[15]; + + res[12] = lm[12] * rm[ 0] + lm[13] * rm[ 4] + lm[14] * rm[ 8] + lm[15] * rm[12]; + res[13] = lm[12] * rm[ 1] + lm[13] * rm[ 5] + lm[14] * rm[ 9] + lm[15] * rm[13]; + res[14] = lm[12] * rm[ 2] + lm[13] * rm[ 6] + lm[14] * rm[10] + lm[15] * rm[14]; + res[15] = lm[12] * rm[ 3] + lm[13] * rm[ 7] + lm[14] * rm[11] + lm[15] * rm[15]; + + this._m = res; + return this; + } + + multVector(vec) { + if (typeof(vec)=='object' && vec._v && vec._v.length>=3) { + vec = vec._v; + } + let x=vec[0]; + let y=vec[1]; + let z=vec[2]; + let w=1.0; + + return new bg.Vector4(this._m[0]*x + this._m[4]*y + this._m[ 8]*z + this._m[12]*w, + this._m[1]*x + this._m[5]*y + this._m[ 9]*z + this._m[13]*w, + this._m[2]*x + this._m[6]*y + this._m[10]*z + this._m[14]*w, + this._m[3]*x + this._m[7]*y + this._m[11]*z + this._m[15]*w); + } + + invert() { + let a00 = this._m[0], a01 = this._m[1], a02 = this._m[2], a03 = this._m[3], + a10 = this._m[4], a11 = this._m[5], a12 = this._m[6], a13 = this._m[7], + a20 = this._m[8], a21 = this._m[9], a22 = this._m[10], a23 = this._m[11], + a30 = this._m[12], a31 = this._m[13], a32 = this._m[14], a33 = this._m[15]; + + let b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32; + + let det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + if (!det) { + this.zero(); + return this; + } + else { + det = 1.0 / det; + + this._m[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + this._m[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + this._m[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + this._m[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + this._m[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + this._m[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + this._m[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + this._m[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + this._m[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + this._m[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + this._m[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + this._m[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + this._m[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + this._m[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + this._m[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + this._m[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + return this; + } + } + + traspose() { + let r0 = new bg.Vector4(this._m[0], this._m[4], this._m[ 8], this._m[12]); + let r1 = new bg.Vector4(this._m[1], this._m[5], this._m[ 9], this._m[13]); + let r2 = new bg.Vector4(this._m[2], this._m[6], this._m[10], this._m[14]); + let r3 = new bg.Vector4(this._m[3], this._m[7], this._m[11], this._m[15]); + + this.setRow(0, r0); + this.setRow(1, r1); + this.setRow(2, r2); + this.setRow(3, r3); + return this; + } + + transformDirection(/* Vector3 */ dir) { + let direction = new bg.Vector3(dir); + let trx = new bg.Matrix4(this); + trx.setRow(3, new bg.Vector4(0.0, 0.0, 0.0, 1.0)); + direction.assign(trx.multVector(direction).xyz); + direction.normalize(); + return direction; + } + + get forwardVector() { + return this.transformDirection(new bg.Vector3(0.0, 0.0, 1.0)); + } + + get rightVector() { + return this.transformDirection(new bg.Vector3(1.0, 0.0, 0.0)); + } + + get upVector() { + return this.transformDirection(new bg.Vector3(0.0, 1.0, 0.0)); + } + + get backwardVector() { + return this.transformDirection(new bg.Vector3(0.0, 0.0, -1.0)); + } + + get leftVector() { + return this.transformDirection(new bg.Vector3(-1.0, 0.0, 0.0)); + } + + get downVector() { + return this.transformDirection(new bg.Vector3(0.0, -1.0, 0.0)); + } + + isNan() { + return Number.isNaN(this._m[ 0]) || Number.isNaN(this._m[ 1]) || Number.isNaN(this._m[ 2]) || Number.isNaN(this._m[ 3]) || + Number.isNaN(this._m[ 4]) || Number.isNaN(this._m[ 5]) || Number.isNaN(this._m[ 6]) || Number.isNaN(this._m[ 7]) || + Number.isNaN(this._m[ 8]) || Number.isNaN(this._m[ 9]) || Number.isNaN(this._m[10]) || Number.isNaN(this._m[11]) || + Number.isNaN(this._m[12]) || Number.isNaN(this._m[13]) || Number.isNaN(this._m[14]) || Number.isNaN(this._m[15]); + } + + getOrthoValues() { + return [ (1+get23())/get22(), + -(1-get23())/get22(), + (1-get13())/get11(), + -(1+get13())/get11(), + -(1+get03())/get00(), + (1-get03())/get00() ]; + } + + getPerspectiveValues() { + return [ get23()/(get22()-1), + get23()/(get22()+1), + near * (get12()-1)/get11(), + near * (get12()+1)/get11(), + near * (get02()-1)/get00(), + near * (get02()+1)/get00() ]; + } + + toString() { + return "[" + this._m[ 0] + ", " + this._m[ 1] + ", " + this._m[ 2] + ", " + this._m[ 3] + "]\n" + + " [" + this._m[ 4] + ", " + this._m[ 5] + ", " + this._m[ 6] + ", " + this._m[ 7] + "]\n" + + " [" + this._m[ 8] + ", " + this._m[ 9] + ", " + this._m[10] + ", " + this._m[11] + "]\n" + + " [" + this._m[12] + ", " + this._m[13] + ", " + this._m[14] + ", " + this._m[15] + "]"; + } +} + +bg.Matrix4 = Matrix4; + +})(); + +(function() { + class Vector { + static MinComponents(v1,v2) { + let length = Math.min(v1.length, v2.length); + let result = null; + switch (length) { + case 2: + result = new bg.Vector2(); + break; + case 3: + result = new bg.Vector3(); + break; + case 4: + result = new bg.Vector4(); + break; + } + + for (let i=0; i<length; ++i) { + result._v[i] = v1._v[i]<v2._v[i] ? v1._v[i] : v2._v[i]; + } + return result; + } + + static MaxComponents(v1,v2) { + let length = Math.min(v1.length, v2.length); + let result = null; + switch (length) { + case 2: + result = new bg.Vector2(); + break; + case 3: + result = new bg.Vector3(); + break; + case 4: + result = new bg.Vector4(); + break; + } + + for (let i=0; i<length; ++i) { + result._v[i] = v1._v[i]>v2._v[i] ? v1._v[i] : v2._v[i]; + } + return result; + } + + constructor(v) { + this._v = v; + } + + get v() { return this._v; } + + get length() { return this._v.length; } + + get x() { return this._v[0]; } + set x(v) { this._v[0] = v; } + get y() { return this._v[1]; } + set y(v) { this._v[1] = v; } + + get module() { return this.magnitude(); } + + toArray() { + let result = []; + for (let i=0; i<this.v.length; ++i) { + result.push(this.v[i]); + } + return result; + } + } + + bg.VectorBase = Vector; + bg.Vector = Vector; + + class Vector2 extends Vector { + static Add(v1,v2) { + return new Vector2(v1.x + v2.x, v1.y + v2.y); + } + + static Sub(v1,v2) { + return new Vector2(v1.x - v2.x, v1.y - v2.y); + } + + constructor(x = 0,y) { + super(new bg.Math.ArrayHighP(2)); + if (x instanceof Vector2) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + } + else if (Array.isArray(x) && x.length>=2) { + this._v[0] = x[0]; + this._v[1] = x[1]; + } + else { + if (y===undefined) y=x; + this._v[0] = x; + this._v[1] = y; + } + } + + distance(other) { + let v3 = new bg.Vector2(this._v[0] - other._v[0], + this._v[1] - other._v[1]); + return v3.magnitude(); + } + + normalize() { + let m = this.magnitude(); + this._v[0] = this._v[0]/m; this._v[1]=this._v[1]/m; + return this; + } + + add(v2) { + this._v[0] += v2._v[0]; + this._v[1] += v2._v[1]; + return this; + } + + sub(v2) { + this._v[0] -= v2._v[0]; + this._v[1] -= v2._v[1]; + return this; + } + + dot(v2) { + return this._v[0] * v2._v[0] + this._v[1] * v2._v[1]; + } + + scale(scale) { + this._v[0] *= scale; this._v[1] *= scale; + return this; + } + + magnitude() { + return Math.sqrt( + this._v[0] * this._v[0] + + this._v[1] * this._v[1] + ) + } + + elemAtIndex(i) { return this._v[i]; } + equals(v) { return this._v[0]==v._v[0] && this._v[1]==v._v[1]; } + notEquals(v) { return this._v[0]!=v._v[0] || this._v[1]!=v._v[1]; } + assign(v) { this._v[0]=v._v[0]; this._v[1]=v._v[1]; } + + set(x, y) { + if (y===undefined) y = x; + this._v[0] = x; this._v[1] = y; + } + + get width() { return this._v[0]; } + get height() { return this._v[1]; } + set width(v) { this._v[0] = v; } + set height(v) { this._v[1] = v; } + + get aspectRatio() { return this._v[0]/this._v[1]; } + + isNan() { return isNaN(this._v[0]) || isNaN(this._v[1]); } + + toString() { + return "[" + this._v + "]"; + } + } + + bg.Vector2 = Vector2; + + class Vector3 extends Vector { + static Add(v1,v2) { + return new Vector3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z); + } + + static Sub(v1,v2) { + return new Vector3(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z); + } + + constructor(x = 0, y = 0, z = 0) { + super(new bg.Math.ArrayHighP(3)); + if (x instanceof Vector2) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + this._v[2] = y; + } + else if (x instanceof Vector3) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + this._v[2] = x._v[2]; + } + else if (Array.isArray(x) && x.length>=3) { + this._v[0] = x[0]; + this._v[1] = x[1]; + this._v[2] = x[2]; + } + else { + if (y===undefined) y=x; + if (z===undefined) z=y; + this._v[0] = x; + this._v[1] = y; + this._v[2] = z; + } + } + + get z() { return this._v[2]; } + set z(v) { this._v[2] = v; } + + magnitude() { + return Math.sqrt( + this._v[0] * this._v[0] + + this._v[1] * this._v[1] + + this._v[2] * this._v[2] + ); + } + + normalize() { + let m = this.magnitude(); + this._v[0] = this._v[0]/m; this._v[1]=this._v[1]/m; this._v[2]=this._v[2]/m; + return this; + } + + distance(other) { + let v3 = new bg.Vector3(this._v[0] - other._v[0], + this._v[1] - other._v[1], + this._v[2] - other._v[2]); + return v3.magnitude(); + } + + add(v2) { + this._v[0] += v2._v[0]; + this._v[1] += v2._v[1]; + this._v[2] += v2._v[2]; + return this; + } + + sub(v2) { + this._v[0] -= v2._v[0]; + this._v[1] -= v2._v[1]; + this._v[2] -= v2._v[2]; + return this; + } + + dot(v2) { + return this._v[0] * v2._v[0] + this._v[1] * v2._v[1] + this._v[2] * v2._v[2]; + } + + scale(scale) { + this._v[0] *= scale; this._v[1] *= scale; this._v[2] *= scale; + return this; + } + + cross(/* Vector3 */ v2) { + let x = this._v[1] * v2._v[2] - this._v[2] * v2._v[1]; + let y = this._v[2] * v2._v[0] - this._v[0] * v2._v[2]; + let z = this._v[0] * v2._v[1] - this._v[1] * v2._v[0]; + this._v[0]=x; this._v[1]=y; this._v[2]=z; + return this; + } + + elemAtIndex(i) { return this._v[i]; } + equals(v) { return this._v[0]==v._v[0] && this._v[1]==v._v[1] && this._v[2]==v._v[2]; } + notEquals(v) { return this._v[0]!=v._v[0] || this._v[1]!=v._v[1] || this._v[2]!=v._v[2]; } + assign(v) { this._v[0]=v._v[0]; this._v[1]=v._v[1]; if (v._v.length>=3) this._v[2]=v._v[2]; } + + set(x, y, z) { + this._v[0] = x; + this._v[1] = (y===undefined) ? x:y; + this._v[2] = (y===undefined) ? x:(z===undefined ? y:z); + } + + get width() { return this._v[0]; } + get height() { return this._v[1]; } + get depth() { return this._v[2]; } + + set width(v) { this._v[0] = v; } + set height(v) { this._v[1] = v; } + set depth(v) { this._v[2] = v; } + + get xy() { return new bg.Vector2(this._v[0],this._v[1]); } + get yz() { return new bg.Vector2(this._v[1],this._v[2]); } + get xz() { return new bg.Vector2(this._v[0],this._v[2]); } + + isNan() { return isNaN(this._v[0]) || isNaN(this._v[1]) || isNaN(this._v[2]); } + + toString() { + return "[" + this._v + "]"; + } + } + + bg.Vector3 = Vector3; + + class Vector4 extends Vector { + static Add(v1,v2) { + return new Vector4(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z, v1.w + v2.w); + } + + static Sub(v1,v2) { + return new Vector4(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z, v1.w - v2.w); + } + + static Yellow() { return new bg.Vector4(1.0,1.0,0.0,1.0); } + static Orange() { return new bg.Vector4(1.0,0.5,0.0,1.0); } + static Red() { return new bg.Vector4(1.0,0.0,0.0,1.0); } + static Violet() { return new bg.Vector4(0.5,0.0,1.0,1.0); } + static Blue() { return new bg.Vector4(0.0,0.0,1.0,1.0); } + static Green() { return new bg.Vector4(0.0,1.0,0.0,1.0); } + static White() { return new bg.Vector4(1.0,1.0,1.0,1.0); } + static LightGray() { return new bg.Vector4(0.8,0.8,0.8,1.0); } + static Gray() { return new bg.Vector4(0.5,0.5,0.5,1.0); } + static DarkGray() { return new bg.Vector4(0.2,0.2,0.2,1.0); } + static Black() { return new bg.Vector4(0.0,0.0,0.0,1.0); } + static Brown() { return new bg.Vector4(0.4,0.2,0.0,1.0); } + static Transparent() { return new bg.Vector4(0,0,0,0); } + + constructor(x = 0, y = 0, z = 0, w = 0) { + super(new bg.Math.ArrayHighP(4)); + if (x instanceof Vector2) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + this._v[2] = y + this._v[3] = z; + } + else if (x instanceof Vector3) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + this._v[2] = x._v[2]; + this._v[3] = y; + } + else if (x instanceof Vector4) { + this._v[0] = x._v[0]; + this._v[1] = x._v[1]; + this._v[2] = x._v[2]; + this._v[3] = x._v[3]; + } + else if (Array.isArray(x) && x.length>=4) { + this._v[0] = x[0]; + this._v[1] = x[1]; + this._v[2] = x[2]; + this._v[3] = x[3]; + } + else { + if (y===undefined) y=x; + if (z===undefined) z=y; + if (w===undefined) w=z; + this._v[0] = x; + this._v[1] = y; + this._v[2] = z; + this._v[3] = w; + } + } + + get z() { return this._v[2]; } + set z(v) { this._v[2] = v; } + get w() { return this._v[3]; } + set w(v) { this._v[3] = v; } + + magnitude() { + return Math.sqrt( + this._v[0] * this._v[0] + + this._v[1] * this._v[1] + + this._v[2] * this._v[2] + + this._v[3] * this._v[3] + ); + } + + normalize() { + let m = this.magnitude(); + this._v[0] = this._v[0]/m; + this._v[1]=this._v[1]/m; + this._v[2]=this._v[2]/m; + this._v[3]=this._v[3]/m; + return this; + } + + distance(other) { + let v3 = new bg.Vector4(this._v[0] - other._v[0], + this._v[1] - other._v[1], + this._v[2] - other._v[2], + this._v[3] - other._v[3]); + return v3.magnitude(); + } + + add(v2) { + this._v[0] += v2._v[0]; + this._v[1] += v2._v[1]; + this._v[2] += v2._v[2]; + this._v[3] += v2._v[3]; + return this; + } + + sub(v2) { + this._v[0] -= v2._v[0]; + this._v[1] -= v2._v[1]; + this._v[2] -= v2._v[2]; + this._v[3] -= v2._v[3]; + return this; + } + + dot(v2) { + return this._v[0] * v2._v[0] + this._v[1] * v2._v[1] + this._v[2] * v2._v[2] + this._v[3] * v2._v[3]; + } + + scale(scale) { + this._v[0] *= scale; this._v[1] *= scale; this._v[2] *= scale; this._v[3] *= scale; + return this; + } + + elemAtIndex(i) { return this._v[i]; } + equals(v) { return this._v[0]==v._v[0] && this._v[1]==v._v[1] && this._v[2]==v._v[2] && this._v[3]==v._v[3]; } + notEquals(v) { return this._v[0]!=v._v[0] || this._v[1]!=v._v[1] || this._v[2]!=v._v[2] || this._v[3]!=v._v[3]; } + assign(v) { this._v[0]=v._v[0]; this._v[1]=v._v[1]; if (v._v.length>=3) this._v[2]=v._v[2]; if (v._v.length==4) this._v[3]=v._v[3]; } + + set(x, y, z, w) { + this._v[0] = x; + this._v[1] = (y===undefined) ? x:y; + this._v[2] = (y===undefined) ? x:(z===undefined ? y:z); + this._v[3] = (y===undefined) ? x:(z===undefined ? y:(w===undefined ? z:w)); + } + + get r() { return this._v[0]; } + get g() { return this._v[1]; } + get b() { return this._v[2]; } + get a() { return this._v[3]; } + + set r(v) { this._v[0] = v; } + set g(v) { this._v[1] = v; } + set b(v) { this._v[2] = v; } + set a(v) { this._v[3] = v; } + + get xy() { return new bg.Vector2(this._v[0],this._v[1]); } + get yz() { return new bg.Vector2(this._v[1],this._v[2]); } + get xz() { return new bg.Vector2(this._v[0],this._v[2]); } + get xyz() { return new bg.Vector3(this._v[0],this._v[1],this._v[2]); } + + get width() { return this._v[2]; } + get height() { return this._v[3]; } + + set width(v) { this._v[2] = v; } + set height(v) { this._v[3] = v; } + + get aspectRatio() { return this._v[3]!=0 ? this._v[2]/this._v[3]:1.0; } + + isNan() { return isNaN(this._v[0]) || isNaN(this._v[1]) || isNaN(this._v[2]) || isNaN(this._v[3]); } + + toString() { + return "[" + this._v + "]"; + } + } + + bg.Vector4 = Vector4; + + bg.Size2D = Vector2; + bg.Size3D = Vector3; + bg.Position2D = Vector2; + bg.Viewport = Vector4; + bg.Color = Vector4; + + class Bounds extends Vector { + constructor(a=0,b=0,c=0,d=0,e=0,f=0) { + super(new bg.Math.Array(6)); + this._v[0] = a; + this._v[1] = b; + this._v[2] = c; + this._v[3] = d; + this._v[4] = e; + this._v[5] = f; + } + + elemAtIndex(i) { return this._v[i]; } + equals(v) { return this._v[0]==v._v[0] && this._v[1]==v._v[1] && this._v[2]==v._v[2] && this._v[3]==v._v[3] && this._v[4]==v._v[4] && this._v[5]==v._v[5]; } + notEquals(v) { return this._v[0]!=v._v[0] || this._v[1]!=v._v[1] || this._v[2]!=v._v[2] || this._v[3]!=v._v[3] || this._v[4]!=v._v[4] || this._v[5]!=v._v[5]; } + assign(v) { this._v[0]=v._v[0]; this._v[1]=v._v[1]; this._v[2]=v._v[2]; this._v[3]=v._v[3]; this._v[4]=v._v[4]; this._v[5]=v._v[5]; } + + set(left, right, bottom, top, back, front) { + this._v[0] = left; + this._v[1] = (right===undefined) ? left:right; + this._v[2] = (right===undefined) ? left:bottom; + this._v[3] = (right===undefined) ? left:top; + this._v[4] = (right===undefined) ? left:back; + this._v[5] = (right===undefined) ? left:front; + } + + get left() { return this._v[0]; } + get right() { return this._v[1]; } + get bottom() { return this._v[2]; } + get top() { return this._v[3]; } + get back() { return this._v[4]; } + get front() { return this._v[5]; } + + set left(v) { this._v[0] = v; } + set right(v) { this._v[1] = v; } + set bottom(v) { this._v[2] = v; } + set top(v) { this._v[3] = v; } + set back(v) { this._v[4] = v; } + set front(v) { this._v[5] = v; } + + get width() { return Math.abs(this._v[1] - this._v[0]); } + get height() { return Math.abs(this._v[3] - this._v[2]); } + get depth() { return Math.abs(this._v[5] - this._v[4]); } + + isNan() { return isNaN(this._v[0]) || isNaN(this._v[1]) || isNaN(this._v[2]) || isNaN(this._v[3]) || isNaN(this._v[4]) || isNaN(this._v[5]); } + + toString() { + return "[" + this._v + "]"; + } + + isInBounds(/* vwgl.Vector3*/ v) { + return v.x>=this._v[0] && v.x<=this._v[1] && + v.y>=this._v[2] && v.y<=this._v[3] && + v.z>=this._v[4] && v.z<=this._v[5]; + } + } + + bg.Bounds = Bounds; + + class Quaternion extends Vector4 { + static MakeWithMatrix(m) { + return new Quaternion(m); + } + + constructor(a,b,c,d) { + super(); + if (a===undefined) this.zero(); + else if (b===undefined) { + if (a._v && a._v.lenght>=4) this.clone(a); + else if(a._m && a._m.length==9) this.initWithMatrix3(a); + else if(a._m && a._m.length==16) this.initWithMatrix4(a); + else this.zero(); + } + else if (a!==undefined && b!==undefined && c!==undefined && d!==undefined) { + this.initWithValues(a,b,c,d); + } + else { + this.zero(); + } + } + + initWithValues(alpha,x,y,z) { + this._v[0] = x * bg.Math.sin(alpha/2); + this._v[1] = y * bg.Math.sin(alpha/2); + this._v[2] = z * bg.Math.sin(alpha/2); + this._v[3] = bg.Math.cos(alpha/2); + return this; + } + + clone(q) { + this._v[0] = q._v[0]; + this._v[1] = q._v[1]; + this._v[2] = q._v[2]; + this._v[3] = q._v[3]; + } + + initWithMatrix3(m) { + let w = bg.Math.sqrt(1.0 + m._m[0] + m._m[4] + m._m[8]) / 2.0; + let w4 = 4.0 * w; + + this._v[0] = (m._m[7] - m._m[5]) / w; + this._v[1] = (m._m[2] - m._m[6]) / w4; + this._v[2] = (m._m[3] - m._m[1]) / w4; + this._v[3] = w; + } + + initWithMatrix4(m) { + let w = bg.Math.sqrt(1.0 + m._m[0] + m._m[5] + m._m[10]) / 2.0; + let w4 = 4.0 * w; + + this._v[0] = (m._m[9] - m._m[6]) / w; + this._v[1] = (m._m[2] - m._m[8]) / w4; + this._v[2] = (m._m[4] - m._m[1]) / w4; + this._v[3] = w; + } + + getMatrix4() { + let m = bg.Matrix4.Identity(); + let _v = this._v; + m.setRow(0, new bg.Vector4(1.0 - 2.0*_v[1]*_v[1] - 2.0*_v[2]*_v[2], 2.0*_v[0]*_v[1] - 2.0*_v[2]*_v[3], 2.0*_v[0]*_v[2] + 2.0*_v[1]*_v[3], 0.0)); + m.setRow(1, new bg.Vector4(2.0*_v[0]*_v[1] + 2.0*_v[2]*_v[3], 1.0 - 2.0*_v[0]*_v[0] - 2.0*_v[2]*_v[2], 2.0*_v[1]*_v[2] - 2.0*_v[0]*_v[3], 0.0)); + m.setRow(2, new bg.Vector4(2.0*_v[0]*_v[2] - 2.0*_v[1]*_v[3], 2.0*_v[1]*_v[2] + 2.0*_v[0]*_v[3], 1.0 - 2.0*_v[0]*_v[0] - 2.0*_v[1]*_v[1], 0.0)); + return m; + } + + getMatrix3() { + let m = bg.Matrix3.Identity(); + let _v = this._v; + + m.setRow(0, new bg.Vector3(1.0 - 2.0*_v[1]*_v[1] - 2.0*_v[2]*_v[2], 2.0*_v[0]*_v[1] - 2.0*_v[2]*_v[3], 2.0*_v[0]*_v[2] + 2.0*_v[1]*_v[3])); + m.setRow(1, new bg.Vector3(2.0*_v[0]*_v[1] + 2.0*_v[2]*_v[3], 1.0 - 2.0*_v[0]*_v[0] - 2.0*_v[2]*_v[2], 2.0*_v[1]*_v[2] - 2.0*_v[0]*_v[3])); + m.setRow(2, new bg.Vector3(2.0*_v[0]*_v[2] - 2.0*_v[1]*_v[3], 2.0*_v[1]*_v[2] + 2.0*_v[0]*_v[3], 1.0 - 2.0*_v[0]*_v[0] - 2.0*_v[1]*_v[1])); + return m; + } + } + + bg.Quaternion = Quaternion; + +})(); + +bg.physics = {}; +(function() { + + bg.physics.IntersectionType = { + NONE:0, + POINT:1, + LLINE:2 + }; + + class Intersection { + + static RayToPlane(ray,plane) { + return new bg.physics.RayToPlaneIntersection(ray,plane); + } + + constructor() { + this._type = null; + this._p0 = null; + this._p1 = null; + } + + get type() { return this._type; } + get point() { return this._p0; } + get endPoint() { return this._p1; } + + intersects() { return false; } + } + + bg.physics.Intersection = Intersection; + + class RayToPlaneIntersection extends bg.physics.Intersection { + constructor(ray,plane) { + super(); + this._ray = null; + this._p0 = null; + + this._type = bg.physics.IntersectionType.POINT; + let p0 = new bg.Vector3(plane.origin); + let n = new bg.Vector3(plane.normal); + let l0 = new bg.Vector3(ray.start); + let l = new bg.Vector3(ray.vector); + let num = p0.sub(l0).dot(n); + let den = l.dot(n); + + if (den==0) return; + let d = num/den; + if (d>ray.magnitude) return; + + this._ray = bg.physics.Ray.RayWithVector(ray.vector,ray.start,d); + this._p0 = this._ray.end; + } + + get ray() { + return this._ray; + } + + intersects() { + return (this._ray!=null && this._p0!=null); + } + } + + bg.physics.RayToPlaneIntersection = RayToPlaneIntersection; + + +})(); +(function() { + + class Joint { + static Factory(linkData) { + switch (linkData.type) { + case 'LinkJoint': + return LinkJoint.Factory(linkData); + break; + } + return null; + } + + constructor() { + this._transform = bg.Matrix4.Identity(); + } + + get transform() { return this._transform; } + set transform(t) { this._transform = t; } + + applyTransform(matrix) { + + } + + calculateTransform() { + + } + } + + bg.physics.Joint = Joint; + + bg.physics.LinkTransformOrder = { + TRANSLATE_ROTATE:1, + ROTATE_TRANSLATE:0 + } + + class LinkJoint extends Joint { + static Factory(data) { + let result = new LinkJoint(); + result.offset = new bg.Vector3( + data.offset[0] || 0, + data.offset[1] || 0, + data.offset[2] || 0 + ); + result.yaw = data.yaw || 0; + result.pitch = data.pitch || 0; + result.roll = data.roll || 0; + result.order = data.order || 1; + return result; + } + + constructor() { + super(); + this._offset = new bg.Vector3(); + this._eulerRotation = new bg.Vector3(); + + this._transformOrder = bg.physics.LinkTransformOrder.TRANSLATE_ROTATE; + } + + applyTransform(matrix) { + matrix.mult(this.transform); + } + + assign(j) { + this.yaw = j.yaw; + this.pitch = j.pitch; + this.roll = j.roll; + this.offset.assign(j.offset); + this.transformOrder = j.transformOrder; + } + + get offset() { return this._offset; } + set offset(o) { this._offset = o; this.calculateTransform(); } + + get eulerRotation() { return this._eulerRotation; } + set eulerRotation(r) { this._eulerRotation = r; this.calculateTransform(); } + + get yaw() { return this._eulerRotation.x; } + get pitch() { return this._eulerRotation.y; } + get roll() { return this._eulerRotation.z; } + + set yaw(y) { this._eulerRotation.x = y; this.calculateTransform(); } + set pitch(p) { this._eulerRotation.y = p; this.calculateTransform(); } + set roll(r) { this._eulerRotation.z = r; this.calculateTransform(); } + + get transformOrder() { return this._transformOrder; } + set transformOrder(o) { this._transformOrder = o; this.calculateTransform(); } + + multTransform(dst) { + let offset = this.offset; + switch (this.transformOrder) { + case bg.physics.LinkTransformOrder.TRANSLATE_ROTATE: + dst.translate(offset.x,offset.y,offset.z); + this.multRotation(dst); + break; + case bg.physics.LinkTransformOrder.ROTATE_TRANSLATE: + this.multRotation(dst); + dst.translate(offset.x,offset.y,offset.z); + break; + } + } + + multRotation(dst) { + dst.rotate(this.eulerRotation.z, 0,0,1) + .rotate(this.eulerRotation.y, 0,1,0) + .rotate(this.eulerRotation.x, 1,0,0); + } + + calculateTransform() { + this.transform.identity(); + this.multTransform(this.transform); + } + + serialize(data) { + data.type = "LinkJoint"; + data.offset = [ + this.offset.x, + this.offset.y, + this.offset.z + ]; + data.yaw = this.yaw; + data.pitch = this.pitch; + data.roll = this.roll; + data.order = this.order; + } + } + + bg.physics.LinkJoint = LinkJoint; +})(); +(function() { + + class Plane { + // a = normal: create a plane with origin=(0,0,0) and normal=a + // a = normal, b = origin: create a plane with origin=b and normal=a + // a = p1, b = p2, c = p3: create a plane that contains the points p1, p2 and p3 + constructor(a, b, c) { + a = a instanceof bg.Vector3 && a; + b = b instanceof bg.Vector3 && b; + c = c instanceof bg.Vector3 && c; + if (a && !b) { + this._normal = new bg.Vector3(a); + this._origin = new bg.Vector3(0); + } + else if (a && b && !c) { + this._normal = new bg.Vector3(a); + this._origin = new bg.Vector3(b); + } + else if (a && b && c) { + var vec1 = new bg.Vector3(a); vec1.sub(b); + var vec2 = new bg.Vector3(c); vec2.sub(a); + this._origin = new bg.Vector3(p1); + this._normal = new bg.Vector3(vec1); + this._normal.cross(vec2).normalize(); + } + else { + this._origin = new bg.Vector3(0); + this._normal = new bg.Vector3(0,1,0); + } + } + + get normal() { return this._normal; } + set normal(n) { this._normal.assign(n); } + + get origin() { return this._origin; } + set origin(o) { this._origin.assign(o); } + + toString() { + return `P0: ${this._origin.toString()}, normal:${this._normal.toString()}`; + } + + valid() { return !this._origin.isNan() && !this._normal.isNan(); } + + assign(p) { + this._origin.assign(p._origin); + this._normal.assign(p._normal); + return this; + } + + equals(p) { + return this._origin.equals(p._origin) && this._normal.equals(p._normal); + } + } + + bg.physics.Plane = Plane; + +})(); +(function() { + + function calculateVector(ray) { + ray._vector = new bg.Vector3(ray._end); + ray._vector.sub(ray._start); + ray._magnitude = ray._vector.magnitude(); + ray._vector.normalize(); + } + + class Ray { + static RayWithPoints(start,end) { + return new Ray(start,end); + } + + static RayWithVector(vec,origin,maxDepth) { + let r = new Ray(); + r.setWithVector(vec,origin,maxDepth); + return r; + } + + static RayWithScreenPoint(screenPoint,projMatrix,viewMatrix,viewport) { + let r = new Ray(); + r.setWithScreenPoint(screenPoint,projMatrix,viewMatrix,viewport); + return r; + } + + + constructor(start,end) { + this._start = start || new bg.Vector3(); + this._end = end || new bg.Vector3(1); + calculateVector(this); + } + + setWithPoints(start,end) { + this._start.assign(start); + this._end.assign(end); + calculateVector(); + return this; + } + + setWithVector(vec,origin,maxDepth) { + this._start.assign(origin); + this._end.assign(origin); + let vector = new bg.Vector3(vec); + vector.normalize().scale(maxDepth); + this._end.add(vector); + calculateVector(this); + return this; + } + + setWithScreenPoint(screenPoint,projMatrix,viewMatrix,viewport) { + let start = bg.Matrix4.Unproject(screenPoint.x, screenPoint.y, 0, viewMatrix, projMatrix, viewport); + let end = bg.Matrix4.Unproject(screenPoint.x, screenPoint.y, 1, viewMatrix, projMatrix, viewport); + this._start = start.xyz; + this._end = end.xyz; + calculateVector(this); + return this; + } + + assign(r) { + this._start.assign(r.start); + this._end.assign(r.end); + this._vector.assign(r.vector); + this._magnitude.assign(r.magnitude); + } + + get start() { return this._start; } + set start(s) { this._start.assign(s); calculateVector(this); } + + get end() { return this._end; } + set end(e) { this._end.assign(e); } + + get vector() { return this._vector; } + + get magnitude() { return this._magnitude; } + + toString() { + return `start: ${this.start.toString()}, end: ${this.end.toString()}`; + } + } + + bg.physics.Ray = Ray; + +})() + +bg.scene = {}; + +(function() { + + let s_componentRegister = {}; + + class Component extends bg.LifeCycle { + static Factory(context,componentData,node,url) { + let Constructor = s_componentRegister[componentData.type]; + if (Constructor) { + let instance = new Constructor(); + node.addComponent(instance); + return instance.deserialize(context,componentData,url); + } + else { + return Promise.resolve(); + } + + } + + constructor() { + super(); + + this._node = null; + + this._drawGizmo = true; + } + + clone() { + bg.log(`WARNING: Component with typeid ${this.typeId} does not implmement the clone() method.`); + return null; + } + + destroy() { + + } + + get node() { return this._node; } + + get typeId() { return this._typeId; } + + get draw3DGizmo() { return this._drawGizmo; } + set draw3DGizmo(d) { this._drawGizmo = d; } + + removedFromNode(node) {} + addedToNode(node) {} + + // Override this to prevent serialize this component + get shouldSerialize() { return true; } + + deserialize(context,sceneData,url) { + return Promise.resolve(this); + } + + // componentData: the current json object corresponding to the parent node + // promises: array of promises. If the component needs to execute asynchronous + // actions, it can push one or more promises into this array + // url: the destination scene url, composed by: + // { + // path: "scene path, using / as separator even on Windows", + // fileName: "scene file name" + // } + serialize(componentData,promises,url) { + componentData.type = this.typeId.split(".").pop(); + } + + // The following functions are implemented in the SceneComponent class, in the C++ API + component(typeId) { return this._node && this._node.component(typeId); } + + get camera() { return this.component("bg.scene.Camera"); } + get chain() { return this.component("bg.scene.Chain"); } + get drawable() { return this.component("bg.scene.Drawable"); } + get inputChainJoint() { return this.component("bg.scene.InputChainJoint"); } + get outputChainJoint() { return this.component("bg.scene.OutputChainJoint"); } + get light() { return this.component("bg.scene.Light"); } + get transform() { return this.component("bg.scene.Transform"); } + } + + bg.scene.Component = Component; + + bg.scene.registerComponent = function(namespace,componentClass,identifier) { + let result = /function (.+)\(/.exec(componentClass.toString()); + if (!result) { + result = /class ([a-zA-Z0-9_]+) /.exec(componentClass.toString()); + } + let funcName = (result && result.length>1) ? result[1] : ""; + + namespace[funcName] = componentClass; + componentClass.prototype._typeId = identifier || funcName; + + + s_componentRegister[funcName] = componentClass; + } + +})(); +(function() { + class SceneObjectLifeCycle extends bg.LifeCycle { + // This class reimplements the bg.app.ContextObject due to the lack + // in JavaScript of multiple ihneritance + + constructor(context) { + super(context); + + this._context = context; + } + + get context() { return this._context; } + set context(c) { this._context = c; } + } + + function updateComponentsArray() { + this._componentsArray = []; + for (let key in this._components) { + this._components[key] && this._componentsArray.push(this._components[key]); + } + } + + class SceneObject extends SceneObjectLifeCycle { + + constructor(context,name="") { + super(context); + + this._name = name; + this._enabled = true; + this._steady = false; + + this._components = {}; + this._componentsArray = []; + } + + toString() { + return " scene object: " + this._name; + } + + // Create a new instance of this node, with a copy of all it's components + cloneComponents() { + let newNode = new bg.scene.Node(this.context,this.name ? `copy of ${this.name}`:""); + newNode.enabled = this.enabled; + this.forEachComponent((comp) => { + newNode.addComponent(comp.clone()); + }); + return newNode; + } + + get name() { return this._name; } + set name(n) { this._name = n; } + + get enabled() { return this._enabled; } + set enabled(e) { this._enabled = e; } + + get steady() { return this._steady; } + set steady(s) { this._steady = s; } + + addComponent(c) { + if (c._node) { + c._node.removeComponent(c); + } + c._node = this; + this._components[c.typeId] = c; + c.addedToNode(this); + updateComponentsArray.apply(this); + } + + // It's possible to remove a component by typeId or by the specific object. + // - typeId: if the scene object contains a component of this type, will be removed + // - specific object: if the scene object contains the specified object, will be removed + removeComponent(findComponent) { + let typeId = ""; + let comp = null; + if (typeof(findComponent)=="string") { + typeId = findComponent + comp = this.component(findComponent); + } + else if (findComponent instanceof bg.scene.Component) { + comp = findComponent; + typeId = findComponent.typeId; + } + + let status = false; + if (this._components[typeId]==comp && comp!=null) { + delete this._components[typeId]; + comp.removedFromNode(this); + status = true; + } + + updateComponentsArray.apply(this); + return status; + } + + component(typeId) { + return this._components[typeId]; + } + + // Most common components + get camera() { return this.component("bg.scene.Camera"); } + get chain() { return this.component("bg.scene.Chain"); } + get drawable() { return this.component("bg.scene.Drawable"); } + get inputJoint() { return this.component("bg.scene.InputJoint"); } + get outputJoint() { return this.component("bg.scene.OutputJoint"); } + get light() { return this.component("bg.scene.Light"); } + get transform() { return this.component("bg.scene.Transform"); } + + forEachComponent(callback) { + this._componentsArray.forEach(callback); + } + + someComponent(callback) { + return this._componentsArray.some(callback); + } + + everyComponent(callback) { + return this._componentsArray.every(callback); + } + + destroy() { + this.forEachComponent((comp) => { + comp.removedFromNode(this); + }); + + this._components = {}; + this._componentsArray = []; + } + + init() { + this._componentsArray.forEach((comp) => { + comp.init(); + }); + } + + frame(delta) { + this._componentsArray.forEach((comp) => { + if (!comp._initialized_) { + comp.init(); + comp._initialized_ = true; + } + comp.frame(delta); + }); + } + + displayGizmo(pipeline,matrixState) { + this._componentsArray.forEach((comp) => { + if (comp.draw3DGizmo) comp.displayGizmo(pipeline,matrixState); + }); + } + + /////// Direct rendering methods: will be deprecated soon + willDisplay(pipeline,matrixState) { + this._componentsArray.forEach((comp) => { + comp.willDisplay(pipeline,matrixState); + }); + } + + display(pipeline,matrixState,forceDraw=false) { + this._componentsArray.forEach((comp) => { + comp.display(pipeline,matrixState,forceDraw); + }); + } + + + didDisplay(pipeline,matrixState) { + this._componentsArray.forEach((comp) => { + comp.didDisplay(pipeline,matrixState); + }); + } + //////// End direct rendering methods + + + ////// Render queue methods + willUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + this._componentsArray.forEach((comp) => { + comp.willUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack); + }); + } + + draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + this._componentsArray.forEach((comp) => { + comp.draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack); + }); + } + + didUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + this._componentsArray.forEach((comp) => { + comp.didUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack); + }); + } + ////// End render queue methods + + + reshape(pipeline,matrixState,width,height) { + this._componentsArray.forEach((comp) => { + comp.reshape(width,height); + }); + } + + keyDown(evt) { + this._componentsArray.forEach((comp) => { + comp.keyDown(evt); + }); + } + + keyUp(evt) { + this._componentsArray.forEach((comp) => { + comp.keyUp(evt); + }); + } + + mouseUp(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseUp(evt); + }); + } + + mouseDown(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseDown(evt); + }); + } + + mouseMove(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseMove(evt); + }); + } + + mouseOut(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseOut(evt); + }); + } + + mouseDrag(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseDrag(evt); + }); + } + + mouseWheel(evt) { + this._componentsArray.forEach((comp) => { + comp.mouseWheel(evt); + }); + } + + touchStart(evt) { + this._componentsArray.forEach((comp) => { + comp.touchStart(evt); + }); + } + + touchMove(evt) { + this._componentsArray.forEach((comp) => { + comp.touchMove(evt); + }); + } + + touchEnd(evt) { + this._componentsArray.forEach((comp) => { + comp.touchEnd(evt); + }); + } + } + + bg.scene.SceneObject = SceneObject; + +})(); +(function() { + + function isNodeAncient(node, ancient) { + if (!node || !ancient) { + return false; + } + else if (node._parent==ancient) { + return true; + } + else { + return isNodeAncient(node._parent, ancient); + } + } + + function cleanupNode(sceneNode) { + let components = []; + let children = []; + sceneNode.forEachComponent((c) => components.push(c)); + sceneNode.children.forEach((child) => children.push(child)); + components.forEach((c) => sceneNode.removeComponent(c)); + children.forEach((child) => { + sceneNode.removeChild(child); + cleanupNode(child); + }); + } + + class Node extends bg.scene.SceneObject { + // IMPORTANT: call this function to clean all the resources of + // a node if you don't want to use it anymore. + static CleanupNode(node) { + cleanupNode(node); + } + + constructor(context,name="") { + super(context,name); + + this._children = []; + this._parent = null; + } + + toString() { + return super.toString() + " (" + this._children.length + " children and " + Object.keys(this._components).length + " components)"; + } + + addChild(child) { + if (child && !this.isAncientOf(child) && child!=this) { + if (child.parent) { + child.parent.removeChild(child); + } + this._children.push(child); + child._parent = this; + } + } + + removeChild(node) { + let index = this._children.indexOf(node); + if (index>=0) { + this._children.splice(index,1); + } + } + + get children() { return this._children; } + + get parent() { return this._parent; } + + get sceneRoot() { + if (this._parent) { + return this._parent.sceneRoot(); + } + return this; + } + + haveChild(node) { + return this._children.indexOf(node)!=-1; + } + + isAncientOf(node) { + isNodeAncient(this,node); + } + + accept(nodeVisitor) { + if (!nodeVisitor.ignoreDisabled || this.enabled) { + nodeVisitor.visit(this); + this._children.forEach((child) => { + child.accept(nodeVisitor); + }); + nodeVisitor.didVisit(this); + } + } + + acceptReverse(nodeVisitor) { + if (!nodeVisitor.ignoreDisabled || this.enabled) { + if (this._parent) { + this._parent.acceptReverse(nodeVisitor); + } + nodeVisitor.visit(this); + } + } + + destroy() { + super.destroy(); + this._children.forEach((child) => { + child.destroy(); + }); + this._children = []; + } + + } + + bg.scene.Node = Node; + + class NodeVisitor { + constructor() { + this._ignoreDisabled = true; + } + + get ignoreDisabled() { return this._ignoreDisabled; } + + set ignoreDisabled(v) { this._ignoreDisabled = v; } + + visit(node) {} + didVisit(node) {} + } + + bg.scene.NodeVisitor = NodeVisitor; +})(); +(function() { + + class ProjectionStrategy extends bg.MatrixStrategy { + static Factory(jsonData) { + let result = null; + if (jsonData) { + if (jsonData.type=="PerspectiveProjectionMethod") { + result = new PerspectiveProjectionStrategy(); + } + else if (jsonData.type=="OpticalProjectionMethod") { + result = new OpticalProjectionStrategy(); + } + else if (jsonData.type=="OrthographicProjectionStrategy") { + result = new OrthographicProjectionStrategy(); + } + + if (result) { + result.deserialize(jsonData); + } + } + return result; + } + + constructor(target) { + super(target); + + this._near = 0.1; + this._far = 100.0; + this._viewport = new bg.Viewport(0,0,512,512); + } + + clone() { console.log("WARNING: ProjectionStrategy::clone() method not implemented by child class."); } + + get near() { return this._near; } + set near(n) { this._near = n; } + get far() { return this._far; } + set far(f) { this._far = f; } + get viewport() { return this._viewport; } + set viewport(vp) { this._viewport = vp; } + + get fov() { return 0; } + + serialize(jsonData) { + jsonData.near = this.near; + jsonData.far = this.far; + } + } + + bg.scene.ProjectionStrategy = ProjectionStrategy; + + class PerspectiveProjectionStrategy extends ProjectionStrategy { + constructor(target) { + super(target); + this._fov = 60; + } + + clone() { + let result = new PerspectiveProjectionStrategy(); + result.near = this.near; + result.far = this.far; + result.viewport = this.viewport; + result.fov = this.fov; + return result; + } + + get fov() { return this._fov; } + set fov(f) { this._fov = f; } + + apply() { + if (this.target) { + this.target.perspective(this.fov, this.viewport.aspectRatio, this.near, this.far); + } + } + + deserialize(jsonData) { + this.near = jsonData.near; + this.far = jsonData.far; + this.fov = jsonData.fov; + } + + serialize(jsonData) { + jsonData.type = "PerspectiveProjectionMethod"; + jsonData.fov = this.fov; + super.serialize(jsonData); + } + } + + bg.scene.PerspectiveProjectionStrategy = PerspectiveProjectionStrategy; + + class OpticalProjectionStrategy extends ProjectionStrategy { + constructor(target) { + super(target); + this._focalLength = 50; + this._frameSize = 35; + } + + clone() { + let result = new OpticalProjectionStrategy(); + result.near = this.near; + result.far = this.far; + result.viewport = this.viewport; + result.focalLength = this.focalLength; + result.frameSize = this.frameSize; + return result; + } + + get focalLength() { return this._focalLength; } + set focalLength(fl) { this._focalLength = fl; } + get frameSize() { return this._frameSize; } + set frameSize(s) { this._frameSize = s; } + + get fov() { + return 2 * bg.Math.atan(this.frameSize / (this.focalLength / 2)); + } + + apply() { + if (this.target) { + let fov = this.fov; + fov = bg.Math.radiansToDegrees(fov); + this.target.perspective(fov, this.viewport.aspectRatio, this.near, this.far); + } + } + + deserialize(jsonData) { + this.frameSize = jsonData.frameSize; + this.focalLength = jsonData.focalLength; + this.near = jsonData.near; + this.far = jsonData.far; + } + + serialize(jsonData) { + jsonData.type = "OpticalProjectionMethod"; + jsonData.frameSize = this.frameSize; + jsonData.focalLength = this.focalLength; + super.serialize(jsonData); + } + } + + bg.scene.OpticalProjectionStrategy = OpticalProjectionStrategy; + + class OrthographicProjectionStrategy extends ProjectionStrategy { + constructor(target) { + super(target); + this._viewWidth = 100; + } + + clone() { + let result = new OrthographicProjectionStrategy(); + result.near = this.near; + result.far = this.far; + result.viewWidth = this.viewWidth; + return result; + } + + get viewWidth() { return this._viewWidth; } + set viewWidth(w) { this._viewWidth = w; } + + apply() { + if (this.target) { + let ratio = this.viewport.aspectRatio; + let height = this.viewWidth / ratio; + let x = this.viewWidth / 2; + let y = height / 2; + this.target.ortho(-x, x, -y, y, -this._far, this._far); + } + } + + deserialize(jsonData) { + this.viewWidth = jsonData.viewWidth; + this.near = jsonData.near; + this.far = jsonData.far; + } + + serialize(jsonData) { + jsonData.type = "OrthographicProjectionStrategy"; + jsonData.viewWidth = this.viewWidth; + jsonData.near = this.near; + jsonData.far = this.far; + super.serialize(jsonData); + } + } + + bg.scene.OrthographicProjectionStrategy = OrthographicProjectionStrategy; + + function buildPlist(context,vertex,color) { + let plist = new bg.base.PolyList(context); + let normal = []; + let texCoord0 = []; + let index = []; + let currentIndex = 0; + for (let i=0; i<vertex.length; i+=3) { + normal.push(0); normal.push(0); normal.push(1); + texCoord0.push(0); texCoord0.push(0); + index.push(currentIndex++); + } + plist.vertex = vertex; + plist.normal = normal; + plist.texCoord0 = texCoord0; + plist.color = color; + plist.index = index; + plist.drawMode = bg.base.DrawMode.LINES; + plist.build(); + return plist; + } + + function getGizmo() { + if (!this._gizmo) { + let alpha = this.projectionStrategy ? this.projectionStrategy.fov : bg.Math.PI_4; + alpha *= 0.5; + let d = this.focus; + let aspectRatio = bg.app.MainLoop.singleton.canvas.width / bg.app.MainLoop.singleton.canvas.height; + let sx = bg.Math.sin(alpha) * d; + let sy = (bg.Math.sin(alpha) * d) / aspectRatio; + let vertex = [ + 0, 0, 0, sx, sy, -d, 0, 0, 0, -sx, sy, -d, 0, 0, 0, sx,-sy, -d, 0, 0, 0, -sx,-sy, -d, + + sx,sy,-d, -sx,sy,-d, -sx,sy,-d, -sx,-sy,-d, -sx,-sy,-d, sx,-sy,-d, sx,-sy,-d, sx,sy,-d + ]; + let color = [ + 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, + 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1, 1,0,0,1 + ]; + this._gizmo = buildPlist(this.node.context,vertex,color); + } + return this._gizmo; + } + + function clearMain(node) { + if (node.camera) { + node.camera.isMain = false; + } + node.children.forEach((child) => clearMain(child)); + } + + class Camera extends bg.scene.Component { + + static SetAsMainCamera(mainCamera,sceneRoot) { + clearMain(sceneRoot); + if (mainCamera instanceof Camera) { + mainCamera.isMain = true; + } + else if (mainCamera instanceof bg.scene.Node && mainCamera.camera) { + mainCamera.camera.isMain = true; + } + else { + throw new Error("Error setting main camera: invalid camera node."); + } + } + + constructor() { + super(); + + this._projection = bg.Matrix4.Perspective(60,1,0.1,100.0); + this._viewport = new bg.Viewport(0,0,512,512); + + this._visitor = new bg.scene.TransformVisitor(); + this._rebuildTransform = true; + + this._position = new bg.Vector3(0); + this._rebuildPosition = true; + + this._clearBuffers = bg.base.ClearBuffers.COLOR_DEPTH; + + this._focus = 5; // default 5 meters + + this._projectionStrategy = null; + + this._isMain = false; + } + + clone() { + let newCamera = new bg.scene.Camera(); + newCamera._projection = new bg.Matrix4(this._projection); + newCamera._viewport = new bg.Matrix4(this._viewport); + newCamera._projectionStrategy = this._projectionStrategy ? this._projectionStrategy.clone() : null; + return newCamera; + } + + get projection() { return this._projection; } + set projection(p) { + if (!this._projectionStrategy) { + this._projection = p; + } + } + + get viewport() { return this._viewport; } + set viewport(v) { + this._viewport = v; + if (this._projectionStrategy) { + this._projectionStrategy.viewport = v; + this._projectionStrategy.apply(); + } + } + + get focus() { return this._focus; } + set focus(f) { this._focus = f; this.recalculateGizmo() } + + get isMain() { return this._isMain; } + set isMain(m) { + this._isMain = m; + } + + get projectionStrategy() { return this._projectionStrategy; } + set projectionStrategy(ps) { + this._projectionStrategy = ps; + if (this._projectionStrategy) { + this._projectionStrategy.target = this._projection; + } + this.recalculateGizmo() + } + + get clearBuffers() { return this._clearBuffers; } + set clearBuffers(c) { this._clearBuffers = c; } + + get modelMatrix() { + if (this._rebuildTransform && this.node) { + this._visitor.matrix.identity(); + this.node.acceptReverse(this._visitor); + this._rebuildTransform = false; + } + return this._visitor.matrix; + } + + get viewMatrix() { + if (!this._viewMatrix || this._rebuildTransform) { + this._viewMatrix = new bg.Matrix4(this.modelMatrix); + this._viewMatrix.invert(); + } + return this._viewMatrix; + } + + get worldPosition() { + if (this._rebuildPosition) { + this._position = this.modelMatrix.multVector(new bg.Vector3(0)).xyz + this._rebuildPosition = false; + this._rebuildTransform = true; + } + return this._position; + } + + recalculateGizmo() { + if (this._gizmo) { + this._gizmo.destroy(); + this._gizmo = null; + } + } + + frame(delta) { + this._rebuildPosition = true; + this._rebuildTransform = true; + } + + displayGizmo(pipeline,matrixState) { + if (this.isMain) return; // Do not render the main camera plist + let plist = getGizmo.apply(this); + if (plist) { + pipeline.draw(plist); + } + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + componentData.isMain = this.isMain; + if (this.projectionStrategy) { + let projMethod = {}; + componentData.projectionMethod = projMethod; + this.projectionStrategy.serialize(projMethod); + } + } + + deserialize(context,sceneData,url) { + sceneData.isMain = sceneData.isMain || false; + this.projectionStrategy = ProjectionStrategy.Factory(sceneData.projectionMethod || {}); + } + } + + bg.scene.registerComponent(bg.scene,Camera,"bg.scene.Camera"); +})(); +(function() { + + let GizmoType = { + IN_JOINT: 0, + OUT_JOINT: 1 + } + + + function buildPlist(context,vertex,color) { + let plist = new bg.base.PolyList(context); + let normal = []; + let texCoord0 = []; + let index = []; + let currentIndex = 0; + for (let i=0; i<vertex.length; i+=3) { + normal.push(0); normal.push(0); normal.push(1); + texCoord0.push(0); texCoord0.push(0); + index.push(currentIndex++); + } + plist.vertex = vertex; + plist.normal = normal; + plist.texCoord0 = texCoord0; + plist.color = color; + plist.index = index; + plist.drawMode = bg.base.DrawMode.LINES; + plist.build(); + return plist; + } + + + function getGizmo(type) { + if (!this._gizmo) { + let s = 0.5; + let vertex = [ + s, 0, 0, -s, 0, 0, + 0, s, 0, 0, -s, 0, + 0, 0, s, 0, 0, -s + ]; + let color = [ + 1,0,0,1, 1,0,0,1, 0,1,0,1, 0,1,0,1, 0,0,1,1, 0,0,1,1 + ]; + this._gizmo = buildPlist(this.node.context,vertex,color); + } + return this._gizmo; + } + + function updateJointTransforms() { + if (this.node) { + let matrix = bg.Matrix4.Identity(); + this.node.children.forEach((child, index) => { + let trx = child.component("bg.scene.Transform"); + let inJoint = child.component("bg.scene.InputChainJoint"); + let outJoint = child.component("bg.scene.OutputChainJoint"); + + if (index>0 && inJoint) { + inJoint.joint.applyTransform(matrix); + } + else { + matrix.identity(); + } + + if (trx) { + trx.matrix.assign(matrix); + } + + if (outJoint) { + outJoint.joint.applyTransform(matrix); + } + }); + } + } + + class Chain extends bg.scene.Component { + constructor() { + super(); + } + + clone() { + return new bg.scene.Chain(); + } + + + ////// Direct rendering functions: will be deprecated soon + willDisplay(pipeline,matrixState,projectionMatrixStack) { + updateJointTransforms.apply(this); + } + + ////// Render queue functions + willUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + updateJointTransforms.apply(this); + } + } + + bg.scene.registerComponent(bg.scene,Chain,"bg.scene.Chain"); + + class ChainJoint extends bg.scene.Component { + constructor() { + super(); + + this._joint = new bg.physics.LinkJoint(); + } + + get joint() { return this._joint; } + set joint(j) { this._joint = j; } + + deserialize(context,sceneData,url) { + if (sceneData.joint) { + this.joint = bg.physics.Joint.Factory(sceneData.joint); + } + } + } + + bg.scene.ChainJoint = ChainJoint; + + class InputChainJoint extends ChainJoint { + constructor(joint) { + super(); + if (joint) { + this.joint = joint; + } + else { + this.joint.transformOrder = bg.physics.LinkTransformOrder.ROTATE_TRANSLATE; + } + } + + clone() { + let newJoint = new bg.scene.InputChainJoint(); + newJoint.joint.assign(this.joint); + return newJoint; + } + + displayGizmo(pipeline,matrixState) { + let plist = getGizmo.apply(this,[0]); + if (plist) { + matrixState.modelMatrixStack.push(); + let mat = new bg.Matrix4(this.joint.transform); + mat.invert(); + matrixState.modelMatrixStack.mult(mat); + pipeline.draw(plist); + matrixState.modelMatrixStack.pop(); + } + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + componentData.joint = {}; + this.joint.serialize(componentData.joint); + } + } + + bg.scene.registerComponent(bg.scene,InputChainJoint,"bg.scene.InputChainJoint"); + + + class OutputChainJoint extends ChainJoint { + constructor(joint) { + super(); + if (joint) { + this.joint = joint; + } + else { + this.joint.transformOrder = bg.physics.LinkTransformOrder.TRANSLATE_ROTATE; + } + } + + clone() { + let newJoint = new bg.scene.OutputChainJoint(); + newJoint.joint.assign(this.joint); + return newJoint; + } + + displayGizmo(pipeline,matrixState) { + let plist = getGizmo.apply(this,[1]); + if (plist) { + matrixState.modelMatrixStack.push(); + let mat = new bg.Matrix4(this.joint.transform); + matrixState.modelMatrixStack.mult(mat); + pipeline.draw(plist); + matrixState.modelMatrixStack.pop(); + } + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + componentData.joint = {}; + this.joint.serialize(componentData.joint); + } + } + + bg.scene.registerComponent(bg.scene,OutputChainJoint,"bg.scene.OutputChainJoint"); + +})(); +(function() { + bg.scene.CubemapImage = { + POSITIVE_X: 0, + NEGATIVE_X: 1, + POSITIVE_Y: 2, + NEGATIVE_Y: 3, + POSITIVE_Z: 4, + NEGATIVE_Z: 5, + }; + + let g_currentCubemap = null; + + function copyCubemapImage(componentData,cubemapImage,dstPath) { + let path = require("path"); + let src = bg.base.Writer.StandarizePath(this.getImageUrl(cubemapImage)); + let file = src.split('/').pop(); + let dst = bg.base.Writer.StandarizePath(path.join(dstPath,file)); + switch (cubemapImage) { + case bg.scene.CubemapImage.POSITIVE_X: + componentData.positiveX = file; + break; + case bg.scene.CubemapImage.NEGATIVE_X: + componentData.negativeX = file; + break; + case bg.scene.CubemapImage.POSITIVE_Y: + componentData.positiveY = file; + break; + case bg.scene.CubemapImage.NEGATIVE_Y: + componentData.negativeY = file; + break; + case bg.scene.CubemapImage.POSITIVE_Z: + componentData.positiveZ = file; + break; + case bg.scene.CubemapImage.NEGATIVE_Z: + componentData.negativeZ = file; + break; + } + return bg.base.Writer.CopyFile(src,dst); + } + + class Cubemap extends bg.scene.Component { + static Current(context) { + if (!g_currentCubemap) { + g_currentCubemap = bg.base.TextureCache.WhiteCubemap(context); + } + return g_currentCubemap; + } + + constructor() { + super(); + this._images = [null, null, null, null, null, null]; + this._texture = null; + } + + setImageUrl(imgCode,texture) { + this._images[imgCode] = texture; + } + + getImageUrl(imgCode) { + return this._images[imgCode]; + } + + get texture() { + return this._texture; + } + + loadCubemap(context) { + context = context || this.node && this.node.context; + return new Promise((resolve,reject) => { + bg.utils.Resource.LoadMultiple(this._images) + .then((result) => { + this._texture = new bg.base.Texture(context); + this._texture.target = bg.base.TextureTarget.CUBE_MAP; + this._texture.create(); + this._texture.bind(); + + this._texture.setCubemap( + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_X)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_X)], + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_Y)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_Y)], + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_Z)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_Z)] + ); + + g_currentCubemap = this._texture; + bg.emitImageLoadEvent(result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_X)]); + resolve(this); + }) + + .catch((err) => { + reject(err); + }); + }); + } + + clone() { + let cubemap = new Cubemap(); + for (let code in this._images) { + cubemap._images[code] = this._images[code]; + }; + cubemap._texture = this._texture; + return cubemap; + } + + deserialize(context,sceneData,url) { + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_X, + bg.utils.Resource.JoinUrl(url,sceneData["positiveX"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_X, + bg.utils.Resource.JoinUrl(url,sceneData["negativeX"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_Y, + bg.utils.Resource.JoinUrl(url,sceneData["positiveY"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_Y, + bg.utils.Resource.JoinUrl(url,sceneData["negativeY"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_Z, + bg.utils.Resource.JoinUrl(url,sceneData["positiveZ"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_Z, + bg.utils.Resource.JoinUrl(url,sceneData["negativeZ"]) + ); + return this.loadCubemap(context); + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + if (!bg.isElectronApp) return; + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_X,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_X,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_Y,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_Y,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_Z,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_Z,url.path])); + } + } + + bg.scene.registerComponent(bg.scene,Cubemap,"bg.scene.Cubemap"); +})(); +(function() { + + function escapePathCharacters(name) { + if (!name) { + return bg.utils.generateUUID(); + } + else { + var illegalRe = /[\/\?<>\\:\*\|":\[\]\(\)\{\}]/g; + var controlRe = /[\x00-\x1f\x80-\x9f]/g; + var reservedRe = /^\.+$/; + var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; + var windowsTrailingRe = /[\. ]+$/; + + function sanitize(input, replacement) { + var sanitized = input + .replace(illegalRe, replacement) + .replace(controlRe, replacement) + .replace(reservedRe, replacement) + .replace(windowsReservedRe, replacement) + .replace(windowsTrailingRe, replacement); + return sanitized; + } + + return sanitize(name,'-'); + } + } + class Drawable extends bg.scene.Component { + + // It creates a copy of the node with all its components, except the drawable + // component, that will be an instance (share the same polyList instances) + static InstanceNode(node) { + let newNode = new bg.scene.Node(node.context,node.name ? `copy of ${node.name}`:""); + newNode.enabled = node.enabled; + node.forEachComponent((comp) => { + let newComp = null; + if (comp instanceof Drawable) { + newComp = comp.instance(); + } + else { + newComp = comp.clone(); + } + newNode.addComponent(newComp); + }); + return newNode; + } + + constructor(name="") { + super(); + + this._name = name; + this._items = []; // { polyList:p, material:m, transform:t } + } + + get name() { return this._name; } + set name(n) { this._name = n; } + + clone(newName) { + let newInstance = new bg.scene.Drawable(); + newInstance.name = newName || `copy of ${this.name}`; + this.forEach((plist,material,trx) => { + newInstance.addPolyList(plist.clone(), material.clone(), trx ? new bg.Matrix4(trx):null); + }); + return newInstance; + } + + destroy() { + this.forEach((plist) => { + plist.destroy(); + }); + this._name = ""; + this._items = []; + } + + // It works as clone(), but it doesn't duplicate the polyList + instance(newName) { + let newInstance = new bg.scene.Drawable(); + newInstance.name = newName || `copy of ${this.name}`; + this.forEach((plist,material,trx) => { + newInstance.addPolyList(plist, material.clone(), trx ? new bg.Matrix4(trx):null); + }); + return newInstance; + } + + addPolyList(plist,mat,trx=null) { + if (plist && this.indexOf(plist)==-1) { + mat = mat || new bg.base.Material(); + + this._items.push({ + polyList:plist, + material:mat, + transform:trx + }); + return true; + } + return false; + } + + getExternalResources(resources = []) { + this.forEach((plist,material) => { + material.getExternalResources(resources) + }); + return resources; + } + + // Apply a material definition object to the polyLists + applyMaterialDefinition(materialDefinitions,resourcesUrl) { + let promises = []; + this.forEach((plist,mat) => { + let definition = materialDefinitions[plist.name]; + if (definition) { + promises.push(new Promise((resolve,reject) => { + let modifier = new bg.base.MaterialModifier(definition); + mat.applyModifier(plist.context,modifier,resourcesUrl); + resolve(); + })); + } + }); + return Promise.all(promises); + } + + removePolyList(plist) { + let index = -1; + this._items.some((item, i) => { + if (plist==item.polyList) { + index = i; + } + }) + if (index>=0) { + this._items.splice(index,1); + } + } + + indexOf(plist) { + let index = -1; + this._items.some((item,i) => { + if (item.polyList==plist) { + index = i; + return true; + } + }); + return index; + } + + replacePolyList(index,plist) { + if (index>=0 && index<this._items.length) { + this._items[index].polyList = plist; + return true; + } + return false; + } + + replaceMaterial(index,mat) { + if (index>=0 && index<this._items.length) { + this._items[index].material = mat; + return true; + } + return false; + } + + replaceTransform(index,trx) { + if (index>=0 && index<this._items.length) { + this._items[index].transform = trx; + return true; + } + return false; + } + + getPolyList(index) { + if (index>=0 && index<this._items.length) { + return this._items[index].polyList; + } + return false; + } + + getMaterial(index) { + if (index>=0 && index<this._items.length) { + return this._items[index].material; + } + return false; + } + + getTransform(index) { + if (index>=0 && index<this._items.length) { + return this._items[index].transform; + } + return false; + } + + + forEach(callback) { + for (let elem of this._items) { + callback(elem.polyList,elem.material,elem.transform); + } + } + + some(callback) { + for (let elem of this._items) { + if (callback(elem.polyList,elem.material,elem.transform)) { + return true; + } + } + return false; + } + + every(callback) { + for (let elem of this._items) { + if (!callback(elem.polyList,elem.material,elem.transform)) { + return false; + } + } + return true; + } + + ////// Direct rendering method: will be deprecated soon + display(pipeline,matrixState,forceDraw=false) { + if (!pipeline.effect) { + throw new Error("Could not draw component: invalid effect found."); + } + + let isShadowMap = pipeline.effect instanceof bg.base.ShadowMapEffect; + + if (!this.node.enabled) { + return; + } + else { + this.forEach((plist,mat,trx) => { + if ((!isShadowMap && plist.visible) || (isShadowMap && plist.visibleToShadows) || forceDraw) { + let currMaterial = pipeline.effect.material; + if (trx) { + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack.mult(trx); + } + + if (pipeline.shouldDraw(mat)) { + pipeline.effect.material = mat; + pipeline.draw(plist); + } + + if (trx) { + matrixState.modelMatrixStack.pop(); + } + pipeline.effect.material = currMaterial; + } + }); + } + } + + //// Render queue method + draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + if (!this.node.enabled) { + return; + } + + this.forEach((plist,mat,trx) => { + if (!plist.visible) { + return; + } + if (trx) { + modelMatrixStack.push(); + modelMatrixStack.mult(trx); + } + + if (mat.isTransparent) { + renderQueue.renderTransparent(plist,mat,modelMatrixStack.matrix,viewMatrixStack.matrix); + } + else { + renderQueue.renderOpaque(plist,mat,modelMatrixStack.matrix,viewMatrixStack.matrix); + } + + if (trx) { + modelMatrixStack.pop(trx); + } + }); + } + + setGroupVisible(groupName,visibility=true) { + this.forEach((plist) => { + if (plist.groupName==groupName) { + plist.visible = visibility; + } + }); + } + + hideGroup(groupName) { this.setGroupVisible(groupName,false); } + + showGroup(groupName) { this.setGroupVisible(groupName,true); } + + setVisibleByName(name,visibility=true) { + this.some((plist) => { + if (plist.name==name) { + plist.visible = visibility; + return true; + } + }); + } + + showByName(name) { + this.setVisibleByName(name,true); + } + + hideByName(name) { + this.setVisibleByName(name,false); + } + + deserialize(context,sceneData,url) { + return new Promise((resolve,reject) => { + let modelUrl = bg.utils.Resource.JoinUrl(url,sceneData.name + '.vwglb'); + bg.base.Loader.Load(context,modelUrl) + .then((node) => { + let drw = node.component("bg.scene.Drawable"); + this._name = sceneData.name; + this._items = drw._items; + resolve(this); + }); + }); + } + + serialize(componentData,promises,url) { + if (!bg.isElectronApp) { + return; + } + super.serialize(componentData,promises,url); + this.name = escapePathCharacters(this.name); + + componentData.name = this.name; + const path = require('path'); + let dst = path.join(url.path,componentData.name + ".vwglb"); + promises.push(new Promise((resolve,reject) => { + bg.base.Writer.Write(dst,this.node) + .then(() => resolve()) + .catch((err) => reject(err)); + })); + } + } + + bg.scene.registerComponent(bg.scene,Drawable,"bg.scene.Drawable"); + +})(); +(function() { + + let s_lightRegister = []; + + function registerLight(l) { + s_lightRegister.push(l); + } + + function unregisterLight(l) { + let i = s_lightRegister.indexOf(l); + if (i!=-1) { + s_lightRegister.splice(i,1); + } + } + + function buildPlist(context,vertex,color) { + let plist = new bg.base.PolyList(context); + let normal = []; + let texCoord0 = []; + let index = []; + let currentIndex = 0; + for (let i=0; i<vertex.length; i+=3) { + normal.push(0); normal.push(0); normal.push(1); + texCoord0.push(0); texCoord0.push(0); + index.push(currentIndex++); + } + plist.vertex = vertex; + plist.normal = normal; + plist.texCoord0 = texCoord0; + plist.color = color; + plist.index = index; + plist.drawMode = bg.base.DrawMode.LINES; + plist.build(); + return plist; + } + + function getDirectionalGizmo(conext) { + if (!this._directionalGizmo) { + let context = this.node.context; + let vertex = [ + 0,0,0, 0,0,-1, + 0,0,-1, 0,0.1,-0.9, + 0,0,-1, 0,-0.1,-0.9, + ]; + let color = [ + 1,1,1,1, 1,1,0,1, + 1,1,0,1, 1,1,0,1, + 1,1,0,1, 1,1,0,1 + ]; + this._directionalGizmo = buildPlist(context,vertex,color); + } + return this._directionalGizmo; + } + + function getSpotGizmo() { + let context = this.node.context; + let distance = 5; + let alpha = bg.Math.degreesToRadians(this.light.spotCutoff / 2); + let salpha = bg.Math.sin(alpha) * distance; + let calpha = bg.Math.cos(alpha) * distance; + + let rx2 = bg.Math.cos(bg.Math.PI_8) * salpha; + let rx1 = bg.Math.cos(bg.Math.PI_4) * salpha; + let rx0 = bg.Math.cos(bg.Math.PI_4 + bg.Math.PI_8) * salpha; + + let ry2 = bg.Math.sin(bg.Math.PI_8) * salpha; + let ry1 = bg.Math.sin(bg.Math.PI_4) * salpha; + let ry0 = bg.Math.sin(bg.Math.PI_4 + bg.Math.PI_8) * salpha; + + let vertex = [ + 0,0,0, 0,salpha,-calpha, + 0,0,0, 0,-salpha,-calpha, + 0,0,0, salpha,0,-calpha, + 0,0,0, -salpha,0,-calpha, + + 0,salpha,-calpha, rx0,ry0,-calpha, rx0,ry0,-calpha, rx1,ry1,-calpha, rx1,ry1,-calpha, rx2,ry2,-calpha, rx2,ry2,-calpha, salpha,0,-calpha, + + salpha,0,-calpha, rx2,-ry2,-calpha, rx2,-ry2,-calpha, rx1,-ry1,-calpha, rx1,-ry1,-calpha, rx0,-ry0,-calpha, rx0,-ry0,-calpha, 0,-salpha,-calpha, + 0,-salpha,-calpha, -rx0,-ry0,-calpha, -rx0,-ry0,-calpha, -rx1,-ry1,-calpha, -rx1,-ry1,-calpha, -rx2,-ry2,-calpha, -rx2,-ry2,-calpha, -salpha,0,-calpha, + + -salpha,0,-calpha, -rx2,ry2,-calpha, -rx2,ry2,-calpha, -rx1,ry1,-calpha, -rx1, ry1,-calpha, -rx0,ry0,-calpha, -rx0,ry0,-calpha, 0,salpha,-calpha + ]; + let color = [ + 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, + + 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, + 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, + + 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, + 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1, 1,1,0,1 + ]; + + if (!this._spotGizmo) { + this._spotGizmo = buildPlist(context,vertex,color); + } + else { + this._spotGizmo.updateBuffer(bg.base.BufferType.VERTEX,vertex); + this._spotGizmo.updateBuffer(bg.base.BufferType.COLOR,color); + } + return this._spotGizmo; + } + + function getPointGizmo() { + if (!this._pointGizmo) { + let context = this.node.context; + let r = 0.5; + let s = bg.Math.sin(bg.Math.PI_4) * r; + let vertex = [ + // x-y plane + 0,0,0, 0,r,0, 0,0,0, 0,-r,0, 0,0,0, -r,0,0, 0,0,0, r,0,0, + 0,0,0, s,s,0, 0,0,0, s,-s,0, 0,0,0, -s,s,0, 0,0,0, -s,-s,0, + + // z, -z + 0,0,0, 0,0,r, 0,0,0, 0,0,-r, + 0,0,0, 0,s,s, 0,0,0, 0,-s,s, 0,0,0, 0,-s,-s, 0,0,0, 0,s,-s, + 0,0,0, s,0,s, 0,0,0, -s,0,s, 0,0,0, -s,0,-s, 0,0,0, s,0,-s + ]; + let color = [ + 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, + 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1, 1,1,1,1, 1,1,0,1 + ]; + this._pointGizmo = buildPlist(context,vertex,color); + } + return this._pointGizmo; + } + + function getGizmo() { + switch (this._light && this._light.type) { + case bg.base.LightType.DIRECTIONAL: + return getDirectionalGizmo.apply(this); + case bg.base.LightType.SPOT: + return getSpotGizmo.apply(this); + case bg.base.LightType.POINT: + return getPointGizmo.apply(this); + } + return null; + } + + class Light extends bg.scene.Component { + // The active lights are the lights that are attached to a node + // in the scene. + static GetActiveLights() { + return s_lightRegister; + } + + constructor(light = null) { + super(); + this._light = light; + this._visitor = new bg.scene.TransformVisitor(); + this._rebuildTransform = true; + } + + clone() { + let newLight = new bg.scene.Light(); + newLight.light = this.light.clone(); + return newLight; + } + + get light() { return this._light; } + set light(l) { this._light = l; } + + get transform() { + if (this._rebuildTransform && this.node) { + this._visitor.matrix.identity(); + this.node.acceptReverse(this._visitor); + this._rebuildTransform = false; + } + return this._visitor.matrix; + } + + frame(delta) { + this._rebuildTransform = true; + this.transform; + } + + displayGizmo(pipeline,matrixState) { + let plist = getGizmo.apply(this); + if (plist) { + pipeline.draw(plist); + } + } + + removedFromNode(node) { + unregisterLight(this); + } + + addedToNode(node) { + registerLight(this); + } + + deserialize(context,sceneData,url) { + return new Promise((resolve,reject) => { + this._light = new bg.base.Light(context); + this._light.deserialize(sceneData); + resolve(this); + }); + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + this.light.serialize(componentData); + } + } + + bg.scene.registerComponent(bg.scene,Light,"bg.scene.Light"); +})(); +(function() { + function parseMTL_n(line) { + let res = /newmtl\s+(.*)/.exec(line); + if (res) { + this._jsonData[res[1]] = JSON.parse(JSON.stringify(s_matInit)); + this._currentMat = this._jsonData[res[1]]; + } + } + + function parseMTL_N(line) { + let res = /Ns\s+([\d\.]+)/.exec(line); + if (res) { // Specular + this._currentMat.shininess = Number(res[1]); + } + //else if ( (res=/Ni\s+([\d\.]+)/.exec(line)) ) { + //} + } + + function vectorFromRE(re) { + return [ + Number(re[1]), + Number(re[2]), + Number(re[3]), + re[4] ? Number(re[4]) : 1.0 + ] + } + + function parseMTL_K(line) { + let res = /Kd\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)\s*([\d\.]*)/.exec(line); + if (res) { + // Diffuse + let d = vectorFromRE(res); + this._currentMat.diffuseR = d[0]; + this._currentMat.diffuseG = d[1]; + this._currentMat.diffuseB = d[2]; + this._currentMat.diffuseA = d[3]; + } + else if ( (res = /Ks\s+([\d\.]+)\s+([\d\.]+)\s+([\d\.]+)\s*([\d\.]*)/.exec(line)) ) { + // Specular + let s = vectorFromRE(res); + this._currentMat.specularR = s[0]; + this._currentMat.specularG = s[1]; + this._currentMat.specularB = s[2]; + this._currentMat.specularA = s[3]; + } + } + + function parseMTL_m(line) { + let res = /map_Kd\s+(.*)/.exec(line); + if (res) { + let path = res[1]; + path = path.replace(/\\/g,'/'); + let slashIndex = path.lastIndexOf('/'); + if (slashIndex>=0) { + path = path.substring(slashIndex + 1); + } + this._currentMat.texture = path; + } + } + + let s_matInit = { + diffuseR: 1.0, + diffuseG:1.0, + diffuseB:1.0, + diffuseA:1.0, + + specularR:1.0, + specularG:1.0, + specularB:1.0, + specularA:1.0, + + shininess: 0, + lightEmission: 0, + + refractionAmount: 0, + reflectionAmount: 0, + + textureOffsetX: 0, + textureOffsetY: 0, + textureScaleX: 1, + textureScaleY: 1, + + lightmapOffsetX: 0, + lightmapOffsetY: 0, + lightmapScaleX: 1, + lightmapScaleY: 1, + + normalMapOffsetX: 0, + normalMapOffsetY: 0, + normalMapScaleX: 1, + normalMapScaleY: 1, + + alphaCutoff: 0.5, + castShadows: true, + receiveShadows: true, + + shininessMaskChannel: 0, + shininessMaskInvert: false, + lightEmissionMaskChannel: 0, + lightEmissionMaskInvert: false, + + reflectionMaskChannel: 0, + reflectionMaskInvert: false, + + cullFace: true, + + texture: "", + lightmap: "", + normalMap: "", + shininessMask: "", + lightEmissionMask: "", + reflectionMask: "" + }; + + class MTLParser { + constructor(mtlData) { + this._jsonData = {} + this._currentMat = JSON.parse(JSON.stringify(s_matInit)); + let lines = mtlData.split('\n'); + + lines.forEach((line) => { + // First optimization: parse the first character and string lenght + line = line.trim(); + if (line.length>1 && line[0]!='#') { + // Second optimization: parse by the first character + switch (line[0]) { + case 'n': + parseMTL_n.apply(this,[line]); + break; + case 'N': + parseMTL_N.apply(this,[line]); + break; + case 'm': + parseMTL_m.apply(this,[line]); + break; + case 'd': + break; + case 'T': + break; + case 'K': + parseMTL_K.apply(this,[line]); + break; + case 'i': + break; + case 'o': + break; + } + } + }); + } + + get jsonData() { return this._jsonData; } + } + + function parseM(line) { + // mtllib + let res = /mtllib\s+(.*)/.exec(line); + if (res) { + this._mtlLib = res[1]; + } + } + + function parseG(line) { + // g + let res = /g\s+(.*)/.exec(line); + if (res) { + this._currentPlist.name = res[1]; + } + } + + function parseU(line) { + // usemtl + let res = /usemtl\s+(.*)/.exec(line); + if (res) { + this._currentPlist._matName = res[1]; + if (this._currentPlist.name=="") { + this._currentPlist.name = res[1]; + } + } + } + + function parseS(line) { + // s + let res = /s\s+(.*)/.exec(line); + if (res) { + // TODO: Do something with smoothing groups + } + } + + function addPoint(pointData) { + this._currentPlist.vertex.push(pointData.vertex[0],pointData.vertex[1],pointData.vertex[2]); + if (pointData.normal) { + this._currentPlist.normal.push(pointData.normal[0],pointData.normal[1],pointData.normal[2]); + } + if (pointData.tex) { + this._currentPlist.texCoord0.push(pointData.tex[0],pointData.tex[1]); + } + this._currentPlist.index.push(this._currentPlist.index.length); + } + + function isValid(point) { + return point && point.vertex && point.tex && point.normal; + } + + function addPolygon(polygonData) { + let currentVertex = 0; + let sides = polygonData.length; + if (sides<3) return; + while (currentVertex<sides) { + let i0 = currentVertex; + let i1 = currentVertex + 1; + let i2 = currentVertex + 2; + if (i2==sides) { + i2 = 0; + } + else if (i1==sides) { + i1 = 0; + i2 = 2; + } + + let p0 = polygonData[i0]; + let p1 = polygonData[i1]; + let p2 = polygonData[i2]; + + if (isValid(p0) && isValid(p1) && isValid(p2)) { + addPoint.apply(this,[p0]); + addPoint.apply(this,[p1]); + addPoint.apply(this,[p2]); + } + else { + console.warn("Invalid point data found loading OBJ file"); + } + currentVertex+=3; + } + } + + function parseF(line) { + // f + this._addPlist = true; + let res = /f\s+(.*)/.exec(line); + if (res) { + let params = res[1]; + let vtnRE = /([\d\-]+)\/([\d\-]*)\/([\d\-]*)/g; + if (params.indexOf('/')==-1) { + let vRE = /([\d\-]+)/g; + } + let polygon = []; + while ( (res=vtnRE.exec(params)) ) { + let iV = Number(res[1]); + let iN = res[3] ? Number(res[3]):null; + let iT = res[2] ? Number(res[2]):null; + iV = iV<0 ? this._vertexArray.length + iV : iV - 1; + iN = iN<0 ? this._normalArray.length + iN : (iN===null ? null : iN - 1); + iT = iT<0 ? this._texCoordArray.length + iT : (iT===null ? null : iT - 1) + + let v = this._vertexArray[iV]; + let n = iN!==null ? this._normalArray[iN] : null; + let t = iT!==null ? this._texCoordArray[iT] : null; + polygon.push({ + vertex:v, + normal:n, + tex:t + }); + } + addPolygon.apply(this,[polygon]); + } + } + + function parseO(line) { + // o + let res = /s\s+(.*)/.exec(line); + if (res && this._currentPlist.name=="") { + this._currentPlist.name = res[1]; + } + } + + function checkAddPlist() { + if (this._addPlist) { + if (this._currentPlist) { + this._currentPlist.build(); + this._plistArray.push(this._currentPlist); + } + this._currentPlist = new bg.base.PolyList(this.context); + this._addPlist = false; + } + } + + function parseMTL(mtlData) { + let parser = new MTLParser(mtlData); + return parser.jsonData; + } + + class OBJParser { + constructor(context,url) { + this.context = context; + this.url = url; + + this._plistArray = []; + + this._vertexArray = []; + this._normalArray = []; + this._texCoordArray = []; + + this._mtlLib = ""; + + this._addPlist = true; + } + + loadDrawable(data) { + return new Promise((resolve,reject) => { + let name = this.url.replace(/[\\\/]/ig,'-'); + let drawable = new bg.scene.Drawable(name); + let lines = data.split('\n'); + + let multiLine = ""; + lines.forEach((line) => { + line = line.trim(); + + // This section controls the break line character \ + // to concatenate this line with the next one + if (multiLine) { + line = multiLine + line; + } + if (line[line.length-1]=='\\') { + line = line.substring(0,line.length-1); + multiLine += line; + return; + } + else { + multiLine = ""; + } + + // First optimization: parse the first character and string lenght + if (line.length>1 && line[0]!='#') { + // Second optimization: parse by the first character + switch (line[0]) { + case 'v': + let res = /v\s+([\d\.\-e]+)\s+([\d\.\-e]+)\s+([\d\.\-e]+)/.exec(line); + if (res) { + this._vertexArray.push( + [ Number(res[1]), Number(res[2]), Number(res[3]) ] + ); + } + else if ( (res = /vn\s+([\d\.\-e]+)\s+([\d\.\-e]+)\s+([\d\.\-e]+)/.exec(line)) ) { + this._normalArray.push( + [ Number(res[1]), Number(res[2]), Number(res[3]) ] + ); + } + else if ( (res = /vt\s+([\d\.\-e]+)\s+([\d\.\-e]+)/.exec(line)) ) { + this._texCoordArray.push( + [ Number(res[1]), Number(res[2]) ] + ); + } + else { + console.warn("Error parsing line " + line); + } + break; + case 'm': + checkAddPlist.apply(this); + parseM.apply(this,[line]); + break; + case 'g': + checkAddPlist.apply(this); + parseG.apply(this,[line]); + break; + case 'u': + checkAddPlist.apply(this); + parseU.apply(this,[line]); + break; + case 's': + //checkAddPlist.apply(this); + parseS.apply(this,[line]); + break; + case 'f': + parseF.apply(this,[line]); + break; + case 'o': + checkAddPlist.apply(this); + parseO.apply(this,[line]); + break; + } + } + }); + + if (this._currentPlist && this._addPlist) { + this._currentPlist.build(); + this._plistArray.push(this._currentPlist); + } + + function buildDrawable(plistArray,materials) { + plistArray.forEach((plist) => { + let mat = new bg.base.Material(); + let matData = materials[plist._matName]; + if (matData) { + let url = this.url.substring(0,this.url.lastIndexOf('/') + 1); + bg.base.Material.GetMaterialWithJson(this.context,matData,url) + .then((material) => { + drawable.addPolyList(plist,material); + }) + } + else { + drawable.addPolyList(plist,mat); + } + }); + } + + if (this._mtlLib) { + let locationUrl = this.url.substring(0,this.url.lastIndexOf("/")); + if (locationUrl.length>0 && locationUrl!='/') locationUrl += "/"; + bg.utils.Resource.Load(locationUrl + this._mtlLib) + .then((data) => { + buildDrawable.apply(this,[this._plistArray,parseMTL(data)]); + resolve(drawable); + }) + .catch(() => { + bg.log("Warning: no such material library file for obj model " + this.url); + buildDrawable.apply(this,[this._plistArray,{}]); + resolve(drawable); + }); + } + else { + buildDrawable.apply(this,[this._plistArray,{}]); + resolve(drawable); + } + }); + } + } + + class OBJLoaderPlugin extends bg.base.LoaderPlugin { + acceptType(url,data) { + return bg.utils.Resource.GetExtension(url)=="obj"; + } + + load(context,url,data) { + return new Promise((resolve,reject) => { + if (data) { + try { + let parser = new OBJParser(context,url); + let resultNode = null; + let basePath = url.split("/"); + basePath.pop(); + basePath = basePath.join("/") + '/'; + let matUrl = url.split("."); + matUrl.pop(); + matUrl.push("bg2mat"); + matUrl = matUrl.join("."); + parser.loadDrawable(data) + .then((drawable) => { + let node = new bg.scene.Node(context,drawable.name); + node.addComponent(drawable); + resultNode = node; + return bg.utils.Resource.LoadJson(matUrl); + }) + + .then((matData) => { + let promises = []; + try { + let drw = resultNode.component("bg.scene.Drawable"); + drw.forEach((plist,mat)=> { + let matDef = null; + matData.some((defItem) => { + if (defItem.name==plist.name) { + matDef = defItem; + return true; + } + }); + + if (matDef) { + let p = bg.base.Material.FromMaterialDefinition(context,matDef,basePath); + promises.push(p) + p.then((newMat) => { + mat.assign(newMat); + }); + } + }); + } + catch(err) { + + } + return Promise.all(promises); + }) + + .then(() => { + resolve(resultNode); + }) + + .catch(() => { + // bg2mat file not found + resolve(resultNode) + }) + } + catch(e) { + reject(e); + } + } + else { + reject(new Error("Error loading drawable. Data is null.")); + } + }); + } + } + + bg.base.OBJLoaderPlugin = OBJLoaderPlugin; +})(); +(function() { + + function createCube(context,w,h,d) { + let plist = new bg.base.PolyList(context); + + let x = w/2; + let y = h/2; + let z = d/2; + + plist.vertex = [ + x,-y,-z, -x,-y,-z, -x, y,-z, x, y,-z, // back face + x,-y, z, x,-y,-z, x, y,-z, x, y, z, // right face + -x,-y, z, x,-y, z, x, y, z, -x, y, z, // front face + -x,-y,-z, -x,-y, z, -x, y, z, -x, y,-z, // left face + -x, y, z, x, y, z, x, y,-z, -x, y,-z, // top face + x,-y, z, -x,-y, z, -x,-y,-z, x,-y,-z // bottom face + ]; + + plist.normal = [ + 0, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, // back face + 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // right face + 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // front face + -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // left face + 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // top face + 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, 0 // bottom face + ]; + + plist.texCoord0 = [ + 0,0, 1,0, 1,1, 0,1, + 0,0, 1,0, 1,1, 0,1, + 0,0, 1,0, 1,1, 0,1, + 0,0, 1,0, 1,1, 0,1, + 0,0, 1,0, 1,1, 0,1, + 0,0, 1,0, 1,1, 0,1 + ]; + + plist.index = [ + 0, 1, 2, 2, 3, 0, + 4, 5, 6, 6, 7, 4, + 8, 9,10, 10,11, 8, + 12,13,14, 14,15,12, + 16,17,18, 18,19,16, + 20,21,22, 22,23,20 + ]; + + plist.texCoord1 = bg.tools.UVMap.atlas(plist.vertex,plist.index,0.03); + + plist.build(); + return plist; + } + + function createPlane(context,w,d,plane='y') { + let x = w / 2.0; + let y = d / 2.0; + + let plist = new bg.base.PolyList(context); + + switch (plane.toLowerCase()) { + case 'x': + plist.vertex =[ 0.000000,-x,-y, + 0.000000, x,-y, + 0.000000, x, y, + 0.000000, x, y, + 0.000000,-x, y, + 0.000000,-x,-y]; + + plist.normal = [1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000, + 1.000000,0.000000,0.000000]; + + plist.texCoord0 = [ 0.000000,0.000000, + 1.000000,0.000000, + 1.000000,1.000000, + 1.000000,1.000000, + 0.000000,1.000000, + 0.000000,0.000000]; + + + plist.index = [2,1,0,5,4,3]; + break; + case 'y': + plist.vertex =[ -x,0.000000,-y, + x,0.000000,-y, + x,0.000000, y, + x,0.000000, y, + -x,0.000000, y, + -x,0.000000,-y]; + + plist.normal = [0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000, + 0.000000,1.000000,0.000000]; + + plist.texCoord0 = [ 0.000000,0.000000, + 1.000000,0.000000, + 1.000000,1.000000, + 1.000000,1.000000, + 0.000000,1.000000, + 0.000000,0.000000]; + + + plist.index = [2,1,0,5,4,3]; + break; + case 'z': + plist.vertex =[-x, y,0.000000, + -x,-y,0.000000, + x,-y,0.000000, + x,-y,0.000000, + x, y,0.000000, + -x, y,0.000000]; + + plist.normal = [0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000, + 0.000000,0.000000,1.000000]; + + plist.texCoord0 = [ + 0.000000,1.000000, + 0.000000,0.000000, + 1.000000,0.000000, + 1.000000,0.000000, + 1.000000,1.000000, + 0.000000,1.000000]; + + plist.index = [0,1,2,3,4,5]; + break; + } + + + plist.texCoord1 = [ + 0.00,0.95, + 0.00,0.00, + 0.95,0.00, + 0.95,0.00, + 0.95,0.95, + 0.00,0.95 + ]; + + + + plist.build(); + return plist; + } + + function createSphere(context,radius,slices,stacks) { + let plist = new bg.base.PolyList(context); + + ++slices; + const R = 1/(stacks-1); + const S = 1/(slices-1); + let r, s; + + let vertex = []; + let normal = []; + let texCoord = []; + let index = []; + + for(r = 0; r < stacks; r++) for(s = 0; s < slices; s++) { + const y = bg.Math.sin( -bg.Math.PI_2 + bg.Math.PI * r * R ); + const x = bg.Math.cos(2*bg.Math.PI * s * S) * bg.Math.sin(bg.Math.PI * r * R); + const z = bg.Math.sin(2*bg.Math.PI * s * S) * bg.Math.sin(bg.Math.PI * r * R); + texCoord.push(s * S); texCoord.push(r * R); + normal.push(x,y,z); + vertex.push(x * radius, y * radius, z * radius); + } + + for(r = 0; r < stacks - 1; r++) for(s = 0; s < slices - 1; s++) { + let i1 = r * slices + s; + let i2 = r * slices + (s + 1); + let i3 = (r + 1) * slices + (s + 1); + let i4 = (r + 1) * slices + s; + index.push(i1); index.push(i4); index.push(i3); + index.push(i3); index.push(i2); index.push(i1); + } + + plist.vertex = vertex; + plist.normal = normal; + plist.texCoord0 = texCoord; + + plist.texCoord1 = bg.tools.UVMap.atlas(vertex,index,0.03); + plist.index = index; + + plist.build(); + + return plist; + } + + function createDrawable(plist,name) { + let drawable = new bg.scene.Drawable(name); + drawable.addPolyList(plist); + return drawable; + } + + class PrimitiveFactory { + static CubePolyList(context,w=1,h,d) { + h = h || w; + d = d || w; + return createCube(context,w,h,d); + } + + static PlanePolyList(context,w=1,d,plane='y') { + d = d || w; + return createPlane(context,w,d,plane); + } + + static SpherePolyList(context,r=1,slices=20,stacks) { + stacks = stacks || slices; + return createSphere(context,r,slices,stacks); + } + + static Cube(context,w=1,h,d) { + h = h || w; + d = d || w; + return createDrawable(createCube(context,w,h,d),"Cube"); + } + + static Plane(context,w=1,d,plane='y') { + d = d || w; + return createDrawable(createPlane(context,w,d,plane),"Plane"); + } + + static Sphere(context,r=1,slices=20,stacks) { + stacks = stacks || slices; + return createDrawable(createSphere(context,r,slices,stacks),"Sphere"); + } + } + + bg.scene.PrimitiveFactory = PrimitiveFactory; + +})(); +(function() { + function fooScene(context) { + let root = new bg.scene.Node(context, "Scene Root"); + + bg.base.Loader.Load(context,"../data/test-shape.vwglb") + .then((node) => { + root.addChild(node); + node.addComponent(new bg.scene.Transform(bg.Matrix4.Translation(-1.4,0.25,0).scale(0.5,0.5,0.5))); + }) + + .catch(function(err) { + alert(err.message); + }); + + let sphereNode = new bg.scene.Node(context,"Sphere"); + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Translation(-1.3,0.1,1.3))); + sphereNode.addComponent(bg.scene.PrimitiveFactory.Sphere(context,0.1)); + sphereNode.component("bg.scene.Drawable").getMaterial(0).diffuse.a = 0.8; + sphereNode.component("bg.scene.Drawable").getMaterial(0).reflectionAmount = 0.4; + root.addChild(sphereNode); + + let floorNode = new bg.scene.Node(context,"Floor"); + floorNode.addComponent(new bg.scene.Transform(bg.Matrix4.Translation(0,0,0))); + floorNode.addComponent(bg.scene.PrimitiveFactory.Plane(context,10,10)); + floorNode.component("bg.scene.Drawable").getMaterial(0).shininess = 50; + floorNode.component("bg.scene.Drawable").getMaterial(0).reflectionAmount = 0.3; + floorNode.component("bg.scene.Drawable").getMaterial(0).normalMapScale = new bg.Vector2(10,10); + floorNode.component("bg.scene.Drawable").getMaterial(0).textureScale = new bg.Vector2(10,10); + floorNode.component("bg.scene.Drawable").getMaterial(0).reflectionMaskInvert = true; + floorNode.component("bg.scene.Drawable").getMaterial(0).shininessMaskInvert = true; + root.addChild(floorNode); + + bg.base.Loader.Load(context,"../data/bricks_nm.png") + .then((tex) => { + floorNode.component("bg.scene.Drawable").getMaterial(0).normalMap = tex; + }); + + bg.base.Loader.Load(context,"../data/bricks.jpg") + .then((tex) => { + floorNode.component("bg.scene.Drawable").getMaterial(0).texture = tex; + }); + + bg.base.Loader.Load(context,"../data/bricks_shin.jpg") + .then((tex) => { + floorNode.component("bg.scene.Drawable").getMaterial(0).reflectionMask = tex; + floorNode.component("bg.scene.Drawable").getMaterial(0).shininessMask = tex; + }); + + let lightNode = new bg.scene.Node(context,"Light"); + lightNode.addComponent(new bg.scene.Light(new bg.base.Light(context))); + lightNode.addComponent(new bg.scene.Transform(bg.Matrix4.Identity() + .rotate(bg.Math.degreesToRadians(30),0,1,0) + .rotate(bg.Math.degreesToRadians(35),-1,0,0))); + root.addChild(lightNode); + + let camera = new bg.scene.Camera(); + camera.isMain = true; + let cameraNode = new bg.scene.Node("Camera"); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + cameraNode.addComponent(new bg.manipulation.OrbitCameraController()); + let camCtrl = cameraNode.component("bg.manipulation.OrbitCameraController"); + camCtrl.minPitch = -45; + root.addChild(cameraNode); + + return root; + } + + class SceneFileParser { + constructor(url,jsonData) { + this.url = url.substring(0,url.lastIndexOf('/')); + this.jsonData = jsonData; + } + + loadNode(context,jsonData,parent,promises) { + // jsonData: object, input. Json data for the node + // parent: scene node, input. The parent node to which we must to add the new scene node. + // promises: array, output. Add promises from component.deserialize() + let node = new bg.scene.Node(context,jsonData.name); + node.enabled = jsonData.enabled; + node.steady = jsonData.steady || false; + parent.addChild(node); + jsonData.components.forEach((compData) => { + promises.push(bg.scene.Component.Factory(context,compData,node,this.url)); + }); + jsonData.children.forEach((child) => { + this.loadNode(context,child,node,promises); + }); + } + + loadScene(context) { + let promises = []; + let sceneRoot = new bg.scene.Node(context,"scene-root"); + + this.jsonData.scene.forEach((nodeData) => { + this.loadNode(context,nodeData,sceneRoot,promises); + }); + + return new Promise((resolve,reject) => { + Promise.all(promises) + .then(() => { + let findVisitor = new bg.scene.FindComponentVisitor("bg.scene.Camera"); + sceneRoot.accept(findVisitor); + + let cameraNode = null; + let firstCamera = null; + findVisitor.result.some((cn) => { + if (!firstCamera) { + firstCamera = cn; + } + if (cn.camera.isMain) { + cameraNode = cn; + return true; + } + }); + cameraNode = cameraNode || firstCamera; + if (!cameraNode) { + cameraNode = new bg.scene.Node(context,"Camera"); + cameraNode.addComponent(new bg.scene.Camera()); + let trx = bg.Matrix4.Rotation(0.52,-1,0,0); + trx.translate(0,0,5); + cameraNode.addComponent(new bg.scene.Transform(trx)); + sceneRoot.addChild(cameraNode); + } + + // Ensure that cameraNode is the only camera marked as main + bg.scene.Camera.SetAsMainCamera(cameraNode,sceneRoot); + resolve({ sceneRoot:sceneRoot, cameraNode:cameraNode }); + }); + }); + } + + } + + class SceneLoaderPlugin extends bg.base.LoaderPlugin { + acceptType(url,data) { + let ext = bg.utils.Resource.GetExtension(url); + return ext=="vitscnj"; + } + + load(context,url,data) { + return new Promise((resolve,reject) => { + if (data) { + try { + if (typeof(data)=="string") { + // Prevent a bug in the C++ API version 2.0, that inserts a comma after the last + // element of some arrays and objects + data = data.replace(/,[\s\r\n]*\]/g,']'); + data = data.replace(/,[\s\r\n]*\}/g,'}'); + data = JSON.parse(data); + } + let parser = new SceneFileParser(url,data); + parser.loadScene(context) + .then((result) => { + resolve(result); + }); + } + catch(e) { + reject(e); + } + } + else { + reject(new Error("Error loading scene. Data is null")); + } + }); + } + } + + bg.base.SceneLoaderPlugin = SceneLoaderPlugin; + +})(); +(function() { + + function copyCubemapImage(componentData,cubemapImage,dstPath) { + let path = require("path"); + let src = bg.base.Writer.StandarizePath(this.getImageUrl(cubemapImage)); + let file = src.split('/').pop(); + let dst = bg.base.Writer.StandarizePath(path.join(dstPath,file)); + switch (cubemapImage) { + case bg.scene.CubemapImage.POSITIVE_X: + componentData.positiveX = file; + break; + case bg.scene.CubemapImage.NEGATIVE_X: + componentData.negativeX = file; + break; + case bg.scene.CubemapImage.POSITIVE_Y: + componentData.positiveY = file; + break; + case bg.scene.CubemapImage.NEGATIVE_Y: + componentData.negativeY = file; + break; + case bg.scene.CubemapImage.POSITIVE_Z: + componentData.positiveZ = file; + break; + case bg.scene.CubemapImage.NEGATIVE_Z: + componentData.negativeZ = file; + break; + } + return bg.base.Writer.CopyFile(src,dst); + } + + let g_backFace = [ 0.5,-0.5,-0.5, -0.5,-0.5,-0.5, -0.5, 0.5,-0.5, 0.5, 0.5,-0.5 ]; + let g_rightFace = [ 0.5,-0.5, 0.5, 0.5,-0.5,-0.5, 0.5, 0.5,-0.5, 0.5, 0.5, 0.5 ]; + let g_frontFace = [ -0.5,-0.5, 0.5, 0.5,-0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5 ]; + let g_leftFace = [ -0.5,-0.5,-0.5, -0.5,-0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5,-0.5 ]; + let g_topFace = [ -0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,-0.5, -0.5, 0.5,-0.5 ]; + let g_bottomFace = [ 0.5,-0.5, 0.5, -0.5,-0.5, 0.5, -0.5,-0.5,-0.5, 0.5,-0.5,-0.5 ]; + + let g_backFaceNorm = [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1 ]; + let g_rightFaceNorm = [-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0 ]; + let g_frontFaceNorm = [ 0, 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1 ]; + let g_leftFaceNorm = [ 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 ]; + let g_topFaceNorm = [ 0,-1, 0, 0,-1, 0, 0,-1, 0, 0,-1, 0 ]; + let g_bottomFaceNorm = [ 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0 ]; + + let uv0 = 0; + let uv1 = 1; + let g_backFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + let g_rightFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + let g_frontFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + let g_leftFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + let g_topFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + let g_bottomFaceUV = [ uv1,uv0, uv0,uv0, uv0,uv1, uv1,uv1 ]; + + let g_index = [ 2,1,0, 0,3,2 ]; + + class Skybox extends bg.scene.Component { + constructor() { + super(); + this._images = [null, null, null, null, null, null]; + this._textures = []; + this._plist = []; + this._material = null; + } + + clone(context) { + let result = new Skybox(); + result._images = [ + this._images[0], + this._images[1], + this._images[2], + this._images[3], + this._images[4], + this._images[5] + ]; + context = context || this.node && this.node.context; + if (context) { + result.loadSkybox(context); + } + return result; + } + + setImageUrl(imgCode,texture) { + this._images[imgCode] = texture; + } + + getImageUrl(imgCode) { + return this._images[imgCode]; + } + + getTexture(imgCode) { + return this._textures[imgCode]; + } + + loadSkybox(context = null,onProgress = null) { + context = context || this.node && this.node.context; + + let backPlist = new bg.base.PolyList(context); + let rightPlist = new bg.base.PolyList(context); + let frontPlist = new bg.base.PolyList(context); + let leftPlist = new bg.base.PolyList(context); + let topPlist = new bg.base.PolyList(context); + let bottomPlist = new bg.base.PolyList(context); + + backPlist.vertex = g_backFace; backPlist.normal = g_backFaceNorm; backPlist.texCoord0 = g_backFaceUV; backPlist.texCoord1 = g_backFaceUV; backPlist.index = g_index; + backPlist.build(); + + rightPlist.vertex = g_rightFace; rightPlist.normal = g_rightFaceNorm; rightPlist.texCoord0 = g_rightFaceUV; rightPlist.texCoord1 = g_rightFaceUV; rightPlist.index = g_index; + rightPlist.build(); + + frontPlist.vertex = g_frontFace; frontPlist.normal = g_frontFaceNorm; frontPlist.texCoord0 = g_frontFaceUV; frontPlist.texCoord1 = g_frontFaceUV; frontPlist.index = g_index; + frontPlist.build(); + + leftPlist.vertex = g_leftFace; leftPlist.normal = g_leftFaceNorm; leftPlist.texCoord0 = g_leftFaceUV; leftPlist.texCoord1 = g_leftFaceUV; leftPlist.index = g_index; + leftPlist.build(); + + topPlist.vertex = g_topFace; topPlist.normal = g_topFaceNorm; topPlist.texCoord0 = g_topFaceUV; topPlist.texCoord1 = g_topFaceUV; topPlist.index = g_index; + topPlist.build(); + + bottomPlist.vertex = g_bottomFace; bottomPlist.normal = g_bottomFaceNorm; bottomPlist.texCoord0 = g_bottomFaceUV; bottomPlist.texCoord1 = g_bottomFaceUV; bottomPlist.index = g_index; + bottomPlist.build(); + + this._plist = [leftPlist,rightPlist,topPlist,bottomPlist,frontPlist,backPlist]; + this._material = new bg.base.Material(); + this._material.receiveShadows = false; + this._material.castShadows = false; + this._material.unlit = true; + + + return new Promise((resolve,reject) => { + bg.base.Loader.Load(context,this._images,onProgress, { + wrapX:bg.base.TextureWrap.MIRRORED_REPEAT, + wrapY:bg.base.TextureWrap.MIRRORED_REPEAT + }) + .then((result) => { + this._textures = [ + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_X)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_X)], + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_Y)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_Y)], + result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_Z)], + result[this.getImageUrl(bg.scene.CubemapImage.NEGATIVE_Z)] + ]; + this._textures.forEach((tex) => { + tex.wrapX = bg.base.TextureWrap.CLAMP; + tex.wrapY = bg.base.TextureWrap.CLAMP; + }); + bg.emitImageLoadEvent(result[this.getImageUrl(bg.scene.CubemapImage.POSITIVE_X)]); + resolve(); + }) + .catch((err) => { + reject(err); + }); + }) + } + + display(pipeline,matrixState) { + // TODO: extract far clip plane from projection matrix and use it to scale the cube before draw it + if (!pipeline.effect) { + throw new Error("Could not draw skybox: invalid effect"); + } + if (!this.node.enabled) { + return; + } + else if (this._textures.length==6) { + let curMaterial = pipeline.effect.material; + pipeline.effect.material = this._material; + matrixState.viewMatrixStack.push(); + matrixState.modelMatrixStack.push(); + matrixState.viewMatrixStack.matrix.setPosition(0,0,0); + + let projectionMatrix = matrixState.projectionMatrixStack.matrix; + let m22 = -projectionMatrix.m22; + let m32 = -projectionMatrix.m32; + let far = (2.0*m32)/(2.0*m22-2.0); + + let offset = 1; + let scale = bg.Math.sin(bg.Math.PI_4) * far - offset; + matrixState.modelMatrixStack.scale(scale,scale,scale); + + if (pipeline.shouldDraw(this._material)) { + this._plist.forEach((pl,index) => { + this._material.texture = this._textures[index]; + pipeline.draw(pl); + }); + } + + matrixState.modelMatrixStack.pop(); + matrixState.viewMatrixStack.pop(); + pipeline.effect.material = curMaterial; + } + } + + draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + if (this._textures.length==6) { + viewMatrixStack.push(); + modelMatrixStack.push(); + + viewMatrixStack.matrix.setPosition(0,0,0); + + let projectionMatrix = projectionMatrixStack.matrix; + let m22 = -projectionMatrix.m22; + let m32 = -projectionMatrix.m32; + let far = (2.0*m32)/(2.0*m22-2.0); + + let offset = 1; + let scale = bg.Math.sin(bg.Math.PI_4) * far - offset; + modelMatrixStack.scale(scale,scale,scale); + + this._plist.forEach((pl,index) => { + this._material.texture = this._textures[index]; + renderQueue.renderOpaque(pl,this._material.clone(),modelMatrixStack.matrix,viewMatrixStack.matrix); + }) + + viewMatrixStack.pop(); + modelMatrixStack.pop(); + } + } + + removedFromNode() { + this._plist.forEach((pl) => { + pl.destroy(); + }); + } + + deserialize(context,sceneData,url) { + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_X, + bg.utils.Resource.JoinUrl(url,sceneData["positiveX"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_X, + bg.utils.Resource.JoinUrl(url,sceneData["negativeX"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_Y, + bg.utils.Resource.JoinUrl(url,sceneData["positiveY"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_Y, + bg.utils.Resource.JoinUrl(url,sceneData["negativeY"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.POSITIVE_Z, + bg.utils.Resource.JoinUrl(url,sceneData["positiveZ"]) + ); + this.setImageUrl( + bg.scene.CubemapImage.NEGATIVE_Z, + bg.utils.Resource.JoinUrl(url,sceneData["negativeZ"]) + ); + return this.loadSkybox(context); + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + if (!bg.isElectronApp) return; + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_X,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_X,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_Y,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_Y,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.POSITIVE_Z,url.path])); + promises.push(copyCubemapImage.apply(this,[componentData,bg.scene.CubemapImage.NEGATIVE_Z,url.path])); + } + } + + bg.scene.registerComponent(bg.scene,Skybox,"bg.scene.Skybox"); +})(); +(function() { + class TextRect extends bg.scene.Component { + constructor(rectSize = new bg.Vector2(1,1),textureSize = new bg.Vector2(1000,1000)) { + super(); + + this._rectSize = rectSize; + this._textureSize = textureSize; + + this._textProperties = new bg.base.TextProperties(); + this._doubleSided = true; + this._unlit = false; + this._text = "Hello, World!"; + + this._sprite = null; + this._material = null; + + this._sizeMatrix = bg.Matrix4.Scale(this._rectSize.x,this._rectSize.y,1); + + this._canvasTexture = null; + this._dirty = true; + } + + clone() { + let newInstance = new bg.scene.TextRect(); + newInstance._text = this._text; + newInstance._sprite = this._sprite && this._sprite.clone(); + newInstance._material = this._material && this._material.clone(); + + // TODO: Clone other properties + return newInstance; + } + + get textProperties() { return this._textProperties; } + get text() { return this._text; } + set text(t) { this._dirty = true; this._text = t; } + get doubleSided() { return this._doubleSided; } + set doubleSided(ds) { this._dirty = true; this._doubleSided = ds; } + get unlit() { return this._unlit; } + set unlit(ul) { this._dirty = true; this._unlit = ul; } + get rectSize() { return this._rectSize; } + set rectSize(s) { + this._sizeMatrix.identity().scale(s.x,s.y,1); + this._rectSize = s; + } + + // TODO: update texture size + get textureSize() { return this._textureSize; } + set textureSize(t) { + this._dirty = true; + this._canvasTexture.resize(t.x,t.y); + this._textureSize = t; + } + + get material() { return this._material; } + + init() { + if (!this._sprite && this.node && this.node.context) { + this._sprite = bg.scene.PrimitiveFactory.PlanePolyList(this.node.context,1,1,'z'); + this._material = new bg.base.Material(); + this._material.alphaCutoff = 0.9; + this._dirty = true; + } + if (!this._canvasTexture && this.node && this.node.context) { + this._canvasTexture = new bg.tools.CanvasTexture(this.node.context,this._textureSize.x,this._textureSize.y, + (ctx,w,h) => { + ctx.clearRect(0,0,w,h); + if (this._textProperties.background!="transparent") { + ctx.fillStyle = this._textProperties.background; + ctx.fillRect(0,0,w,h); + } + ctx.fillStyle = this._textProperties.color; + let textSize = this._textProperties.size; + let font = this._textProperties.font; + let padding = 0; + let italic = this._textProperties.italic ? "italic" : ""; + let bold = this._textProperties.bold ? "bold" : ""; + ctx.textAlign = this._textProperties.align; + ctx.font = `${ italic } ${ bold } ${ textSize }px ${ font }`; // TODO: Font and size + let textWidth = ctx.measureText(this._text); + let x = 0; + let y = 0; + switch (ctx.textAlign) { + case "center": + x = w / 2; + y = textSize + padding; + break; + case "right": + x = w; + y = textSize + padding; + break; + default: + x = padding; + y = textSize + padding; + } + let textLines = this._text.split("\n"); + textLines.forEach((line) => { + ctx.fillText(line,x, y); + y += textSize; + }); + } + ); + this._dirty = true; + } + } + + frame(delta) { + if ((this._dirty || this._textProperties.dirty) && this._material && this._canvasTexture) { + this._canvasTexture.update(); + this._material.texture = this._canvasTexture.texture; + this._material.unlit = this._unlit; + this._material.cullFace = !this._doubleSided; + this._dirty = false; + this.textProperties.dirty = false; + } + } + + ////// Direct rendering functions: will be deprecated soon + display(pipeline,matrixState) { + if (!pipeline.effect) { + throw new Error("Could not draw TextRect: invalid effect"); + } + if (!this.node.enabled) { + return; + } + else if (this._sprite && this._material) { + if (this._sprite.visible) { + let curMaterial = pipeline.effect.material; + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack.mult(this._sizeMatrix); + + if (pipeline.shouldDraw(this._material)) { + pipeline.effect.material = this._material; + pipeline.draw(this._sprite); + } + + matrixState.modelMatrixStack.pop(); + pipeline.effect.material = curMaterial; + } + } + } + + ///// Render queue functions + draw(renderQueue,modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + if (this._sprite && this._material) { + modelMatrixStack.push(); + modelMatrixStack.mult(this._sizeMatrix); + + if (this._material.isTransparent) { + renderQueue.renderTransparent(this._sprite,this._material,modelMatrixStack.matrix,viewMatrixStack.matrix); + } + else { + renderQueue.renderOpaque(this._sprite,this._material,modelMatrixStack.matrix,viewMatrixStack.matrix); + } + + modelMatrixStack.pop(); + } + } + + serialize(componentData,promises,url) { + componentData.textProperties = {}; + this.textProperties.serialize(componentData.textProperties); + componentData.text = this.text; + componentData.doubleSided = this.doubleSided; + componentData.unlit = this.unlit; + componentData.textureSize = this.textureSize.toArray(); + componentData.rectSize = this.rectSize.toArray(); + } + + deserialize(context,sceneData,url) { + this.textProperties.deserialize(sceneData.textProperties); + this.text = sceneData.text; + this.doubleSided = sceneData.doubleSided; + this.unlit = sceneData.unlit; + this.textureSize = new bg.Vector2(sceneData.textureSize); + this.rectSize = new bg.Vector2(sceneData.rectSize); + } + } + + bg.scene.registerComponent(bg.scene,TextRect,"bg.scene.TextRect"); +})(); +(function() { + + class Transform extends bg.scene.Component { + constructor(matrix) { + super(); + + this._matrix = matrix || bg.Matrix4.Identity(); + this._globalMatrixValid = false; + this._transformVisitor = new bg.scene.TransformVisitor(); + } + + clone() { + let newTrx = new bg.scene.Transform(); + newTrx.matrix = new bg.Matrix4(this.matrix); + return newTrx; + } + + get matrix() { return this._matrix; } + set matrix(m) { this._matrix = m; } + + get globalMatrix() { + if (!this._globalMatrixValid) { + this._transformVisitor.clear(); + this.node.acceptReverse(this._transformVisitor); + this._globalMatrix = this._transformVisitor.matrix; + } + return this._globalMatrix; + } + + deserialize(context,sceneData,url) { + return new Promise((resolve,reject) => { + if (sceneData.transformStrategy) { + let str = sceneData.transformStrategy; + if (str.type=="TRSTransformStrategy") { + this._matrix + .identity() + .translate(str.translate[0],str.translate[1],str.translate[2]); + switch (str.rotationOrder) { + case "kOrderXYZ": + this._matrix + .rotate(str.rotateX,1,0,0) + .rotate(str.rotateY,0,1,0) + .rotate(str.rotateZ,0,0,1); + break; + case "kOrderXZY": + this._matrix + .rotate(str.rotateX,1,0,0) + .rotate(str.rotateZ,0,0,1) + .rotate(str.rotateY,0,1,0); + break; + case "kOrderYXZ": + this._matrix + .rotate(str.rotateY,0,1,0) + .rotate(str.rotateX,1,0,0) + .rotate(str.rotateZ,0,0,1); + break; + case "kOrderYZX": + this._matrix + .rotate(str.rotateY,0,1,0) + .rotate(str.rotateZ,0,0,1) + .rotate(str.rotateX,1,0,0); + break; + case "kOrderZYX": + this._matrix + .rotate(str.rotateZ,0,0,1) + .rotate(str.rotateY,0,1,0) + .rotate(str.rotateX,1,0,0); + break; + case "kOrderZXY": + this._matrix + .rotate(str.rotateZ,0,0,1) + .rotate(str.rotateX,1,0,0) + .rotate(str.rotateY,0,1,0); + break; + } + this._matrix.scale(str.scale[0],str.scale[1],str.scale[2]) + } + } + else if (sceneData.transformMatrix) { + this._matrix = new bg.Matrix4(sceneData.transformMatrix); + } + resolve(this); + }); + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + componentData.transformMatrix = this._matrix.toArray(); + } + + // The direct render methods will be deprecated soon + ////// Direct render methods + willDisplay(pipeline,matrixState) { + if (this.node && this.node.enabled) { + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack.mult(this.matrix); + } + } + + didDisplay(pipeline,matrixState) { + if (this.node && this.node.enabled) { + matrixState.modelMatrixStack.pop(); + } + this._globalMatrixValid = false; + } + ////// End direct render methods + + + ////// Render queue methods + willUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + if (this.node && this.node.enabled) { + modelMatrixStack.push(); + modelMatrixStack.mult(this.matrix); + } + } + + didUpdate(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + if (this.node && this.node.enabled) { + modelMatrixStack.pop(); + } + this._globalMatrixValid = false; + } + ////// End render queue methods + + } + + bg.scene.registerComponent(bg.scene,Transform,"bg.scene.Transform"); + +})(); +(function() { + + class DrawVisitor extends bg.scene.NodeVisitor { + constructor(pipeline,matrixState) { + super(); + this._pipeline = pipeline || bg.base.Pipeline.Current(); + this._matrixState = matrixState || bg.base.MatrixState.Current(); + this._forceDraw = false; + } + + get forceDraw() { return this._forceDraw; } + set forceDraw(f) { this._forceDraw = f; } + + get pipeline() { return this._pipeline; } + get matrixState() { return this._matrixState; } + + visit(node) { + node.willDisplay(this.pipeline,this.matrixState); + node.display(this.pipeline,this.matrixState,this.forceDraw); + } + + didVisit(node) { + node.didDisplay(this.pipeline,this.matrixState); + } + } + + bg.scene.DrawVisitor = DrawVisitor; + + class RenderQueueVisitor extends bg.scene.NodeVisitor { + constructor(modelMatrixStack,viewMatrixStack,projectionMatrixStack) { + super(); + this._modelMatrixStack = modelMatrixStack || new bg.base.MatrixStack(); + this._viewMatrixStack = viewMatrixStack || new bg.base.MatrixStack(); + this._projectionMatrixStack = projectionMatrixStack || new bg.base.MatrixStack(); + this._renderQueue = new bg.base.RenderQueue(); + } + + get modelMatrixStack() { return this._modelMatrixStack; } + set modelMatrixStack(m) { this._modelMatrixStack = m; } + + get viewMatrixStack() { return this._viewMatrixStack; } + set viewMatrixStack(m) { this._viewMatrixStack = m; } + + get projectionMatrixStack() { return this._projectionMatrixStack } + set projectionMatrixStack(m) { this._projectionMatrixStack = m; } + + get renderQueue() { return this._renderQueue; } + + visit(node) { + node.willUpdate(this._modelMatrixStack); + node.draw(this._renderQueue,this._modelMatrixStack, this._viewMatrixStack, this._projectionMatrixStack); + } + + didVisit(node) { + node.didUpdate(this._modelMatrixStack, this._viewMatrixStack, this._projectionMatrixStack); + } + } + + bg.scene.RenderQueueVisitor = RenderQueueVisitor; + + class FrameVisitor extends bg.scene.NodeVisitor { + constructor() { + super(); + this._delta = 0; + } + + get delta() { return this._delta; } + set delta(d) { this._delta = d; } + + visit(node) { + node.frame(this.delta); + } + } + + bg.scene.FrameVisitor = FrameVisitor; + + class TransformVisitor extends bg.scene.NodeVisitor { + constructor() { + super(); + this._matrix = bg.Matrix4.Identity(); + } + + get matrix() { return this._matrix; } + + clear() { + this._matrix = bg.Matrix4.Identity(); + } + + visit(node) { + let trx = node.component("bg.scene.Transform"); + if (trx) { + this._matrix.mult(trx.matrix); + } + } + } + + bg.scene.TransformVisitor = TransformVisitor; + + class InputVisitor extends bg.scene.NodeVisitor { + + visit(node) { + if (this._operation) { + node[this._operation](this._event); + } + } + + keyDown(scene,evt) { + this._operation = "keyDown"; + this._event = evt; + scene.accept(this); + } + + keyUp(scene,evt) { + this._operation = "keyUp"; + this._event = evt; + scene.accept(this); + } + + mouseUp(scene,evt) { + this._operation = "mouseUp"; + this._event = evt; + scene.accept(this); + } + + mouseDown(scene,evt) { + this._operation = "mouseDown"; + this._event = evt; + scene.accept(this); + } + + mouseMove(scene,evt) { + this._operation = "mouseMove"; + this._event = evt; + scene.accept(this); + } + + mouseOut(scene,evt) { + this._operation = "mouseOut"; + this._event = evt; + scene.accept(this); + } + + mouseDrag(scene,evt) { + this._operation = "mouseDrag"; + this._event = evt; + scene.accept(this); + } + + mouseWheel(scene,evt) { + this._operation = "mouseWheel"; + this._event = evt; + scene.accept(this); + } + + touchStart(scene,evt) { + this._operation = "touchStart"; + this._event = evt; + scene.accept(this); + } + + touchMove(scene,evt) { + this._operation = "touchMove"; + this._event = evt; + scene.accept(this); + } + + touchEnd(scene,evt) { + this._operation = "touchEnd"; + this._event = evt; + scene.accept(this); + } + } + + bg.scene.InputVisitor = InputVisitor; + + class BoundingBoxVisitor extends bg.scene.NodeVisitor { + constructor() { + super(); + this.clear(); + } + + get min() { + return this._min; + } + + get max() { + return this._max; + } + + get size() { + return this._size; + } + + clear() { + // left, right, bottom, top, back, front + this._min = new bg.Vector3(bg.Math.FLOAT_MAX,bg.Math.FLOAT_MAX,bg.Math.FLOAT_MAX); + this._max = new bg.Vector3(-bg.Math.FLOAT_MAX,-bg.Math.FLOAT_MAX,-bg.Math.FLOAT_MAX); + this._size = new bg.Vector3(0,0,0); + } + + visit(node) { + let trx = bg.Matrix4.Identity(); + if (node.component("bg.scene.Transform")) { + trx = node.component("bg.scene.Transform").globalMatrix; + } + if (node.component("bg.scene.Drawable")) { + let bb = new bg.tools.BoundingBox(node.component("bg.scene.Drawable"),new bg.Matrix4(trx)); + this._min = bg.Vector.MinComponents(this._min,bb.min); + this._max = bg.Vector.MaxComponents(this._max,bb.max); + this._size = bg.Vector3.Sub(this._max, this._min); + } + } + } + + bg.scene.BoundingBoxVisitor = BoundingBoxVisitor; + + + class FindComponentVisitor extends bg.scene.NodeVisitor { + constructor(componentId) { + super(); + this.componentId = componentId; + this.clear(); + } + + get result() { + return this._result; + } + + clear() { + this._result = []; + } + + visit(node) { + if (node.component(this.componentId)) { + this._result.push(node); + } + } + } + + bg.scene.FindComponentVisitor = FindComponentVisitor; +})(); +(function() { + + function readBlock(arrayBuffer,offset) { + var block = new Uint8Array(arrayBuffer,offset,4); + block = String.fromCharCode(block[0]) + String.fromCharCode(block[1]) + String.fromCharCode(block[2]) + String.fromCharCode(block[3]); + return block; + } + + function readInt(arrayBuffer,offset) { + var dataView = new DataView(arrayBuffer,offset,4); + return dataView.getInt32(0); + } + + function readFloat(arrayBuffer,offset) { + var dataView = new DataView(arrayBuffer,offset,4); + return dataView.getFloat32(0); + } + + function readMatrix4(arrayBuffer,offset) { + var response = {offset:0,data:[]} + var size = 16; + var dataView = new DataView(arrayBuffer,offset, size*4); + var littleEndian = false; + for (var i=0;i<size;++i) { + response.data[i] = dataView.getFloat32(i*4,littleEndian); + } + response.offset += size * 4; + return response; + } + + function readString(arrayBuffer,offset) { + var response = {offset:0,data:""} + var size = readInt(arrayBuffer,offset); + response.offset += 4; + var strBuffer = new Uint8Array(arrayBuffer, offset + 4, size); + for (var i=0;i<size;++i) { + response.data += String.fromCharCode(strBuffer[i]); + } + response.offset += size; + return response; + } + + function readFloatArray(arrayBuffer,offset) { + var response = {offset:0,data:[]} + var size = readInt(arrayBuffer,offset); + response.offset += 4; + var dataView = new DataView(arrayBuffer,offset + 4, size*4); + var littleEndian = false; + for (var i=0;i<size;++i) { + response.data[i] = dataView.getFloat32(i*4,littleEndian); + } + response.offset += size * 4; + return response; + } + + function readIndexArray(arrayBuffer,offset) { + var response = {offset:0,data:[]} + var size = readInt(arrayBuffer,offset); + response.offset += 4; + var dataView = new DataView(arrayBuffer,offset + 4, size*4); + var littleEndian = false; + for (var i=0;i<size;++i) { + response.data[i] = dataView.getInt32(i*4,littleEndian); + } + response.offset += size * 4; + return response; + } + + function addJoint(node,type,jointData) { + let joint = new bg.physics[jointData.type](); + joint.offset = new bg.Vector3(...jointData.offset); + joint.roll = jointData.roll; + joint.pitch = jointData.pitch; + joint.yaw = jointData.yaw; + let component = new bg.scene[type](joint); + node.addComponent(component); + } + + class VWGLBParser { + constructor(context,data) { + this._context = context; + } + + loadDrawable(data,path) { + this._jointData = null; + var parsedData = this.parseData(data); + return this.createDrawable(parsedData,path); + } + + parseData(data) { + let polyLists = []; + let materials = null; + let components = null; + + let offset = 0; + let header = new Uint8Array(data,0,8); + offset = 8; + let hdr = String.fromCharCode(header[4]) + String.fromCharCode(header[5]) + String.fromCharCode(header[6]) + String.fromCharCode(header[7]); + + if (header[0]==1) throw "Could not open the model file. This file has been saved as computer (little endian) format, try again saving it in network (big endian) format"; + if (hdr!='hedr') throw "File format error. Expecting header"; + + let version = {maj:header[1],min:header[2],rev:header[3]}; + bg.log("vwglb file version: " + version.maj + "." + version.min + "." + version.rev + ", big endian"); + + let numberOfPolyList = readInt(data,offset); + offset += 4; + + let mtrl = readBlock(data,offset); + offset += 4; + if (mtrl!='mtrl') throw "File format error. Expecting materials definition"; + + let matResult = readString(data,offset); + offset += matResult.offset; + materials = JSON.parse(matResult.data); + + let proj = readBlock(data,offset); + if (proj=='proj') { + // Projectors are deprecated. This section only skips the projector section + offset += 4; + let shadowTexFile = readString(data,offset); + offset += shadowTexFile.offset; + + let attenuation = readFloat(data,offset); + offset +=4; + + let projectionMatData = readMatrix4(data,offset); + offset += projectionMatData.offset; + let projMatrix = projectionMatData.data; + + let transformMatData = readMatrix4(data,offset); + offset += transformMatData.offset; + let transMatrix = transformMatData.data; + + // model projectors are deprecated + //projector = new vwgl.Projector(); + //projector.setProjection(new vwgl.Matrix4(projMatrix)); + //projector.setTransform(new vwgl.Matrix4(transMatrix)); + //projector.setTexture(loader.loadTexture(shadowTexFile.data)) + } + + let join = readBlock(data,offset); + if (join=='join') { + offset += 4; + + let jointData = readString(data,offset); + offset += jointData.offset; + + let jointText = jointData.data; + try { + this._jointData = JSON.parse(jointText); + } + catch (e) { + throw new Error("VWGLB file format reader: Error parsing joint data"); + } + } + + let block = readBlock(data,offset); + if (block!='plst') throw "File format error. Expecting poly list"; + let done = false; + offset += 4; + let plistName; + let matName; + let vArray; + let nArray; + let t0Array; + let t1Array; + let t2Array; + let iArray; + while (!done) { + block = readBlock(data,offset); + offset += 4; + let strData = null; + let tarr = null; + switch (block) { + case 'pnam': + strData = readString(data,offset); + offset += strData.offset; + plistName = strData.data; + break; + case 'mnam': + strData = readString(data,offset); + offset += strData.offset; + matName = strData.data; + break; + case 'varr': + let varr = readFloatArray(data,offset); + offset += varr.offset; + vArray = varr.data; + break; + case 'narr': + let narr = readFloatArray(data,offset); + offset += narr.offset; + nArray = narr.data; + break; + case 't0ar': + tarr = readFloatArray(data,offset); + offset += tarr.offset; + t0Array = tarr.data; + break; + case 't1ar': + tarr = readFloatArray(data,offset); + offset += tarr.offset; + t1Array = tarr.data; + break; + case 't2ar': + tarr = readFloatArray(data,offset); + offset += tarr.offset; + t2Array = tarr.data; + break; + case 'indx': + let iarr = readIndexArray(data,offset); + offset += iarr.offset; + iArray = iarr.data; + break; + case 'plst': + case 'endf': + if (block=='endf' && (offset + 4)<data.byteLength) { + try { + block = readBlock(data,offset); + offset += 4; + if (block=='cmps') { + let componentData = readString(data,offset); + offset += componentData.offset; + + // Prevent a bug in the C++ API version 2.0, that inserts a comma after the last + // element of some arrays and objects + componentData.data = componentData.data.replace(/,[\s\r\n]*\]/g,']'); + componentData.data = componentData.data.replace(/,[\s\r\n]*\}/g,'}'); + components = JSON.parse(componentData.data); + } + } + catch (err) { + console.error(err.message); + } + done = true; + } + else if ((offset + 4)>=data.byteLength) { + done = true; + } + + let plistData = { + name:plistName, + matName:matName, + vertices:vArray, + normal:nArray, + texcoord0:t0Array, + texcoord1:t1Array, + texcoord2:t2Array, + indices:iArray + } + polyLists.push(plistData) + plistName = ""; + matName = ""; + vArray = null; + nArray = null; + t0Array = null; + t1Array = null; + t2Array = null; + iArray = null; + break; + default: + throw "File format exception. Unexpected poly list member found"; + } + } + + var parsedData = { + version:version, + polyList:polyLists, + materials: {} + } + this._componentData = components; + materials.forEach((matData) => { + parsedData.materials[matData.name] = matData; + }); + return parsedData; + } + + createDrawable(data,path) { + let drawable = new bg.scene.Drawable(this.context); + drawable._version = data.version; + let promises = []; + + data.polyList.forEach((plistData) => { + let materialData = data.materials[plistData.matName]; + + let polyList = new bg.base.PolyList(this._context); + polyList.name = plistData.name; + polyList.vertex = plistData.vertices || polyList.vertex; + polyList.normal = plistData.normal || polyList.normal; + polyList.texCoord0 = plistData.texcoord0 || polyList.texCoord0; + polyList.texCoord1 = plistData.texcoord1 || polyList.texCoord1; + polyList.texCoord2 = plistData.texcoord2 || polyList.texCoord2; + polyList.index = plistData.indices || polyList.index; + + polyList.groupName = materialData.groupName; + polyList.visible = materialData.visible; + polyList.visibleToShadows = materialData.visibleToShadows!==undefined ? materialData.visibleToShadows : true; + + polyList.build(); + + promises.push(bg.base.Material.GetMaterialWithJson(this._context,materialData,path) + .then(function(material) { + drawable.addPolyList(polyList,material); + })); + }); + + return Promise.all(promises) + .then(() => { + return drawable; + }); + } + + addComponents(node,url) { + if (this._jointData) { + let i = null; + let o = null; + if (this._jointData.input) { + i = this._jointData.input; + } + if (this._jointData.output && this._jointData.output.length) { + o = this._jointData.output[0]; + } + + if (i) addJoint(node,"InputChainJoint",i); + if (o) addJoint(node,"OutputChainJoint",o); + } + + if (this._componentData) { + console.log("Component data found"); + let baseUrl = url; + if (bg.isElectronApp) { + baseUrl = bg.base.Writer.StandarizePath(url); + } + baseUrl = baseUrl.split("/"); + baseUrl.pop(); + baseUrl = baseUrl.join("/"); + this._componentData.forEach((cmpData) => { + bg.scene.Component.Factory(this.context,cmpData,node,baseUrl) + }) + } + } + } + + class VWGLBLoaderPlugin extends bg.base.LoaderPlugin { + acceptType(url,data) { + let ext = bg.utils.Resource.GetExtension(url); + return ext=="vwglb" || ext=="bg2"; + } + + load(context,url,data) { + return new Promise((accept,reject) => { + if (data) { + try { + let parser = new VWGLBParser(context,data); + let path = url.substr(0,url.lastIndexOf("/")); + parser.loadDrawable(data,path) + .then((drawable) => { + let node = new bg.scene.Node(context,drawable.name); + node.addComponent(drawable); + parser.addComponents(node,url); + accept(node); + }); + } + catch(e) { + reject(e); + } + } + else { + reject(new Error("Error loading drawable. Data is null")); + } + }); + } + } + + // This plugin load vwglb and bg2 files, but will also try to load the associated bg2mat file + class Bg2LoaderPlugin extends VWGLBLoaderPlugin { + load(context,url,data) { + let promise = super.load(context,url,data); + return new Promise((resolve,reject) => { + promise + .then((node) => { + let basePath = url.split("/"); + basePath.pop(); + basePath = basePath.join("/") + '/'; + let matUrl = url.split("."); + matUrl.pop(); + matUrl.push("bg2mat"); + matUrl = matUrl.join("."); + bg.utils.Resource.LoadJson(matUrl) + .then((matData) => { + let promises = []; + try { + let drw = node.component("bg.scene.Drawable"); + drw.forEach((plist,mat)=> { + let matDef = null; + matData.some((defItem) => { + if (defItem.name==plist.name) { + matDef = defItem; + return true; + } + }); + + if (matDef) { + let p = bg.base.Material.FromMaterialDefinition(context,matDef,basePath); + promises.push(p) + p.then((newMat) => { + mat.assign(newMat); + }); + } + }); + } + catch(err) { + + } + return Promise.all(promises); + }) + .then(() => { + resolve(node); + }) + .catch(() => { // bg2mat file not found + resolve(node); + }); + }) + .catch((err) => { + reject(err); + }); + }); + } + } + + bg.base.VWGLBLoaderPlugin = VWGLBLoaderPlugin; + bg.base.Bg2LoaderPlugin = Bg2LoaderPlugin; + +})(); +bg.manipulation = {}; +(function() { + + class DrawGizmoVisitor extends bg.scene.DrawVisitor { + constructor(pipeline,matrixState) { + super(pipeline,matrixState); + this._sprite = bg.scene.PrimitiveFactory.PlanePolyList(pipeline.context,1,1,"z"); + + this._gizmoScale = 1; + + this._gizmoIcons = []; + + this._show3dGizmos = true; + } + + get gizmoScale() { return this._gizmoScale; } + set gizmoScale(s) { this._gizmoScale = s; } + + get show3dGizmos() { return this._show3dGizmos; } + set show3dGizmos(g) { this._show3dGizmos = g; } + + clearGizmoIcons() { this._gizmoIcons = []; } + addGizmoIcon(type,icon,visible=true) { this._gizmoIcons.push({ type:type, icon:icon, visible:visible }); } + setGizmoIconVisibility(type,visible) { + this._gizmoIcons.some((iconData) => { + if (iconData.type==type) { + iconData.visible = visible; + } + }) + } + + get gizmoIcons() { return this._gizmoIcons; } + + getGizmoIcon(node) { + let icon = null; + this._gizmoIcons.some((iconData) => { + if (node.component(iconData.type) && iconData.visible) { + icon = iconData.icon; + return true; + } + }); + return icon; + } + + visit(node) { + super.visit(node); + + let icon = this.getGizmoIcon(node); + let gizmoOpacity = this.pipeline.effect.gizmoOpacity; + let gizmoColor = this.pipeline.effect.color; + this.pipeline.effect.color = bg.Color.White(); + let dt = this.pipeline.depthTest; + this.pipeline.depthTest = false; + if (icon) { + this.pipeline.effect.texture = icon; + this.pipeline.effect.gizmoOpacity = 1; + this.matrixState.viewMatrixStack.push(); + this.matrixState.modelMatrixStack.push(); + this.matrixState.viewMatrixStack.mult(this.matrixState.modelMatrixStack.matrix); + this.matrixState.modelMatrixStack.identity(); + this.matrixState.viewMatrixStack.matrix.setRow(0,new bg.Vector4(1,0,0,0)); + this.matrixState.viewMatrixStack.matrix.setRow(1,new bg.Vector4(0,1,0,0)); + this.matrixState.viewMatrixStack.matrix.setRow(2,new bg.Vector4(0,0,1,0)); + let s = this.matrixState.cameraDistanceScale * 0.05 * this._gizmoScale; + this.matrixState.viewMatrixStack.scale(s,s,s); + this.pipeline.draw(this._sprite); + + this.matrixState.viewMatrixStack.pop(); + this.matrixState.modelMatrixStack.pop(); + this.pipeline.effect.gizmoOpacity = gizmoOpacity; + this.pipeline.effect.texture = null; + } + if (this._show3dGizmos) { + node.displayGizmo(this.pipeline,this.matrixState); + } + this.pipeline.effect.color = gizmoColor; + this.pipeline.depthTest = dt; + } + + } + + bg.manipulation = bg.manipulation || {}; + bg.manipulation.DrawGizmoVisitor = DrawGizmoVisitor; +})(); +(function() { + + class GizmoManager extends bg.app.ContextObject { + + constructor(context) { + super(context); + this._gizmoOpacity = 0.9; + } + + get pipeline() { + if (!this._pipeline) { + this._pipeline = new bg.base.Pipeline(this.context); + this._pipeline.blendMode = bg.base.BlendMode.NORMAL; + this._pipeline.effect = new bg.manipulation.GizmoEffect(this.context); + } + return this._pipeline; + } + + get matrixState() { + if (!this._matrixState) { + this._matrixState = new bg.base.MatrixState(); + } + return this._matrixState; + } + + get drawVisitor() { + if (!this._drawVisitor) { + this._drawVisitor = new bg.manipulation.DrawGizmoVisitor(this.pipeline,this.matrixState); + } + return this._drawVisitor; + } + + get gizmoOpacity() { return this._gizmoOpacity; } + set gizmoOpacity(o) { this._gizmoOpacity = o; } + + get show3dGizmos() { return this.drawVisitor.show3dGizmos; } + set show3dGizmos(g) { this.drawVisitor.show3dGizmos = g; } + + get working() { return this._working; } + + // Load icon textures manually + // addGizmoIcon("bg.scene.Camera",cameraTexture) + addGizmoIcon(type,iconTexture) { + this.drawVisitor.addGizmoIcon(type,iconTexture); + } + + get gizmoIconScale() { return this.drawVisitor.gizmoScale; } + set gizmoIconScale(s) { this.drawVisitor.gizmoScale = s; } + + setGizmoIconVisibility(type,visible) { this.drawVisitor.setGizmoIconVisibility(type,visible); } + hideGizmoIcon(type) { this.drawVisitor.setGizmoIconVisibility(type,false); } + showGizmoIcon(type) { this.drawVisitor.setGizmoIconVisibility(type,true); } + + get gizmoIcons() { return this.drawVisitor.gizmoIcons; } + + /* + * Receives an array with the icon data, ordered by priority (only one component + * icon will be shown). + * iconData: [ + * { type:"bg.scene.Camera", icon:"../data/camera_gizmo.png" }, + * { type:"bg.scene.Light", icon:"../data/light_gizmo.png" }, + * { type:"bg.scene.Transform", icon:"../data/transform_gizmo.png" }, + * { type:"bg.scene.Drawable", icon:"../data/drawable_gizmo.png" }, + * ], + * basePath: if specified, this path will be prepended to the icon paths + */ + loadGizmoIcons(iconData, basePath="",onProgress) { + return new Promise((resolve,reject) => { + let urls = []; + let iconDataResult = []; + iconData.forEach((data) => { + let itemData = { type:data.type, iconTexture:null }; + itemData.path = bg.utils.path.join(basePath,data.icon); + urls.push(itemData.path); + iconDataResult.push(itemData); + }); + bg.base.Loader.Load(this.context,urls,onProgress) + .then((result) => { + iconDataResult.forEach((dataItem) => { + dataItem.iconTexture = result[dataItem.path]; + this.addGizmoIcon(dataItem.type,dataItem.iconTexture); + }) + resolve(iconDataResult); + }) + .catch((err) => { + reject(err); + }); + }); + } + + clearGizmoIcons() { + this.drawVisitor.clearGizmoIcons(); + } + + startAction(gizmoPickData,pos) { + this._working = true; + this._startPoint = pos; + this._currentGizmoData = gizmoPickData; + if (this._currentGizmoData && this._currentGizmoData.node) { + let gizmo = this._currentGizmoData.node.component("bg.manipulation.Gizmo"); + if (gizmo) { + gizmo.beginDrag(this._currentGizmoData.action,pos); + } + } + } + + move(pos,camera) { + if (this._currentGizmoData && this._currentGizmoData.node) { + let gizmo = this._currentGizmoData.node.component("bg.manipulation.Gizmo"); + if (gizmo) { + pos.y = camera.viewport.height - pos.y; // Convert to viewport coords + gizmo.drag(this._currentGizmoData.action,this._startPoint,pos,camera); + } + this._startPoint = pos; + } + } + + endAction() { + if (this._currentGizmoData && this._currentGizmoData.node) { + let gizmo = this._currentGizmoData.node.component("bg.manipulation.Gizmo"); + if (gizmo) { + gizmo.endDrag(this._currentGizmoData.action); + } + } + this._working = false; + this._startPoint = null; + this._currentGizmoData = null; + } + + drawGizmos(sceneRoot,camera,clearDepth=true) { + let restorePipeline = bg.base.Pipeline.Current(); + let restoreMatrixState = bg.base.MatrixState.Current(); + bg.base.Pipeline.SetCurrent(this.pipeline); + bg.base.MatrixState.SetCurrent(this.matrixState); + this.pipeline.viewport = camera.viewport; + this.pipeline.effect.matrixState = this.matrixState; + + if (clearDepth) { + this.pipeline.clearBuffers(bg.base.ClearBuffers.DEPTH); + } + + this.matrixState.projectionMatrixStack.set(camera.projection); + this.matrixState.viewMatrixStack.set(camera.viewMatrix); + + let opacityLayer = this.pipeline.opacityLayer; + this.pipeline.opacityLayer = bg.base.OpacityLayer.NONE; + + this.pipeline.blend = true; + this.pipeline.effect.gizmoOpacity = this.gizmoOpacity; + sceneRoot.accept(this.drawVisitor); + this.pipeline.blend = false; + + this.pipeline.opacityLayer = opacityLayer; + + if (restorePipeline) { + bg.base.Pipeline.SetCurrent(restorePipeline); + } + if (restoreMatrixState) { + bg.base.MatrixState.SetCurrent(restoreMatrixState); + } + } + } + + bg.manipulation.GizmoManager = GizmoManager; + +})(); + +(function() { + + let shaders = {}; + + function initShaders() { + shaders[bg.webgl1.EngineId] = { + vertex: ` + attribute vec3 inVertex; + attribute vec2 inTexCoord; + attribute vec4 inVertexColor; + + uniform mat4 inModelMatrix; + uniform mat4 inViewMatrix; + uniform mat4 inProjectionMatrix; + + varying vec2 fsTexCoord; + varying vec4 fsColor; + + void main() { + fsTexCoord = inTexCoord; + fsColor = inVertexColor; + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + } + `, + + fragment:` + precision highp float; + + uniform vec4 inColor; + uniform sampler2D inTexture; + uniform float inOpacity; + + varying vec2 fsTexCoord; + varying vec4 fsColor; + + void main() { + vec4 tex = texture2D(inTexture,fsTexCoord); + gl_FragColor = vec4(fsColor.rgb * tex.rgb * inColor.rgb,inOpacity * tex.a); + } + ` + }; + } + + class GizmoEffect extends bg.base.Effect { + constructor(context) { + super(context); + initShaders(); + this._gizmoOpacity = 1; + this._color = bg.Color.White(); + } + + get inputVars() { + return { + vertex:'inVertex', + color:'inVertexColor', + tex0:'inTexCoord' + } + } + + set matrixState(m) { this._matrixState = m; } + get matrixState() { + return this._matrixState; + } + + set texture(t) { this._texture = t; } + get texture() { return this._texture; } + + set color(c) { this._color = c; } + get color() { return this._color; } + + set gizmoOpacity(o) { this._gizmoOpacity = o; } + get gizmoOpacity() { return this._gizmoOpacity; } + + get shader() { + if (!this._shader) { + this._shader = new bg.base.Shader(this.context); + this._shader.addShaderSource(bg.base.ShaderType.VERTEX, shaders[bg.webgl1.EngineId].vertex); + this._shader.addShaderSource(bg.base.ShaderType.FRAGMENT, shaders[bg.webgl1.EngineId].fragment); + this._shader.link(); + if (!this._shader.status) { + console.log(this._shader.compileError); + console.log(this._shader.linkError); + } + else { + this._shader.initVars([ + 'inVertex', + 'inVertexColor', + 'inTexCoord' + ],[ + 'inModelMatrix', + 'inViewMatrix', + 'inProjectionMatrix', + 'inColor', + 'inTexture', + 'inOpacity' + ]); + } + } + return this._shader + } + + setupVars() { + let whiteTexture = bg.base.TextureCache.WhiteTexture(this.context); + this.shader.setMatrix4('inModelMatrix',this.matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',new bg.Matrix4(this.matrixState.viewMatrixStack.matrixConst)); + this.shader.setMatrix4('inProjectionMatrix',this.matrixState.projectionMatrixStack.matrixConst); + this.shader.setVector4('inColor',this.color); + this.shader.setTexture('inTexture', this.texture ? this.texture : whiteTexture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setValueFloat('inOpacity',this.gizmoOpacity); + } + + } + + bg.manipulation.GizmoEffect = GizmoEffect; + + bg.manipulation.GizmoAction = { + TRANSLATE: 1, + ROTATE: 2, + ROTATE_FINE: 3, + SCALE: 4, + TRANSLATE_X: 5, + TRANSLATE_Y: 6, + TRANSLATE_Z: 7, + ROTATE_X: 8, + ROTATE_Y: 9, + ROTATE_Z: 10, + SCALE_X: 11, + SCALE_Y: 12, + SCALE_Z: 13, + + NONE: 99 + }; + + function getAction(plist) { + if (/rotate.*fine/i.test(plist.name)) { + return bg.manipulation.GizmoAction.ROTATE_FINE; + } + if (/rotate.*x/i.test(plist.name)) { + return bg.manipulation.GizmoAction.ROTATE_X; + } + if (/rotate.*y/i.test(plist.name)) { + return bg.manipulation.GizmoAction.ROTATE_Y; + } + if (/rotate.*z/i.test(plist.name)) { + return bg.manipulation.GizmoAction.ROTATE_Z; + } + else if (/rotate/i.test(plist.name)) { + return bg.manipulation.GizmoAction.ROTATE; + } + else if (/translate.*x/i.test(plist.name)) { + return bg.manipulation.GizmoAction.TRANSLATE_X; + } + else if (/translate.*y/i.test(plist.name)) { + return bg.manipulation.GizmoAction.TRANSLATE_Y; + } + else if (/translate.*z/i.test(plist.name)) { + return bg.manipulation.GizmoAction.TRANSLATE_Z; + } + else if (/translate/i.test(plist.name)) { + return bg.manipulation.GizmoAction.TRANSLATE; + } + else if (/scale.*x/i.test(plist.name)) { + return bg.manipulation.GizmoAction.SCALE_X; + } + else if (/scale.*y/i.test(plist.name)) { + return bg.manipulation.GizmoAction.SCALE_Y; + } + else if (/scale.*z/i.test(plist.name)) { + return bg.manipulation.GizmoAction.SCALE_Z; + } + else if (/scale/i.test(plist.name)) { + return bg.manipulation.GizmoAction.SCALE; + } + } + + let s_gizmoCache = {} + + class GizmoCache { + static Get(context) { + if (!s_gizmoCache[context.uuid]) { + s_gizmoCache[context.uuid] = new GizmoCache(context); + } + return s_gizmoCache[context.uuid]; + } + + constructor(context) { + this._context = context; + this._gizmos = {}; + } + + find(url) { + return this._gizmos[url]; + } + + register(url,gizmoItems) { + this._gizmos[url] = gizmoItems; + } + + unregister(url) { + if (this._gizmos[url]) { + delete this._gizmos[url]; + } + } + + clear() { + this._gizmos = {} + } + } + + bg.manipulation.GizmoCache = GizmoCache; + + function loadGizmo(context,gizmoUrl,gizmoNode) { + return new Promise(function(accept,reject) { + if (!gizmoUrl) { + accept([]); + return; + } + bg.base.Loader.Load(context,gizmoUrl) + .then(function (node) { + let drw = node.component("bg.scene.Drawable"); + let gizmoItems = []; + if (drw) { + drw.forEach(function (plist,material) { + gizmoItems.push({ + id:bg.manipulation.Selectable.GetIdentifier(), + type:bg.manipulation.SelectableType.GIZMO, + plist:plist, + material:material, + action:getAction(plist), + node:gizmoNode + }) + }); + } + + accept(gizmoItems); + }) + + .catch(function(err) { + reject(err); + }); + }); + } + + function rotationBetweenPoints(axis,p1,p2,origin,inc) { + if (!inc) inc = 0; + let v1 = new bg.Vector3(p2); + v1.sub(origin).normalize(); + let v2 = new bg.Vector3(p1); + v2.sub(origin).normalize(); + let dot = v1.dot(v2); + + let alpha = Math.acos(dot); + if (alpha>=inc || inc==0) { + if (inc!=0) { + alpha = (alpha>=2*inc) ? 2*inc:inc; + } + let sign = axis.dot(v1.cross(v2)); + if (sign<0) alpha *= -1.0; + let q = new bg.Quaternion(alpha,axis.x,axis.y,axis.z); + q.normalize(); + + if (!isNaN(q.x)) { + return q; + } + } + return new bg.Quaternion(0,0,1,0); + } + + class Gizmo extends bg.scene.Component { + constructor(gizmoPath,visible=true) { + super(); + this._gizmoPath = gizmoPath; + this._offset = new bg.Vector3(0); + this._visible = visible; + this._gizmoTransform = bg.Matrix4.Identity(); + this._gizmoP = bg.Matrix4.Identity(); + this._scale = 5; + this._minSize = 0.5; + } + + clone() { + let newGizmo = new Gizmo(this._gizmoPath); + newGizmo.offset.assign(this._offset); + newGizmo.visible = this._visible; + return newGizmo; + } + + get offset() { return this._offset; } + set offset(v) { this._offset = v; } + + get visible() { return this._visible; } + set visible(v) { this._visible = v; } + + get gizmoTransform() { + return this._gizmoTransform; + } + + beginDrag(action,pos) {} + + drag(action,startPos,endPos,camera) {} + + endDrag(action) {} + + findId(id) { + let result = null; + if (this._gizmoItems) { + this._gizmoItems.some((item) => { + if (item.id.r==id.r && item.id.g==id.g && item.id.b==id.b && item.id.a==id.a) { + result = item; + return true; + } + }); + } + return result; + } + + init() { + if (!this._error) { + this._gizmoItems = []; + loadGizmo(this.node.context,this._gizmoPath,this.node) + .then((gizmoItems) => { + this._gizmoItems = gizmoItems; + }) + + .catch((err) => { + this._error = true; + throw err; + }) + } + } + + frame(delta) { + + } + + display(pipeline,matrixState) { + if (!this._gizmoItems || !this.visible) return; + matrixState.modelMatrixStack.push(); + let modelview = new bg.Matrix4(matrixState.viewMatrixStack.matrix); + modelview.mult(matrixState.modelMatrixStack.matrix); + let s = modelview.position.magnitude() / this._scale; + matrixState.modelMatrixStack.matrix.setScale(s,s,s); + if (pipeline.effect instanceof bg.manipulation.ColorPickEffect && + (pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS || + pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS_SELECTION)) + { + let dt = pipeline.depthTest; + if (pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS_SELECTION) { // drawing gizmos in selection mode + pipeline.depthTest = true; + } + else { + pipeline.depthTest = false; + } + this._gizmoItems.forEach((item) => { + // The RGBA values are inverted because the alpha channel must be major than zero to + // produce any output in the framebuffer + if (item.plist.visible) { + pipeline.effect.pickId = new bg.Color(item.id.a/255,item.id.b/255,item.id.g/255,item.id.r/255); + pipeline.draw(item.plist); + } + }); + pipeline.depthTest = dt; + } + else if (pipeline.effect instanceof bg.manipulation.GizmoEffect) { + // Draw gizmo + this._gizmoItems.forEach((item) => { + if (item.plist.visible) { + pipeline.effect.texture = item.material.texture; + pipeline.effect.color = item.material.diffuse; + pipeline.draw(item.plist); + } + }) + } + matrixState.modelMatrixStack.pop(); + } + } + + function translateMatrix(gizmo,intersection) { + let matrix = new bg.Matrix4(gizmo.transform.matrix); + let rotation = matrix.rotation; + let origin = matrix.position; + + if (!gizmo._lastPickPoint) { + gizmo._lastPickPoint = intersection.ray.end; + gizmo._translateOffset = new bg.Vector3(origin); + gizmo._translateOffset.sub(intersection.ray.end); + } + + switch (Math.abs(gizmo.plane)) { + case bg.Axis.X: + matrix = bg.Matrix4.Translation(origin.x, + intersection.point.y + gizmo._translateOffset.y, + intersection.point.z + gizmo._translateOffset.z); + break; + case bg.Axis.Y: + matrix = bg.Matrix4.Translation(intersection.point.x + gizmo._translateOffset.x, + origin.y, + intersection.point.z + gizmo._translateOffset.z); + break; + case bg.Axis.Z: + matrix = bg.Matrix4.Translation(intersection.point.x + gizmo._translateOffset.x, + intersection.point.y + gizmo._translateOffset.y, + origin.z); + break; + } + + matrix.mult(rotation); + gizmo._lastPickPoint = intersection.point; + + return matrix; + } + + function rotateMatrix(gizmo,intersection,fine) { + let matrix = new bg.Matrix4(gizmo.transform.matrix); + let rotation = matrix.rotation; + let origin = matrix.position; + + if (!gizmo._lastPickPoint) { + gizmo._lastPickPoint = intersection.ray.end; + gizmo._translateOffset = new bg.Vector3(origin); + gizmo._translateOffset.sub(intersection.ray.end); + } + + if (!fine) { + let prevRotation = new bg.Matrix4(rotation); + rotation = rotationBetweenPoints(gizmo.planeAxis,gizmo._lastPickPoint,intersection.point,origin,bg.Math.degreesToRadians(22.5)); + if (rotation.x!=0 || rotation.y!=0 || rotation.z!=0 || rotation.w!=1) { + matrix = bg.Matrix4.Translation(origin) + .mult(rotation.getMatrix4()) + .mult(prevRotation); + gizmo._lastPickPoint = intersection.point; + } + } + else { + let prevRotation = new bg.Matrix4(rotation); + rotation = rotationBetweenPoints(gizmo.planeAxis,gizmo._lastPickPoint,intersection.point,origin); + if (rotation.x!=0 || rotation.y!=0 || rotation.z!=0 || rotation.w!=1) { + matrix = bg.Matrix4.Translation(origin) + .mult(rotation.getMatrix4()) + .mult(prevRotation); + gizmo._lastPickPoint = intersection.point; + } + } + + return matrix; + } + + function calculateClosestPlane(gizmo,matrixState) { + let cameraForward = matrixState.viewMatrixStack.matrix.forwardVector; + let upVector = matrixState.viewMatrixStack.matrix.upVector; + let xVector = new bg.Vector3(1,0,0); + let yVector = new bg.Vector3(0,1,0); + let zVector = new bg.Vector3(0,0,1); + let xVectorInv = new bg.Vector3(-1,0,0); + let yVectorInv = new bg.Vector3(0,-1,0); + let zVectorInv = new bg.Vector3(0,0,-1); + + let upAlpha = Math.acos(upVector.dot(yVector)); + if (upAlpha>0.9) { + gizmo.plane = bg.Axis.Y; + } + else { + let angles = [ + Math.acos(cameraForward.dot(xVector)), // x + Math.acos(cameraForward.dot(yVector)), // y + Math.acos(cameraForward.dot(zVector)), // z + Math.acos(cameraForward.dot(xVectorInv)), // -x + Math.acos(cameraForward.dot(yVectorInv)), // -y + Math.acos(cameraForward.dot(zVectorInv)) // -z + ]; + let min = angles[0]; + let planeIndex = 0; + angles.reduce(function(prev,v,index) { + if (v<min) { + planeIndex = index; + min = v; + } + }); + switch (planeIndex) { + case 0: + gizmo.plane = -bg.Axis.X; + break; + case 1: + gizmo.plane = bg.Axis.Y; + break; + case 2: + gizmo.plane = bg.Axis.Z; + break; + case 3: + gizmo.plane = bg.Axis.X; + break; + case 4: + gizmo.plane = -bg.Axis.Y; + break; + case 5: + gizmo.plane = -bg.Axis.Z; + break; + } + } + } + + class PlaneGizmo extends Gizmo { + constructor(path,visible=true) { + super(path,visible); + this._plane = bg.Axis.Y; + this._autoPlaneMode = true; + } + + get plane() { + return this._plane; + } + + set plane(a) { + this._plane = a; + } + + get autoPlaneMode() { + return this._autoPlaneMode; + } + + set autoPlaneMode(m) { + this._autoPlaneMode = m; + } + + get planeAxis() { + switch (Math.abs(this.plane)) { + case bg.Axis.X: + return new bg.Vector3(1,0,0); + case bg.Axis.Y: + return new bg.Vector3(0,1,0); + case bg.Axis.Z: + return new bg.Vector3(0,0,1); + } + } + + get gizmoTransform() { + let result = bg.Matrix4.Identity(); + switch (this.plane) { + case bg.Axis.X: + return bg.Matrix4.Rotation(bg.Math.degreesToRadians(90),0,0,-1) + case bg.Axis.Y: + break; + case bg.Axis.Z: + return bg.Matrix4.Rotation(bg.Math.degreesToRadians(90),1,0,0); + case -bg.Axis.X: + return bg.Matrix4.Rotation(bg.Math.degreesToRadians(90),0,0,1) + case -bg.Axis.Y: + return bg.Matrix4.Rotation(bg.Math.degreesToRadians(180),0,-1,0); + case -bg.Axis.Z: + return bg.Matrix4.Rotation(bg.Math.degreesToRadians(90),-1,0,0); + } + return result; + } + + clone() { + let newGizmo = new PlaneGizmo(this._gizmoPath); + newGizmo.offset.assign(this._offset); + newGizmo.visible = this._visible; + return newGizmo; + } + + init() { + super.init(); + this._gizmoP = bg.Matrix4.Translation(this.transform.matrix.position); + } + + display(pipeline,matrixState) { + if (!this._gizmoItems || !this.visible) return; + if (this.autoPlaneMode) { + calculateClosestPlane(this,matrixState); + } + if (!this._gizmoItems || !this.visible) return; + let modelview = new bg.Matrix4(matrixState.viewMatrixStack.matrix); + modelview.mult(matrixState.modelMatrixStack.matrix); + let s = modelview.position.magnitude() / this._scale; + s = s<this._minSize ? this._minSize : s; + let gizmoTransform = this.gizmoTransform; + gizmoTransform.setScale(s,s,s); + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack + .mult(gizmoTransform); + if (pipeline.effect instanceof bg.manipulation.ColorPickEffect && + (pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS || + pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS_SELECTION)) + { + let dt = pipeline.depthTest; + if (pipeline.opacityLayer & bg.base.OpacityLayer.GIZMOS_SELECTION) { // drawing gizmos in selection mode + pipeline.depthTest = true; + } + else { + pipeline.depthTest = false; + } + this._gizmoItems.forEach((item) => { + // The RGBA values are inverted because the alpha channel must be major than zero to + // produce any output in the framebuffer + if (item.plist.visible) { + pipeline.effect.pickId = new bg.Color(item.id.a/255,item.id.b/255,item.id.g/255,item.id.r/255); + pipeline.draw(item.plist); + } + }); + pipeline.depthTest = dt; + } + else if (pipeline.effect instanceof bg.manipulation.GizmoEffect) { + // Draw gizmo + this._gizmoItems.forEach((item) => { + if (item.plist.visible) { + pipeline.effect.texture = item.material.texture; + pipeline.effect.color = item.material.diffuse; + pipeline.draw(item.plist); + } + }) + } + matrixState.modelMatrixStack.pop(); + } + + beginDrag(action,pos) { + this._lastPickPoint = null; + } + + drag(action,startPos,endPos,camera) { + if (this.transform) { + let plane = new bg.physics.Plane(this.planeAxis); + let ray = bg.physics.Ray.RayWithScreenPoint(endPos,camera.projection,camera.viewMatrix,camera.viewport); + let intersection = bg.physics.Intersection.RayToPlane(ray,plane); + + if (intersection.intersects()) { + let matrix = new bg.Matrix4(this.transform.matrix); + this._gizmoP = bg.Matrix4.Translation(this.transform.matrix.position); + + switch (action) { + case bg.manipulation.GizmoAction.TRANSLATE: + matrix = translateMatrix(this,intersection); + break; + case bg.manipulation.GizmoAction.ROTATE: + matrix = rotateMatrix(this,intersection,false); + break; + case bg.manipulation.GizmoAction.ROTATE_FINE: + matrix = rotateMatrix(this,intersection,true); + break; + } + + this.transform.matrix = matrix; + } + } + } + + endDrag(action) { + this._lastPickPoint = null; + } + } + + class UnifiedGizmo extends Gizmo { + constructor(path,visible=true) { + super(path,visible); + this._translateSpeed = 0.005; + this._rotateSpeed = 0.005; + this._scaleSpeed = 0.001; + this._gizmoTransform = bg.Matrix4.Identity(); + } + + get gizmoTransform() { + return this._gizmoTransform; + } + + get translateSpeed() { return this._translateSpeed; } + set translateSpeed(s) { this._translateSpeed = s; } + + get rotateSpeed() { return this._rotateSpeed; } + set rotateSpeed(s) { this._rotateSpeed = s; } + + get scaleSpeed() { return this._scaleSpeed; } + set scaleSpeed(s) { this._scaleSpeed = s; } + + clone() { + let newGizmo = new PlaneGizmo(this._gizmoPath); + newGizmo.offset.assign(this._offset); + newGizmo.visible = this._visible; + return newGizmo; + } + + init() { + super.init(); + this._gizmoP = bg.Matrix4.Translation(this.transform.matrix.position); + this._gizmoTransform = this.transform.matrix.rotation; + } + + display(pipeline,matrixState) { + if (!this._gizmoItems || !this.visible) return; + super.display(pipeline,matrixState); + } + + beginDrag(action,pos) { + this._lastPickPoint = null; + } + + drag(action,startPos,endPos,camera) { + if (this.transform) { + if (!this._lastPickPoint) { + this._lastPickPoint = endPos; + } + + let matrix = new bg.Matrix4(this.transform.matrix); + this._gizmoP = bg.Matrix4.Translation(this.transform.matrix.position); + let diff = new bg.Vector2(this._lastPickPoint); + diff.sub(endPos); + + let matrixState = bg.base.MatrixState.Current(); + let modelview = new bg.Matrix4(matrixState.viewMatrixStack.matrix); + modelview.mult(matrixState.modelMatrixStack.matrix); + let s = modelview.position.magnitude() / this._scale; + s = s<this._minSize ? this._minSize : s; + let scale = matrix.getScale(); + + let scaleFactor = 1 - ((diff.x + diff.y) * this.scaleSpeed); + switch (action) { + case bg.manipulation.GizmoAction.SCALE: + matrix.scale(scaleFactor,scaleFactor,scaleFactor); + break; + case bg.manipulation.GizmoAction.TRANSLATE_X: + matrix.translate(-(diff.x + diff.y) * this.translateSpeed * s / scale.x, 0, 0); + break; + case bg.manipulation.GizmoAction.TRANSLATE_Y: + matrix.translate(0,-(diff.x + diff.y) * this.translateSpeed * s / scale.y, 0); + break; + case bg.manipulation.GizmoAction.TRANSLATE_Z: + matrix.translate(0, 0,-(diff.x + diff.y) * this.translateSpeed * s / scale.z); + break; + case bg.manipulation.GizmoAction.ROTATE_X: + matrix.rotate((diff.x + diff.y) * this.rotateSpeed, 1,0,0); + this._gizmoP.rotate((diff.x + diff.y) * this.rotateSpeed, 1,0,0); + break; + case bg.manipulation.GizmoAction.ROTATE_Y: + matrix.rotate((diff.x + diff.y) * this.rotateSpeed, 0,1,0); + this._gizmoP.rotate((diff.x + diff.y) * this.rotateSpeed, 0,1,0); + break; + case bg.manipulation.GizmoAction.ROTATE_Z: + matrix.rotate((diff.x + diff.y) * this.rotateSpeed, 0,0,1); + this._gizmoP.rotate((diff.x + diff.y) * this.rotateSpeed, 0,0,1) + break; + case bg.manipulation.GizmoAction.SCALE_X: + matrix.scale(scaleFactor,1,1); + break; + case bg.manipulation.GizmoAction.SCALE_Y: + matrix.scale(1,scaleFactor,1); + break; + case bg.manipulation.GizmoAction.SCALE_Z: + matrix.scale(1,1,scaleFactor); + break; + } + + this.transform.matrix = matrix; + this._lastPickPoint = endPos; + } + } + + endDrag(action) { + this._lastPickPoint = null; + } + } + + bg.manipulation.GizmoMode = { + SELECT: 0, + TRANSLATE: 1, + ROTATE: 2, + SCALE: 3, + TRANSFORM: 4 + }; + + class MultiModeGizmo extends UnifiedGizmo { + constructor(unified,translate,rotate,scale) { + super(unified); + this.mode = bg.manipulation.GizmoMode.TRANSFORM; + this._transformPath = unified; + this._translatePath = translate; + this._rotatePath = rotate; + this._scalePath = scale; + this._gizmoPath = unified; + } + + get visible() { + return this._mode!=bg.manipulation.GizmoMode.SELECT && this._visible; + } + set visible(v) { this._visible = v; } + + get mode() { return this._mode; } + set mode(m) { + this._mode = m; + this._gizmoItems = []; + switch (m) { + case bg.manipulation.GizmoMode.SELECT: + this._gizmoPath = ""; + break; + case bg.manipulation.GizmoMode.TRANSLATE: + this._gizmoPath = this._translatePath; + break; + case bg.manipulation.GizmoMode.ROTATE: + this._gizmoPath = this._rotatePath; + break; + case bg.manipulation.GizmoMode.SCALE: + this._gizmoPath = this._scalePath; + break; + case bg.manipulation.GizmoMode.TRANSFORM: + this._gizmoPath = this._transformPath; + break; + } + if (this._gizmoPath) { + loadGizmo(this.node.context,this._gizmoPath,this.node) + .then((gizmoItems) => { + this._gizmoItems = gizmoItems; + bg.emitImageLoadEvent(); + }) + + .catch((err) => { + this._error = true; + throw err; + }) + } + } + } + + // All gizmo types share the same typeId, because a node can only contain one gizmo + bg.scene.registerComponent(bg.manipulation,Gizmo,"bg.manipulation.Gizmo"); + bg.scene.registerComponent(bg.manipulation,PlaneGizmo,"bg.manipulation.Gizmo"); + bg.scene.registerComponent(bg.manipulation,UnifiedGizmo,"bg.manipulation.Gizmo"); + bg.scene.registerComponent(bg.manipulation,MultiModeGizmo,"bg.manipulation.Gizmo"); + +})(); +(function() { + + let shader = {}; + + function initShaders() { + shader[bg.webgl1.EngineId] = { + vertex: ` + attribute vec3 inVertex; + + uniform mat4 inModelMatrix; + uniform mat4 inViewMatrix; + uniform mat4 inProjectionMatrix; + + void main() { + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + } + `, + + fragment:` + precision highp float; + + uniform vec4 inColorId; + + void main() { + gl_FragColor = inColorId; + } + ` + }; + } + + class ColorPickEffect extends bg.base.Effect { + constructor(context) { + super(context); + initShaders(); + } + + get inputVars() { + return { + vertex:'inVertex' + } + } + + set matrixState(m) { this._matrixState = m; } + get matrixState() { + return this._matrixState; + } + + set pickId(p) { this._pickId = p; } + get pickId() { return this._pickId || bg.Color.Transparent(); } + + get shader() { + if (!this._shader) { + this._shader = new bg.base.Shader(this.context); + this._shader.addShaderSource(bg.base.ShaderType.VERTEX, shader[bg.webgl1.EngineId].vertex); + this._shader.addShaderSource(bg.base.ShaderType.FRAGMENT, shader[bg.webgl1.EngineId].fragment); + this._shader.link(); + if (!this._shader.status) { + console.log(this._shader.compileError); + console.log(this._shader.linkError); + } + else { + this._shader.initVars([ + 'inVertex' + ],[ + 'inModelMatrix', + 'inViewMatrix', + 'inProjectionMatrix', + 'inColorId' + ]); + } + } + return this._shader + } + + setupVars() { + this.shader.setMatrix4('inModelMatrix',this.matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',new bg.Matrix4(this.matrixState.viewMatrixStack.matrixConst)); + this.shader.setMatrix4('inProjectionMatrix',this.matrixState.projectionMatrixStack.matrixConst); + this.shader.setVector4('inColorId', this.pickId); + } + + } + + bg.manipulation.ColorPickEffect = ColorPickEffect; + + class FindPickIdVisitor extends bg.scene.NodeVisitor { + constructor(target) { + super() + this._target = target; + } + + get target() { return this._target; } + set target(t) { this._target = t; this._result = null; } + + get result() { return this._result; } + + visit(node) { + let selectable = node.component("bg.manipulation.Selectable"); + let gizmo = node.component("bg.manipulation.Gizmo"); + if (gizmo && !gizmo.visible) { + gizmo = null; + } + this._result = this._result || + (selectable && selectable.findId(this.target)) || + (gizmo && gizmo.findId(this.target)); + } + } + + bg.manipulation.FindPickIdVisitor = FindPickIdVisitor; + + class MousePicker extends bg.app.ContextObject { + + constructor(context) { + super(context); + } + + get pipeline() { + if (!this._pipeline) { + this._pipeline = new bg.base.Pipeline(this.context); + + this._pipeline.effect = new ColorPickEffect(this.context); + this._renderSurface = new bg.base.TextureSurface(this.context); + this._renderSurface.create(); + this._pipeline.renderSurface = this._renderSurface; + this._pipeline.clearColor = new bg.Color(0,0,0,0); + } + return this._pipeline; + } + + get matrixState() { + if (!this._matrixState) { + this._matrixState = new bg.base.MatrixState(); + } + return this._matrixState; + } + + get drawVisitor() { + if (!this._drawVisitor) { + this._drawVisitor = new bg.scene.DrawVisitor(this.pipeline,this.matrixState); + } + return this._drawVisitor; + } + + pick(sceneRoot,camera,mousePosition) { + let restorePipeline = bg.base.Pipeline.Current(); + let restoreMatrixState = bg.base.MatrixState.Current(); + bg.base.Pipeline.SetCurrent(this.pipeline); + bg.base.MatrixState.SetCurrent(this.matrixState); + this.pipeline.viewport = camera.viewport; + this.pipeline.effect.matrixState = this.matrixState; + + + this.pipeline.clearBuffers(bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH); + + this.matrixState.projectionMatrixStack.set(camera.projection); + this.matrixState.viewMatrixStack.set(camera.viewMatrix); + + let opacityLayer = this.pipeline.opacityLayer; + this.pipeline.opacityLayer = bg.base.OpacityLayer.SELECTION; + sceneRoot.accept(this.drawVisitor); + this.pipeline.opacityLayer = bg.base.OpacityLayer.GIZMOS_SELECTION; + this.pipeline.clearBuffers(bg.base.ClearBuffers.DEPTH); + sceneRoot.accept(this.drawVisitor); + this.pipeline.opacityLayer = opacityLayer; + + let buffer = this.pipeline.renderSurface.readBuffer(new bg.Viewport(mousePosition.x, mousePosition.y,1,1)); + let pickId = { + r: buffer[3], + g: buffer[2], + b: buffer[1], + a: buffer[0] + }; + + let findIdVisitor = new FindPickIdVisitor(pickId); + sceneRoot.accept(findIdVisitor); + + if (restorePipeline) { + bg.base.Pipeline.SetCurrent(restorePipeline); + } + if (restoreMatrixState) { + bg.base.MatrixState.SetCurrent(restoreMatrixState); + } + + return findIdVisitor.result; + } + } + + bg.manipulation.MousePicker = MousePicker; + +})(); + +(function() { + + let s_r = 0; + let s_g = 0; + let s_b = 0; + let s_a = 0; + + function incrementIdentifier() { + if (s_r==255) { + s_r = 0; + incG(); + } + else { + ++s_r; + } + } + + function incG() { + if (s_g==255) { + s_g = 0; + incB(); + } + else { + ++s_g; + } + } + + function incB() { + if (s_b==255) { + s_b = 0; + incA(); + } + else { + ++s_b; + } + } + + function incA() { + if (s_a==255) { + s_a = 0; + bg.log("WARNING: Maximum number of picker identifier reached."); + } + else { + ++s_a; + } + } + + function getIdentifier() { + incrementIdentifier(); + return { r:s_r, g:s_g, b:s_g, a:s_a }; + } + + let s_selectMode = false; + + bg.manipulation.SelectableType = { + PLIST:1, + GIZMO:2, + GIZMO_ICON:3 + }; + + let s_selectionIconPlist = null; + function selectionIconPlist() { + if (!s_selectionIconPlist) { + s_selectionIconPlist = bg.scene.PrimitiveFactory.SpherePolyList(this.node.context,0.5); + } + return s_selectionIconPlist; + } + + let g_selectableIcons = [ + "bg.scene.Camera", + "bg.scene.Light", + "bg.scene.Transform", + "bg.scene.TextRect" + ]; + + + class Selectable extends bg.scene.Component { + static SetSelectableIcons(sel) { + g_selectableIcons = sel; + } + + static AddSelectableIcon(sel) { + if (g_selectableIcons.indexOf(sel)==-1) { + g_selectableIcons.push(sel); + } + } + + static RemoveSelectableIcon(sel) { + let index = g_selectableIcons.indexOf(sel); + if (index>=0) { + g_selectableIcons.splice(index,1); + } + } + + static SetSelectMode(m) { s_selectMode = m; } + + static GetIdentifier() { return getIdentifier(); } + + constructor() { + super(); + this._initialized = false; + this._selectablePlist = []; + } + + clone() { + return new Selectable(); + } + + buildIdentifier() { + this._initialized = false; + this._selectablePlist = []; + } + + findId(id) { + let result = null; + this._selectablePlist.some((item) => { + if (item.id.r==id.r && item.id.g==id.g && item.id.b==id.b && item.id.a==id.a) { + result = item; + return true; + } + }); + return result; + } + + frame(delta) { + if (!this._initialized && this.drawable) { + this.drawable.forEach((plist,material) => { + let id = getIdentifier(); + this._selectablePlist.push({ + id:id, + type:bg.manipulation.SelectableType.PLIST, + plist:plist, + material:material, + drawable:this.drawable, + node:this.node + }); + }); + this._initialized = true; + } + else if (!this._initialized) { + // Use icon to pick item + let id = getIdentifier(); + this._selectablePlist.push({ + id:id, + type:bg.manipulation.SelectableType.GIZMO_ICON, + plist:null, + material:null, + drawable:null, + node:this.node + }); + this._initialized = true; + } + } + + display(pipeline,matrixState) { + if (pipeline.effect instanceof bg.manipulation.ColorPickEffect && + pipeline.opacityLayer & bg.base.OpacityLayer.SELECTION) + { + let selectableByIcon = g_selectableIcons.some((componentType) => { + return this.node.component(componentType)!=null; + }); + this._selectablePlist.forEach((item) => { + let pickId = new bg.Color(item.id.a/255,item.id.b/255,item.id.g/255,item.id.r/255); + if (item.plist && item.plist.visible) { + // The RGBA values are inverted because the alpha channel must be major than zero to + // produce any output in the framebuffer + pipeline.effect.pickId = pickId; + pipeline.draw(item.plist); + } + else if (!item.plist && selectableByIcon) { + let s = matrixState.cameraDistanceScale * 0.1; + pipeline.effect.pickId = pickId; + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack.scale(s,s,s); + pipeline.draw(selectionIconPlist.apply(this)); + matrixState.modelMatrixStack.pop(); + } + }); + } + } + } + + bg.scene.registerComponent(bg.manipulation,Selectable,"bg.manipulation.Selectable"); +})(); +(function() { + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class BorderDetectionEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + + let vertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + let fragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + vertex.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + { name:"fsTexCoord", dataType:"vec2", role:"out" } + ]); + + fragment.addParameter([ + lib().inputs.material.texture, + { name:"inTexSize", dataType:"vec2", role:"value" }, + { name:"inConvMatrix", dataType:"float", role:"value", vec:9 }, + { name:"inBorderColor", dataType:"vec4", role:"value" }, + { name:"inBorderWidth", dataType:"float", role:"value" }, + { name:"fsTexCoord", dataType:"vec2", role:"in" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + vertex.setMainBody(` + gl_Position = vec4(inVertex,1.0); + fsTexCoord = inTex0; + `); + fragment.addFunction(lib().functions.utils.applyConvolution); + fragment.setMainBody(` + vec4 selectionColor = applyConvolution(inTexture,fsTexCoord,inTexSize,inConvMatrix,inBorderWidth); + if (selectionColor.r!=0.0 && selectionColor.g!=0.0 && selectionColor.b!=0.0) { + gl_FragColor = inBorderColor; + } + else { + discard; + } + `); + } + + this.setupShaderSource([ + vertex, + fragment + ]); + + this._highlightColor = bg.Color.White(); + this._borderWidth = 2; + } + + get highlightColor() { return this._highlightColor; } + set highlightColor(c) { this._highlightColor = c; } + + get borderWidth() { return this._borderWidth; } + set borderWidth(w) { this._borderWidth = w; } + + setupVars() { + let texture = null; + if (this._surface instanceof bg.base.Texture) { + texture = this._surface; + } + else if (this._surface instanceof bg.base.RenderSurface) { + texture = this._surface.getTexture(0); + } + + if (texture) { + this.shader.setTexture("inTexture",texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2("inTexSize",texture.size); + } + + let convMatrix = [ + 0, 1, 0, + 1,-4, 1, + 0, 1, 0 + ]; + this.shader.setValueFloatPtr("inConvMatrix",convMatrix); + this.shader.setVector4("inBorderColor", this._highlightColor); + this.shader.setValueFloat("inBorderWidth", this._borderWidth); + } + } + + bg.manipulation.BorderDetectionEffect = BorderDetectionEffect; + + let s_plainColorVertex = null; + let s_plainColorFragment = null; + + function plainColorVertex() { + if (!s_plainColorVertex) { + s_plainColorVertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_plainColorVertex.addParameter(lib().inputs.buffers.vertex); + s_plainColorVertex.addParameter(lib().inputs.matrix.all); + + if (bg.Engine.Get().id=="webgl1") { + s_plainColorVertex.setMainBody(` + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + `); + } + } + return s_plainColorVertex; + } + + function plainColorFragment() { + if (!s_plainColorFragment) { + s_plainColorFragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + s_plainColorFragment.addParameter([ + { name:"inColor", dataType:"vec4", role:"value" }, + { name:"inSelectMode", dataType:"int", role:"value" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + s_plainColorFragment.setMainBody(` + if (inSelectMode==0) { + discard; + } + else { + gl_FragColor = inColor; + } + `); + } + } + return s_plainColorFragment; + } + + class PlainColorEffect extends bg.base.Effect { + constructor(context) { + super(context); + + let sources = [ + plainColorVertex(), + plainColorFragment() + ]; + this.setupShaderSource(sources); + } + + beginDraw() { + bg.Math.seed = 1; + } + + setupVars() { + this._baseColor = new bg.Color(bg.Math.seededRandom(),bg.Math.seededRandom(),bg.Math.seededRandom(),1); + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + this.shader.setMatrix4('inModelMatrix',matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',viewMatrix); + this.shader.setMatrix4('inProjectionMatrix',matrixState.projectionMatrixStack.matrixConst); + this.shader.setVector4('inColor', this._baseColor); + this.shader.setValueInt("inSelectMode", this.material.selectMode); + } + } + + bg.manipulation.PlainColorEffect = PlainColorEffect; + + function buildOffscreenPipeline() { + let offscreenPipeline = new bg.base.Pipeline(this.context); + + let renderSurface = new bg.base.TextureSurface(this.context); + offscreenPipeline.effect = new bg.manipulation.PlainColorEffect(this.context); + let colorAttachments = [ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]; + renderSurface.create(colorAttachments); + offscreenPipeline.renderSurface = renderSurface; + + return offscreenPipeline; + } + + class SelectionHighlight extends bg.app.ContextObject { + + constructor(context) { + super(context); + + this._offscreenPipeline = buildOffscreenPipeline.apply(this); + + this._pipeline = new bg.base.Pipeline(this.context); + this._pipeline.textureEffect = new bg.manipulation.BorderDetectionEffect(this.context); + + this._matrixState = new bg.base.MatrixState(); + + this._drawVisitor = new bg.scene.DrawVisitor(this._offscreenPipeline,this._matrixState); + this._drawVisitor.forceDraw = false; + } + + get highlightColor() { return this._pipeline.textureEffect.highlightColor; } + set highlightColor(c) { this._pipeline.textureEffect.highlightColor = c; } + + get borderWidth() { return this._pipeline.textureEffect.borderWidth; } + set borderWidth(w) { this._pipeline.textureEffect.borderWidth = w; } + + get drawInvisiblePolyList() { return this._drawVisitor.forceDraw; } + set drawInvisiblePolyList(d) { this._drawVisitor.forceDraw = d; } + + drawSelection(sceneRoot,camera) { + let restorePipeline = bg.base.Pipeline.Current(); + let restoreMatrixState = bg.base.MatrixState.Current(); + this._offscreenPipeline.viewport = camera.viewport; + this._pipeline.viewport = camera.viewport; + + bg.base.Pipeline.SetCurrent(this._offscreenPipeline); + bg.base.MatrixState.SetCurrent(this._matrixState); + this._offscreenPipeline.clearBuffers(bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH); + this._matrixState.projectionMatrixStack.set(camera.projection); + this._matrixState.viewMatrixStack.set(camera.viewMatrix); + this._matrixState.modelMatrixStack.identity(); + sceneRoot.accept(this._drawVisitor); + + let texture = this._offscreenPipeline.renderSurface.getTexture(0); + bg.base.Pipeline.SetCurrent(this._pipeline); + this._pipeline.blend = true; + this._pipeline.blendMode = bg.base.BlendMode.ADD; + this._pipeline.drawTexture(texture); + + if (restorePipeline) { + bg.base.Pipeline.SetCurrent(restorePipeline); + } + if (restoreMatrixState) { + bg.base.MatrixState.SetCurrent(restoreMatrixState); + } + } + } + + bg.manipulation.SelectionHighlight = SelectionHighlight; + +})(); +(function() { + + let Action = { + ROTATE:0, + PAN:1, + ZOOM:2 + }; + + function getOrbitAction(cameraCtrl) { + let left = bg.app.Mouse.LeftButton(), + middle = bg.app.Mouse.MiddleButton(), + right = bg.app.Mouse.RightButton(); + + switch (true) { + case left==cameraCtrl._rotateButtons.left && + middle==cameraCtrl._rotateButtons.middle && + right==cameraCtrl._rotateButtons.right: + return Action.ROTATE; + case left==cameraCtrl._panButtons.left && + middle==cameraCtrl._panButtons.middle && + right==cameraCtrl._panButtons.right: + return Action.PAN; + case left==cameraCtrl._zoomButtons.left && + middle==cameraCtrl._zoomButtons.middle && + right==cameraCtrl._zoomButtons.right: + return Action.ZOOM; + } + } + + function buildPlist(context,vertex,color) { + let plist = new bg.base.PolyList(context); + let normal = []; + let texCoord0 = []; + let index = []; + let currentIndex = 0; + for (let i=0; i<vertex.length; i+=3) { + normal.push(0); normal.push(0); normal.push(1); + texCoord0.push(0); texCoord0.push(0); + index.push(currentIndex++); + } + plist.vertex = vertex; + plist.normal = normal; + plist.texCoord0 = texCoord0; + plist.color = color; + plist.index = index; + plist.drawMode = bg.base.DrawMode.LINES; + plist.build(); + return plist; + } + + function getGizmo() { + let x = this.minX; + let X = this.maxX; + let y = this.minY; + let Y = this.maxY; + let z = this.minZ; + let Z = this.maxZ; + let vertex = [ + x,y,z, X,y,z, X,y,z, X,Y,z, X,Y,z, x,Y,z, x,Y,z, x,y,z, // back + x,y,Z, X,y,Z, X,y,Z, X,Y,Z, X,Y,Z, x,Y,Z, x,Y,Z, x,y,Z, // front + x,y,z, x,y,Z, // edge 1 + X,y,z, X,y,Z, // edge 2 + X,Y,z, X,Y,Z, // edge 3 + x,Y,z, x,Y,Z // edge 4 + ]; + let color = []; + for (let i = 0; i<vertex.length; i+=3) { + color.push(this._limitGizmoColor.r); + color.push(this._limitGizmoColor.g); + color.push(this._limitGizmoColor.b); + color.push(this._limitGizmoColor.a); + } + if (!this._plist) { + this._plist = buildPlist(this.node.context,vertex,color); + } + else { + this._plist.updateBuffer(bg.base.BufferType.VERTEX,vertex); + this._plist.updateBuffer(bg.base.BufferType.COLOR,color); + } + return this._plist; + } + + class OrbitCameraController extends bg.scene.Component { + static DisableAll(sceneRoot) { + let ctrl = sceneRoot.component("bg.manipulation.OrbitCameraController"); + if (ctrl) { + ctrl.enabled = false; + } + sceneRoot.children.forEach((ch) => OrbitCameraController.DisableAll(ch)); + } + + static SetUniqueEnabled(orbitCameraController,sceneRoot) { + OrbitCameraController.DisableAll(sceneRoot); + orbitCameraController.enabled = true; + } + + constructor() { + super(); + + this._rotateButtons = { left:true, middle:false, right:false }; + this._panButtons = { left:false, middle:false, right:true }; + this._zoomButtons = { left:false, middle:true, right:false }; + + this._rotation = new bg.Vector2(); + this._distance = 5; + this._center = new bg.Vector3(); + this._rotationSpeed = 0.2; + this._forward = 0; + this._left = 0; + this._wheelSpeed = 1; + this._minFocus = 2; + + this._minPitch = 0.1; + this._maxPitch = 85.0; + this._minDistance = 0.4; + this._maxDistance = 24.0; + + this._maxX = 15; + this._minX = -15; + this._minY = 0.1; + this._maxY = 2.0; + this._maxZ = 15; + this._minZ = -15; + + this._displacementSpeed = 0.1; + + this._enabled = true; + + // Do not serialize/deserialize this: + this._keys = {}; + this._showLimitGizmo = true; + this._limitGizmoColor = bg.Color.Green(); + + // This is used for orthographic projections + this._viewWidth = 50; + + this._lastTouch = []; + } + + clone() { + let result = new OrbitCameraController(); + let compData = {}; + this.serialize(compData,[],""); + result.deserialize(null,compData,""); + return result; + } + + setRotateButtons(left,middle,right) { + this._rotateButtons = { left:left, middle:middle, right:right }; + } + + setPanButtons(left,middle,right) { + this._panButtons = { left:left, middle:middle, right:right }; + } + + setZoomButtons(left,middle,right) { + this._zoomButtons = { left:left, middle:middle, right:right }; + } + + get rotation() { return this._rotation; } + set rotation(r) { this._rotation = r; } + get distance() { return this._distance; } + set distance(d) { this._distance = d; } + get center() { return this._center; } + set center(c) { this._center = c; } + get whellSpeed() { this._wheelSpeed; } + set wheelSpeed(w) { this._wheelSpeed = w; } + + get viewWidth() { return this._viewWidth; } + + get minCameraFocus() { return this._minFocus; } + set minCameraFocus(f) { this._minFocus = f; } + get minPitch() { return this._minPitch; } + set minPitch(p) { this._minPitch = p; } + get maxPitch() { return this._maxPitch; } + set maxPitch(p) { this._maxPitch = p; } + get minDistance() { return this._minDistance; } + set minDistance(d) { this._minDistance = d; } + get maxDistance() { return this._maxDistance; } + set maxDistance(d) { this._maxDistance = d; } + + get minX() { return this._minX; } + get maxX() { return this._maxX; } + get minY() { return this._minY; } + get maxY() { return this._maxY; } + get minZ() { return this._minZ; } + get maxZ() { return this._maxZ; } + + set minX(val) { this._minX = val; } + set maxX(val) { this._maxX = val; } + set minY(val) { this._minY = val; } + set maxY(val) { this._maxY = val; } + set minZ(val) { this._minZ = val; } + set maxZ(val) { this._maxZ = val; } + + get displacementSpeed() { return this._displacementSpeed; } + set displacementSpeed(s) { this._displacementSpeed = s; } + + get enabled() { return this._enabled; } + set enabled(e) { this._enabled = e; } + + get showLimitGizmo() { return this._showLimitGizmo; } + set showLimitGizmo(l) { this._showLimitGizmo = l; } + get limitGizmoColor() { return this._limitGizmoColor; } + set limitGizmoColor(c) { this._limitGizmoColor = c; } + + displayGizmo(pipeline,matrixState) { + if (!this._showLimitGizmo) return; + let plist = getGizmo.apply(this); + matrixState.modelMatrixStack.push(); + matrixState.modelMatrixStack.identity(); + if (plist) { + pipeline.draw(plist); + } + matrixState.modelMatrixStack.pop(); + } + + serialize(componentData,promises,url) { + super.serialize(componentData,promises,url); + componentData.rotateButtons = this._rotateButtons; + componentData.panButtons = this._panButtons; + componentData.zoomButtons = this._zoomButtons; + componentData.rotation = this._rotation.toArray(); + componentData.distance = this._distance; + componentData.center = this._center.toArray(); + componentData.rotationSpeed = this._rotationSpeed; + componentData.forward = this._forward; + componentData.left = this._left; + componentData.wheelSpeed = this._wheelSpeed; + componentData.minFocus = this._minFocus; + componentData.minPitch = this._minPitch; + componentData.maxPitch = this._maxPitch; + componentData.minDistance = this._minDistance; + componentData.maxDistance = this._maxDistance; + componentData.maxX = this._maxX; + componentData.minX = this._minX; + componentData.minY = this._minY; + componentData.maxY = this._maxY; + componentData.maxZ = this._maxZ; + componentData.minZ = this._minZ; + componentData.displacementSpeed = this._displacementSpeed; + componentData.enabled = this._enabled; + } + + deserialize(context,componentData,url) { + this._rotateButtons = componentData.rotateButtons || this._rotateButtons; + this._panButtons = componentData.panButtons || this._panButtons; + this._zoomButtons = componentData.zoomButtons || this._zoomButtons; + this._rotation = new bg.Vector2(componentData.rotation) || this._rotation; + this._distance = componentData.distance!==undefined ? componentData.distance : this._distance; + this._center = new bg.Vector3(componentData.center) || this._center; + this._rotationSpeed = componentData.rotationSpeed!==undefined ? componentData.rotationSpeed : this._rotationSpeed; + this._forward = componentData.forward!==undefined ? componentData.forward : this._forward; + this._left = componentData.left!==undefined ? componentData.left : this._left; + this._wheelSpeed = componentData.wheelSpeed!==undefined ? componentData.wheelSpeed : this._wheelSpeed; + this._minFocus = componentData.minFocus!==undefined ? componentData.minFocus : this._minFocus; + this._minPitch = componentData.minPitch!==undefined ? componentData.minPitch : this._minPitch; + this._maxPitch = componentData.maxPitch!==undefined ? componentData.maxPitch : this._maxPitch; + this._minDistance = componentData.minDistance!==undefined ? componentData.minDistance : this._minDistance; + this._maxDistance = componentData.maxDistance!==undefined ? componentData.maxDistance : this._maxDistance; + this._maxX = componentData.maxX!==undefined ? componentData.maxX : this._maxX; + this._minX = componentData.minX!==undefined ? componentData.minX : this._minX; + this._minY = componentData.minY!==undefined ? componentData.minY : this._minY; + this._maxY = componentData.maxY!==undefined ? componentData.maxY : this._maxY; + this._maxZ = componentData.maxZ!==undefined ? componentData.maxZ : this._maxZ; + this._minZ = componentData.minZ!==undefined ? componentData.minZ : this._minZ; + this._displacementSpeed = componentData.displacementSpeed!==undefined ? componentData.displacementSpeed : this._displacementSpeed; + this._enabled = componentData.enabled!==undefined ? componentData.enabled : this._enabled; + } + + frame(delta) { + let orthoStrategy = this.camera && typeof(this.camera.projectionStrategy)=="object" && + this.camera.projectionStrategy instanceof bg.scene.OrthographicProjectionStrategy ? + this.camera.projectionStrategy : null; + + + if (this.transform && this.enabled) { + let forward = this.transform.matrix.forwardVector; + let left = this.transform.matrix.leftVector; + forward.scale(this._forward); + left.scale(this._left); + this._center.add(forward).add(left); + + let pitch = this._rotation.x>this._minPitch ? this._rotation.x:this._minPitch; + pitch = pitch<this._maxPitch ? pitch : this._maxPitch; + this._rotation.x = pitch; + + this._distance = this._distance>this._minDistance ? this._distance:this._minDistance; + this._distance = this._distance<this._maxDistance ? this._distance:this._maxDistance; + + if (this._mouseButtonPressed) { + let displacement = new bg.Vector3(); + if (this._keys[bg.app.SpecialKey.UP_ARROW]) { + displacement.add(this.transform.matrix.backwardVector); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + } + if (this._keys[bg.app.SpecialKey.DOWN_ARROW]) { + displacement.add(this.transform.matrix.forwardVector); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + } + if (this._keys[bg.app.SpecialKey.LEFT_ARROW]) { + displacement.add(this.transform.matrix.leftVector); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + } + if (this._keys[bg.app.SpecialKey.RIGHT_ARROW]) { + displacement.add(this.transform.matrix.rightVector); + bg.app.MainLoop.singleton.windowController.postRedisplay(); + } + displacement.scale(this._displacementSpeed); + this._center.add(displacement); + } + + if (this._center.x<this._minX) this._center.x = this._minX; + else if (this._center.x>this._maxX) this._center.x = this._maxX; + + if (this._center.y<this._minY) this._center.y = this._minY; + else if (this._center.y>this._maxY) this._center.y = this._maxY; + + if (this._center.z<this._minZ) this._center.z = this._minZ; + else if (this._center.z>this._maxZ) this._center.z = this._maxZ; + + this.transform.matrix + .identity() + .translate(this._center) + .rotate(bg.Math.degreesToRadians(this._rotation.y), 0,1,0) + .rotate(bg.Math.degreesToRadians(pitch), -1,0,0); + + if (orthoStrategy) { + orthoStrategy.viewWidth = this._viewWidth; + } + else { + this.transform.matrix.translate(0,0,this._distance); + } + } + + if (this.camera) { + this.camera.focus = this._distance>this._minFocus ? this._distance:this._minFocus; + + } + } + + mouseDown(evt) { + if (!this.enabled) return; + this._mouseButtonPressed = true; + this._lastPos = new bg.Vector2(evt.x,evt.y); + } + + mouseUp(evt) { + this._mouseButtonPressed = false; + } + + mouseDrag(evt) { + if (this.transform && this._lastPos && this.enabled) { + let delta = new bg.Vector2(this._lastPos.y - evt.y, + this._lastPos.x - evt.x); + this._lastPos.set(evt.x,evt.y); + let orthoStrategy = this.camera && typeof(this.camera.projectionStrategy)=="object" && + this.camera.projectionStrategy instanceof bg.scene.OrthographicProjectionStrategy ? + true : false; + + switch (getOrbitAction(this)) { + case Action.ROTATE: + delta.x = delta.x * -1; + this._rotation.add(delta.scale(0.5)); + break; + case Action.PAN: + let up = this.transform.matrix.upVector; + let left = this.transform.matrix.leftVector; + + if (orthoStrategy) { + up.scale(delta.x * -0.0005 * this._viewWidth); + left.scale(delta.y * -0.0005 * this._viewWidth); + } + else { + up.scale(delta.x * -0.001 * this._distance); + left.scale(delta.y * -0.001 * this._distance); + } + this._center.add(up).add(left); + break; + case Action.ZOOM: + this._distance += delta.x * 0.01 * this._distance; + this._viewWidth += delta.x * 0.01 * this._viewWidth; + if (this._viewWidth<0.5) this._viewWidth = 0.5; + break; + } + } + } + + mouseWheel(evt) { + if (!this.enabled) return; + let mult = this._distance>0.01 ? this._distance:0.01; + let wMult = this._viewWidth>1 ? this._viewWidth:1; + this._distance += evt.delta * 0.001 * mult * this._wheelSpeed; + this._viewWidth += evt.delta * 0.0001 * wMult * this._wheelSpeed; + if (this._viewWidth<0.5) this._viewWidth = 0.5; + } + + touchStart(evt) { + if (!this.enabled) return; + this._lastTouch = evt.touches; + } + + touchMove(evt) { + if (this._lastTouch.length==evt.touches.length && this.transform && this.enabled) { + if (this._lastTouch.length==1) { + // Rotate + let last = this._lastTouch[0]; + let t = evt.touches[0]; + let delta = new bg.Vector2((last.y - t.y) * -1.0, last.x - t.x); + + this._rotation.add(delta.scale(0.5)); + } + else if (this._lastTouch.length==2) { + // Pan/zoom + let l0 = this._lastTouch[0]; + let l1 = this._lastTouch[1]; + let t0 = null; + let t1 = null; + evt.touches.forEach((touch) => { + if (touch.identifier==l0.identifier) { + t0 = touch; + } + else if (touch.identifier==l1.identifier) { + t1 = touch; + } + }); + let dist0 = Math.round((new bg.Vector2(l0.x,l0.y)).sub(new bg.Vector3(l1.x,l1.y)).magnitude()); + let dist1 = Math.round((new bg.Vector2(t0.x,t0.y)).sub(new bg.Vector3(t1.x,t1.y)).magnitude()); + let delta = new bg.Vector2(l0.y - t0.y, l1.x - t1.x); + let up = this.transform.matrix.upVector; + let left = this.transform.matrix.leftVector; + + up.scale(delta.x * -0.001 * this._distance); + left.scale(delta.y * -0.001 * this._distance); + this._center.add(up).add(left); + + this._distance += (dist0 - dist1) * 0.005 * this._distance; + } + } + this._lastTouch = evt.touches; + } + + keyDown(evt) { + if (!this.enabled) return; + this._keys[evt.key] = true; + bg.app.MainLoop.singleton.windowController.postRedisplay(); + } + + keyUp(evt) { + if (!this.enabled) return; + this._keys[evt.key] = false; + } + } + + class FPSCameraController extends bg.scene.Component { + + } + + class TargetCameraController extends bg.scene.Component { + + } + + bg.scene.registerComponent(bg.manipulation,OrbitCameraController,"bg.manipulation.OrbitCameraController"); + bg.scene.registerComponent(bg.manipulation,FPSCameraController,"bg.manipulation.FPSCameraController"); + bg.scene.registerComponent(bg.manipulation,TargetCameraController,"bg.manipulation.TargetCameraController"); + +})(); + +bg.tools = { + +}; + +(function() { + class BoundingBox { + constructor(drawableOrPlist, transformMatrix) { + this._min = new bg.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE); + this._max = new bg.Vector3(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE); + this._center = null; + this._size = null; + this._halfSize = null; + + this._vertexArray = []; + transformMatrix = transformMatrix || bg.Matrix4.Identity(); + if (drawableOrPlist instanceof bg.scene.Drawable) { + this.addDrawable(drawableOrPlist,transformMatrix); + } + else if (drawableOrPlist instanceof bg.scene.PolyList) { + this.addPolyList(drawableOrPlist,transformMatrix); + } + } + + clear() { + this._min = bg.Vector3(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE); + this._max = bg.Vector3(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE); + this._center = this._size = this._halfSize = null; + } + + get min() { return this._min; } + get max() { return this._max; } + get center() { + if (!this._center) { + let s = this.halfSize; + this._center = bg.Vector3.Add(this.halfSize, this._min); + } + return this._center; + } + + get size() { + if (!this._size) { + this._size = bg.Vector3.Sub(this.max, this.min); + } + return this._size; + } + + get halfSize() { + if (!this._halfSize) { + this._halfSize = new bg.Vector3(this.size); + this._halfSize.scale(0.5); + } + return this._halfSize; + } + + addPolyList(polyList, trx) { + this._center = this._size = this._halfSize = null; + for (let i = 0; i<polyList.vertex.length; i+=3) { + let vec = trx.multVector(new bg.Vector3(polyList.vertex[i], + polyList.vertex[i + 1], + polyList.vertex[i + 2])); + if (vec.x<this._min.x) this._min.x = vec.x; + if (vec.y<this._min.y) this._min.y = vec.y; + if (vec.z<this._min.z) this._min.z = vec.z; + if (vec.x>this._max.x) this._max.x = vec.x; + if (vec.z>this._max.z) this._max.z = vec.z; + if (vec.y>this._max.y) this._max.y = vec.y; + } + } + + addDrawable(drawable, trxBase) { + drawable.forEach((plist,mat,elemTrx) => { + if (plist.visible) { + let trx = new bg.Matrix4(trxBase); + if (elemTrx) trx.mult(elemTrx); + this.addPolyList(plist,trx); + } + }); + } + } + + bg.tools.BoundingBox = BoundingBox; +})(); +(function() { + function createCanvas(width,height) { + let result = document.createElement("canvas"); + result.width = width; + result.height = height; + result.style.width = width + "px"; + result.style.height = height + "px"; + return result; + } + + function resizeCanvas(canvas,w,h) { + canvas.width = w; + canvas.height = h; + canvas.style.width = w + 'px'; + canvas.style.height = h + 'px'; + } + + let g_texturePreventRemove = []; + + class CanvasTexture extends bg.app.ContextObject { + + constructor(context,width,height,drawCallback) { + super(context); + + this._canvas = createCanvas(width,height); + + this._drawCallback = drawCallback; + + this._drawCallback(this._canvas.getContext("2d",{preserverDrawingBuffer:true}),this._canvas.width,this._canvas.height); + this._texture = bg.base.Texture.FromCanvas(context,this._canvas); + } + + get width() { return this._canvas.width; } + get height() { return this._canvas.height; } + get canvas() { return this._canvas; } + get texture() { return this._texture; } + + resize(w,h) { + resizeCanvas(this._canvas,w,h); + this.update(); + } + + update() { + this._drawCallback(this._canvas.getContext("2d",{preserverDrawingBuffer:true}),this.width,this.height); + + bg.base.Texture.UpdateCanvasImage(this._texture,this._canvas); + } + } + + bg.tools.CanvasTexture = CanvasTexture; +})(); +(function() { + + bg.tools = bg.tools || {}; + + function packUVs(rect, t1, t2, uvs, pad) { + let hpad = pad / 2; + uvs[t1.uv0.x] = rect.left + pad; uvs[t1.uv0.y] = rect.top + hpad; + uvs[t1.uv1.x] = rect.right - hpad; uvs[t1.uv1.y] = rect.top + hpad; + uvs[t1.uv2.x] = rect.right - hpad; uvs[t1.uv2.y] = rect.bottom - pad; + + if (t2) { + uvs[t2.uv0.x] = rect.right - pad; uvs[t2.uv0.y] = rect.bottom - hpad; + uvs[t2.uv1.x] = rect.left + hpad; uvs[t2.uv1.y] = rect.bottom - hpad; + uvs[t2.uv2.x] = rect.left + hpad; uvs[t2.uv2.y] = rect.top + pad; + } + } + + + function atlasPolyList(vertex,index,padding=0) { + let triangles = []; + let uv = []; + + for (let i=0; i<index.length; i+=3) { + let i0 = index[i]; + let i1 = index[i+1]; + let i2 = index[i+2]; + triangles.push({ + indices: [i0, i1, i2], + uv0: { x:i0 * 2, y: i0 * 2 + 1 }, + uv1: { x:i1 * 2, y: i1 * 2 + 1 }, + uv2: { x:i2 * 2, y: i2 * 2 + 1 } + }); + } + + let numQuads = triangles.length / 2 + triangles.length % 2; + let rows = numQuads, cols = Math.round(Math.sqrt(numQuads)); + while(rows%cols) { + cols--; + } + + rows = cols; + cols = numQuads / cols; + + let currentTriangle = 0; + + let w = 1 / cols; + let h = 1 / rows; + + for (let i=0; i<rows; ++i) { + for (let j=0; j<cols; ++j) { + let rect = { left: w * j, top: h * i, right:w * j + w, bottom:h * i + h}; + let t1 = triangles[currentTriangle]; + let t2 = currentTriangle+1<triangles.length ? triangles[currentTriangle + 1] : null; + packUVs(rect,t1,t2,uv,padding); + currentTriangle+=2; + } + } + + return uv; + } + + function generateLightmapQuads(drawable) { + let triangleCount = 0; + drawable.forEach((polyList) => { + let numTriangles = (polyList.index.length / 3); + // Avoid two poly list to share one quad + if (numTriangles%2!=0) numTriangles++; + triangleCount += numTriangles; + }); + let numQuads = triangleCount / 2; + let rows = numQuads, cols = Math.round(Math.sqrt(numQuads)); + while (rows%cols) { + cols--; + } + + rows = cols; + cols = numQuads / cols; + return { + rows: rows, + cols: cols, + triangleCount: triangleCount, + quadSize: { + width: 1 / cols, + height: 1 / rows + }, + currentRow:0, + currentCol:0, + nextRect:function() { + let rect = { + left: this.quadSize.width * this.currentCol, + top: this.quadSize.height * this.currentRow, + right: this.quadSize.width * this.currentCol + this.quadSize.width, + bottom: this.quadSize.height * this.currentRow + this.quadSize.height + }; + if (this.currentCol<this.cols) { + this.currentCol++; + } + else { + this.currentCol = 0; + this.currentRow++; + } + if (this.currentRow>=this.rows) { + this.currentRow = 0; + } + return rect; + } + }; + } + + function atlasDrawable(drawable,padding) { + let quadData = generateLightmapQuads(drawable); + quadData.currentRow = 0; + quadData.currentCol = 0; + + drawable.forEach((polyList) => { + if (polyList.texCoord1.length>0) return; + let triangles = []; + let uv = []; + for (let i=0; i<polyList.index.length; i+=3) { + let i0 = polyList.index[i]; + let i1 = polyList.index[i + 1]; + let i2 = polyList.index[i + 2]; + triangles.push({ + indices: [i0, i1, i2], + uv0: { x:i0 * 2, y:i0 * 2 + 1 }, + uv1: { x:i1 * 2, y:i1 * 2 + 1 }, + uv2: { x:i2 * 2, y:i2 * 2 + 1 } + }); + } + + for (let i=0; i<triangles.length; i+=2) { + let t1 = triangles[i]; + let t2 = i+1<triangles.length ? triangles[i+1] : null; + let rect = quadData.nextRect(); + packUVs(rect,t1,t2,uv,padding); + } + + polyList.texCoord1 = uv; + polyList.build(); + }); + } + + bg.tools.UVMap = { + atlas: function(vertexOrDrawable,indexOrPadding = 0,padding = 0) { + if (vertexOrDrawable instanceof bg.scene.Drawable) { + return atlasDrawable(vertexOrDrawable,indexOrPadding); + } + else { + return atlasPolyList(vertexOrDrawable,indexOrPadding,padding); + } + } + + + } +})(); + +bg.render = { + +}; +(function() { + + class RenderLayer extends bg.app.ContextObject { + constructor(context,opacityLayer = bg.base.OpacityLayer.ALL) { + super(context); + + this._pipeline = new bg.base.Pipeline(context); + this._pipeline.opacityLayer = opacityLayer; + this._matrixState = bg.base.MatrixState.Current(); + this._drawVisitor = new bg.scene.DrawVisitor(this._pipeline,this._matrixState); + this._settings = {}; + } + + get pipeline() { return this._pipeline; } + + get opacityLayer() { return this._pipeline.opacityLayer; } + + get drawVisitor() { return this._drawVisitor; } + + get matrixState() { return this._matrixState; } + + set settings(s) { this._settings = s; } + get settings() { return this._settings; } + + draw(scene,camera) {} + } + + bg.render.RenderLayer = RenderLayer; + +})(); +(function() { + + bg.render.RenderPath = { + FORWARD:1, + DEFERRED:2 + }; + + function getRenderPass(context,renderPath) { + let Factory = null; + switch (renderPath) { + case bg.render.RenderPath.FORWARD: + Factory = bg.render.ForwardRenderPass; + break; + case bg.render.RenderPath.DEFERRED: + if (bg.render.DeferredRenderPass.IsSupported()) { + Factory = bg.render.DeferredRenderPass; + } + else { + bg.log("WARNING: Deferred renderer is not supported on this browser"); + Factory = bg.render.ForwardRenderPass; + } + break; + } + + return Factory && new Factory(context); + } + + // This is a foward declaration of raytracer quality settings + bg.render.RaytracerQuality = { + low : { maxSamples: 20, rayIncrement: 0.05 }, + mid: { maxSamples: 50, rayIncrement: 0.025 }, + high: { maxSamples: 100, rayIncrement: 0.0125 }, + extreme: { maxSamples: 200, rayIncrement: 0.0062 } + }; + + bg.render.ShadowType = { + HARD: bg.base.ShadowType.HARD, + SOFT: bg.base.ShadowType.SOFT + }; + + bg.render.ShadowMapQuality = { + low: 512, + mid: 1024, + high: 2048, + extreme: 4096 + }; + + let renderSettings = { + debug: { + enabled: false + }, + ambientOcclusion: { + enabled: true, + sampleRadius: 0.4, + kernelSize: 16, + blur: 2, + maxDistance: 300, + scale: 1.0 + }, + raytracer: { + enabled: true, + quality: bg.render.RaytracerQuality.mid, + scale: 0.5 + }, + antialiasing: { + enabled: false + }, + shadows: { + quality: bg.render.ShadowMapQuality.mid, + type: bg.render.ShadowType.SOFT + } + // TODO: Color correction + } + + class Renderer extends bg.app.ContextObject { + static Create(context,renderPath) { + let result = null; + if (renderPath==bg.render.RenderPath.DEFERRED) { + result = new bg.render.DeferredRenderer(context); + } + + if (renderPath==bg.render.RenderPath.FORWARD || + (result && !result.isSupported)) + { + result = new bg.render.ForwardRenderer(context); + } + + if (result.isSupported) { + result.create(); + } + else { + throw new Error("No suitable renderer found."); + } + return result; + } + + constructor(context) { + super(context); + + this._frameVisitor = new bg.scene.FrameVisitor(); + + this._settings = renderSettings; + + this._clearColor = bg.Color.Black(); + } + + get isSupported() { return false; } + create() { console.log("ERROR: Error creating renderer. The renderer class must implemente the create() method."); } + + get clearColor() { return this._clearColor; } + set clearColor(c) { this._clearColor = c; } + + frame(sceneRoot,delta) { + this._frameVisitor.delta = delta; + sceneRoot.accept(this._frameVisitor); + } + + display(sceneRoot,camera) { + this.draw(sceneRoot,camera); + } + + get settings() { + return this._settings; + } + } + + bg.render.Renderer = Renderer; + +})(); +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let MAX_KERN_OFFSETS = 64; + + class DeferredMixEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + + this._ssrtScale = 0.5; + this._frameScale = 1.0; + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + this._fragmentShaderSource.addParameter([ + { name:"inLighting", dataType:"sampler2D", role:"value"}, + { name:"inDiffuse", dataType:"sampler2D", role:"value"}, + { name:"inPositionMap", dataType:"sampler2D", role:"value"}, + { name:"inSSAO", dataType:"sampler2D", role:"value"}, + { name:"inReflection", dataType:"sampler2D", role:"value"}, + { name:"inSpecularMap", dataType:"sampler2D", role:"value" }, + { name:"inMaterial", dataType:"sampler2D", role:"value"}, + { name:"inOpaqueDepthMap", dataType:"sampler2D", role:"value"}, + { name:"inShininessColor", dataType:"sampler2D", role:"value" }, + { name:"inViewSize", dataType:"vec2", role:"value"}, + { name:"inSSAOBlur", dataType:"int", role:"value"}, + { name:"inSSRTScale", dataType:"float", role:"value" }, + + { name:"fsTexCoord", dataType:"vec2", role:"in" } // vTexturePosition + ]); + + if (bg.Engine.Get().id=="webgl1") { + this._fragmentShaderSource.addFunction(lib().functions.blur.textureDownsample); + this._fragmentShaderSource.addFunction(lib().functions.blur.blur); + this._fragmentShaderSource.addFunction(lib().functions.blur.glowBlur); + + //this._fragmentShaderSource.addFunction(lib().functions.colorCorrection.all); + + this._fragmentShaderSource.setMainBody(` + vec4 lighting = clamp(texture2D(inLighting,fsTexCoord),vec4(0.0),vec4(1.0)); + vec4 diffuse = texture2D(inDiffuse,fsTexCoord); + vec4 pos = texture2D(inPositionMap,fsTexCoord); + vec4 shin = texture2D(inShininessColor,fsTexCoord); + vec4 ssao = blur(inSSAO,fsTexCoord,inSSAOBlur * 20,inViewSize); + vec4 material = texture2D(inMaterial,fsTexCoord); + + vec4 specular = texture2D(inSpecularMap,fsTexCoord); // The roughness parameter is stored on A component, inside specular map + + vec4 opaqueDepth = texture2D(inOpaqueDepthMap,fsTexCoord); + if (pos.z<opaqueDepth.z && opaqueDepth.w<1.0) { + discard; + } + else { + float roughness = specular.a; + float ssrtScale = inSSRTScale; + roughness *= 250.0 * ssrtScale; + vec4 reflect = blur(inReflection,fsTexCoord,int(roughness),inViewSize * ssrtScale); + + float reflectionAmount = material.b; + vec3 finalColor = lighting.rgb * (1.0 - reflectionAmount); + finalColor += reflect.rgb * reflectionAmount * diffuse.rgb + shin.rgb; + finalColor *= ssao.rgb; + gl_FragColor = vec4(finalColor,diffuse.a); + }`); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + this.shader.setVector2("inViewSize",new bg.Vector2(this.viewport.width, this.viewport.height)); + + this.shader.setTexture("inLighting",this._surface.lightingMap,bg.base.TextureUnit.TEXTURE_0); + this.shader.setTexture("inDiffuse",this._surface.diffuseMap,bg.base.TextureUnit.TEXTURE_1); + this.shader.setTexture("inPositionMap",this._surface.positionMap,bg.base.TextureUnit.TEXTURE_2); + this.shader.setTexture("inSSAO",this._surface.ssaoMap,bg.base.TextureUnit.TEXTURE_3); + this.shader.setTexture("inReflection",this._surface.reflectionMap,bg.base.TextureUnit.TEXTURE_4); + this.shader.setTexture("inMaterial",this._surface.materialMap,bg.base.TextureUnit.TEXTURE_5); + this.shader.setTexture("inSpecularMap",this._surface.specularMap,bg.base.TextureUnit.TEXTURE_6); + this.shader.setTexture("inOpaqueDepthMap",this._surface.opaqueDepthMap,bg.base.TextureUnit.TEXTURE_7); + this.shader.setTexture("inShininessColor",this._surface.shininess,bg.base.TextureUnit.TEXTURE_8); + + this.shader.setValueInt("inSSAOBlur",this.ssaoBlur); + this.shader.setValueFloat("inSSRTScale",this.ssrtScale * this.frameScale); + } + + set viewport(vp) { this._viewport = vp; } + get viewport() { return this._viewport; } + + set clearColor(c) { this._clearColor = c; } + get clearColor() { return this._clearColor; } + + set ssaoBlur(b) { this._ssaoBlur = b; } + get ssaoBlur() { return this._ssaoBlur; } + + set ssrtScale(s) { this._ssrtScale = s; } + get ssrtScale() { return this._ssrtScale; } + + set frameScale(s) { this._frameScale = s; } + get frameScale() { return this._frameScale; } + + get colorCorrection() { + if (!this._colorCorrection) { + this._colorCorrection = { + hue: 1.0, + saturation: 1.0, + lightness: 1.0, + brightness: 0.5, + contrast: 0.5 + }; + } + return this._colorCorrection; + } + } + + bg.render.DeferredMixEffect = DeferredMixEffect; +})(); +(function() { + + bg.render.SurfaceType = { + UNDEFINED: 0, + OPAQUE: 1, + TRANSPARENT: 2 + }; + + let g_ssrtScale = 0.5; + let g_ssaoScale = 1.0; + + class DeferredRenderSurfaces extends bg.app.ContextObject { + constructor(context) { + super(context); + this._type = bg.render.SurfaceType.UNDEFINED; + + this._gbufferUByteSurface = null; + this._gbufferFloatSurface = null; + this._lightingSurface = null; + this._shadowSurface = null; + this._ssaoSurface = null; + this._mixSurface = null; + this._ssrtSurface = null; + + this._opaqueSurfaces = null; + } + + createOpaqueSurfaces() { + this._type = bg.render.SurfaceType.OPAQUE; + this.createCommon(); + } + + createTransparentSurfaces(opaqueSurfaces) { + this._type = bg.render.SurfaceType.TRANSPARENT; + this._opaqueSurfaces = opaqueSurfaces; + this.createCommon(); + } + + resize(newSize) { + let s = new bg.Vector2(newSize.width,newSize.height); + this._gbufferUByteSurface.size = s; + this._gbufferFloatSurface.size = s; + this._lightingSurface.size = s; + this._shadowSurface.size = s; + this._ssaoSurface.size = new bg.Vector2(s.x * g_ssaoScale,s.y * g_ssaoScale); + this._ssrtSurface.size = new bg.Vector2(s.x * g_ssrtScale,s.y * g_ssrtScale); + this._mixSurface.size = s; + } + + get type() { return this._type; } + + get gbufferUByteSurface() { return this._gbufferUByteSurface; } + get gbufferFloatSurface() { return this._gbufferFloatSurface; } + get lightingSurface() { return this._lightingSurface; } + get shadowSurface() { return this._shadowSurface; } + get ssaoSurface() { return this._ssaoSurface; } + get ssrtSurface() { return this._ssrtSurface; } + get mixSurface() { return this._mixSurface; } + + get diffuse() { return this._gbufferUByteSurface.getTexture(0); } + get specular() { return this._gbufferUByteSurface.getTexture(1); } + get normal() { return this._gbufferUByteSurface.getTexture(2); } + get material() { return this._gbufferUByteSurface.getTexture(3); } + get position() { return this._gbufferFloatSurface.getTexture(0); } + get lighting() { return this._lightingSurface.getTexture(); } + get shadow() { return this._shadowSurface.getTexture(); } + get ambientOcclusion() { return this._ssaoSurface.getTexture(); } + get reflection() { return this._ssrtSurface.getTexture(); } + get mix() { return this._mixSurface.getTexture(); } + get reflectionColor() { return this._type==bg.render.SurfaceType.OPAQUE ? this.lighting : this._opaqueSurfaces.lighting; } + get reflectionDepth() { return this._type==bg.render.SurfaceType.OPAQUE ? this.position : this._opaqueSurfaces.position; } + get mixDepthMap() { return this._type==bg.render.SurfaceType.OPAQUE ? this.position : this._opaqueSurfaces.position; } + + // Generated in lighting shader + get shininess() { return this._lightingSurface.getTexture(1); } + get bloom() { return this._lightingSurface.getTexture(2); } + + createCommon() { + var ctx = this.context; + this._gbufferUByteSurface = new bg.base.TextureSurface(ctx); + this._gbufferUByteSurface.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._gbufferUByteSurface.resizeOnViewportChanged = false; + + this._gbufferFloatSurface = new bg.base.TextureSurface(ctx); + this._gbufferFloatSurface.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.FLOAT }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._gbufferFloatSurface.resizeOnViewportChanged = false; + + this._lightingSurface = new bg.base.TextureSurface(ctx); + this._lightingSurface.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.FLOAT }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.FLOAT }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.FLOAT }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._lightingSurface.resizeOnViewportChanged = false; + + this._shadowSurface = new bg.base.TextureSurface(ctx); + this._shadowSurface.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._shadowSurface.resizeOnViewportChanged = false; + + this._ssaoSurface = new bg.base.TextureSurface(ctx); + this._ssaoSurface.create(); + this._ssaoSurface.resizeOnViewportChanged = false; + + this._ssrtSurface = new bg.base.TextureSurface(ctx); + this._ssrtSurface.create(); + this._ssrtSurface.resizeOnViewportChanged = false; + + this._mixSurface = new bg.base.TextureSurface(ctx); + this._mixSurface.create(); + this._mixSurface.resizeOnViewportChanged = false; + } + } + + bg.render.DeferredRenderSurfaces = DeferredRenderSurfaces; + + function newPL(ctx,fx,surface,opacityLayer) { + let pl = new bg.base.Pipeline(ctx); + pl.renderSurface = surface; + if (opacityLayer!==undefined) { + pl.opacityLayer = opacityLayer; + pl.effect = fx; + } + else { + pl.textureEffect = fx; + } + return pl; + } + + function createCommon(deferredRenderLayer) { + let ctx = deferredRenderLayer.context; + let s = deferredRenderLayer._surfaces; + let opacityLayer = deferredRenderLayer._opacityLayer; + + deferredRenderLayer._gbufferUbyte = newPL(ctx, + new bg.render.GBufferEffect(ctx), + s.gbufferUByteSurface,opacityLayer); + deferredRenderLayer._gbufferFloat = newPL(ctx, + new bg.render.PositionGBufferEffect(ctx), + s.gbufferFloatSurface, opacityLayer); + deferredRenderLayer._shadow = newPL(ctx, + new bg.render.ShadowEffect(ctx), + s.shadowSurface, + bg.base.OpacityLayer.ALL); + + deferredRenderLayer._lighting = newPL(ctx,new bg.render.LightingEffect(ctx), s.lightingSurface); + deferredRenderLayer._ssao = newPL(ctx,new bg.render.SSAOEffect(ctx), s.ssaoSurface); + deferredRenderLayer._ssao.clearColor = bg.Color.White(); + deferredRenderLayer._ssrt = newPL(ctx,new bg.render.SSRTEffect(ctx), s.ssrtSurface); + + // Visitors for gbuffers and shadow maps + let matrixState = deferredRenderLayer.matrixState; + deferredRenderLayer.ubyteVisitor = new bg.scene.DrawVisitor(deferredRenderLayer._gbufferUbyte,matrixState); + deferredRenderLayer.floatVisitor = new bg.scene.DrawVisitor(deferredRenderLayer._gbufferFloat,matrixState); + deferredRenderLayer.shadowVisitor = new bg.scene.DrawVisitor(deferredRenderLayer._shadow,matrixState); + + + // TODO: Debug code. Uncomment newPL() + deferredRenderLayer._mix = newPL(ctx,new bg.render.DeferredMixEffect(ctx), s.mixSurface); + //deferredRenderLayer._mix.renderSurface = new bg.base.ColorSurface(ctx); + //deferredRenderLayer._mix = new bg.base.Pipeline(ctx); + //deferredRenderLayer._mix.renderSurface = s.mixSurface; + } + + class DeferredRenderLayer extends bg.render.RenderLayer { + constructor(context) { + super(context); + } + + createOpaque() { + this._opacityLayer = bg.base.OpacityLayer.OPAQUE; + this._surfaces = new bg.render.DeferredRenderSurfaces(this.context); + this._surfaces.createOpaqueSurfaces(); + createCommon(this); + } + + createTransparent(opaqueMaps) { + this._opacityLayer = bg.base.OpacityLayer.TRANSPARENT; + this._surfaces = new bg.render.DeferredRenderSurfaces(this.context); + this._surfaces.createTransparentSurfaces(opaqueMaps); + createCommon(this); + + this._gbufferUbyte.blend = true; + this._gbufferUbyte.setBlendMode = bg.base.BlendMode.NORMAL; + this._gbufferUbyte.clearColor = bg.Color.Transparent(); + this._lighting.clearColor = bg.Color.Black(); + this.pipeline.clearColor = bg.Color.Transparent(); + } + + set shadowMap(sm) { this._shadowMap = sm; } + get shadowMap() { return this._shadowMap; } + + get pipeline() { return this._mix; } + get texture() { return this.maps.mix; } + + // TODO: Scene is used by the shadow map generator, but the shadow map can also be + // modified to use the render queue + draw(renderQueue,scene,camera) { + g_ssaoScale = this.settings.ambientOcclusion.scale || 1; + g_ssrtScale = this.settings.raytracer.scale || 0.5; + + this.matrixState.projectionMatrixStack.set(camera.projection); + this.matrixState.viewMatrixStack.set(camera.viewMatrix); + this.matrixState.modelMatrixStack.identity(); + + this.performDraw(renderQueue,scene,camera); + } + + get maps() { return this._surfaces; } + + resize(camera) { + g_ssaoScale = this.settings.ambientOcclusion.scale || 1; + g_ssrtScale = this.settings.raytracer.scale || 0.5; + + let vp = camera.viewport; + this.maps.resize(new bg.Size2D(vp.width,vp.height)); + } + + performDraw(renderQueue,scene,camera) { + let activeQueue = this._opacityLayer==bg.base.OpacityLayer.OPAQUE ? renderQueue.opaqueQueue : renderQueue.transparentQueue; + + let performRenderQueue = (queue,pipeline) => { + this.matrixState.modelMatrixStack.push(); + this.matrixState.viewMatrixStack.push(); + queue.forEach((objectData) => { + this.matrixState.modelMatrixStack.set(objectData.modelMatrix); + this.matrixState.viewMatrixStack.set(objectData.viewMatrix); + pipeline.effect.material = objectData.material; + pipeline.draw(objectData.plist); + }); + this.matrixState.modelMatrixStack.pop(); + this.matrixState.viewMatrixStack.pop(); + } + + bg.base.Pipeline.SetCurrent(this._gbufferUbyte); + this._gbufferUbyte.viewport = camera.viewport; + this._gbufferUbyte.clearBuffers(); + performRenderQueue(activeQueue,this._gbufferUbyte); + + bg.base.Pipeline.SetCurrent(this._gbufferFloat); + this._gbufferFloat.viewport = camera.viewport; + this._gbufferFloat.clearBuffers(); + performRenderQueue(activeQueue,this._gbufferFloat); + + // Render lights + this._lighting.viewport = camera.viewport; + this._lighting.clearcolor = bg.Color.White(); + bg.base.Pipeline.SetCurrent(this._lighting); + this._lighting.clearBuffers(bg.base.ClearBuffers.COLOR_DEPTH); + this._lighting.blendMode = bg.base.BlendMode.ADD; + this._lighting.blend = true; + this._shadow.viewport = camera.viewport; + + let lightIndex = 0; + bg.scene.Light.GetActiveLights().forEach((lightComponent) => { + if (lightComponent.light && lightComponent.light.enabled && + lightComponent.node && lightComponent.node.enabled) + { + if (lightComponent.light.type==bg.base.LightType.DIRECTIONAL) + { + this._shadowMap.update(scene,camera,lightComponent.light,lightComponent.transform,bg.base.ShadowCascade.NEAR); + + bg.base.Pipeline.SetCurrent(this._shadow); + this._shadow.viewport = camera.viewport; + this._shadow.clearBuffers(); + this._shadow.effect.light = lightComponent.light; + this._shadow.effect.shadowMap = this._shadowMap; + scene.accept(this.shadowVisitor); + } + else if (lightComponent.light.type==bg.base.LightType.SPOT) { + this._shadowMap.shadowType = this.settings.shadows.type; + this._shadowMap.update(scene,camera,lightComponent.light,lightComponent.transform); + bg.base.Pipeline.SetCurrent(this._shadow); + this._shadow.viewport = camera.viewport; + this._shadow.clearBuffers(); + this._shadow.effect.light = lightComponent.light; + this._shadow.effect.shadowMap = this._shadowMap; + scene.accept(this.shadowVisitor); + } + + bg.base.Pipeline.SetCurrent(this._lighting); + // Only render light emission in the first light source + this._lighting.textureEffect.lightEmissionFactor = lightIndex==0 ? 10:0; + + this._lighting.textureEffect.light = lightComponent.light; + this._lighting.textureEffect.lightTransform = lightComponent.transform; + this._lighting.textureEffect.shadowMap = this.maps.shadow; + this._lighting.drawTexture(this.maps); + ++lightIndex; + } + }); + + let renderSSAO = this.settings.ambientOcclusion.enabled; + let renderSSRT = this.settings.raytracer.enabled; + let vp = new bg.Viewport(camera.viewport); + + this._ssao.textureEffect.enabled = renderSSAO; + this._ssao.textureEffect.settings.kernelSize = this.settings.ambientOcclusion.kernelSize; + this._ssao.textureEffect.settings.sampleRadius = this.settings.ambientOcclusion.sampleRadius; + this._ssao.textureEffect.settings.maxDistance = this.settings.ambientOcclusion.maxDistance; + if (renderSSAO) { + bg.base.Pipeline.SetCurrent(this._ssao); + this._ssao.viewport = new bg.Viewport(vp.x,vp.y,vp.width * g_ssaoScale, vp.height * g_ssaoScale); + this._ssao.clearBuffers(); + this._ssao.textureEffect.viewport = camera.viewport; + this._ssao.textureEffect.projectionMatrix = camera.projection; + this._ssao.drawTexture(this.maps); + } + + + // SSRT + bg.base.Pipeline.SetCurrent(this._ssrt); + if (renderSSRT) { + this._ssrt.viewport = new bg.Viewport(vp.x,vp.y,vp.width * g_ssrtScale, vp.height * g_ssrtScale); + this._ssrt.clearBuffers(bg.base.ClearBuffers.DEPTH); + this._ssrt.textureEffect.quality = this.settings.raytracer.quality; + var cameraTransform = camera.node.component("bg.scene.Transform"); + if (cameraTransform) { + let viewProjection = new bg.Matrix4(camera.projection); + viewProjection.mult(camera.viewMatrix); + this._ssrt.textureEffect.cameraPosition= viewProjection.multVector(cameraTransform.matrix.position).xyz; + } + this._ssrt.textureEffect.projectionMatrix = camera.projection; + this._ssrt.textureEffect.rayFailColor = this.settings.raytracer.clearColor || bg.Color.Black(); + this._ssrt.textureEffect.basic = this.settings.raytracer.basicReflections || false; + this._ssrt.textureEffect.viewportSize = new bg.Vector2(this._ssrt.viewport.width,this._ssrt.viewport.height); + this._ssrt.drawTexture(this.maps); + } + + bg.base.Pipeline.SetCurrent(this.pipeline); + this.pipeline.viewport = camera.viewport; + this.pipeline.clearBuffers(); + this.pipeline.textureEffect.viewport = camera.viewport; + this.pipeline.textureEffect.ssaoBlur = renderSSAO ? this.settings.ambientOcclusion.blur : 1; + + this.pipeline.textureEffect.ssrtScale = g_ssrtScale * this.settings.renderScale; + this.pipeline.drawTexture({ + lightingMap:this.maps.lighting, + diffuseMap:this.maps.diffuse, + positionMap:this.maps.position, + ssaoMap:renderSSAO ? this.maps.ambientOcclusion:bg.base.TextureCache.WhiteTexture(this.context), + reflectionMap:renderSSRT ? this.maps.reflection:this.maps.lighting, + specularMap:this.maps.specular, + materialMap:this.maps.material, + opaqueDepthMap:this.maps.mixDepthMap, + shininess:this.maps.shininess + // TODO: bloom + }); // null: all textures are specified as parameters to the effect + + camera.viewport = vp; + } + } + + bg.render.DeferredRenderLayer = DeferredRenderLayer; + +})(); + +(function() { + + + + class DeferredRenderer extends bg.render.Renderer { + constructor(context) { + super(context); + this._size = new bg.Size2D(0); + } + + get isSupported() { + return bg.base.RenderSurface.MaxColorAttachments()>5 && + bg.base.RenderSurface.SupportFormat(bg.base.RenderSurfaceFormat.FLOAT) && + bg.base.RenderSurface.SupportType(bg.base.RenderSurfaceType.DEPTH); + } + + get pipeline() { return this._pipeline; } + + create() { + let ctx = this.context; + + this._renderQueueVisitor = new bg.scene.RenderQueueVisitor(); + + this._opaqueLayer = new bg.render.DeferredRenderLayer(ctx); + this._opaqueLayer.settings = this.settings; + this._opaqueLayer.createOpaque(); + + this._transparentLayer = new bg.render.DeferredRenderLayer(ctx); + this._transparentLayer.settings = this.settings; + this._transparentLayer.createTransparent(this._opaqueLayer.maps); + + this._shadowMap = new bg.base.ShadowMap(ctx); + this._shadowMap.size = new bg.Vector2(2048); + + this._opaqueLayer.shadowMap = this._shadowMap; + this._transparentLayer.shadowMap = this._shadowMap; + + let mixSurface = new bg.base.TextureSurface(ctx); + mixSurface.create(); + this._mixPipeline = new bg.base.Pipeline(ctx); + this._mixPipeline.textureEffect = new bg.render.RendererMixEffect(ctx); + this._mixPipeline.renderSurface = mixSurface; + + this._pipeline = new bg.base.Pipeline(ctx); + this._pipeline.textureEffect = new bg.render.PostprocessEffect(ctx); + + this.settings.renderScale = this.settings.renderScale || 1.0; + } + + draw(scene,camera) { + if (this._shadowMap.size.x!=this.settings.shadows.quality) { + this._shadowMap.size = new bg.Vector2(this.settings.shadows.quality); + } + + let vp = camera.viewport; + let aa = this.settings.antialiasing || {}; + let maxSize = aa.maxTextureSize || 4096; + let ratio = vp.aspectRatio; + let scaledWidth = vp.width; + let scaledHeight = vp.height; + if (aa.enabled) { + scaledWidth = vp.width * 2; + scaledHeight = vp.height * 2; + if (ratio>1 && scaledWidth>maxSize) { // Landscape + scaledWidth = maxSize; + scaledHeight = maxSize / ratio; + } + else if (scaledHeight>maxSize) { // Portrait + scaledHeight = maxSize; + scaledWidth = maxSize * ratio; + } + } + else if (true) { + scaledWidth = vp.width * this.settings.renderScale; + scaledHeight = vp.height * this.settings.renderScale; + if (ratio>1 && scaledWidth>maxSize) { // Landscape + scaledWidth = maxSize; + scaledHeight = maxSize / ratio; + } + else if (scaledHeight>maxSize) { // Portrait + scaledHeight = maxSize; + scaledWidth = maxSize * ratio; + } + } + + let scaledViewport = new bg.Viewport(0,0,scaledWidth,scaledHeight); + camera.viewport = scaledViewport; + let mainLight = null; + + this._opaqueLayer.clearColor = this.clearColor; + if (this._size.width!=camera.viewport.width || + this._size.height!=camera.viewport.height) + { + this._opaqueLayer.resize(camera); + this._transparentLayer.resize(camera); + } + + + // Update render queue + this._renderQueueVisitor.modelMatrixStack.identity(); + this._renderQueueVisitor.projectionMatrixStack.push(); + this._renderQueueVisitor.projectionMatrixStack.set(camera.projection); + this._renderQueueVisitor.viewMatrixStack.set(camera.viewMatrix); + this._renderQueueVisitor.renderQueue.beginFrame(camera.worldPosition); + scene.accept(this._renderQueueVisitor); + this._renderQueueVisitor.renderQueue.sortTransparentObjects(); + this._opaqueLayer.draw(this._renderQueueVisitor.renderQueue,scene,camera); + this._transparentLayer.draw(this._renderQueueVisitor.renderQueue,scene,camera); + this._renderQueueVisitor.projectionMatrixStack.pop(); + + bg.base.Pipeline.SetCurrent(this._mixPipeline); + this._mixPipeline.viewport = camera.viewport; + this._mixPipeline.clearColor = bg.Color.Black(); + this._mixPipeline.clearBuffers(); + this._mixPipeline.drawTexture({ + opaque:this._opaqueLayer.texture, + transparent:this._transparentLayer.texture, + transparentNormal:this._transparentLayer.maps.normal, + opaqueDepth:this._opaqueLayer.maps.position, + transparentDepth:this._transparentLayer.maps.position + }); + + bg.base.Pipeline.SetCurrent(this.pipeline); + this.pipeline.viewport = vp; + this.pipeline.clearColor = this.clearColor; + this.pipeline.clearBuffers(); + this.pipeline.drawTexture({ + texture: this._mixPipeline.renderSurface.getTexture(0) + }); + camera.viewport = vp; + } + + getImage(scene,camera,width,height) { + let prevViewport = camera.viewport; + camera.viewport = new bg.Viewport(0,0,width,height); + this.draw(scene,camera); + + let canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + let ctx = canvas.getContext('2d'); + + let buffer = this.pipeline.renderSurface.readBuffer(new bg.Viewport(0,0,width,height)); + let imgData = ctx.createImageData(width,height); + let len = width * 4; + // Flip image data + for (let i = 0; i<height; ++i) { + for (let j = 0; j<len; j+=4) { + let srcRow = i * width * 4; + let dstRow = (height - i) * width * 4; + imgData.data[dstRow + j + 0] = buffer[srcRow + j + 0]; + imgData.data[dstRow + j + 1] = buffer[srcRow + j + 1]; + imgData.data[dstRow + j + 2] = buffer[srcRow + j + 2]; + imgData.data[dstRow + j + 3] = buffer[srcRow + j + 3]; + } + } + ctx.putImageData(imgData,0,0); + + let img = canvas.toDataURL('image/jpeg'); + + camera.viewport = prevViewport; + this.viewport = prevViewport; + this.draw(scene,camera); + return img; + } + } + + bg.render.DeferredRenderer = DeferredRenderer; +})(); +(function() { + + class ForwardRenderLayer extends bg.render.RenderLayer { + constructor(context,opacityLayer) { + super(context,opacityLayer); + + this._pipeline.effect = new bg.base.ForwardEffect(context); + this._pipeline.opacityLayer = opacityLayer; + + // one light source + this._lightComponent = null; + + // Multiple light sources + this._lightComponents = []; + + if (opacityLayer == bg.base.OpacityLayer.TRANSPARENT) { + this._pipeline.buffersToClear = bg.base.ClearBuffers.NONE; + this._pipeline.blend = true; + this._pipeline.blendMode = bg.base.BlendMode.NORMAL; + } + } + + // Single light + set lightComponent(light) { this._lightComponent = light; } + get lightComponent() { return this._lightComponent; } + + // Multiple lights + setLightSources(lightComponents) { + this._lightComponents = lightComponents; + } + + set shadowMap(sm) { this._shadowMap = sm; } + get shadowMap() { return this._shadowMap; } + + draw(renderQueue,scene,camera) { + bg.base.Pipeline.SetCurrent(this._pipeline); + this._pipeline.viewport = camera.viewport; + + if (camera.clearBuffers!=0) { + this._pipeline.clearBuffers(); + } + + this.matrixState.projectionMatrixStack.set(camera.projection); + + bg.base.Pipeline.SetCurrent(this._pipeline); + this._pipeline.viewport = camera.viewport; + + this.willDraw(scene,camera); + this.performDraw(renderQueue,scene,camera); + } + + willDraw(scene,camera) { + if (this._lightComponent) { + this._pipeline.effect.light = this._lightComponent.light; + this._pipeline.effect.lightTransform = this._lightComponent.transform; + this._pipeline.effect.shadowMap = this._shadowMap; + } + else if (this._lightComponents) { + this._pipeline.effect.lightArray.reset(); + this._lightComponents.forEach((comp) => { + this._pipeline.effect.lightArray.push(comp.light,comp.transform); + }); + this._pipeline.effect.shadowMap = this._shadowMap; + } + } + + performDraw(renderQueue,scene,camera) { + this._pipeline.viewport = camera.viewport; + + let activeQueue = this._pipeline.opacityLayer==bg.base.OpacityLayer.OPAQUE ? renderQueue.opaqueQueue : renderQueue.transparentQueue; + this.matrixState.modelMatrixStack.push(); + activeQueue.forEach((objectData) => { + this.matrixState.modelMatrixStack.set(objectData.modelMatrix); + this.matrixState.viewMatrixStack.set(objectData.viewMatrix); + this._pipeline.effect.material = objectData.material; + this._pipeline.draw(objectData.plist); + }); + this.matrixState.modelMatrixStack.pop(); + } + } + + bg.render.ForwardRenderLayer = ForwardRenderLayer; + +})(); + +(function() { + + class ForwardRenderer extends bg.render.Renderer { + constructor(context) { + super(context); + } + + get isSupported() { return true; } + create() { + let ctx = this.context; + this._transparentLayer = new bg.render.ForwardRenderLayer(ctx,bg.base.OpacityLayer.TRANSPARENT); + this._opaqueLayer = new bg.render.ForwardRenderLayer(ctx,bg.base.OpacityLayer.OPAQUE); + this._shadowMap = new bg.base.ShadowMap(ctx); + this._shadowMap.size = new bg.Vector2(2048); + + this.settings.shadows.cascade = bg.base.ShadowCascade.NEAR; + + this._renderQueueVisitor = new bg.scene.RenderQueueVisitor + } + + draw(scene,camera) { + let shadowLight = null; + let lightSources = []; + bg.scene.Light.GetActiveLights().some((lightComponent,index) => { + if (index>=bg.base.MAX_FORWARD_LIGHTS) return true; + if (lightComponent.light && lightComponent.light.enabled) + { + lightSources.push(lightComponent); + if (lightComponent.light.type!=bg.base.LightType.POINT && lightComponent.light.castShadows) { + shadowLight = lightComponent; + } + } + }); + + if (shadowLight) { + if (this._shadowMap.size.x!=this.settings.shadows.quality) { + this._shadowMap.size = new bg.Vector2(this.settings.shadows.quality); + } + this._shadowMap.update(scene,camera,shadowLight.light,shadowLight.transform,this.settings.shadows.cascade); + } + if (lightSources.length) { + this._opaqueLayer.setLightSources(lightSources); + this._opaqueLayer.shadowMap = this._shadowMap; + + this._transparentLayer.setLightSources(lightSources); + this._transparentLayer.shadowMap = this._shadowMap; + } + + // Update render queue + this._renderQueueVisitor.projectionMatrixStack.set(camera.projection); + this._renderQueueVisitor.modelMatrixStack.identity(); + this._renderQueueVisitor.viewMatrixStack.set(camera.viewMatrix); + this._renderQueueVisitor.renderQueue.beginFrame(camera.worldPosition); + scene.accept(this._renderQueueVisitor); + this._renderQueueVisitor.renderQueue.sortTransparentObjects(); + + this._opaqueLayer.pipeline.clearColor = this.clearColor; + this._opaqueLayer.draw(this._renderQueueVisitor.renderQueue,scene,camera); + this._transparentLayer.draw(this._renderQueueVisitor.renderQueue,scene,camera); + } + + getImage(scene,camera,width,height) { + let prevViewport = camera.viewport; + camera.viewport = new bg.Viewport(0,0,width,height); + this.draw(scene,camera); + this.draw(scene,camera); + + let canvas = document.createElement('canvas'); + canvas.width = width; + canvas.height = height; + let ctx = canvas.getContext('2d'); + + let buffer = this._opaqueLayer.pipeline.renderSurface.readBuffer(new bg.Viewport(0,0,width,height)); + let imgData = ctx.createImageData(width,height); + let len = width * 4; + // Flip image data + for (let i = 0; i<height; ++i) { + for (let j = 0; j<len; j+=4) { + let srcRow = i * width * 4; + let dstRow = (height - i) * width * 4; + imgData.data[dstRow + j + 0] = buffer[srcRow + j + 0]; + imgData.data[dstRow + j + 1] = buffer[srcRow + j + 1]; + imgData.data[dstRow + j + 2] = buffer[srcRow + j + 2]; + imgData.data[dstRow + j + 3] = buffer[srcRow + j + 3]; + } + } + ctx.putImageData(imgData,0,0); + + let img = canvas.toDataURL('image/jpeg'); + + camera.viewport = prevViewport; + this._opaqueLayer.viewport = prevViewport; + this._transparentLayer.viewport = prevViewport; + return img; + } + } + + bg.render.ForwardRenderer = ForwardRenderer; + +})(); +(function() { + + let s_ubyteGbufferVertex = null; + let s_ubyteGbufferFragment = null; + let s_floatGbufferVertex = null; + let s_floatGbufferFragment = null; + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let deferredShaders = { + gbuffer_ubyte_vertex() { + if (!s_ubyteGbufferVertex) { + s_ubyteGbufferVertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_ubyteGbufferVertex.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.normal, + lib().inputs.buffers.tangent, + lib().inputs.buffers.tex0, + lib().inputs.buffers.tex1 + ]); + + s_ubyteGbufferVertex.addParameter(lib().inputs.matrix.all); + + s_ubyteGbufferVertex.addParameter([ + { name:"fsPosition", dataType:"vec3", role:"out" }, + { name:"fsTex0Coord", dataType:"vec2", role:"out" }, + { name:"fsTex1Coord", dataType:"vec2", role:"out" }, + { name:"fsNormal", dataType:"vec3", role:"out" }, + { name:"fsTangent", dataType:"vec3", role:"out" }, + { name:"fsBitangent", dataType:"vec3", role:"out" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + s_ubyteGbufferVertex.setMainBody(` + vec4 viewPos = inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + gl_Position = inProjectionMatrix * viewPos; + + fsNormal = normalize((inNormalMatrix * vec4(inNormal,1.0)).xyz); + fsTangent = normalize((inNormalMatrix * vec4(inTangent,1.0)).xyz); + fsBitangent = cross(fsNormal,fsTangent); + + fsTex0Coord = inTex0; + fsTex1Coord = inTex1; + fsPosition = viewPos.xyz;`); + } + } + return s_ubyteGbufferVertex; + }, + + gbuffer_ubyte_fragment() { + if (!s_ubyteGbufferFragment) { + s_ubyteGbufferFragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + s_ubyteGbufferFragment.appendHeader("#extension GL_EXT_draw_buffers : require"); + + s_ubyteGbufferFragment.addParameter([ + { name:"fsPosition", dataType:"vec3", role:"in" }, + { name:"fsTex0Coord", dataType:"vec2", role:"in" }, + { name:"fsTex1Coord", dataType:"vec2", role:"in" }, + { name:"fsNormal", dataType:"vec3", role:"in" }, + { name:"fsTangent", dataType:"vec3", role:"in" }, + { name:"fsBitangent", dataType:"vec3", role:"int" } + ]); + + s_ubyteGbufferFragment.addParameter(lib().inputs.material.all); + + s_ubyteGbufferFragment.addFunction(lib().functions.materials.all); + + if (bg.Engine.Get().id=="webgl1") { + s_ubyteGbufferFragment.setMainBody(` + vec4 lightMap = samplerColor(inLightMap,fsTex1Coord,inLightMapOffset,inLightMapScale); + vec4 diffuse = samplerColor(inTexture,fsTex0Coord,inTextureOffset,inTextureScale) * inDiffuseColor * lightMap; + if (diffuse.a>=inAlphaCutoff) { + vec3 normal = samplerNormal(inNormalMap,fsTex0Coord,inNormalMapOffset,inNormalMapScale); + normal = combineNormalWithMap(fsNormal,fsTangent,fsBitangent,normal); + vec4 specular = specularColor(inSpecularColor,inShininessMask,fsTex0Coord,inTextureOffset,inTextureScale, + inShininessMaskChannel,inShininessMaskInvert); + float lightEmission = applyTextureMask(inLightEmission, + inLightEmissionMask,fsTex0Coord,inTextureOffset,inTextureScale, + inLightEmissionMaskChannel,inLightEmissionMaskInvert); + + float reflectionMask = applyTextureMask(inReflection, + inReflectionMask,fsTex0Coord,inTextureOffset,inTextureScale, + inReflectionMaskChannel,inReflectionMaskInvert); + + float roughnessMask = applyTextureMask(inRoughness, + inRoughnessMask,fsTex0Coord,inTextureOffset,inTextureScale, + inRoughnessMaskChannel,inRoughnessMaskInvert); + + gl_FragData[0] = diffuse; + gl_FragData[1] = vec4(specular.rgb,roughnessMask); // Store roughness on A component of specular + if (!gl_FrontFacing) { // Flip the normal if back face + normal *= -1.0; + } + gl_FragData[2] = vec4(normal * 0.5 + 0.5, inUnlit ? 0.0 : 1.0); // Store !unlit parameter on A component of normal + gl_FragData[3] = vec4(lightEmission,inShininess/255.0,reflectionMask,float(inCastShadows)); + } + else { + gl_FragData[0] = vec4(0.0); + gl_FragData[1] = vec4(0.0); + gl_FragData[2] = vec4(0.0); + gl_FragData[3] = vec4(0.0); + discard; + }`); + } + } + return s_ubyteGbufferFragment; + }, + + gbuffer_float_vertex() { + if (!s_floatGbufferVertex) { + s_floatGbufferVertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + + s_floatGbufferVertex.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + null, + lib().inputs.matrix.model, + lib().inputs.matrix.view, + lib().inputs.matrix.projection, + null, + { name:"fsPosition", dataType:"vec4", role:"out" }, + { name:"fsTex0Coord", dataType:"vec2", role:"out" } + ]); + + if (bg.Engine.Get().id=="webgl1") { + s_floatGbufferVertex.setMainBody(` + fsPosition = inViewMatrix * inModelMatrix * vec4(inVertex,1.0); + fsTex0Coord = inTex0; + + gl_Position = inProjectionMatrix * fsPosition;`); + } + } + return s_floatGbufferVertex; + }, + + gbuffer_float_fragment() { + if (!s_floatGbufferFragment) { + s_floatGbufferFragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + s_floatGbufferFragment.addParameter([ + lib().inputs.material.texture, + lib().inputs.material.textureScale, + lib().inputs.material.textureOffset, + lib().inputs.material.alphaCutoff, + null, + { name:"fsPosition", dataType:"vec4", role:"in" }, + { name:"fsTex0Coord", dataType:"vec2", role:"in" } + ]); + + s_floatGbufferFragment.addFunction(lib().functions.materials.samplerColor); + + if (bg.Engine.Get().id=="webgl1") { + s_floatGbufferFragment.setMainBody(` + float alpha = samplerColor(inTexture,fsTex0Coord,inTextureOffset,inTextureScale).a; + if (alpha<inAlphaCutoff) { + discard; + } + else { + gl_FragColor = vec4(fsPosition.xyz,gl_FragCoord.z); + } + `) + } + } + return s_floatGbufferFragment; + } + } + + + class GBufferEffect extends bg.base.Effect { + constructor(context) { + super(context); + + let ubyte_shaders = [ + deferredShaders.gbuffer_ubyte_vertex(), + deferredShaders.gbuffer_ubyte_fragment() + ]; + + this._material = null; + this.setupShaderSource(ubyte_shaders); + } + + get material() { return this._material; } + set material(m) { this._material = m; } + + setupVars() { + if (this.material) { + // Matrix state + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + this.shader.setMatrix4('inModelMatrix',matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',viewMatrix); + this.shader.setMatrix4('inProjectionMatrix',matrixState.projectionMatrixStack.matrixConst); + this.shader.setMatrix4('inNormalMatrix',matrixState.normalMatrix); + this.shader.setMatrix4('inViewMatrixInv',matrixState.viewMatrixInvert); + + // Material + let texture = this.material.texture || bg.base.TextureCache.WhiteTexture(this.context);//s_whiteTexture; + let lightMap = this.material.lightmap || bg.base.TextureCache.WhiteTexture(this.context);//s_whiteTexture; + let normalMap = this.material.normalMap || bg.base.TextureCache.NormalTexture(this.context);//s_normalTexture; + this.shader.setVector4('inDiffuseColor',this.material.diffuse); + this.shader.setVector4('inSpecularColor',this.material.specular); + this.shader.setValueFloat('inShininess',this.material.shininess); + this.shader.setValueFloat('inLightEmission',this.material.lightEmission); + this.shader.setValueFloat('inAlphaCutoff',this.material.alphaCutoff); + + this.shader.setTexture('inTexture',texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2('inTextureOffset',this.material.textureOffset); + this.shader.setVector2('inTextureScale',this.material.textureScale); + + this.shader.setTexture('inLightMap',lightMap,bg.base.TextureUnit.TEXTURE_1); + this.shader.setVector2('inLightMapOffset',this.material.lightmapOffset); + this.shader.setVector2('inLightMapScale',this.material.lightmapScale); + + this.shader.setTexture('inNormalMap',normalMap,bg.base.TextureUnit.TEXTURE_2); + this.shader.setVector2('inNormalMapScale',this.material.normalMapScale); + this.shader.setVector2('inNormalMapOffset',this.material.normalMapOffset); + + let shininessMask = this.material.shininessMask || bg.base.TextureCache.WhiteTexture(this.context); + let lightEmissionMask = this.material.lightEmissionMask || bg.base.TextureCache.WhiteTexture(this.context); + let reflectionMask = this.material.reflectionMask || bg.base.TextureCache.WhiteTexture(this.context); + let roughnessMask = this.material.roughnessMask || bg.base.TextureCache.WhiteTexture(this.context); + this.shader.setTexture('inShininessMask',shininessMask,bg.base.TextureUnit.TEXTURE_3); + this.shader.setVector4('inShininessMaskChannel',this.material.shininessMaskChannelVector); + this.shader.setValueInt('inShininessMaskInvert',this.material.shininessMaskInvert); + + this.shader.setTexture('inLightEmissionMask',lightEmissionMask,bg.base.TextureUnit.TEXTURE_4); + this.shader.setVector4('inLightEmissionMaskChannel',this.material.lightEmissionMaskChannelVector); + this.shader.setValueInt('inLightEmissionMaskInvert',this.material.lightEmissionMaskInvert); + + this.shader.setValueFloat('inReflection',this.material.reflectionAmount); + this.shader.setTexture('inReflectionMask',reflectionMask,bg.base.TextureUnit.TEXTURE_5); + this.shader.setVector4('inReflectionMaskChannel',this.material.reflectionMaskChannelVector); + this.shader.setValueInt('inReflectionMaskInvert',this.material.reflectionMaskInvert); + + this.shader.setValueFloat('inRoughness',this.material.roughness); + this.shader.setTexture('inRoughnessMask',roughnessMask,bg.base.TextureUnit.TEXTURE_6); + this.shader.setVector4('inRoughnessMaskChannel',this.material.roughnessMaskChannelVector); + this.shader.setValueInt('inRoughnessMaskInvert',this.material.roughnessMaskInvert); + + this.shader.setValueInt('inCastShadows',this.material.castShadows); + + this.shader.setValueInt('inUnlit',this.material.unlit); + // Other settings + //this.shader.setValueInt('inSelectMode',false); + } + } + } + + class PositionGBufferEffect extends bg.base.Effect { + constructor(context) { + super(context); + let ubyte_shaders = [ + deferredShaders.gbuffer_float_vertex(), + deferredShaders.gbuffer_float_fragment() + ]; + + this._material = null; + this.setupShaderSource(ubyte_shaders); + } + + get material() { return this._material; } + set material(m) { this._material = m; } + + setupVars() { + if (this.material) { + // Matrix state + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + this.shader.setMatrix4('inModelMatrix',matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4('inViewMatrix',viewMatrix); + this.shader.setMatrix4('inProjectionMatrix',matrixState.projectionMatrixStack.matrixConst); + + // Material + let texture = this.material.texture || bg.base.TextureCache.WhiteTexture(this.context);//s_whiteTexture; + this.shader.setTexture('inTexture',texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2('inTextureOffset',this.material.textureOffset); + this.shader.setVector2('inTextureScale',this.material.textureScale); + this.shader.setValueFloat('inAlphaCutoff',this.material.alphaCutoff); + } + } + } + + bg.render.PositionGBufferEffect = PositionGBufferEffect; + bg.render.GBufferEffect = GBufferEffect; +})(); + +(function() { + + function updatePipeline(pipeline,drawVisitor,scene,camera) { + bg.base.Pipeline.SetCurrent(pipeline); + pipeline.viewport = camera.viewport; + pipeline.clearBuffers(bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH); + scene.accept(drawVisitor); + } + + class GBufferSet extends bg.app.ContextObject { + constructor(context) { + super(context); + + this._pipelines = { + ubyte: new bg.base.Pipeline(context), + float: new bg.base.Pipeline(context) + }; + + // Create two g-buffer render pipelines: + // - ubyte pipeline: to generate unsigned byte g-buffers (diffuse, material properties, etc) + // - float pipeline: to generate float g-buffers (currently, only needed to generate the position g-buffer) + let ubyteRS = new bg.base.TextureSurface(context); + ubyteRS.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.UNSIGNED_BYTE }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._pipelines.ubyte.effect = new bg.render.GBufferEffect(context); + this._pipelines.ubyte.renderSurface = ubyteRS; + + let floatRS = new bg.base.TextureSurface(context); + floatRS.create([ + { type:bg.base.RenderSurfaceType.RGBA, format:bg.base.RenderSurfaceFormat.FLOAT }, + { type:bg.base.RenderSurfaceType.DEPTH, format:bg.base.RenderSurfaceFormat.RENDERBUFFER } + ]); + this._pipelines.float.effect = new bg.render.PositionGBufferEffect(context); + this._pipelines.float.renderSurface = floatRS; + + this._ubyteDrawVisitor = new bg.scene.DrawVisitor(this._pipelines.ubyte,this._matrixState); + this._floatDrawVisitor = new bg.scene.DrawVisitor(this._pipelines.float,this._matrixState); + } + + get diffuse() { return this._pipelines.ubyte.renderSurface.getTexture(0); } + get specular() { return this._pipelines.ubyte.renderSurface.getTexture(1); } + get normal() { return this._pipelines.ubyte.renderSurface.getTexture(2); } + get material() { return this._pipelines.ubyte.renderSurface.getTexture(3); } + get position() { return this._pipelines.float.renderSurface.getTexture(0); } + get shadow() { return this._pipelines.ubyte.renderSurface.getTexture(4); } + + update(sceneRoot,camera) { + updatePipeline(this._pipelines.ubyte,this._ubyteDrawVisitor,sceneRoot,camera); + updatePipeline(this._pipelines.float,this._floatDrawVisitor,sceneRoot,camera); + } + } + + bg.render.GBufferSet = GBufferSet; + +})(); +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class LightingEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + this._fragmentShaderSource.appendHeader("#extension GL_EXT_draw_buffers : require"); + + this._fragmentShaderSource.addParameter([ + { name:"inDiffuse", dataType:"sampler2D", role:"value"}, + { name:"inSpecular", dataType:"sampler2D", role:"value"}, + { name:"inNormal", dataType:"sampler2D", role:"value"}, + { name:"inMaterial", dataType:"sampler2D", role:"value"}, + { name:"inPosition", dataType:"sampler2D", role:"value"}, + { name:"inShadowMap", dataType:"sampler2D", role:"value" }, + { name:"inLightEmissionFactor", dataType:"float", role:"value" }, + { name:"fsTexCoord", dataType:"vec2", role:"in" } + ]); + this._fragmentShaderSource.addParameter(lib().inputs.lighting.all); + this._fragmentShaderSource.addFunction(lib().functions.utils.all); + this._fragmentShaderSource.addFunction(lib().functions.lighting.all); + + if (bg.Engine.Get().id=="webgl1") { + this._fragmentShaderSource.setMainBody(` + vec4 diffuse = texture2D(inDiffuse,fsTexCoord); + vec4 specular = vec4(texture2D(inSpecular,fsTexCoord).rgb,1.0); + vec4 normalTex = texture2D(inNormal,fsTexCoord); + vec3 normal = normalTex.xyz * 2.0 - 1.0; + vec4 material = texture2D(inMaterial,fsTexCoord); + vec4 position = texture2D(inPosition,fsTexCoord); + + vec4 shadowColor = texture2D(inShadowMap,fsTexCoord); + float shininess = material.g * 255.0; + float lightEmission = material.r; + bool unlit = normalTex.a == 0.0; + vec4 specularColor = vec4(0.0,0.0,0.0,1.0); + if (unlit) { + gl_FragData[0] = vec4(diffuse.rgb * min(inLightEmissionFactor,1.0),1.0); + } + else { + vec4 light = getLight( + inLightType, + inLightAmbient, inLightDiffuse, inLightSpecular,shininess, + inLightPosition,inLightDirection, + inLightAttenuation.x,inLightAttenuation.y,inLightAttenuation.z, + inSpotCutoff,inSpotExponent,inLightCutoffDistance, + position.rgb,normal, + diffuse,specular,shadowColor, + specularColor + ); + light.rgb = light.rgb + (lightEmission * diffuse.rgb * inLightEmissionFactor); + gl_FragData[0] = light; + gl_FragData[1] = specularColor; + gl_FragData[2] = vec4((light.rgb - vec3(1.0,1.0,1.0)) * 2.0,1.0); + } + `); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + this.shader.setTexture("inDiffuse",this._surface.diffuse,bg.base.TextureUnit.TEXTURE_0); + this.shader.setTexture("inSpecular",this._surface.specular,bg.base.TextureUnit.TEXTURE_1); + this.shader.setTexture("inNormal",this._surface.normal,bg.base.TextureUnit.TEXTURE_2); + this.shader.setTexture("inMaterial",this._surface.material,bg.base.TextureUnit.TEXTURE_3); + this.shader.setTexture("inPosition",this._surface.position,bg.base.TextureUnit.TEXTURE_4); + this.shader.setTexture("inShadowMap",this._shadowMap,bg.base.TextureUnit.TEXTURE_5); + + if (this.light) { + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + + this.shader.setVector4('inLightAmbient',this._light.ambient); + this.shader.setVector4('inLightDiffuse',this._light.diffuse); + this.shader.setVector4('inLightSpecular',this._light.specular); + this.shader.setValueInt('inLightType',this._light.type); + this.shader.setVector3('inLightAttenuation',this._light.attenuationVector); + this.shader.setValueFloat('inLightEmissionFactor',this.lightEmissionFactor); + this.shader.setValueFloat('inLightCutoffDistance',this._light.cutoffDistance); + + + let dir = viewMatrix + .mult(this._lightTransform) + .rotation + .multVector(this._light.direction) + .xyz; + let pos = viewMatrix + //.mult(this._lightTransform) + .position; + this.shader.setVector3('inLightDirection',dir); + this.shader.setVector3('inLightPosition',pos); + this.shader.setValueFloat('inSpotCutoff',this._light.spotCutoff); + this.shader.setValueFloat('inSpotExponent',this._light.spotExponent); + // TODO: Type and other light properties. + } + } + + get lightEmissionFactor() { return this._lightEmissionFactor; } + set lightEmissionFactor(f) { this._lightEmissionFactor = f; } + + get light() { return this._light; } + set light(l) { this._light = l; } + + get lightTransform() { return this._lightTransform; } + set lightTransform(t) { this._lightTransform = t; } + + get shadowMap() { return this._shadowMap; } + set shadowMap(sm) { this._shadowMap = sm; } + } + + bg.render.LightingEffect = LightingEffect; +})(); + +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class PostprocessEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + this._fragmentShaderSource.addParameter([ + { name:"inTexture", dataType:"sampler2D", role:"value" }, + { name:"inFrameSize", dataType:"vec2", role:"value"}, + { name:"inBorderAntiAlias", dataType:"int", role:"value"}, + + { name:"fsTexCoord", dataType:"vec2", role:"in" } // vTexturePosition + ]); + + if (bg.Engine.Get().id=="webgl1") { + + this._fragmentShaderSource.addFunction(lib().functions.utils.texOffset); + this._fragmentShaderSource.addFunction(lib().functions.utils.luminance); + this._fragmentShaderSource.addFunction(lib().functions.utils.borderDetection); + this._fragmentShaderSource.addFunction(lib().functions.blur.textureDownsample); + this._fragmentShaderSource.addFunction(lib().functions.blur.gaussianBlur); + this._fragmentShaderSource.addFunction(lib().functions.blur.antiAlias); + + + this._fragmentShaderSource.setMainBody(` + vec4 result = vec4(0.0,0.0,0.0,1.0); + if (inBorderAntiAlias==1) { + result = antiAlias(inTexture,fsTexCoord,inFrameSize,0.1,3); + } + else { + result = texture2D(inTexture,fsTexCoord); + } + gl_FragColor = result; + `); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + this.shader.setTexture("inTexture",this._surface.texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2("inFrameSize",this._surface.texture.size); + this.shader.setValueInt("inBorderAntiAlias",0); + } + + get settings() { + if (!this._settings) { + this._currentKernelSize = 0; + this._settings = { + refractionAmount: 0.01 + } + } + return this._settings; + } + + } + + bg.render.PostprocessEffect = PostprocessEffect; +})(); + +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class RendererMixEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + this._fragmentShaderSource.addParameter([ + { name:"inOpaque", dataType:"sampler2D", role:"value" }, + { name:"inTransparent", dataType:"sampler2D", role:"value"}, + { name:"inTransparentNormal", dataType:"sampler2D", role:"value"}, + { name:"inOpaqueDepth", dataType:"sampler2D", role:"value" }, + { name:"inTransparentDepth", dataType:"sampler2D", role:"value" }, + { name:"inRefractionAmount", dataType:"float", role:"value"}, + + { name:"fsTexCoord", dataType:"vec2", role:"in" } // vTexturePosition + ]); + + if (bg.Engine.Get().id=="webgl1") { + + this._fragmentShaderSource.setMainBody(` + vec4 opaque = texture2D(inOpaque,fsTexCoord); + vec4 transparent = texture2D(inTransparent,fsTexCoord); + vec3 normal = texture2D(inTransparentNormal,fsTexCoord).rgb * 2.0 - 1.0; + if (transparent.a>0.0) { + float refractionFactor = inRefractionAmount / texture2D(inTransparentDepth,fsTexCoord).z; + vec2 offset = fsTexCoord - normal.xy * refractionFactor; + vec4 opaqueDepth = texture2D(inOpaqueDepth,offset); + vec4 transparentDepth = texture2D(inTransparentDepth,offset); + //if (opaqueDepth.w>transparentDepth.w) { + opaque = texture2D(inOpaque,offset); + //} + } + vec3 color = opaque.rgb * (1.0 - transparent.a) + transparent.rgb * transparent.a; + gl_FragColor = vec4(color, 1.0); + `); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + this.shader.setTexture("inOpaque",this._surface.opaque,bg.base.TextureUnit.TEXTURE_0); + this.shader.setTexture("inTransparent",this._surface.transparent,bg.base.TextureUnit.TEXTURE_1); + this.shader.setTexture("inTransparentNormal",this._surface.transparentNormal,bg.base.TextureUnit.TEXTURE_2); + this.shader.setTexture("inOpaqueDepth",this._surface.opaqueDepth,bg.base.TextureUnit.TEXTURE_3); + this.shader.setTexture("inTransparentDepth",this._surface.transparentDepth,bg.base.TextureUnit.TEXTURE_4); + this.shader.setValueFloat("inRefractionAmount",this.settings.refractionAmount); + } + + get settings() { + if (!this._settings) { + this._currentKernelSize = 0; + this._settings = { + refractionAmount: -0.05 + } + } + return this._settings; + } + + } + + bg.render.RendererMixEffect = RendererMixEffect; +})(); +(function() { + + + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + class ShadowEffect extends bg.base.Effect { + constructor(context) { + super(context); + + let vertex = new bg.base.ShaderSource(bg.base.ShaderType.VERTEX); + let fragment = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + vertex.addParameter([ + lib().inputs.buffers.vertex, + lib().inputs.buffers.tex0, + null, + lib().inputs.matrix.model, + lib().inputs.matrix.view, + lib().inputs.matrix.projection, + { name:"inLightProjectionMatrix", dataType:"mat4", role:"value" }, + { name:"inLightViewMatrix", dataType:"mat4", role:"value" }, + null, + { name:"fsTexCoord", dataType:"vec2", role:"out" }, + { name:"fsVertexPosFromLight", dataType:"vec4", role:"out" } + ]); + + fragment.addParameter(lib().inputs.shadows.all); + fragment.addFunction(lib().functions.utils.unpack); + fragment.addFunction(lib().functions.lighting.getShadowColor); + + fragment.addParameter([ + lib().inputs.material.receiveShadows, + lib().inputs.material.texture, + lib().inputs.material.textureOffset, + lib().inputs.material.textureScale, + lib().inputs.material.alphaCutoff, + null, + { name:"fsTexCoord", dataType:"vec2", role:"in" }, + { name:"fsVertexPosFromLight", dataType:"vec4", role:"in" } + ]); + + fragment.addFunction(lib().functions.materials.samplerColor); + + if (bg.Engine.Get().id=="webgl1") { + vertex.setMainBody(` + mat4 ScaleMatrix = mat4(0.5, 0.0, 0.0, 0.0, + 0.0, 0.5, 0.0, 0.0, + 0.0, 0.0, 0.5, 0.0, + 0.5, 0.5, 0.5, 1.0); + + fsVertexPosFromLight = ScaleMatrix * inLightProjectionMatrix * inLightViewMatrix * inModelMatrix * vec4(inVertex,1.0); + fsTexCoord = inTex0; + + gl_Position = inProjectionMatrix * inViewMatrix * inModelMatrix * vec4(inVertex,1.0);`); + + fragment.setMainBody(` + float alpha = samplerColor(inTexture,fsTexCoord,inTextureOffset,inTextureScale).a; + if (alpha>inAlphaCutoff) { + vec4 shadowColor = vec4(1.0, 1.0, 1.0, 1.0); + if (inReceiveShadows) { + shadowColor = getShadowColor(fsVertexPosFromLight,inShadowMap,inShadowMapSize, + inShadowType,inShadowStrength,inShadowBias,inShadowColor); + } + gl_FragColor = shadowColor; + } + else { + discard; + }`); + } + + this.setupShaderSource([ vertex, fragment ]); + } + + beginDraw() { + if (this.light && this.shadowMap) { + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + let lightTransform = this.shadowMap.viewMatrix; + + this.shader.setMatrix4("inLightProjectionMatrix", this.shadowMap.projection); + + this.shader.setMatrix4("inLightViewMatrix",lightTransform); + this.shader.setValueInt("inShadowType",this.shadowMap.shadowType); + this.shader.setTexture("inShadowMap",this.shadowMap.texture,bg.base.TextureUnit.TEXTURE_1); + this.shader.setVector2("inShadowMapSize",this.shadowMap.size); + this.shader.setValueFloat("inShadowStrength",this.light.shadowStrength); + this.shader.setVector4("inShadowColor",this.shadowMap.shadowColor); + this.shader.setValueFloat("inShadowBias",this.light.shadowBias); + } + } + + setupVars() { + if (this.material && this.light) { + let matrixState = bg.base.MatrixState.Current(); + let viewMatrix = new bg.Matrix4(matrixState.viewMatrixStack.matrixConst); + + this.shader.setMatrix4("inModelMatrix",matrixState.modelMatrixStack.matrixConst); + this.shader.setMatrix4("inViewMatrix",viewMatrix); + this.shader.setMatrix4("inProjectionMatrix",matrixState.projectionMatrixStack.matrixConst); + + let texture = this.material.texture || bg.base.TextureCache.WhiteTexture(this.context); + this.shader.setTexture("inTexture",texture,bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector2("inTextureOffset",this.material.textureOffset); + this.shader.setVector2("inTextureScale",this.material.textureScale); + this.shader.setValueFloat("inAlphaCutoff",this.material.alphaCutoff); + + this.shader.setValueInt("inReceiveShadows",this.material.receiveShadows); + } + } + + get material() { return this._material; } + set material(m) { this._material = m; } + + get light() { return this._light; } + set light(l) { this._light = l; } + + get shadowMap() { return this._shadowMap; } + set shadowMap(sm) { this._shadowMap = sm; } + } + + bg.render.ShadowEffect = ShadowEffect; + +})(); +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + let MAX_KERN_OFFSETS = 64; + + class SSAOEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + + this._fragmentShaderSource.addParameter([ + { name:"inViewportSize", dataType:"vec2", role:"value" }, + { name:"inPositionMap", dataType:"sampler2D", role:"value"}, + { name:"inNormalMap", dataType:"sampler2D", role:"value"}, + { name:"inProjectionMatrix", dataType:"mat4", role:"value"}, + { name:"inRandomMap", dataType:"sampler2D", role:"value"}, + { name:"inRandomMapSize", dataType:"vec2", role:"value"}, + { name:"inSampleRadius", dataType:"float", role:"value" }, + { name:"inKernelOffsets", dataType:"vec3", role:"value", vec:MAX_KERN_OFFSETS }, + { name:"inKernelSize", dataType:"int", role:"value" }, + { name:"inSSAOColor", dataType:"vec4", role:"value" }, + { name:"inEnabled", dataType:"bool", role:"value"}, + { name:"inMaxDistance", dataType:"float", role:"value" }, + + { name:"fsTexCoord", dataType:"vec2", role:"in" } // vTexturePosition + ]); + + if (bg.Engine.Get().id=="webgl1") { + this._fragmentShaderSource.setMainBody(` + if (!inEnabled) discard; + else { + vec4 normalTex = texture2D(inNormalMap,fsTexCoord); + vec3 normal = normalTex.xyz * 2.0 - 1.0; + vec4 vertexPos = texture2D(inPositionMap,fsTexCoord); + if (distance(vertexPos.xyz,vec3(0))>inMaxDistance || vertexPos.w==1.0 || normalTex.a==0.0) { + discard; + } + else { + vec2 noiseScale = vec2(inViewportSize.x/inRandomMapSize.x,inViewportSize.y/inRandomMapSize.y); + vec3 randomVector = texture2D(inRandomMap, fsTexCoord * noiseScale).xyz * 2.0 - 1.0; + vec3 tangent = normalize(randomVector - normal * dot(randomVector, normal)); + vec3 bitangent = cross(normal,tangent); + mat3 tbn = mat3(tangent, bitangent, normal); + + float occlusion = 0.0; + for (int i=0; i<${ MAX_KERN_OFFSETS }; ++i) { + if (inKernelSize==i) break; + vec3 samplePos = tbn * inKernelOffsets[i]; + samplePos = samplePos * inSampleRadius + vertexPos.xyz; + + vec4 offset = inProjectionMatrix * vec4(samplePos, 1.0); // -w, w + offset.xyz /= offset.w; // -1, 1 + offset.xyz = offset.xyz * 0.5 + 0.5; // 0, 1 + + vec4 sampleRealPos = texture2D(inPositionMap, offset.xy); + if (samplePos.z<sampleRealPos.z) { + float dist = distance(vertexPos.xyz, sampleRealPos.xyz); + occlusion += dist<inSampleRadius ? 1.0:0.0; + } + + } + occlusion = 1.0 - (occlusion / float(inKernelSize)); + gl_FragColor = clamp(vec4(occlusion, occlusion, occlusion, 1.0) + inSSAOColor, 0.0, 1.0); + } + }`); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + if (this.settings.kernelSize>MAX_KERN_OFFSETS) { + this.settings.kernelSize = MAX_KERN_OFFSETS; + } + this.shader.setVector2("inViewportSize",new bg.Vector2(this.viewport.width, this.viewport.height)); + + // Surface map parameters + this.shader.setTexture("inPositionMap",this._surface.position,bg.base.TextureUnit.TEXTURE_0); + this.shader.setTexture("inNormalMap",this._surface.normal,bg.base.TextureUnit.TEXTURE_1); + + this.shader.setMatrix4("inProjectionMatrix",this.projectionMatrix); + this.shader.setTexture("inRandomMap",this.randomMap,bg.base.TextureUnit.TEXTURE_2); + this.shader.setVector2("inRandomMapSize",this.randomMap.size); + this.shader.setValueFloat("inSampleRadius",this.settings.sampleRadius); + this.shader.setVector3Ptr("inKernelOffsets",this.kernelOffsets); + this.shader.setValueInt("inKernelSize",this.settings.kernelSize); + this.shader.setVector4("inSSAOColor",this.settings.color); + this.shader.setValueInt("inEnabled",this.settings.enabled); + this.shader.setValueFloat("inMaxDistance",this.settings.maxDistance); + } + + // The following parameters in this effect are required, and the program will crash if + // some of them are not set + get viewport() { return this._viewport; } + set viewport(vp) { this._viewport = vp; } + + get projectionMatrix() { return this._projectionMatrix; } + set projectionMatrix(p) { this._projectionMatrix = p; } + + // randomMap is optional. By default, it takes the default random texture from TextureCache + get randomMap() { + if (!this._randomMap) { + this._randomMap = bg.base.TextureCache.RandomTexture(this.context); + } + return this._randomMap; + } + + set randomMap(rm) { this._randomMap = rm; } + + // Settings: the following parameters are group in a settings object that can be exposed outside + // the renderer object. + get settings() { + if (!this._settings) { + this._currentKernelSize = 0; + this._settings = { + kernelSize: 32, + sampleRadius: 0.3, + color: bg.Color.Black(), + blur: 4, + maxDistance: 100.0, + enabled: true + } + } + return this._settings; + } + + // This parameter is generated automatically using the kernelSize setting + get kernelOffsets() { + if (this._currentKernelSize!=this.settings.kernelSize) { + this._kernelOffsets = []; + for (let i=0; i<this.settings.kernelSize*3; i+=3) { + let kernel = new bg.Vector3(bg.Math.random() * 2.0 - 1.0, + bg.Math.random() * 2.0 - 1.0, + bg.Math.random()); + kernel.normalize(); + + let scale = (i/3) / this.settings.kernelSize; + scale = bg.Math.lerp(0.1,1.0, scale * scale); + kernel.scale(scale); + this._kernelOffsets.push(kernel.x); + this._kernelOffsets.push(kernel.y); + this._kernelOffsets.push(kernel.z); + } + this._currentKernelSize = this.settings.kernelSize; + } + return this._kernelOffsets; + } + } + + bg.render.SSAOEffect = SSAOEffect; +})(); +(function() { + function lib() { + return bg.base.ShaderLibrary.Get(); + } + + bg.render.RaytracerQuality = { + low : { maxSamples: 50, rayIncrement: 0.025 }, + mid: { maxSamples: 100, rayIncrement: 0.0125 }, + high: { maxSamples: 200, rayIncrement: 0.0062 }, + extreme: { maxSamples: 300, rayIncrement: 0.0031 } + }; + + class SSRTEffect extends bg.base.TextureEffect { + constructor(context) { + super(context); + this._basic = false; + this._viewportSize = new bg.Vector2(1920,1080); + this._frameIndex = 0; + } + + get fragmentShaderSource() { + if (!this._fragmentShaderSource) { + this._fragmentShaderSource = new bg.base.ShaderSource(bg.base.ShaderType.FRAGMENT); + let q = this.quality; + + this._fragmentShaderSource.addParameter([ + { name:"inPositionMap", dataType:"sampler2D", role:"value"}, + { name:"inSpecularMap", dataType:"sampler2D", role:"value" }, + { name:"inNormalMap", dataType:"sampler2D", role:"value"}, + { name:"inLightingMap", dataType:"sampler2D", role:"value"}, + { name:"inMaterialMap", dataType:"sampler2D", role:"value"}, + { name:"inSamplePosMap", dataType:"sampler2D", role:"value"}, + { name:"inProjectionMatrix", dataType:"mat4", role:"value"}, + { name:"inCameraPos", dataType:"vec3", role:"value" }, + { name:"inRayFailColor", dataType:"vec4", role:"value" }, + { name:"inBasicMode", dataType:"bool", role:"value" }, + { name:"inFrameIndex", dataType:"float", role:"value" }, + { name:"inCubeMap", dataType:"samplerCube", role:"value" }, + + { name:"inRandomTexture", dataType:"sampler2D", role:"value" }, + + { name:"fsTexCoord", dataType:"vec2", role:"in" } // vTexturePosition + ]); + + this._fragmentShaderSource.addFunction(lib().functions.utils.random); + + if (bg.Engine.Get().id=="webgl1") { + this._fragmentShaderSource.setMainBody(` + vec2 p = vec2(floor(gl_FragCoord.x), floor(gl_FragCoord.y)); + bool renderFrame = false; + if (inFrameIndex==0.0 && mod(p.x,2.0)==0.0 && mod(p.y,2.0)==0.0) { + renderFrame = true; + } + else if (inFrameIndex==1.0 && mod(p.x,2.0)==0.0 && mod(p.y,2.0)!=0.0) { + renderFrame = true; + } + else if (inFrameIndex==2.0 && mod(p.x,2.0)!=0.0 && mod(p.y,2.0)==0.0) { + renderFrame = true; + } + else if (inFrameIndex==3.0 && mod(p.x,2.0)!=0.0 && mod(p.y,2.0)!=0.0) { + renderFrame = true; + } + + vec4 material = texture2D(inMaterialMap,fsTexCoord); + if (renderFrame && material.b>0.0) { // material[2] is reflectionAmount + vec3 normal = texture2D(inNormalMap,fsTexCoord).xyz * 2.0 - 1.0; + + vec4 specular = texture2D(inSpecularMap,fsTexCoord); + float roughness = specular.a * 0.3; + vec3 r = texture2D(inRandomTexture,fsTexCoord*200.0).xyz * 2.0 - 1.0; + vec3 roughnessFactor = normalize(r) * roughness; + normal = normal + roughnessFactor; + vec4 vertexPos = texture2D(inPositionMap,fsTexCoord); + vec3 cameraVector = vertexPos.xyz - inCameraPos; + vec3 rayDirection = reflect(cameraVector,normal); + vec4 lighting = texture2D(inLightingMap,fsTexCoord); + + vec4 rayFailColor = inRayFailColor; + + vec3 lookup = reflect(cameraVector,normal); + rayFailColor = textureCube(inCubeMap, lookup); + + float increment = ${q.rayIncrement}; + vec4 result = rayFailColor; + if (!inBasicMode) { + result = rayFailColor; + for (float i=0.0; i<${q.maxSamples}.0; ++i) { + if (i==${q.maxSamples}.0) { + break; + } + + float radius = i * increment; + increment *= 1.01; + vec3 ray = vertexPos.xyz + rayDirection * radius; + + vec4 offset = inProjectionMatrix * vec4(ray, 1.0); // -w, w + offset.xyz /= offset.w; // -1, 1 + offset.xyz = offset.xyz * 0.5 + 0.5; // 0, 1 + + vec4 rayActualPos = texture2D(inSamplePosMap, offset.xy); + float hitDistance = rayActualPos.z - ray.z; + if (offset.x>1.0 || offset.y>1.0 || offset.x<0.0 || offset.y<0.0) { + result = rayFailColor; + break; + } + else if (hitDistance>0.02 && hitDistance<0.15) { + result = texture2D(inLightingMap,offset.xy); + break; + } + } + } + if (result.a==0.0) { + gl_FragColor = rayFailColor; + } + else { + gl_FragColor = result; + } + } + else { + discard; + }`); + } + } + return this._fragmentShaderSource; + } + + setupVars() { + this._frameIndex = (this._frameIndex + 1) % 4; + this.shader.setTexture("inPositionMap",this._surface.position,bg.base.TextureUnit.TEXTURE_0); + this.shader.setTexture("inNormalMap",this._surface.normal,bg.base.TextureUnit.TEXTURE_1); + this.shader.setTexture("inLightingMap",this._surface.reflectionColor,bg.base.TextureUnit.TEXTURE_2); + this.shader.setTexture("inMaterialMap",this._surface.material,bg.base.TextureUnit.TEXTURE_3); + this.shader.setTexture("inSamplePosMap",this._surface.reflectionDepth, bg.base.TextureUnit.TEXTURE_4); + this.shader.setMatrix4("inProjectionMatrix",this._projectionMatrix); + this.shader.setVector3("inCameraPos",this._cameraPos); + this.shader.setVector4("inRayFailColor",this.rayFailColor); + this.shader.setValueInt("inBasicMode",this.basic); + this.shader.setValueFloat("inFrameIndex",this._frameIndex); + + this.shader.setTexture("inCubeMap",bg.scene.Cubemap.Current(this.context), bg.base.TextureUnit.TEXTURE_5); + + + if (!this._randomTexture) { + this._randomTexture = bg.base.TextureCache.RandomTexture(this.context,new bg.Vector2(1024)); + } + this.shader.setTexture("inRandomTexture",this._randomTexture, bg.base.TextureUnit.TEXTURE_6); + + this.shader.setTexture("inSpecularMap",this._surface.specular,bg.base.TextureUnit.TEXTURE_7); + } + + get projectionMatrix() { return this._projectionMatrix; } + set projectionMatrix(p) { this._projectionMatrix = p; } + + get cameraPosition() { return this._cameraPos; } + set cameraPosition(c) { this._cameraPos = c; } + + get rayFailColor() { return this._rayFailColor || bg.Color.Black(); } + set rayFailColor(c) { this._rayFailColor = c; } + + get viewportSize() { return this._viewportSize; } + set viewportSize(s) { this._viewportSize = s; } + + get quality() { return this._quality || bg.render.RaytracerQuality.low; } + set quality(q) { + if (!this._quality || this._quality.maxSamples!=q.maxSamples || + this._quality.rayIncrement!=q.rayIncrement) + { + this._quality = q; + this._fragmentShaderSource = null; + this.rebuildShaders(); + } + } + + get basic() { return this._basic; } + set basic(b) { this._basic = b; } + + // TODO: SSRT settings + get settings() { + if (!this._settings) { + } + return this._settings; + } + } + + bg.render.SSRTEffect = SSRTEffect; +})(); +bg.webgl1 = {}; + +(function() { + let WEBGL_1_STRING = "webgl1"; + + bg.webgl1.EngineId = WEBGL_1_STRING; + + class WebGL1Engine extends bg.Engine { + constructor(context) { + super(context); + + // Initialize webgl extensions + bg.webgl1.Extensions.Get(context); + + this._engineId = WEBGL_1_STRING; + this._texture = new bg.webgl1.TextureImpl(context); + this._pipeline = new bg.webgl1.PipelineImpl(context); + this._polyList = new bg.webgl1.PolyListImpl(context); + this._shader = new bg.webgl1.ShaderImpl(context); + this._colorBuffer = new bg.webgl1.ColorRenderSurfaceImpl(context); + this._textureBuffer = new bg.webgl1.TextureRenderSurfaceImpl(context); + this._shaderSource = new bg.webgl1.ShaderSourceImpl(); + } + } + + bg.webgl1.Engine = WebGL1Engine; + +})(); + +(function() { + + bg.webgl1.shaderLibrary = { + inputs:{}, + functions:{} + } + + class ShaderSourceImpl extends bg.base.ShaderSourceImpl { + header(shaderType) { + return "precision highp float;\nprecision highp int;"; + } + + parameter(shaderType,paramData) { + if (!paramData) return "\n"; + let role = ""; + switch (paramData.role) { + case "buffer": + role = "attribute"; + break; + case "value": + role = "uniform"; + break; + case "in": + case "out": + role = "varying"; + break; + } + let vec = ""; + if (paramData.vec) { + vec = `[${paramData.vec}]`; + } + return `${role} ${paramData.dataType} ${paramData.name}${vec};`; + } + + func(shaderType,funcData) { + if (!funcData) return "\n"; + let params = ""; + for (let name in funcData.params) { + params += `${funcData.params[name]} ${name},`; + } + let src = `${funcData.returnType} ${funcData.name}(${params}) {`.replace(',)',')'); + let body = ("\n" + bg.base.ShaderSource.FormatSource(funcData.body)).replace(/\n/g,"\n\t"); + return src + body + "\n}"; + } + } + + bg.webgl1.ShaderSourceImpl = ShaderSourceImpl; + + +})(); +(function() { + let s_singleton = null; + + class Extensions extends bg.app.ContextObject { + static Get(gl) { + if (!s_singleton) { + s_singleton = new Extensions(gl); + } + return s_singleton; + } + + constructor(gl) { + super(gl); + } + + getExtension(ext) { + return this.context.getExtension(ext); + } + + get textureFloat() { + if (this._textureFloat===undefined) { + this._textureFloat = this.getExtension("OES_texture_float"); + } + return this._textureFloat; + } + + get depthTexture() { + if (this._depthTexture===undefined) { + this._depthTexture = this.getExtension("WEBGL_depth_texture"); + } + return this._depthTexture; + } + + get drawBuffers() { + if (this._drawBuffers===undefined) { + this._drawBuffers = this.getExtension("WEBGL_draw_buffers"); + } + return this._drawBuffers; + } + } + + bg.webgl1.Extensions = Extensions; +})(); +(function() { + + class PipelineImpl extends bg.base.PipelineImpl { + initFlags(context) { + bg.base.ClearBuffers.COLOR = context.COLOR_BUFFER_BIT; + bg.base.ClearBuffers.DEPTH = context.DEPTH_BUFFER_BIT; + } + + setViewport(context,vp) { + context.viewport(vp.x,vp.y,vp.width,vp.height); + } + + clearBuffers(context,color,buffers) { + context.clearColor(color.r,color.g,color.b,color.a); + if (buffers) context.clear(buffers); + } + + setDepthTestEnabled(context,e) { + e ? context.enable(context.DEPTH_TEST):context.disable(context.DEPTH_TEST); + } + + setCullFace(context,e) { + e ? context.enable(context.CULL_FACE):context.disable(context.CULL_FACE); + } + + setBlendEnabled(context,e) { + e ? context.enable(context.BLEND):context.disable(context.BLEND); + } + + setBlendMode(gl,m) { + switch (m) { + case bg.base.BlendMode.NORMAL: + gl.blendFunc(gl.SRC_ALPHA,gl.ONE_MINUS_SRC_ALPHA); + gl.blendEquation(gl.FUNC_ADD); + break; + case bg.base.BlendMode.MULTIPLY: + gl.blendFunc(gl.ZERO,gl.SRC_COLOR); + gl.blendEquation(gl.FUNC_ADD); + break; + case bg.base.BlendMode.ADD: + gl.blendFunc(gl.ONE,gl.ONE); + gl.blendEquation(gl.FUNC_ADD); + break; + case bg.base.BlendMode.SUBTRACT: + gl.blendFunc(gl.ONE,gl.ONE); + gl.blendEquation(gl.FUNC_SUBTRACT); + break; + case bg.base.BlendMode.ALPHA_ADD: + gl.blendFunc(gl.SRC_ALPHA,gl.SRC_ALPHA); + gl.blendEquation(gl.FUNC_ADD); + break; + case bg.base.BlendMode.ALPHA_SUBTRACT: + gl.blendFunc(gl.SRC_ALPHA,gl.SRC_ALPHA); + gl.blendEquation(gl.FUNC_SUBTRACT); + break; + } + } + } + + bg.webgl1.PipelineImpl = PipelineImpl; +})(); +(function() { + function createBuffer(context,array,itemSize,drawMode) { + let result = null; + if (array.length) { + result = context.createBuffer(); + context.bindBuffer(context.ARRAY_BUFFER,result); + context.bufferData(context.ARRAY_BUFFER, new Float32Array(array), drawMode); + result.itemSize = itemSize; + result.numItems = array.length/itemSize; + } + return result; + } + + function deleteBuffer(context,buffer) { + if (buffer) { + context.deleteBuffer(buffer); + } + return null; + } + + let s_uintElements = false; + + class PolyListImpl extends bg.base.PolyListImpl { + initFlags(context) { + bg.base.DrawMode.TRIANGLES = context.TRIANGLES; + bg.base.DrawMode.TRIANGLE_FAN = context.TRIANGLE_FAN; + bg.base.DrawMode.TRIANGLE_STRIP = context.TRIANGLE_STRIP; + bg.base.DrawMode.LINES = context.LINES; + bg.base.DrawMode.LINE_STRIP = context.LINE_STRIP; + + s_uintElements = context.getExtension("OES_element_index_uint"); + } + + create(context) { + return { + vertexBuffer:null, + normalBuffer:null, + tex0Buffer:null, + tex1Buffer:null, + tex2Buffer:null, + colorBuffer:null, + tangentBuffer:null, + indexBuffer:null + } + } + + build(context,plist,vert,norm,t0,t1,t2,col,tan,index) { + plist.vertexBuffer = createBuffer(context,vert,3,context.STATIC_DRAW); + plist.normalBuffer = createBuffer(context,norm,3,context.STATIC_DRAW); + plist.tex0Buffer = createBuffer(context,t0,2,context.STATIC_DRAW); + plist.tex1Buffer = createBuffer(context,t1,2,context.STATIC_DRAW); + plist.tex2Buffer = createBuffer(context,t2,2,context.STATIC_DRAW); + plist.colorBuffer = createBuffer(context,col,4,context.STATIC_DRAW); + plist.tangentBuffer = createBuffer(context,tan,3,context.STATIC_DRAW); + + if (index.length>0 && s_uintElements) { + plist.indexBuffer = context.createBuffer(); + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, plist.indexBuffer); + context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint32Array(index),context.STATIC_DRAW); + plist.indexBuffer.itemSize = 3; + plist.indexBuffer.numItems = index.length; + } + else { + plist.indexBuffer = context.createBuffer(); + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, plist.indexBuffer); + context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint16Array(index),context.STATIC_DRAW); + plist.indexBuffer.itemSize = 3; + plist.indexBuffer.numItems = index.length; + } + + return plist.vertexBuffer && plist.indexBuffer; + } + + draw(context,plist,drawMode,numberOfIndex) { + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, plist.indexBuffer); + if (s_uintElements) { + context.drawElements(drawMode, numberOfIndex, context.UNSIGNED_INT, 0); + } + else { + context.drawElements(drawMode, numberOfIndex, context.UNSIGNED_SHORT, 0); + } + } + + destroy(context,plist) { + context.bindBuffer(context.ARRAY_BUFFER, null); + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, null); + + plist.vertexBuffer = deleteBuffer(context,plist.vertexBuffer); + plist.normalBuffer = deleteBuffer(context,plist.normalBuffer); + plist.tex0Buffer = deleteBuffer(context,plist.tex0Buffer); + plist.tex1Buffer = deleteBuffer(context,plist.tex1Buffer); + plist.tex2Buffer = deleteBuffer(context,plist.tex2Buffer); + plist.colorBuffer = deleteBuffer(context,plist.colorBuffer); + plist.tangentBuffer = deleteBuffer(context,plist.tangentBuffer); + plist.indexBuffer = deleteBuffer(context,plist.indexBuffer); + } + + update(context,plist,bufferType,newData) { + if (bufferType==bg.base.BufferType.INDEX) { + if (s_uintElements) { + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, plist.indexBuffer); + context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint32Array(index),context.STATIC_DRAW); + } + else { + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER, plist.indexBuffer); + context.bufferData(context.ELEMENT_ARRAY_BUFFER, new Uint16Array(index),context.STATIC_DRAW); + } + context.bindBuffer(context.ELEMENT_ARRAY_BUFFER,null); + } + else { + switch (bufferType) { + case bg.base.BufferType.VERTEX: + context.bindBuffer(context.ARRAY_BUFFER, plist.vertexBuffer); + break; + case bg.base.BufferType.NORMAL: + context.bindBuffer(context.ARRAY_BUFFER, plist.normalBuffer); + break; + case bg.base.BufferType.TEX_COORD_0: + context.bindBuffer(context.ARRAY_BUFFER, plist.tex0Buffer); + break; + case bg.base.BufferType.TEX_COORD_1: + context.bindBuffer(context.ARRAY_BUFFER, plist.tex1Buffer); + break; + case bg.base.BufferType.TEX_COORD_2: + context.bindBuffer(context.ARRAY_BUFFER, plist.tex2Buffer); + break; + case bg.base.BufferType.COLOR: + context.bindBuffer(context.ARRAY_BUFFER, plist.colorBuffer); + break; + case bg.base.BufferType.TANGENT: + context.bindBuffer(context.ARRAY_BUFFER, plist.tangentBuffer); + break; + } + context.bufferData(context.ARRAY_BUFFER, new Float32Array(newData), context.STATIC_DRAW); + context.bindBuffer(context.ARRAY_BUFFER,null); + } + } + } + + bg.webgl1.PolyListImpl = PolyListImpl; +})(); + +(function() { + + let ext = null; + + function getMaxColorAttachments() { + if (ext.drawBuffers) { + return ext.drawBuffers.MAX_COLOR_ATTACHMENTS || + ext.drawBuffers.MAX_COLOR_ATTACHMENTS_WEBGL; + } + return 1; + } + + // type: RGBA, format: UNSIGNED_BYTE => regular RGBA texture + // type: RGBA, format: FLOAT => float texture attachment + // type: DEPTH, format: RENDERBUFFER => regular depth renderbuffer + // type: DEPTH, format: UNSIGNED_SHORT => depth texture + // every one else: error, unsupported combination + function checkValid(attachment) { + switch (true) { + case attachment.type==bg.base.RenderSurfaceType.RGBA && attachment.format==bg.base.RenderSurfaceFormat.UNSIGNED_BYTE: + return true; + case attachment.type==bg.base.RenderSurfaceType.RGBA && attachment.format==bg.base.RenderSurfaceFormat.FLOAT: + return true; + case attachment.type==bg.base.RenderSurfaceType.DEPTH && attachment.format==bg.base.RenderSurfaceFormat.RENDERBUFFER: + return true; + case attachment.type==bg.base.RenderSurfaceType.DEPTH && attachment.format==bg.base.RenderSurfaceFormat.UNSIGNED_SHORT: + return true; + // TODO: Cubemaps + default: + return false; + } + } + + function getTypeString(type) { + switch (type) { + case bg.base.RenderSurfaceType.RGBA: + return "RGBA"; + case bg.base.RenderSurfaceType.DEPTH: + return "DEPTH"; + default: + return "unknown"; + } + } + + function getFormatString(format) { + switch (format) { + case bg.base.RenderSurfaceFormat.UNSIGNED_BYTE: + return "UNSIGNED_BYTE"; + case bg.base.RenderSurfaceFormat.FLOAT: + return "FLOAT"; + case bg.base.RenderSurfaceFormat.RENDERBUFFER: + return "RENDERBUFFER"; + case bg.base.RenderSurfaceFormat.UNSIGNED_SHORT: + return "UNSIGNED_SHORT"; + default: + return "unknown"; + } + } + + function checkCompatibility(attachments) { + let colorAttachments = 0; + let maxColorAttachments = getMaxColorAttachments(); + let error = null; + + attachments.every(function(att,index) { + if (!checkValid(att)) { + error = `Error in attachment ${index}: Invalid combination of type and format (${getTypeString(att.type)} is incompatible with ${getFormatString(att.format)}).`; + return false; + } + + if (att.type==bg.base.RenderSurfaceType.DEPTH && + index!=attachments.length-1 + ) { + error = `Error in attachment ${index}: Depth attachment must be specified as the last attachment. Specified at index ${index} of ${attachments.length - 1}`; + return false; + } + + if (att.type==bg.base.RenderSurfaceType.RGBA) { + ++colorAttachments; + } + + if (att.format==bg.base.RenderSurfaceFormat.FLOAT && !ext.textureFloat) { + error = `Error in attachment ${index}: Floating point render surface requested, but the required extension is not present: OES_texture_float.`; + return false; + } + if (att.type==bg.base.RenderSurfaceType.DEPTH && + att.format!=bg.base.RenderSurfaceFormat.RENDERBUFFER && + !ext.depthTexture + ) { + error = `Error in attachment ${index}: Depth texture attachment requested, but the requiered extension is not present: WEBGL_depth_texture.`; + return false; + } + if (colorAttachments>maxColorAttachments) { + error = `Error in attachment ${index}: Maximum number of ${maxColorAttachments} color attachment exceeded.`; + return false; + } + + return true; + }); + + return error; + } + + function addAttachment(gl,size,attachment,index) { + if (attachment.format==bg.base.RenderSurfaceFormat.RENDERBUFFER) { + let renderbuffer = gl.createRenderbuffer(); + + gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer); + gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16,size.width,size.height); + gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuffer); + gl.bindRenderbuffer(gl.RENDERBUFFER,null); + + return { _renderbuffer: renderbuffer }; + } + else { + let texture = new bg.base.Texture(gl); + let format = attachment.format; + let type = attachment.type; + + texture.create(); + texture.bind(); + texture.minFilter = bg.base.TextureFilter.LINEAR; + texture.magFilter = bg.base.TextureFilter.LINEAR; + texture.wrapX = bg.base.TextureWrap.CLAMP; + texture.wrapY = bg.base.TextureWrap.CLAMP; + texture.setImageRaw(size.width,size.height,null,type,format); + gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + index, gl.TEXTURE_2D, texture._texture, 0); + texture.unbind(); + + return texture; + } + } + + function resizeAttachment(gl,size,att,index) { + if (att.texture) { + att.texture.bind(); + att.texture.setImageRaw(size.width,size.height,null,att.type,att.format); + att.texture.unbind(); + } + if (att.renderbuffer) { + let rb = att.renderbuffer._renderbuffer; + gl.bindRenderbuffer(gl.RENDERBUFFER,rb); + gl.renderbufferStorage(gl.RENDERBUFFER,gl.DEPTH_COMPONENT16, size.width, size.height); + gl.bindRenderbuffer(gl.RENDERBUFFER,null); + } + } + + + class WebGLRenderSurfaceImpl extends bg.base.RenderSurfaceBufferImpl { + initFlags(gl) { + bg.base.RenderSurfaceType.RGBA = gl.RGBA; + bg.base.RenderSurfaceType.DEPTH = gl.DEPTH_COMPONENT; + + bg.base.RenderSurfaceFormat.UNSIGNED_BYTE = gl.UNSIGNED_BYTE; + bg.base.RenderSurfaceFormat.UNSIGNED_SHORT = gl.UNSIGNED_SHORT; + bg.base.RenderSurfaceFormat.FLOAT = gl.FLOAT; + // This is not a format. This will create a renderbuffer instead a texture + bg.base.RenderSurfaceFormat.RENDERBUFFER = gl.RENDERBUFFER; + + ext = bg.webgl1.Extensions.Get(); + } + + supportType(type) { + switch (type) { + case bg.base.RenderSurfaceType.RGBA: + return true; + case bg.base.RenderSurfaceType.DEPTH: + return ext.depthTexture!=null; + default: + return false; + } + } + + supportFormat(format) { + switch (format) { + case bg.base.RenderSurfaceFormat.UNSIGNED_BYTE: + case bg.base.RenderSurfaceFormat.UNSIGNED_SHORT: + return true; + case bg.base.RenderSurfaceFormat.FLOAT: + return ext.textureFloat!=null; + default: + return false; + } + } + + get maxColorAttachments() { + return getMaxColorAttachments(); + } + } + + class ColorRenderSurfaceImpl extends WebGLRenderSurfaceImpl { + create(gl) { + return {}; + } + setActive(gl,renderSurface,attachments) { + gl.bindFramebuffer(gl.FRAMEBUFFER,null); + } + resize(gl,renderSurface,size) {} + destroy(gl,renderSurface) {} + + readBuffer(gl,renderSurface,rectangle,viewportSize) { + let pixels = new Uint8Array(rectangle.width * rectangle.height * 4); + // Note that the webgl texture is flipped vertically, so we need to convert the Y coord + gl.readPixels(rectangle.x, rectangle.y, rectangle.width, rectangle.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + return pixels; + } + } + + bg.webgl1.ColorRenderSurfaceImpl = ColorRenderSurfaceImpl; + + class TextureRenderSurfaceImpl extends WebGLRenderSurfaceImpl { + initFlags(gl) {} // Flags initialized in ColorRenderSurfaceImpl + + create(gl,attachments) { + // If this function returns no error, the browser is compatible with + // the specified attachments. + let error = checkCompatibility(attachments); + if (error) { + throw new Error(error); + } + // Initial size of 256. The actual size will be defined in resize() function + let size = new bg.Vector2(256); + let surfaceData = { + fbo: gl.createFramebuffer(), + size: size, + attachments: [] + }; + + gl.bindFramebuffer(gl.FRAMEBUFFER, surfaceData.fbo); + + let colorAttachments = []; + attachments.forEach((att,i) => { + // This will return a bg.base.Texture or a renderbuffer + let result = addAttachment(gl,size,att,i); + if (result instanceof bg.base.Texture) { + colorAttachments.push(ext.drawBuffers ? ext.drawBuffers.COLOR_ATTACHMENT0_WEBGL + i : gl.COLOR_ATTACHMENT0); + } + surfaceData.attachments.push({ + texture: result instanceof bg.base.Texture ? result:null, + renderbuffer: result instanceof bg.base.Texture ? null:result, + format:att.format, + type:att.type + }); + }); + if (colorAttachments.length>1) { + ext.drawBuffers.drawBuffersWEBGL(colorAttachments); + } + + gl.bindFramebuffer(gl.FRAMEBUFFER,null); + return surfaceData; + } + + setActive(gl,renderSurface) { + gl.bindFramebuffer(gl.FRAMEBUFFER,renderSurface.fbo); + } + + readBuffer(gl,renderSurface,rectangle,viewportSize) { + let pixels = new Uint8Array(rectangle.width * rectangle.height * 4); + // Note that the webgl texture is flipped vertically, so we need to convert the Y coord + gl.readPixels(rectangle.x, viewportSize.height - rectangle.y, rectangle.width, rectangle.height, gl.RGBA, gl.UNSIGNED_BYTE, pixels); + return pixels; + } + + resize(gl,renderSurface,size) { + renderSurface.size.width = size.width; + renderSurface.size.height = size.height; + renderSurface.attachments.forEach((att,index) => { + resizeAttachment(gl,size,att,index); + }); + } + + destroy(gl,renderSurface) { + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + let attachments = renderSurface && renderSurface.attachments; + if (renderSurface.fbo) { + gl.deleteFramebuffer(renderSurface.fbo); + } + if (attachments) { + attachments.forEach((attachment) => { + if (attachment.texture) { + attachment.texture.destroy(); + } + else if (attachment.renderbuffer) { + gl.deleteRenderbuffer(attachment.renderbuffer._renderbuffer); + } + }); + } + renderSurface.fbo = null; + renderSurface.size = null; + renderSurface.attachments = null; + } + } + + bg.webgl1.TextureRenderSurfaceImpl = TextureRenderSurfaceImpl; +})(); +(function() { + let MAX_BLUR_ITERATIONS = 40; + + let BLUR_DOWNSAMPLE = 15 ; + + let textureCubeDownsampleParams = { + textureInput:'samplerCube', texCoord:'vec3', size:'vec2', reduction:'vec2' + }; + let textureCubeDownsampleBody = ` + float dx = reduction.x / size.x; + float dy = reduction.y / size.y; + vec2 coord = vec2(dx * texCoord.x / dx, dy * texCoord.y / dy); + return textureCube(textureInput,coord); + `; + + let textureDownsampleParams = { + textureInput:'sampler2D', texCoord:'vec2', size:'vec2', reduction:'vec2' + }; + let textureDownsampleBody = ` + float dx = reduction.x / size.x; + float dy = reduction.y / size.y; + vec2 coord = vec2(dx * texCoord.x / dx, dy * texCoord.y / dy); + return texture2D(textureInput,coord); + `; + + let blurParams = { + textureInput:'sampler2D', texCoord:'vec2', size:'int', samplerSize:'vec2' + }; + let blurBody = ` + int downsample = ${ BLUR_DOWNSAMPLE }; + vec2 texelSize = 1.0 / samplerSize; + vec3 result = vec3(0.0); + size = int(max(float(size / downsample),1.0)); + vec2 hlim = vec2(float(-size) * 0.5 + 0.5); + vec2 sign = vec2(1.0); + float blurFactor = 10.0 - 0.2 * float(size) * log(float(size)); + for (int x=0; x<${ MAX_BLUR_ITERATIONS }; ++x) { + if (x==size) break; + for (int y=0; y<${ MAX_BLUR_ITERATIONS }; ++y) { + if (y==size) break; + vec2 offset = (hlim + vec2(float(x), float(y))) * texelSize * float(downsample) / blurFactor; + result += textureDownsample(textureInput, texCoord + offset,samplerSize,vec2(downsample)).rgb; + } + } + return vec4(result / float(size * size), 1.0); + `; + + let glowParams = { + textureInput:'sampler2D', texCoord:'vec2', size:'int', samplerSize:'vec2' + }; + let glowBody = ` + int downsample = ${ BLUR_DOWNSAMPLE }; + vec2 texelSize = 1.0 / samplerSize; + vec3 result = vec3(0.0); + size = int(max(float(size / downsample),1.0)); + vec2 hlim = vec2(float(-size) * 0.5 + 0.5); + vec2 sign = vec2(1.0); + for (int x=0; x<${ MAX_BLUR_ITERATIONS }; ++x) { + if (x==size) break; + for (int y=0; y<${ MAX_BLUR_ITERATIONS }; ++y) { + if (y==size) break; + vec2 offset = (hlim + vec2(float(x), float(y))) * texelSize; + result += textureDownsample(textureInput, texCoord + offset,samplerSize,vec2(downsample)).rgb; + } + } + return vec4(result / float(size * size), 1.0); + `; + + let blurCubeParams = { + textureInput:'samplerCube', texCoord:'vec3', size:'int', samplerSize:'vec2', dist:'float' + }; + let blurCubeBody = ` + int downsample = int(max(1.0,dist)); + vec2 texelSize = 1.0 / samplerSize; + vec3 result = vec3(0.0); + size = int(max(float(size / downsample),1.0)); + vec2 hlim = vec2(float(-size) * 0.5 + 0.5); + vec2 sign = vec2(1.0); + for (int x=0; x<40; ++x) { + if (x==size) break; + for (int y=0; y<40; ++y) { + if (y==size) break; + vec3 offset = vec3((hlim + vec2(float(x*downsample), float(y*downsample))) * texelSize,0.0); + result += textureCube(textureInput, texCoord + offset,2.0).rgb; + } + } + return vec4(result / float(size * size), 1.0); + `; + + bg.webgl1.shaderLibrary + .functions + .blur = { + textureDownsample:{ + returnType:"vec4", name:'textureDownsample', params:textureDownsampleParams, body:textureDownsampleBody + }, + gaussianBlur:{ + returnType:"vec4", name:"gaussianBlur", params:blurParams, body:blurBody + }, + blur:{ + returnType:"vec4", name:"blur", params:blurParams, body:blurBody + }, + glowBlur:{ + returnType:"vec4", name:"glowBlur", params:glowParams, body:glowBody + }, + blurCube:{ + returnType:"vec4", name:"blurCube", params:blurCubeParams, body:blurCubeBody + }, + + // Require: utils.borderDetection + antiAlias:{ + returnType:'vec4', name:'antiAlias', params: { + sampler:'sampler2D', texCoord:'vec2', frameSize:'vec2', tresshold:'float', iterations:'int' + }, body: ` + return (borderDetection(sampler,texCoord,frameSize)>tresshold) ? + gaussianBlur(sampler,texCoord,iterations,frameSize) : + texture2D(sampler,texCoord); + ` + } + } +})(); +(function() { + + bg.webgl1.shaderLibrary + .functions + .colorCorrection = { + rgb2hsv: { + returnType:"vec3", name:"rgb2hsv", params:{ c:"vec3" }, body:` + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);` + }, + hsv2rgb: { + returnType:"vec3", name:"hsv2rgb", params: { c:"vec3" }, body:` + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);` + }, + applyBrightness: { + returnType:"vec4", name:"applyBrightness", params: { color:"vec4", brightness:"float" }, body:` + return clamp(vec4(color.rgb + brightness - 0.5,1.0),0.0,1.0); + ` + }, + applyContrast: { + returnType:"vec4", name:"applyContrast", params:{ color:"vec4", contrast:"float" }, body:` + return clamp(vec4((color.rgb * max(contrast + 0.5,0.0)),1.0),0.0,1.0);` + }, + applySaturation: { + returnType:"vec4", name:"applySaturation", params:{ color:"vec4", hue:"float", saturation:"float", lightness:"float" }, body:` + vec3 fragRGB = clamp(color.rgb + vec3(0.001),0.0,1.0); + vec3 fragHSV = rgb2hsv(fragRGB); + lightness -= 0.01; + float h = hue; + fragHSV.x *= h; + fragHSV.yz *= vec2(saturation,lightness); + fragHSV.x = mod(fragHSV.x, 1.0); + fragHSV.y = mod(fragHSV.y, 1.0); + fragHSV.z = mod(fragHSV.z, 1.0); + fragRGB = hsv2rgb(fragHSV); + return clamp(vec4(hsv2rgb(fragHSV), color.w),0.0,1.0);` + }, + colorCorrection: { + returnType:"vec4", name:"colorCorrection", params:{ + fragColor:"vec4", hue:"float", saturation:"float", + lightness:"float", brightness:"float", contrast:"float" }, + body:` + return applyContrast(applyBrightness(applySaturation(fragColor,hue,saturation,lightness),brightness),contrast);` + } + } + +})(); +(function() { + + bg.webgl1.shaderLibrary + .inputs = { + // Input buffers + buffers: { + vertex: { name:"inVertex", dataType:"vec3", role:"buffer", target:"vertex" }, // role:buffer => attribute + normal: { name:"inNormal", dataType:"vec3", role:"buffer", target:"normal" }, + tangent: { name:"inTangent", dataType:"vec3", role:"buffer", target:"tangent" }, + tex0: { name:"inTex0", dataType:"vec2", role:"buffer", target:"tex0" }, + tex1: { name:"inTex1", dataType:"vec2", role:"buffer", target:"tex1" }, + tex2: { name:"inTex2", dataType:"vec2", role:"buffer", target:"tex2" }, + color: { name:"inColor", dataType:"vec4", role:"buffer", target:"color" } + }, + + // Matrixes + matrix: { + model: { name:"inModelMatrix", dataType:"mat4", role:"value" }, // role:value => uniform + view: { name:"inViewMatrix", dataType:"mat4", role:"value" }, + projection: { name:"inProjectionMatrix", dataType:"mat4", role:"value" }, + normal: { name:"inNormalMatrix", dataType:"mat4", role:"value" }, + viewInv: { name:"inViewMatrixInv", dataType:"mat4", role:"value" } + }, + + ///// Material properties + material: { + // Color + diffuse: { name:"inDiffuseColor", dataType:"vec4", role:"value" }, + specular: { name:"inSpecularColor", dataType:"vec4", role:"value" }, + + // Shininess + shininess: { name:"inShininess", dataType:"float", role:"value" }, + shininessMask: { name:"inShininessMask", dataType:"sampler2D", role:"value" }, + shininessMaskChannel: { name:"inShininessMaskChannel", dataType:"vec4", role:"value" }, + shininessMaskInvert: { name:"inShininessMaskInvert", dataType:"bool", role:"value" }, + + // Light emission + lightEmission: { name:"inLightEmission", dataType:"float", role:"value" }, + lightEmissionMask: { name:"inLightEmissionMask", dataType:"sampler2D", role:"value" }, + lightEmissionMaskChannel: { name:"inLightEmissionMaskChannel", dataType:"vec4", role:"value" }, + lightEmissionMaskInvert: { name:"inLightEmissionMaskInvert", dataType:"bool", role:"value" }, + + + // Textures + texture: { name:"inTexture", dataType:"sampler2D", role:"value" }, + textureOffset: { name:"inTextureOffset", dataType:"vec2", role:"value" }, + textureScale: { name:"inTextureScale", dataType:"vec2", role:"value" }, + alphaCutoff: { name:"inAlphaCutoff", dataType:"float", role:"value" }, + + lightMap: { name:"inLightMap", dataType:"sampler2D", role:"value" }, + lightMapOffset: { name:"inLightMapOffset", dataType:"vec2", role:"value" }, + lightMapScale: { name:"inLightMapScale", dataType:"vec2", role:"value" }, + + normalMap: { name:"inNormalMap", dataType:"sampler2D", role:"value" }, + normalMapOffset: { name:"inNormalMapOffset", dataType:"vec2", role:"value" }, + normalMapScale: { name:"inNormalMapScale", dataType:"vec2", role:"value" }, + + // Reflection + reflection: { name:"inReflection", dataType:"float", role:"value" }, + reflectionMask: { name:"inReflectionMask", dataType:"sampler2D", role:"value" }, + reflectionMaskChannel: { name:"inReflectionMaskChannel", dataType:"vec4", role:"value" }, + reflectionMaskInvert: { name:"inReflectionMaskInvert", dataType:"bool", role:"value" }, + + // Shadows + castShadows: { name:"inCastShadows", dataType:"bool", role:"value" }, + receiveShadows: { name:"inReceiveShadows", dataType:"bool", role:"value" }, + + // Roughness + roughness: { name:"inRoughness", dataType:"float", role:"value" }, + roughnessMask: { name:"inRoughnessMask", dataType:"sampler2D", role:"value" }, + roughnessMaskChannel: { name:"inRoughnessMaskChannel", dataType:"vec4", role:"value" }, + roughnessMaskInvert: { name:"inRoughnessMaskInvert", dataType:"bool", role:"value" }, + + unlit: { name:"inUnlit", dataType:"bool", role:"value" } + }, + + // Lighting + lighting: { + type: { name:"inLightType", dataType:"int", role:"value" }, + position: { name:"inLightPosition", dataType:"vec3", role:"value" }, + direction: { name:"inLightDirection", dataType:"vec3", role:"value" }, + ambient: { name:"inLightAmbient", dataType:"vec4", role:"value" }, + diffuse: { name:"inLightDiffuse", dataType:"vec4", role:"value" }, + specular: { name:"inLightSpecular", dataType:"vec4", role:"value" }, + attenuation: { name:"inLightAttenuation", dataType:"vec3", role:"value" }, // const, linear, exp + spotExponent: { name:"inSpotExponent", dataType:"float", role:"value" }, + spotCutoff: { name:"inSpotCutoff", dataType:"float", role:"value" }, + cutoffDistance: { name:"inLightCutoffDistance", dataType:"float", role:"value" }, + exposure: { name:"inLightExposure", dataType:"float", role:"value" }, + castShadows: { name:"inLightCastShadows", dataType:"bool", role:"value" } + }, + + lightingForward: { + type: { name:"inLightType", dataType:"int", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + position: { name:"inLightPosition", dataType:"vec3", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + direction: { name:"inLightDirection", dataType:"vec3", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + ambient: { name:"inLightAmbient", dataType:"vec4", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + diffuse: { name:"inLightDiffuse", dataType:"vec4", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + specular: { name:"inLightSpecular", dataType:"vec4", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + attenuation: { name:"inLightAttenuation", dataType:"vec3", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, // const, linear, exp + spotExponent: { name:"inSpotExponent", dataType:"float", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + spotCutoff: { name:"inSpotCutoff", dataType:"float", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + cutoffDistance: { name:"inLightCutoffDistance", dataType:"float", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + exposure: { name:"inLightExposure", dataType:"float", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + castShadows: { name:"inLightCastShadows", dataType:"bool", role:"value", vec:bg.base.MAX_FORWARD_LIGHTS }, + numLights: { name:"inNumLights", dataType:"int", role:"value" } + }, + + // Shadows + shadows: { + shadowMap: { name:"inShadowMap", dataType:"sampler2D", role:"value" }, + shadowMapSize: { name:"inShadowMapSize", dataType:"vec2", role:"value" }, + shadowStrength: { name:"inShadowStrength", dataType:"float", role:"value" }, + shadowColor: { name:"inShadowColor", dataType:"vec4", role:"value" }, + shadowBias: { name:"inShadowBias", dataType:"float", role:"value" }, + shadowType: { name:"inShadowType", dataType:"int", role:"value" } + }, + + // Color correction + colorCorrection: { + hue: { name:"inHue", dataType:"float", role:"value" }, + saturation: { name:"inSaturation", dataType:"float", role:"value" }, + lightness: { name:"inLightness", dataType:"float", role:"value" }, + brightness: { name:"inBrightness", dataType:"float", role:"value" }, + contrast: { name:"inContrast", dataType:"float", role:"value" } + } + + } +})(); +(function() { + + bg.webgl1.shaderLibrary + .functions + .lighting = { + beckmannDistribution: { + returnType:"float", name:"beckmannDistribution", params: { + x:"float", roughness:"float" + }, body: ` + float NdotH = max(x,0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; + ` + }, + + beckmannSpecular: { + returnType:"float", name:"beckmannSpecular", params:{ + lightDirection:"vec3", viewDirection:"vec3", surfaceNormal:"vec3", roughness:"float" + }, body: ` + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); + ` + }, + + getDirectionalLight: { + returnType:"vec4", name:"getDirectionalLight", params:{ + ambient:"vec4", diffuse:"vec4", specular:"vec4", shininess:"float", + direction:"vec3", vertexPos:"vec3", normal:"vec3", matDiffuse:"vec4", matSpecular:"vec4", + shadowColor:"vec4", + specularOut:"out vec4" + }, body: ` + vec3 color = ambient.rgb * matDiffuse.rgb; + vec3 diffuseWeight = max(0.0, dot(normal,direction)) * diffuse.rgb; + color += min(diffuseWeight,shadowColor.rgb) * matDiffuse.rgb; + specularOut = vec4(0.0,0.0,0.0,1.0); + if (shininess>0.0) { + vec3 eyeDirection = normalize(-vertexPos); + vec3 reflectionDirection = normalize(reflect(-direction,normal)); + float specularWeight = clamp(pow(max(dot(reflectionDirection, eyeDirection), 0.0), shininess), 0.0, 1.0); + //sspecularWeight = beckmannSpecular(direction,eyeDirection,normal,0.01); + vec3 specularColor = specularWeight * pow(shadowColor.rgb,vec3(10.0)); + //color += specularColor * specular.rgb * matSpecular.rgb; + specularOut = vec4(specularColor * specular.rgb * matSpecular.rgb,1.0); + } + return vec4(color,1.0);` + }, + + getPointLight: { + returnType:"vec4", name:"getPointLight", params: { + ambient: "vec4", diffuse: "vec4", specular: "vec4", shininess: "float", + position: "vec3", constAtt: "float", linearAtt: "float", expAtt: "float", + vertexPos: "vec3", normal: "vec3", matDiffuse: "vec4", matSpecular: "vec4", + specularOut:"out vec4" + }, body: ` + vec3 pointToLight = position - vertexPos; + float distance = length(pointToLight); + vec3 lightDir = normalize(pointToLight); + float attenuation = 1.0 / (constAtt + linearAtt * distance + expAtt * distance * distance); + vec3 color = ambient.rgb * matDiffuse.rgb; + vec3 diffuseWeight = max(0.0,dot(normal,lightDir)) * diffuse.rgb * attenuation; + color += diffuseWeight * matDiffuse.rgb; + specularOut = vec4(0.0,0.0,0.0,1.0); + if (shininess>0.0) { + vec3 eyeDirection = normalize(-vertexPos); + vec3 reflectionDirection = normalize(reflect(-lightDir, normal)); + float specularWeight = clamp(pow(max(dot(reflectionDirection,eyeDirection),0.0), shininess), 0.0, 1.0); + //color += specularWeight * specular.rgb * matSpecular.rgb * attenuation; + specularOut = vec4(specularWeight * specular.rgb * matSpecular.rgb * attenuation,1.0); + } + return vec4(color,1.0);` + }, + + getSpotLight: { + returnType:"vec4", name:"getSpotLight", params: { + ambient:"vec4", diffuse:"vec4", specular:"vec4", shininess:"float", + position:"vec3", direction:"vec3", + constAtt:"float", linearAtt:"float", expAtt:"float", + spotCutoff:"float", spotExponent:"float", + vertexPos:"vec3", normal:"vec3", + matDiffuse:"vec4", matSpecular:"vec4", shadowColor:"vec4", + specularOut:"out vec4" + }, body: ` + vec4 matAmbient = vec4(1.0); + vec3 s = normalize(position - vertexPos); + float angle = acos(dot(-s, direction)); + float cutoff = radians(clamp(spotCutoff / 2.0,0.0,90.0)); + float distance = length(position - vertexPos); + float attenuation = 1.0 / (constAtt );//+ linearAtt * distance + expAtt * distance * distance); + if (angle<cutoff) { + float spotFactor = pow(dot(-s, direction), spotExponent); + vec3 v = normalize(vec3(-vertexPos)); + vec3 h = normalize(v + s); + vec3 diffuseAmount = matDiffuse.rgb * diffuse.rgb * max(dot(s, normal), 0.0); + specularOut = vec4(0.0,0.0,0.0,1.0); + if (shininess>0.0) { + specularOut.rgb = matSpecular.rgb * specular.rgb * pow(max(dot(h,normal), 0.0),shininess); + specularOut.rgb *= pow(shadowColor.rgb,vec3(10.0)); + //diffuseAmount += matSpecular.rgb * specular.rgb * pow(max(dot(h,normal), 0.0),shininess); + //diffuseAmount *= pow(shadowColor.rgb,vec3(10.0)); + } + diffuseAmount.r = min(diffuseAmount.r, shadowColor.r); + diffuseAmount.g = min(diffuseAmount.g, shadowColor.g); + diffuseAmount.b = min(diffuseAmount.b, shadowColor.b); + return vec4(ambient.rgb * matDiffuse.rgb + attenuation * spotFactor * diffuseAmount,1.0); + } + else { + return vec4(ambient.rgb * matDiffuse.rgb,1.0); + }` + }, + + getLight: { + returnType:"vec4", name:"getLight", params: { + lightType:"int", + ambient:"vec4", diffuse:"vec4", specular:"vec4", shininess:"float", + lightPosition:"vec3", lightDirection:"vec3", + constAtt:"float", linearAtt:"float", expAtt:"float", + spotCutoff:"float", spotExponent:"float",cutoffDistance:"float", + vertexPosition:"vec3", vertexNormal:"vec3", + matDiffuse:"vec4", matSpecular:"vec4", shadowColor:"vec4", + specularOut:"out vec4" + }, body: ` + vec4 light = vec4(0.0); + if (lightType==${ bg.base.LightType.DIRECTIONAL }) { + light = getDirectionalLight(ambient,diffuse,specular,shininess, + -lightDirection,vertexPosition,vertexNormal,matDiffuse,matSpecular,shadowColor,specularOut); + } + else if (lightType==${ bg.base.LightType.SPOT }) { + float d = distance(vertexPosition,lightPosition); + if (d<=cutoffDistance || cutoffDistance==-1.0) { + light = getSpotLight(ambient,diffuse,specular,shininess, + lightPosition,lightDirection, + constAtt,linearAtt,expAtt, + spotCutoff,spotExponent, + vertexPosition,vertexNormal,matDiffuse,matSpecular,shadowColor,specularOut); + } + } + else if (lightType==${ bg.base.LightType.POINT }) { + float d = distance(vertexPosition,lightPosition); + if (d<=cutoffDistance || cutoffDistance==-1.0) { + light = getPointLight(ambient,diffuse,specular,shininess, + lightPosition, + constAtt,linearAtt,expAtt, + vertexPosition,vertexNormal,matDiffuse,matSpecular,specularOut); + } + } + return light; + ` + }, + + getShadowColor:{ + returnType:"vec4", name:"getShadowColor", params:{ + vertexPosFromLight:'vec4', shadowMap:'sampler2D', shadowMapSize:'vec2', + shadowType:'int', shadowStrength:'float', shadowBias:'float', shadowColor:'vec4' + }, body:` + float visibility = 1.0; + vec3 depth = vertexPosFromLight.xyz / vertexPosFromLight.w; + const float kShadowBorderOffset = 3.0; + float shadowBorderOffset = kShadowBorderOffset / shadowMapSize.x; + float bias = shadowBias; + vec4 shadow = vec4(1.0); + if (shadowType==${ bg.base.ShadowType.HARD }) { // hard + float shadowDepth = unpack(texture2D(shadowMap,depth.xy)); + if (shadowDepth<depth.z - bias && + (depth.x>0.0 && depth.x<1.0 && depth.y>0.0 && depth.y<1.0)) + { + visibility = 1.0 - shadowStrength; + } + shadow = clamp(shadowColor + visibility,0.0,1.0); + } + else if (shadowType>=${ bg.base.ShadowType.SOFT }) { // soft / soft stratified (not supported on webgl, fallback to soft) + vec2 poissonDisk[4]; + poissonDisk[0] = vec2( -0.94201624, -0.39906216 ); + poissonDisk[1] = vec2( 0.94558609, -0.76890725 ); + poissonDisk[2] = vec2( -0.094184101, -0.92938870 ); + poissonDisk[3] = vec2( 0.34495938, 0.29387760 ); + + for (int i=0; i<4; ++i) { + float shadowDepth = unpack(texture2D(shadowMap, depth.xy + poissonDisk[i]/1000.0)); + + if (shadowDepth<depth.z - bias + && (depth.x>0.0 && depth.x<1.0 && depth.y>0.0 && depth.y<1.0)) { + visibility -= (shadowStrength) * 0.25; + } + } + shadow = clamp(shadowColor + visibility,0.0,1.0); + } + return shadow;` + } + } +})(); +(function() { + + bg.webgl1.shaderLibrary + .functions + .materials = { + samplerColor: { + returnType:"vec4", name:"samplerColor", params: { + sampler:"sampler2D", + uv:"vec2", offset:"vec2", scale:"vec2" + }, body:` + return texture2D(sampler,uv * scale + offset);` + }, + + samplerNormal: { + returnType:"vec3", name:"samplerNormal", params:{ + sampler:"sampler2D", + uv:"vec2", offset:"vec2", scale:"vec2" + }, body:` + return normalize(samplerColor(sampler,uv,offset,scale).xyz * 2.0 - 1.0); + ` + }, + + combineNormalWithMap:{ + returnType:"vec3", name:"combineNormalWithMap", params:{ + normalCoord:"vec3", + tangent:"vec3", + bitangent:"vec3", + normalMapValue:"vec3" + }, body:` + mat3 tbnMat = mat3( tangent.x, bitangent.x, normalCoord.x, + tangent.y, bitangent.y, normalCoord.y, + tangent.z, bitangent.z, normalCoord.z + ); + return normalize(normalMapValue * tbnMat);` + }, + + applyTextureMask:{ + returnType:"float", name:"applyTextureMask", params: { + value:"float", + textureMask:"sampler2D", + uv:"vec2", offset:"vec2", scale:"vec2", + channelMask:"vec4", + invert:"bool" + }, body:` + float mask; + vec4 color = samplerColor(textureMask,uv,offset,scale); + mask = color.r * channelMask.r + + color.g * channelMask.g + + color.b * channelMask.b + + color.a * channelMask.a; + if (invert) { + mask = 1.0 - mask; + } + return value * mask;` + }, + + specularColor:{ + returnType:"vec4", name:"specularColor", params:{ + specular:"vec4", + shininessMask:"sampler2D", + uv:"vec2", offset:"vec2", scale:"vec2", + channelMask:"vec4", + invert:"bool" + }, body:` + float maskValue = applyTextureMask(1.0, shininessMask,uv,offset,scale,channelMask,invert); + return vec4(specular.rgb * maskValue, 1.0);` + } + }; + +})(); +(function() { + + bg.webgl1.shaderLibrary + .functions + .utils = { + pack: { + returnType:"vec4", name:"pack", params:{ depth:"float" }, body: ` + const vec4 bitSh = vec4(256 * 256 * 256, + 256 * 256, + 256, + 1.0); + const vec4 bitMsk = vec4(0, + 1.0 / 256.0, + 1.0 / 256.0, + 1.0 / 256.0); + vec4 comp = fract(depth * bitSh); + comp -= comp.xxyz * bitMsk; + return comp;` + }, + + unpack: { + returnType:"float", name:"unpack", params:{ color:"vec4" }, body:` + const vec4 bitShifts = vec4(1.0 / (256.0 * 256.0 * 256.0), + 1.0 / (256.0 * 256.0), + 1.0 / 256.0, + 1.0); + return dot(color, bitShifts);` + }, + + random: { + returnType:"float", name:"random", params:{ + seed:"vec3", i:"int" + }, body:` + vec4 seed4 = vec4(seed,i); + float dot_product = dot(seed4, vec4(12.9898,78.233,45.164,94.673)); + return fract(sin(dot_product) * 43758.5453);` + }, + + texOffset: { + returnType: 'vec4', name:'texOffset', params: { + sampler:'sampler2D', + texCoord:'vec2', + offset:'vec2', + frameSize:'vec2' + }, body: ` + return texture2D(sampler,texCoord + vec2(offset.x * 1.0/frameSize.x,offset.y * 1.0 / frameSize.y)); + ` + }, + + luminance: { + returnType: 'float', name:'luminance', params: { color:'vec3' }, body: ` + return dot(vec3(0.2126,0.7152,0.0722), color); + ` + }, + + // Require: colorCorrection.luminance and utils.texOffset + borderDetection:{ + returnType: 'float', name:'borderDetection', params: { + sampler:'sampler2D', texCoord:'vec2', frameSize:'vec2' + }, body: ` + float s00 = luminance(texOffset(sampler,texCoord,vec2(-1.0, 1.0),frameSize).rgb); + float s10 = luminance(texOffset(sampler,texCoord,vec2(-1.0, 0.0),frameSize).rgb); + float s20 = luminance(texOffset(sampler,texCoord,vec2(-1.0,-1.0),frameSize).rgb); + float s01 = luminance(texOffset(sampler,texCoord,vec2(-1.0, 1.0),frameSize).rgb); + float s21 = luminance(texOffset(sampler,texCoord,vec2( 0.0,-1.0),frameSize).rgb); + float s02 = luminance(texOffset(sampler,texCoord,vec2( 1.0, 1.0),frameSize).rgb); + float s12 = luminance(texOffset(sampler,texCoord,vec2( 1.0, 0.0),frameSize).rgb); + float s22 = luminance(texOffset(sampler,texCoord,vec2( 1.0,-1.0),frameSize).rgb); + + float sx = s00 + 2.0 * s10 + s20 - (s02 + 2.0 * s12 + s22); + float sy = s00 + 2.0 * s01 + s02 - (s20 + 2.0 * s21 + s22); + + return sx * sx + sy * sy; + ` + }, + + applyConvolution:{ + returnType:'vec4', name:'applyConvolution', params: { + texture:'sampler2D', texCoord:'vec2', texSize:'vec2', convMatrix:'float[9]', radius:'float' + }, body: ` + vec2 onePixel = vec2(1.0,1.0) / texSize * radius; + vec4 colorSum = + texture2D(texture, texCoord + onePixel * vec2(-1, -1)) * convMatrix[0] + + texture2D(texture, texCoord + onePixel * vec2( 0, -1)) * convMatrix[1] + + texture2D(texture, texCoord + onePixel * vec2( 1, -1)) * convMatrix[2] + + texture2D(texture, texCoord + onePixel * vec2(-1, 0)) * convMatrix[3] + + texture2D(texture, texCoord + onePixel * vec2( 0, 0)) * convMatrix[4] + + texture2D(texture, texCoord + onePixel * vec2( 1, 0)) * convMatrix[5] + + texture2D(texture, texCoord + onePixel * vec2(-1, 1)) * convMatrix[6] + + texture2D(texture, texCoord + onePixel * vec2( 0, 1)) * convMatrix[7] + + texture2D(texture, texCoord + onePixel * vec2( 1, 1)) * convMatrix[8]; + float kernelWeight = + convMatrix[0] + + convMatrix[1] + + convMatrix[2] + + convMatrix[3] + + convMatrix[4] + + convMatrix[5] + + convMatrix[6] + + convMatrix[7] + + convMatrix[8]; + if (kernelWeight <= 0.0) { + kernelWeight = 1.0; + } + return vec4((colorSum / kernelWeight).rgb, 1.0); + ` + } + } +})(); +(function() { + + class ShaderImpl extends bg.base.ShaderImpl { + initFlags(context) { + bg.base.ShaderType.VERTEX = context.VERTEX_SHADER; + bg.base.ShaderType.FRAGMENT = context.FRAGMENT_SHADER; + } + + setActive(context,shaderProgram) { + context.useProgram(shaderProgram && shaderProgram.program); + } + + create(context) { + return { + program:context.createProgram(), + attribLocations:{}, + uniformLocations:{} + }; + } + + addShaderSource(context,shaderProgram,shaderType,source) { + let error = null; + + if (!shaderProgram || !shaderProgram.program ) { + error = "Could not attach shader. Invalid shader program"; + } + else { + let shader = context.createShader(shaderType); + context.shaderSource(shader,source); + context.compileShader(shader); + + if (!context.getShaderParameter(shader, context.COMPILE_STATUS)) { + error = context.getShaderInfoLog(shader); + } + else { + context.attachShader(shaderProgram.program,shader); + } + + context.deleteShader(shader); + } + + return error; + } + + link(context,shaderProgram) { + let error = null; + if (!shaderProgram || !shaderProgram.program ) { + error = "Could not link shader. Invalid shader program"; + } + else { + context.linkProgram(shaderProgram.program); + if (!context.getProgramParameter(shaderProgram.program,context.LINK_STATUS)) { + error = context.getProgramInfoLog(shaderProgram.program); + } + } + return error; + } + + initVars(context,shader,inputBufferVars,valueVars) { + inputBufferVars.forEach(function(name) { + shader.attribLocations[name] = context.getAttribLocation(shader.program,name); + }); + + valueVars.forEach(function(name) { + shader.uniformLocations[name] = context.getUniformLocation(shader.program,name); + }); + } + + setInputBuffer(context,shader,varName,vertexBuffer,itemSize) { + if (vertexBuffer && shader && shader.program) { + let loc = shader.attribLocations[varName]; + if (loc!=-1) { + context.bindBuffer(context.ARRAY_BUFFER,vertexBuffer); + context.enableVertexAttribArray(loc); + context.vertexAttribPointer(loc,itemSize,context.FLOAT,false,0,0); + } + } + } + + disableInputBuffer(context,shader,name) { + context.disableVertexAttribArray(shader.attribLocations[name]); + } + + setValueInt(context,shader,name,v) { + context.uniform1i(shader.uniformLocations[name],v); + } + + setValueIntPtr(context,shader,name,v) { + context.uniform1iv(shader.uniformLocations[name],v); + } + + setValueFloat(context,shader,name,v) { + context.uniform1f(shader.uniformLocations[name],v); + } + + setValueFloatPtr(context,shader,name,v) { + context.uniform1fv(shader.uniformLocations[name],v); + } + + setValueVector2(context,shader,name,v) { + context.uniform2fv(shader.uniformLocations[name],v.v); + } + + setValueVector3(context,shader,name,v) { + context.uniform3fv(shader.uniformLocations[name],v.v); + } + + setValueVector4(context,shader,name,v) { + context.uniform4fv(shader.uniformLocations[name],v.v); + } + + setValueVector2v(context,shader,name,v) { + context.uniform2fv(shader.uniformLocations[name],v); + } + + setValueVector3v(context,shader,name,v) { + context.uniform3fv(shader.uniformLocations[name],v); + } + + setValueVector4v(context,shader,name,v) { + context.uniform4fv(shader.uniformLocations[name],v); + } + + setValueMatrix3(context,shader,name,traspose,v) { + context.uniformMatrix3fv(shader.uniformLocations[name],traspose,v.m); + } + + setValueMatrix4(context,shader,name,traspose,v) { + context.uniformMatrix4fv(shader.uniformLocations[name],traspose,v.m); + } + + setTexture(context,shader,name,texture,textureUnit) { + texture.setActive(textureUnit); + texture.bind(); + context.uniform1i(shader.uniformLocations[name],textureUnit); + } + } + + bg.webgl1.ShaderImpl = ShaderImpl; + +})(); + +(function() { + + class TextureImpl extends bg.base.TextureImpl { + initFlags(context) { + bg.base.TextureWrap.REPEAT = context.REPEAT; + bg.base.TextureWrap.CLAMP = context.CLAMP_TO_EDGE; + bg.base.TextureWrap.MIRRORED_REPEAT = context.MIRRORED_REPEAT; + + bg.base.TextureFilter.NEAREST_MIPMAP_NEAREST = context.NEAREST_MIPMAP_NEAREST; + bg.base.TextureFilter.LINEAR_MIPMAP_NEAREST = context.LINEAR_MIPMAP_NEAREST; + bg.base.TextureFilter.NEAREST_MIPMAP_LINEAR = context.NEAREST_MIPMAP_LINEAR; + bg.base.TextureFilter.LINEAR_MIPMAP_LINEAR = context.LINEAR_MIPMAP_LINEAR; + bg.base.TextureFilter.NEAREST = context.NEAREST; + bg.base.TextureFilter.LINEAR = context.LINEAR; + + bg.base.TextureTarget.TEXTURE_2D = context.TEXTURE_2D; + bg.base.TextureTarget.CUBE_MAP = context.TEXTURE_CUBE_MAP; + bg.base.TextureTarget.POSITIVE_X_FACE = context.TEXTURE_CUBE_MAP_POSITIVE_X; + bg.base.TextureTarget.NEGATIVE_X_FACE = context.TEXTURE_CUBE_MAP_NEGATIVE_X; + bg.base.TextureTarget.POSITIVE_Y_FACE = context.TEXTURE_CUBE_MAP_POSITIVE_Y; + bg.base.TextureTarget.NEGATIVE_Y_FACE = context.TEXTURE_CUBE_MAP_NEGATIVE_Y; + bg.base.TextureTarget.POSITIVE_Z_FACE = context.TEXTURE_CUBE_MAP_POSITIVE_Z; + bg.base.TextureTarget.NEGATIVE_Z_FACE = context.TEXTURE_CUBE_MAP_NEGATIVE_Z; + } + + requireMipmaps(minFilter,magFilter) { + return minFilter==bg.base.TextureFilter.NEAREST_MIPMAP_NEAREST || + minFilter==bg.base.TextureFilter.LINEAR_MIPMAP_NEAREST || + minFilter==bg.base.TextureFilter.NEAREST_MIPMAP_LINEAR || + minFilter==bg.base.TextureFilter.LINEAR_MIPMAP_LINEAR || + magFilter==bg.base.TextureFilter.NEAREST_MIPMAP_NEAREST || + magFilter==bg.base.TextureFilter.LINEAR_MIPMAP_NEAREST || + magFilter==bg.base.TextureFilter.NEAREST_MIPMAP_LINEAR || + magFilter==bg.base.TextureFilter.LINEAR_MIPMAP_LINEAR; + } + + create(context) { + return context.createTexture(); + } + + setActive(context,texUnit) { + context.activeTexture(context.TEXTURE0 + texUnit); + } + + bind(context,target,texture) { + context.bindTexture(target, texture); + } + + unbind(context,target) { + this.bind(context,target,null); + } + + setTextureWrapX(context,target,texture,wrap) { + context.texParameteri(target, context.TEXTURE_WRAP_S, wrap); + } + + setTextureWrapY(context,target,texture,wrap) { + context.texParameteri(target, context.TEXTURE_WRAP_T, wrap); + } + + setImage(context,target,minFilter,magFilter,texture,img,flipY) { + if (flipY) context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, true); + context.texParameteri(target, context.TEXTURE_MIN_FILTER, minFilter); + context.texParameteri(target, context.TEXTURE_MAG_FILTER, magFilter); + context.texImage2D(target,0,context.RGBA,context.RGBA,context.UNSIGNED_BYTE, img); + if (this.requireMipmaps(minFilter,magFilter)) { + context.generateMipmap(target); + } + } + + setImageRaw(context,target,minFilter,magFilter,texture,width,height,data,type,format) { + if (!type) { + type = context.RGBA; + } + if (!format) { + format = context.UNSIGNED_BYTE; + } + if (format==bg.base.RenderSurfaceFormat.FLOAT) { + minFilter = bg.base.TextureFilter.NEAREST; + magFilter = bg.base.TextureFilter.NEAREST; + } + context.texParameteri(target, context.TEXTURE_MIN_FILTER, minFilter); + context.texParameteri(target, context.TEXTURE_MAG_FILTER, magFilter); + context.texImage2D(target,0, type,width,height,0,type,format, data); + if (this.requireMipmaps(minFilter,magFilter)) { + context.generateMipmap(target); + } + } + + setTextureFilter(context,target,minFilter,magFilter) { + context.texParameteri(target,context.TEXTURE_MIN_FILTER,minFilter); + context.texParameteri(target,context.TEXTURE_MAG_FILTER,magFilter); + } + + setCubemapImage(context,face,image) { + context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, false); + context.texParameteri(context.TEXTURE_CUBE_MAP, context.TEXTURE_MIN_FILTER, bg.base.TextureFilter.LINEAR); + context.texParameteri(context.TEXTURE_CUBE_MAP, context.TEXTURE_MAG_FILTER, bg.base.TextureFilter.LINEAR); + context.texImage2D(face, 0, context.RGBA, context.RGBA, context.UNSIGNED_BYTE, image); + } + + setCubemapRaw(context,face,rawImage,w,h) { + let type = context.RGBA; + let format = context.UNSIGNED_BYTE; + context.texParameteri(context.TEXTURE_CUBE_MAP, context.TEXTURE_MIN_FILTER, bg.base.TextureFilter.LINEAR); + context.texParameteri(context.TEXTURE_CUBE_MAP, context.TEXTURE_MAG_FILTER, bg.base.TextureFilter.LINEAR); + context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, false); + context.texImage2D(face, 0, type, w, h, 0, type, format, rawImage); + } + + setVideo(context,target,texture,video,flipY) { + if (flipY) context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, false); + context.texParameteri(target, context.TEXTURE_MAG_FILTER, context.LINEAR); + context.texParameteri(target, context.TEXTURE_MIN_FILTER, context.LINEAR); + context.texParameteri(target, context.TEXTURE_WRAP_S, context.CLAMP_TO_EDGE); + context.texParameteri(target, context.TEXTURE_WRAP_T, context.CLAMP_TO_EDGE); + context.texImage2D(target,0,context.RGBA,context.RGBA,context.UNSIGNED_BYTE,video); + } + + updateVideoData(context,target,texture,video) { + context.bindTexture(target, texture); + context.texImage2D(target,0,context.RGBA,context.RGBA,context.UNSIGNED_BYTE,video); + context.bindTexture(target,null); + } + + destroy(context,texture) { + context.deleteTexture(this._texture); + } + } + + bg.webgl1.TextureImpl = TextureImpl; + +})(); \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/javascript/jquery.min.js b/src/main/webapp/static/js/paella/player/javascript/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a1c07fd803b5fc9c54f44e31123ae4fa11e134b0 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k}); diff --git a/src/main/webapp/static/js/paella/player/javascript/lunr.min.js b/src/main/webapp/static/js/paella/player/javascript/lunr.min.js new file mode 100644 index 0000000000000000000000000000000000000000..e629d5a529fc24d5b6a77cc8336b152f4438208b --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/lunr.min.js @@ -0,0 +1,51 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ +!function(){var e,t,r,i,n,s,o,a,u,l,c,h,d,f,p,y,m,g,x,v,w,Q,k,S,E,L,b,P,T=function(e){var t=new T.Builder;return t.pipeline.add(T.trimmer,T.stopWordFilter,T.stemmer),t.searchPipeline.add(T.stemmer),e.call(t,t),t.build()};T.version="2.3.8" +/*! + * lunr.utils + * Copyright (C) 2019 Oliver Nightingale + */,T.utils={},T.utils.warn=(e=this,function(t){e.console&&console.warn&&console.warn(t)}),T.utils.asString=function(e){return null==e?"":e.toString()},T.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},T.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},T.FieldRef.joiner="/",T.FieldRef.fromString=function(e){var t=e.indexOf(T.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var r=e.slice(0,t),i=e.slice(t+1);return new T.FieldRef(i,r,e)},T.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+T.FieldRef.joiner+this.docRef),this._stringValue} +/*! + * lunr.Set + * Copyright (C) 2019 Oliver Nightingale + */,T.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},T.Set.complete={intersect:function(e){return e},union:function(e){return e},contains:function(){return!0}},T.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},T.Set.prototype.contains=function(e){return!!this.elements[e]},T.Set.prototype.intersect=function(e){var t,r,i,n=[];if(e===T.Set.complete)return this;if(e===T.Set.empty)return e;this.length<e.length?(t=this,r=e):(t=e,r=this),i=Object.keys(t.elements);for(var s=0;s<i.length;s++){var o=i[s];o in r.elements&&n.push(o)}return new T.Set(n)},T.Set.prototype.union=function(e){return e===T.Set.complete?T.Set.complete:e===T.Set.empty?this:new T.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},T.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},T.Token=function(e,t){this.str=e||"",this.metadata=t||{}},T.Token.prototype.toString=function(){return this.str},T.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},T.Token.prototype.clone=function(e){return e=e||function(e){return e},new T.Token(e(this.str,this.metadata),this.metadata)} +/*! + * lunr.tokenizer + * Copyright (C) 2019 Oliver Nightingale + */,T.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map((function(e){return new T.Token(T.utils.asString(e).toLowerCase(),T.utils.clone(t))}));for(var r=e.toString().toLowerCase(),i=r.length,n=[],s=0,o=0;s<=i;s++){var a=s-o;if(r.charAt(s).match(T.tokenizer.separator)||s==i){if(a>0){var u=T.utils.clone(t)||{};u.position=[o,a],u.index=n.length,n.push(new T.Token(r.slice(o,s),u))}o=s+1}}return n},T.tokenizer.separator=/[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2019 Oliver Nightingale + */,T.Pipeline=function(){this._stack=[]},T.Pipeline.registeredFunctions=Object.create(null),T.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&T.utils.warn("Overwriting existing registered function: "+t),e.label=t,T.Pipeline.registeredFunctions[e.label]=e},T.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||T.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},T.Pipeline.load=function(e){var t=new T.Pipeline;return e.forEach((function(e){var r=T.Pipeline.registeredFunctions[e];if(!r)throw new Error("Cannot load unregistered function: "+e);t.add(r)})),t},T.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach((function(e){T.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},T.Pipeline.prototype.after=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");r+=1,this._stack.splice(r,0,t)},T.Pipeline.prototype.before=function(e,t){T.Pipeline.warnIfFunctionNotRegistered(t);var r=this._stack.indexOf(e);if(-1==r)throw new Error("Cannot find existingFn");this._stack.splice(r,0,t)},T.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},T.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!=o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},T.Pipeline.prototype.runString=function(e,t){var r=new T.Token(e,t);return this.run([r]).map((function(e){return e.toString()}))},T.Pipeline.prototype.reset=function(){this._stack=[]},T.Pipeline.prototype.toJSON=function(){return this._stack.map((function(e){return T.Pipeline.warnIfFunctionNotRegistered(e),e.label}))} +/*! + * lunr.Vector + * Copyright (C) 2019 Oliver Nightingale + */,T.Vector=function(e){this._magnitude=0,this.elements=e||[]},T.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(s<e&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:s<e?2*(n+1):void 0},T.Vector.prototype.insert=function(e,t){this.upsert(e,t,(function(){throw"duplicate index"}))},T.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},T.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},T.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)(o=r[u])<(a=i[l])?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},T.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},T.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},T.Vector.prototype.toJSON=function(){return this.elements} +/*! + * lunr.stemmer + * Copyright (C) 2019 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */,T.stemmer=(t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},i="[aeiouy]",n="[^aeiou][^aeiouy]*",s=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),o=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),a=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),u=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),l=/^(.+?)(ss|i)es$/,c=/^(.+?)([^s])s$/,h=/^(.+?)eed$/,d=/^(.+?)(ed|ing)$/,f=/.$/,p=/(at|bl|iz)$/,y=new RegExp("([^aeiouylsz])\\1$"),m=new RegExp("^"+n+i+"[^aeiouwxy]$"),g=/^(.+?[^aeiou])y$/,x=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,v=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,w=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,Q=/^(.+?)(s|t)(ion)$/,k=/^(.+?)e$/,S=/ll$/,E=new RegExp("^"+n+i+"[^aeiouwxy]$"),L=function(e){var i,n,L,b,P,T,O;if(e.length<3)return e;if("y"==(L=e.substr(0,1))&&(e=L.toUpperCase()+e.substr(1)),P=c,(b=l).test(e)?e=e.replace(b,"$1$2"):P.test(e)&&(e=e.replace(P,"$1$2")),P=d,(b=h).test(e)){var I=b.exec(e);(b=s).test(I[1])&&(b=f,e=e.replace(b,""))}else P.test(e)&&(i=(I=P.exec(e))[1],(P=u).test(i)&&(T=y,O=m,(P=p).test(e=i)?e+="e":T.test(e)?(b=f,e=e.replace(b,"")):O.test(e)&&(e+="e")));return(b=g).test(e)&&(e=(i=(I=b.exec(e))[1])+"i"),(b=x).test(e)&&(i=(I=b.exec(e))[1],n=I[2],(b=s).test(i)&&(e=i+t[n])),(b=v).test(e)&&(i=(I=b.exec(e))[1],n=I[2],(b=s).test(i)&&(e=i+r[n])),P=Q,(b=w).test(e)?(i=(I=b.exec(e))[1],(b=o).test(i)&&(e=i)):P.test(e)&&(i=(I=P.exec(e))[1]+I[2],(P=o).test(i)&&(e=i)),(b=k).test(e)&&(i=(I=b.exec(e))[1],P=a,T=E,((b=o).test(i)||P.test(i)&&!T.test(i))&&(e=i)),P=o,(b=S).test(e)&&P.test(e)&&(b=f,e=e.replace(b,"")),"y"==L&&(e=L.toLowerCase()+e.substr(1)),e},function(e){return e.update(L)}),T.Pipeline.registerFunction(T.stemmer,"stemmer") +/*! + * lunr.stopWordFilter + * Copyright (C) 2019 Oliver Nightingale + */,T.generateStopWordFilter=function(e){var t=e.reduce((function(e,t){return e[t]=t,e}),{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},T.stopWordFilter=T.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),T.Pipeline.registerFunction(T.stopWordFilter,"stopWordFilter") +/*! + * lunr.trimmer + * Copyright (C) 2019 Oliver Nightingale + */,T.trimmer=function(e){return e.update((function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")}))},T.Pipeline.registerFunction(T.trimmer,"trimmer") +/*! + * lunr.TokenSet + * Copyright (C) 2019 Oliver Nightingale + */,T.TokenSet=function(){this.final=!1,this.edges={},this.id=T.TokenSet._nextId,T.TokenSet._nextId+=1},T.TokenSet._nextId=1,T.TokenSet.fromArray=function(e){for(var t=new T.TokenSet.Builder,r=0,i=e.length;r<i;r++)t.insert(e[r]);return t.finish(),t.root},T.TokenSet.fromClause=function(e){return"editDistance"in e?T.TokenSet.fromFuzzyString(e.term,e.editDistance):T.TokenSet.fromString(e.term)},T.TokenSet.fromFuzzyString=function(e,t){for(var r=new T.TokenSet,i=[{node:r,editsRemaining:t,str:e}];i.length;){var n=i.pop();if(n.str.length>0){var s,o=n.str.charAt(0);o in n.node.edges?s=n.node.edges[o]:(s=new T.TokenSet,n.node.edges[o]=s),1==n.str.length&&(s.final=!0),i.push({node:s,editsRemaining:n.editsRemaining,str:n.str.slice(1)})}if(0!=n.editsRemaining){if("*"in n.node.edges)var a=n.node.edges["*"];else{a=new T.TokenSet;n.node.edges["*"]=a}if(0==n.str.length&&(a.final=!0),i.push({node:a,editsRemaining:n.editsRemaining-1,str:n.str}),n.str.length>1&&i.push({node:n.node,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)}),1==n.str.length&&(n.node.final=!0),n.str.length>=1){if("*"in n.node.edges)var u=n.node.edges["*"];else{u=new T.TokenSet;n.node.edges["*"]=u}1==n.str.length&&(u.final=!0),i.push({node:u,editsRemaining:n.editsRemaining-1,str:n.str.slice(1)})}if(n.str.length>1){var l,c=n.str.charAt(0),h=n.str.charAt(1);h in n.node.edges?l=n.node.edges[h]:(l=new T.TokenSet,n.node.edges[h]=l),1==n.str.length&&(l.final=!0),i.push({node:l,editsRemaining:n.editsRemaining-1,str:c+n.str.slice(2)})}}}return r},T.TokenSet.fromString=function(e){for(var t=new T.TokenSet,r=t,i=0,n=e.length;i<n;i++){var s=e[i],o=i==n-1;if("*"==s)t.edges[s]=t,t.final=o;else{var a=new T.TokenSet;a.final=o,t.edges[s]=a,t=a}}return r},T.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node.final&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},T.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i];e=e+n+this.edges[n].id}return e},T.TokenSet.prototype.intersect=function(e){for(var t=new T.TokenSet,r=void 0,i=[{qNode:e,output:t,node:this}];i.length;){r=i.pop();for(var n=Object.keys(r.qNode.edges),s=n.length,o=Object.keys(r.node.edges),a=o.length,u=0;u<s;u++)for(var l=n[u],c=0;c<a;c++){var h=o[c];if(h==l||"*"==l){var d=r.node.edges[h],f=r.qNode.edges[l],p=d.final&&f.final,y=void 0;h in r.output.edges?(y=r.output.edges[h]).final=y.final||p:((y=new T.TokenSet).final=p,r.output.edges[h]=y),i.push({qNode:f,output:y,node:d})}}}return t},T.TokenSet.Builder=function(){this.previousWord="",this.root=new T.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},T.TokenSet.Builder.prototype.insert=function(e){var t,r=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)r++;this.minimize(r),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(i=r;i<e.length;i++){var n=new T.TokenSet,s=e[i];t.edges[s]=n,this.uncheckedNodes.push({parent:t,char:s,child:n}),t=n}t.final=!0,this.previousWord=e},T.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},T.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r.char]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}} +/*! + * lunr.Index + * Copyright (C) 2019 Oliver Nightingale + */,T.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},T.Index.prototype.search=function(e){return this.query((function(t){new T.QueryParser(e,t).parse()}))},T.Index.prototype.query=function(e){for(var t=new T.Query(this.fields),r=Object.create(null),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=0;a<this.fields.length;a++)i[this.fields[a]]=new T.Vector;e.call(t,t);for(a=0;a<t.clauses.length;a++){var u=t.clauses[a],l=null,c=T.Set.complete;l=u.usePipeline?this.pipeline.runString(u.term,{fields:u.fields}):[u.term];for(var h=0;h<l.length;h++){var d=l[h];u.term=d;var f=T.TokenSet.fromClause(u),p=this.tokenSet.intersect(f).toArray();if(0===p.length&&u.presence===T.Query.presence.REQUIRED){for(var y=0;y<u.fields.length;y++){s[F=u.fields[y]]=T.Set.empty}break}for(var m=0;m<p.length;m++){var g=p[m],x=this.invertedIndex[g],v=x._index;for(y=0;y<u.fields.length;y++){var w=x[F=u.fields[y]],Q=Object.keys(w),k=g+"/"+F,S=new T.Set(Q);if(u.presence==T.Query.presence.REQUIRED&&(c=c.union(S),void 0===s[F]&&(s[F]=T.Set.complete)),u.presence!=T.Query.presence.PROHIBITED){if(i[F].upsert(v,u.boost,(function(e,t){return e+t})),!n[k]){for(var E=0;E<Q.length;E++){var L,b=Q[E],P=new T.FieldRef(b,F),O=w[b];void 0===(L=r[P])?r[P]=new T.MatchData(g,F,O):L.add(g,F,O)}n[k]=!0}}else void 0===o[F]&&(o[F]=T.Set.empty),o[F]=o[F].union(S)}}}if(u.presence===T.Query.presence.REQUIRED)for(y=0;y<u.fields.length;y++){s[F=u.fields[y]]=s[F].intersect(c)}}var I=T.Set.complete,R=T.Set.empty;for(a=0;a<this.fields.length;a++){var F;s[F=this.fields[a]]&&(I=I.intersect(s[F])),o[F]&&(R=R.union(o[F]))}var C=Object.keys(r),N=[],j=Object.create(null);if(t.isNegated()){C=Object.keys(this.fieldVectors);for(a=0;a<C.length;a++){P=C[a];var _=T.FieldRef.fromString(P);r[P]=new T.MatchData}}for(a=0;a<C.length;a++){var D=(_=T.FieldRef.fromString(C[a])).docRef;if(I.contains(D)&&!R.contains(D)){var A,B=this.fieldVectors[_],V=i[_.fieldName].similarity(B);if(void 0!==(A=j[D]))A.score+=V,A.matchData.combine(r[_]);else{var z={ref:D,score:V,matchData:r[_]};j[D]=z,N.push(z)}}}return N.sort((function(e,t){return t.score-e.score}))},T.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map((function(e){return[e,this.invertedIndex[e]]}),this),t=Object.keys(this.fieldVectors).map((function(e){return[e,this.fieldVectors[e].toJSON()]}),this);return{version:T.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},T.Index.load=function(e){var t={},r={},i=e.fieldVectors,n=Object.create(null),s=e.invertedIndex,o=new T.TokenSet.Builder,a=T.Pipeline.load(e.pipeline);e.version!=T.version&&T.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+T.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var l=(h=i[u])[0],c=h[1];r[l]=new T.Vector(c)}for(u=0;u<s.length;u++){var h,d=(h=s[u])[0],f=h[1];o.insert(d),n[d]=f}return o.finish(),t.fields=e.fields,t.fieldVectors=r,t.invertedIndex=n,t.tokenSet=o.root,t.pipeline=a,new T.Index(t)} +/*! + * lunr.Builder + * Copyright (C) 2019 Oliver Nightingale + */,T.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=T.tokenizer,this.pipeline=new T.Pipeline,this.searchPipeline=new T.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},T.Builder.prototype.ref=function(e){this._ref=e},T.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},T.Builder.prototype.b=function(e){this._b=e<0?0:e>1?1:e},T.Builder.prototype.k1=function(e){this._k1=e},T.Builder.prototype.add=function(e,t){var r=e[this._ref],i=Object.keys(this._fields);this._documents[r]=t||{},this.documentCount+=1;for(var n=0;n<i.length;n++){var s=i[n],o=this._fields[s].extractor,a=o?o(e):e[s],u=this.tokenizer(a,{fields:[s]}),l=this.pipeline.run(u),c=new T.FieldRef(r,s),h=Object.create(null);this.fieldTermFrequencies[c]=h,this.fieldLengths[c]=0,this.fieldLengths[c]+=l.length;for(var d=0;d<l.length;d++){var f=l[d];if(null==h[f]&&(h[f]=0),h[f]+=1,null==this.invertedIndex[f]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var y=0;y<i.length;y++)p[i[y]]=Object.create(null);this.invertedIndex[f]=p}null==this.invertedIndex[f][s][r]&&(this.invertedIndex[f][s][r]=Object.create(null));for(var m=0;m<this.metadataWhitelist.length;m++){var g=this.metadataWhitelist[m],x=f.metadata[g];null==this.invertedIndex[f][s][r][g]&&(this.invertedIndex[f][s][r][g]=[]),this.invertedIndex[f][s][r][g].push(x)}}}},T.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,r={},i={},n=0;n<t;n++){var s=T.FieldRef.fromString(e[n]),o=s.fieldName;i[o]||(i[o]=0),i[o]+=1,r[o]||(r[o]=0),r[o]+=this.fieldLengths[s]}var a=Object.keys(this._fields);for(n=0;n<a.length;n++){var u=a[n];r[u]=r[u]/i[u]}this.averageFieldLength=r},T.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),r=t.length,i=Object.create(null),n=0;n<r;n++){for(var s=T.FieldRef.fromString(t[n]),o=s.fieldName,a=this.fieldLengths[s],u=new T.Vector,l=this.fieldTermFrequencies[s],c=Object.keys(l),h=c.length,d=this._fields[o].boost||1,f=this._documents[s.docRef].boost||1,p=0;p<h;p++){var y,m,g,x=c[p],v=l[x],w=this.invertedIndex[x]._index;void 0===i[x]?(y=T.idf(this.invertedIndex[x],this.documentCount),i[x]=y):y=i[x],m=y*((this._k1+1)*v)/(this._k1*(1-this._b+this._b*(a/this.averageFieldLength[o]))+v),m*=d,m*=f,g=Math.round(1e3*m)/1e3,u.insert(w,g)}e[s]=u}this.fieldVectors=e},T.Builder.prototype.createTokenSet=function(){this.tokenSet=T.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},T.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new T.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},T.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},T.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},T.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);null==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);null==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];null==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},T.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(t in this.metadata[e])for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}else this.metadata[e][t]=r},T.Query=function(e){this.clauses=[],this.allFields=e},T.Query.wildcard=new String("*"),T.Query.wildcard.NONE=0,T.Query.wildcard.LEADING=1,T.Query.wildcard.TRAILING=2,T.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},T.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=T.Query.wildcard.NONE),e.wildcard&T.Query.wildcard.LEADING&&e.term.charAt(0)!=T.Query.wildcard&&(e.term="*"+e.term),e.wildcard&T.Query.wildcard.TRAILING&&e.term.slice(-1)!=T.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=T.Query.presence.OPTIONAL),this.clauses.push(e),this},T.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=T.Query.presence.PROHIBITED)return!1;return!0},T.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach((function(e){this.term(e,T.utils.clone(t))}),this),this;var r=t||{};return r.term=e.toString(),this.clause(r),this},T.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},T.QueryParseError.prototype=new Error,T.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},T.QueryLexer.prototype.run=function(){for(var e=T.QueryLexer.lexText;e;)e=e(this)},T.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},T.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},T.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},T.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return T.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},T.QueryLexer.prototype.width=function(){return this.pos-this.start},T.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},T.QueryLexer.prototype.backup=function(){this.pos-=1},T.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=T.QueryLexer.EOS&&this.backup()},T.QueryLexer.prototype.more=function(){return this.pos<this.length},T.QueryLexer.EOS="EOS",T.QueryLexer.FIELD="FIELD",T.QueryLexer.TERM="TERM",T.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",T.QueryLexer.BOOST="BOOST",T.QueryLexer.PRESENCE="PRESENCE",T.QueryLexer.lexField=function(e){return e.backup(),e.emit(T.QueryLexer.FIELD),e.ignore(),T.QueryLexer.lexText},T.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(T.QueryLexer.TERM)),e.ignore(),e.more())return T.QueryLexer.lexText},T.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.EDIT_DISTANCE),T.QueryLexer.lexText},T.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(T.QueryLexer.BOOST),T.QueryLexer.lexText},T.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(T.QueryLexer.TERM)},T.QueryLexer.termSeparator=T.tokenizer.separator,T.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==T.QueryLexer.EOS)return T.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return T.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(T.QueryLexer.TERM),T.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(T.QueryLexer.PRESENCE),T.QueryLexer.lexText;if(t.match(T.QueryLexer.termSeparator))return T.QueryLexer.lexTerm}else e.escapeCharacter()}},T.QueryParser=function(e,t){this.lexer=new T.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},T.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=T.QueryParser.parseClause;e;)e=e(this);return this.query},T.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},T.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},T.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},T.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case T.QueryLexer.PRESENCE:return T.QueryParser.parsePresence;case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:var r="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(r+=" with value '"+t.str+"'"),new T.QueryParseError(r,t.start,t.end)}},T.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=T.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=T.Query.presence.REQUIRED;break;default:var r="unrecognised presence operator'"+t.str+"'";throw new T.QueryParseError(r,t.start,t.end)}var i=e.peekLexeme();if(null==i){r="expecting term or field, found nothing";throw new T.QueryParseError(r,t.start,t.end)}switch(i.type){case T.QueryLexer.FIELD:return T.QueryParser.parseField;case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:r="expecting term or field, found '"+i.type+"'";throw new T.QueryParseError(r,i.start,i.end)}}},T.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var r=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),i="unrecognised field '"+t.str+"', possible fields: "+r;throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.fields=[t.str];var n=e.peekLexeme();if(null==n){i="expecting term, found nothing";throw new T.QueryParseError(i,t.start,t.end)}switch(n.type){case T.QueryLexer.TERM:return T.QueryParser.parseTerm;default:i="expecting term, found '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}}},T.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var r=e.peekLexeme();if(null!=r)switch(r.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+r.type+"'";throw new T.QueryParseError(i,r.start,r.end)}else e.nextClause()}},T.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="edit distance must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.editDistance=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},T.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var r=parseInt(t.str,10);if(isNaN(r)){var i="boost must be numeric";throw new T.QueryParseError(i,t.start,t.end)}e.currentClause.boost=r;var n=e.peekLexeme();if(null!=n)switch(n.type){case T.QueryLexer.TERM:return e.nextClause(),T.QueryParser.parseTerm;case T.QueryLexer.FIELD:return e.nextClause(),T.QueryParser.parseField;case T.QueryLexer.EDIT_DISTANCE:return T.QueryParser.parseEditDistance;case T.QueryLexer.BOOST:return T.QueryParser.parseBoost;case T.QueryLexer.PRESENCE:return e.nextClause(),T.QueryParser.parsePresence;default:i="Unexpected lexeme type '"+n.type+"'";throw new T.QueryParseError(i,n.start,n.end)}else e.nextClause()}},b=this,P=function(){return T},"function"==typeof define&&define.amd?define(P):"object"==typeof exports?module.exports=P():b.lunr=P()}(); \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/javascript/paella_player.js b/src/main/webapp/static/js/paella/player/javascript/paella_player.js new file mode 100644 index 0000000000000000000000000000000000000000..65cd80268d4db0a1fe784c5007957e32d5e2fc50 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/paella_player.js @@ -0,0 +1,23207 @@ +"use strict"; + +function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } + +function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ +var GlobalParams = { + video: { + zIndex: 1 + }, + background: { + zIndex: 0 + } +}; +window.paella = window.paella || {}; +paella.player = null; +paella.version = "6.3.1 - build: 6b43877"; + +(function buildBaseUrl() { + if (window.paella_debug_baseUrl) { + paella.baseUrl = window.paella_debug_baseUrl; + } else { + var scripts = document.getElementsByTagName('script'); + var script = scripts[scripts.length - 1].src.split("/"); + script.pop(); // Remove javascript file name + + script.pop(); // Remove javascript/ folder name + + paella.baseUrl = script.join("/") + '/'; + } +})(); + +paella.events = { + play: "paella:play", + pause: "paella:pause", + next: "paella:next", + previous: "paella:previous", + seeking: "paella:seeking", + seeked: "paella:seeked", + timeupdate: "paella:timeupdate", + timeUpdate: "paella:timeupdate", + seekTo: "paella:setseek", + endVideo: "paella:endvideo", + // Triggered when a single video stream ends (once per video) + ended: "paella:ended", + // Triggered when the video ends + seekToTime: "paella:seektotime", + setTrim: "paella:settrim", + setPlaybackRate: "paella:setplaybackrate", + setVolume: 'paella:setVolume', + setComposition: 'paella:setComposition', + loadStarted: 'paella:loadStarted', + loadComplete: 'paella:loadComplete', + loadPlugins: 'paella:loadPlugins', + error: 'paella:error', + documentChanged: 'paella:documentChanged', + didSaveChanges: 'paella:didsavechanges', + controlBarWillHide: 'paella:controlbarwillhide', + controlBarDidHide: 'paella:controlbardidhide', + controlBarDidShow: 'paella:controlbardidshow', + hidePopUp: 'paella:hidePopUp', + showPopUp: 'paella:showPopUp', + enterFullscreen: 'paella:enterFullscreen', + exitFullscreen: 'paella:exitFullscreen', + resize: 'paella:resize', + // params: { width:paellaPlayerContainer width, height:paellaPlayerContainer height } + videoZoomChanged: 'paella:videoZoomChanged', + audioTagChanged: 'paella:audiotagchanged', + zoomAvailabilityChanged: 'paella:zoomavailabilitychanged', + qualityChanged: 'paella:qualityChanged', + singleVideoReady: 'paella:singleVideoReady', + singleVideoUnloaded: 'paella:singleVideoUnloaded', + videoReady: 'paella:videoReady', + videoUnloaded: 'paella:videoUnloaded', + controlBarLoaded: 'paella:controlBarLoaded', + flashVideoEvent: 'paella:flashVideoEvent', + captionAdded: 'paella:caption:add', + // Event triggered when new caption is available. + captionsEnabled: 'paella:caption:enabled', + // Event triguered when a caption es enabled. + captionsDisabled: 'paella:caption:disabled', + // Event triguered when a caption es disabled. + profileListChanged: 'paella:profilelistchanged', + setProfile: 'paella:setprofile', + seekAvailabilityChanged: 'paella:seekAvailabilityChanged', + trigger: function trigger(event, params) { + $(document).trigger(event, params); + }, + bind: function bind(event, callback) { + $(document).bind(event, function (event, params) { + callback(event, params); + }); + }, + setupExternalListener: function setupExternalListener() { + window.addEventListener("message", function (event) { + if (event.data && event.data.event) { + paella.events.trigger(event.data.event, event.data.params); + } + }, false); + } +}; +paella.events.setupExternalListener(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ +// Paella Mouse Manager +/////////////////////////////////////////////////////// + +(function () { + var MouseManager = + /*#__PURE__*/ + function () { + _createClass(MouseManager, [{ + key: "targetObject", + get: function get() { + return this._targetObject; + }, + set: function set(t) { + this._targetObject = t; + } + }]); + + function MouseManager() { + var _this = this; + + _classCallCheck(this, MouseManager); + + paella.events.bind('mouseup', function (event) { + return _this.up(event); + }); + paella.events.bind('mousemove', function (event) { + return _this.move(event); + }); + paella.events.bind('mouseover', function (event) { + return _this.over(event); + }); + } + + _createClass(MouseManager, [{ + key: "down", + value: function down(targetObject, event) { + this.targetObject = targetObject; + + if (this.targetObject && this.targetObject.down) { + this.targetObject.down(event, event.pageX, event.pageY); + event.cancelBubble = true; + } + + return false; + } + }, { + key: "up", + value: function up(event) { + if (this.targetObject && this.targetObject.up) { + this.targetObject.up(event, event.pageX, event.pageY); + event.cancelBubble = true; + } + + this.targetObject = null; + return false; + } + }, { + key: "out", + value: function out(event) { + if (this.targetObject && this.targetObject.out) { + this.targetObject.out(event, event.pageX, event.pageY); + event.cancelBubble = true; + } + + return false; + } + }, { + key: "move", + value: function move(event) { + if (this.targetObject && this.targetObject.move) { + this.targetObject.move(event, event.pageX, event.pageY); + event.cancelBubble = true; + } + + return false; + } + }, { + key: "over", + value: function over(event) { + if (this.targetObject && this.targetObject.over) { + this.targetObject.over(event, event.pageX, event.pageY); + event.cancelBubble = true; + } + + return false; + } + }]); + + return MouseManager; + }(); + + paella.MouseManager = MouseManager; +})(); // paella.utils +/////////////////////////////////////////////////////// + + +(function initSkinDeps() { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = paella.baseUrl + 'resources/bootstrap/css/bootstrap.min.css'; + link.type = 'text/css'; + link.media = 'screen'; + link.charset = 'utf-8'; + document.head.appendChild(link); +})(); + +paella.utils = { + mouseManager: new paella.MouseManager(), + folders: { + get: function get(folder) { + if (paella.player && paella.player.config && paella.player.config.folders && paella.player.config.folders[folder]) { + return paella.player.config.folders[folder]; + } + + return undefined; + }, + profiles: function profiles() { + return paella.baseUrl + (paella.utils.folders.get("profiles") || "config/profiles"); + }, + resources: function resources() { + return paella.baseUrl + (paella.utils.folders.get("resources") || "resources"); + }, + skins: function skins() { + return paella.baseUrl + (paella.utils.folders.get("skins") || paella.utils.folders.get("resources") + "/style"); + } + }, + styleSheet: { + removeById: function removeById(id) { + var outStyleSheet = $(document.head).find('#' + id)[0]; + + if (outStyleSheet) { + document.head.removeChild(outStyleSheet); + } + }, + remove: function remove(fileName) { + var links = document.head.getElementsByTagName('link'); + + for (var i = 0; i < links.length; ++i) { + if (links[i].href) { + document.head.removeChild(links[i]); + break; + } + } + }, + add: function add(fileName, id) { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = fileName; + link.type = 'text/css'; + link.media = 'screen'; + link.charset = 'utf-8'; + if (id) link.id = id; + document.head.appendChild(link); + }, + swap: function swap(outFile, inFile) { + this.remove(outFile); + this.add(inFile); + } + }, + skin: { + set: function set(skinName) { + var skinId = 'paellaSkin'; + paella.utils.styleSheet.removeById(skinId); + paella.utils.styleSheet.add(paella.utils.folders.skins() + '/style_' + skinName + '.css'); + base.cookies.set("skin", skinName); + }, + restore: function restore(defaultSkin) { + var storedSkin = base.cookies.get("skin"); + + if (storedSkin && storedSkin != "") { + this.set(storedSkin); + } else { + this.set(defaultSkin); + } + } + }, + timeParse: { + timeToSeconds: function timeToSeconds(timeString) { + var hours = 0; + var minutes = 0; + var seconds = 0; + + if (/([0-9]+)h/i.test(timeString)) { + hours = parseInt(RegExp.$1) * 60 * 60; + } + + if (/([0-9]+)m/i.test(timeString)) { + minutes = parseInt(RegExp.$1) * 60; + } + + if (/([0-9]+)s/i.test(timeString)) { + seconds = parseInt(RegExp.$1); + } + + return hours + minutes + seconds; + }, + secondsToTime: function secondsToTime(seconds) { + var hrs = ~~(seconds / 3600); + if (hrs < 10) hrs = '0' + hrs; + var mins = ~~(seconds % 3600 / 60); + if (mins < 10) mins = '0' + mins; + var secs = Math.floor(seconds % 60); + if (secs < 10) secs = '0' + secs; + return hrs + ':' + mins + ':' + secs; + }, + secondsToText: function secondsToText(secAgo) { + // Seconds + if (secAgo <= 1) { + return base.dictionary.translate("1 second ago"); + } + + if (secAgo < 60) { + return base.dictionary.translate("{0} seconds ago").replace(/\{0\}/g, secAgo); + } // Minutes + + + var minAgo = Math.round(secAgo / 60); + + if (minAgo <= 1) { + return base.dictionary.translate("1 minute ago"); + } + + if (minAgo < 60) { + return base.dictionary.translate("{0} minutes ago").replace(/\{0\}/g, minAgo); + } //Hours + + + var hourAgo = Math.round(secAgo / (60 * 60)); + + if (hourAgo <= 1) { + return base.dictionary.translate("1 hour ago"); + } + + if (hourAgo < 24) { + return base.dictionary.translate("{0} hours ago").replace(/\{0\}/g, hourAgo); + } //Days + + + var daysAgo = Math.round(secAgo / (60 * 60 * 24)); + + if (daysAgo <= 1) { + return base.dictionary.translate("1 day ago"); + } + + if (daysAgo < 24) { + return base.dictionary.translate("{0} days ago").replace(/\{0\}/g, daysAgo); + } //Months + + + var monthsAgo = Math.round(secAgo / (60 * 60 * 24 * 30)); + + if (monthsAgo <= 1) { + return base.dictionary.translate("1 month ago"); + } + + if (monthsAgo < 12) { + return base.dictionary.translate("{0} months ago").replace(/\{0\}/g, monthsAgo); + } //Years + + + var yearsAgo = Math.round(secAgo / (60 * 60 * 24 * 365)); + + if (yearsAgo <= 1) { + return base.dictionary.translate("1 year ago"); + } + + return base.dictionary.translate("{0} years ago").replace(/\{0\}/g, yearsAgo); + }, + matterhornTextDateToDate: function matterhornTextDateToDate(mhdate) { + var d = new Date(); + d.setFullYear(parseInt(mhdate.substring(0, 4), 10)); + d.setMonth(parseInt(mhdate.substring(5, 7), 10) - 1); + d.setDate(parseInt(mhdate.substring(8, 10), 10)); + d.setHours(parseInt(mhdate.substring(11, 13), 10)); + d.setMinutes(parseInt(mhdate.substring(14, 16), 10)); + d.setSeconds(parseInt(mhdate.substring(17, 19), 10)); + return d; + } + }, + objectFromString: function objectFromString(str) { + var arr = str.split("."); + var fn = window || this; + + for (var i = 0, len = arr.length; i < len; i++) { + fn = fn[arr[i]]; + } + + if (typeof fn !== "function") { + throw new Error("constructor not found"); + } + + return fn; + } +}; + +(function () { + var g_delegateCallbacks = {}; + var g_dataDelegates = []; + + var DataDelegate = + /*#__PURE__*/ + function () { + function DataDelegate() { + _classCallCheck(this, DataDelegate); + } + + _createClass(DataDelegate, [{ + key: "read", + value: function read(context, params, onSuccess) { + if (typeof onSuccess == 'function') { + onSuccess({}, true); + } + } + }, { + key: "write", + value: function write(context, params, value, onSuccess) { + if (typeof onSuccess == 'function') { + onSuccess({}, true); + } + } + }, { + key: "remove", + value: function remove(context, params, onSuccess) { + if (typeof onSuccess == 'function') { + onSuccess({}, true); + } + } + }]); + + return DataDelegate; + }(); + + paella.DataDelegate = DataDelegate; + paella.dataDelegates = {}; + + var Data = + /*#__PURE__*/ + function () { + _createClass(Data, [{ + key: "enabled", + get: function get() { + return this._enabled; + } + }, { + key: "dataDelegates", + get: function get() { + return g_dataDelegates; + } + }]); + + function Data(config) { + _classCallCheck(this, Data); + + this._enabled = config.data.enabled; // Delegate callbacks + + var executedCallbacks = []; + + var _loop = function _loop(context) { + var callback = g_delegateCallbacks[context]; + var DelegateClass = null; + var delegateName = null; + + if (!executedCallbacks.some(function (execCallbackData) { + if (execCallbackData.callback == callback) { + delegateName = execCallbackData.delegateName; + return true; + } + })) { + DelegateClass = g_delegateCallbacks[context](); + delegateName = DelegateClass.name; + paella.dataDelegates[delegateName] = DelegateClass; + executedCallbacks.push({ + callback: callback, + delegateName: delegateName + }); + } + + if (!config.data.dataDelegates[context]) { + config.data.dataDelegates[context] = delegateName; + } + }; + + for (var context in g_delegateCallbacks) { + _loop(context); + } + + for (var key in config.data.dataDelegates) { + try { + var delegateName = config.data.dataDelegates[key]; + var DelegateClass = paella.dataDelegates[delegateName]; + var delegateInstance = new DelegateClass(); + g_dataDelegates[key] = delegateInstance; + } catch (e) { + console.warn("Warning: delegate not found - " + delegateName); + } + } // Default data delegate + + + if (!this.dataDelegates["default"]) { + this.dataDelegates["default"] = new paella.dataDelegates.DefaultDataDelegate(); + } + } + + _createClass(Data, [{ + key: "read", + value: function read(context, key, onSuccess) { + var del = this.getDelegate(context); + del.read(context, key, onSuccess); + } + }, { + key: "write", + value: function write(context, key, params, onSuccess) { + var del = this.getDelegate(context); + del.write(context, key, params, onSuccess); + } + }, { + key: "remove", + value: function remove(context, key, onSuccess) { + var del = this.getDelegate(context); + del.remove(context, key, onSuccess); + } + }, { + key: "getDelegate", + value: function getDelegate(context) { + if (this.dataDelegates[context]) return this.dataDelegates[context];else return this.dataDelegates["default"]; + } + }]); + + return Data; + }(); + + paella.Data = Data; + + paella.addDataDelegate = function (context, callback) { + if (Array.isArray(context)) { + context.forEach(function (ctx) { + g_delegateCallbacks[ctx] = callback; + }); + } else if (typeof context == "string") { + g_delegateCallbacks[context] = callback; + } + }; +})(); + +paella.addDataDelegate(["default", "trimming"], function () { + paella.dataDelegates.DefaultDataDelegate = + /*#__PURE__*/ + function (_paella$DataDelegate) { + _inherits(CookieDataDelegate, _paella$DataDelegate); + + function CookieDataDelegate() { + _classCallCheck(this, CookieDataDelegate); + + return _possibleConstructorReturn(this, _getPrototypeOf(CookieDataDelegate).apply(this, arguments)); + } + + _createClass(CookieDataDelegate, [{ + key: "serializeKey", + value: function serializeKey(context, params) { + if (_typeof(params) == 'object') { + params = JSON.stringify(params); + } + + return context + '|' + params; + } + }, { + key: "read", + value: function read(context, params, onSuccess) { + var key = this.serializeKey(context, params); + var value = base.cookies.get(key); + + try { + value = unescape(value); + value = JSON.parse(value); + } catch (e) {} + + if (typeof onSuccess == 'function') { + onSuccess(value, true); + } + } + }, { + key: "write", + value: function write(context, params, value, onSuccess) { + var key = this.serializeKey(context, params); + + if (_typeof(value) == 'object') { + value = JSON.stringify(value); + } + + value = escape(value); + base.cookies.set(key, value); + + if (typeof onSuccess == 'function') { + onSuccess({}, true); + } + } + }, { + key: "remove", + value: function remove(context, params, onSuccess) { + var key = this.serializeKey(context, params); + + if ((typeof value === "undefined" ? "undefined" : _typeof(value)) == 'object') { + value = JSON.stringify(value); + } + + base.cookies.set(key, ''); + + if (typeof onSuccess == 'function') { + onSuccess({}, true); + } + } + }]); + + return CookieDataDelegate; + }(paella.DataDelegate); + + return paella.dataDelegates.DefaultDataDelegate; +}); // Will be initialized inmediately after loading config.json, in PaellaPlayer.onLoadConfig() + +paella.data = null; + +(function () { + // Include scripts in header + var g_requiredScripts = {}; + + paella.require = function (path) { + if (!g_requiredScripts[path]) { + g_requiredScripts[path] = new Promise(function (resolve, reject) { + var script = document.createElement("script"); + + if (path.split(".").pop() == 'js') { + script.src = path; + script.async = false; + document.head.appendChild(script); + setTimeout(function () { + return resolve(); + }, 100); + } else { + reject(new Error("Unexpected file type")); + } + }); + } + + return g_requiredScripts[path]; + }; + + var MessageBox = + /*#__PURE__*/ + function () { + _createClass(MessageBox, [{ + key: "modalContainerClassName", + get: function get() { + return 'modalMessageContainer'; + } + }, { + key: "frameClassName", + get: function get() { + return 'frameContainer'; + } + }, { + key: "messageClassName", + get: function get() { + return 'messageContainer'; + } + }, { + key: "errorClassName", + get: function get() { + return 'errorContainer'; + } + }, { + key: "currentMessageBox", + get: function get() { + return this._currentMessageBox; + }, + set: function set(m) { + this._currentMessageBox = m; + } + }, { + key: "messageContainer", + get: function get() { + return this._messageContainer; + } + }, { + key: "onClose", + get: function get() { + return this._onClose; + }, + set: function set(c) { + this._onClose = c; + } + }]); + + function MessageBox() { + var _this2 = this; + + _classCallCheck(this, MessageBox); + + this._messageContainer = null; + $(window).resize(function (event) { + return _this2.adjustTop(); + }); + } + + _createClass(MessageBox, [{ + key: "showFrame", + value: function showFrame(src, params) { + var closeButton = true; + var onClose = null; + + if (params) { + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowFrame(src, closeButton, onClose); + } + }, { + key: "doShowFrame", + value: function doShowFrame(src, closeButton, onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + var messageContainer = document.createElement('div'); + messageContainer.className = this.frameClassName; + modalContainer.appendChild(messageContainer); + var iframeContainer = document.createElement('iframe'); + iframeContainer.src = src; + iframeContainer.setAttribute("frameborder", "0"); + iframeContainer.style.width = "100%"; + iframeContainer.style.height = "100%"; + messageContainer.appendChild(iframeContainer); + + if (paella.player && paella.player.isFullScreen()) { + paella.player.mainContainer.appendChild(modalContainer); + } else { + $('body')[0].appendChild(modalContainer); + } + + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + }, { + key: "showElement", + value: function showElement(domElement, params) { + var closeButton = true; + var onClose = null; + var className = this.messageClassName; + + if (params) { + className = params.className; + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowElement(domElement, closeButton, className, onClose); + } + }, { + key: "showMessage", + value: function showMessage(message, params) { + var closeButton = true; + var onClose = null; + var className = this.messageClassName; + + if (params) { + className = params.className; + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowMessage(message, closeButton, className, onClose); + } + }, { + key: "doShowElement", + value: function doShowElement(domElement, closeButton, className, onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + + if (!className) className = this.messageClassName; + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + var messageContainer = document.createElement('div'); + messageContainer.className = className; + messageContainer.appendChild(domElement); + modalContainer.appendChild(messageContainer); + $('body')[0].appendChild(modalContainer); + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + }, { + key: "doShowMessage", + value: function doShowMessage(message, closeButton, className, onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + + if (!className) className = this.messageClassName; + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + var messageContainer = document.createElement('div'); + messageContainer.className = className; + messageContainer.innerHTML = message; + modalContainer.appendChild(messageContainer); + + if (paella.player && paella.player.isFullScreen()) { + paella.player.mainContainer.appendChild(modalContainer); + } else { + $('body')[0].appendChild(modalContainer); + } + + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + }, { + key: "showError", + value: function showError(message, params) { + var closeButton = false; + var onClose = null; + + if (params) { + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowError(message, closeButton, onClose); + } + }, { + key: "doShowError", + value: function doShowError(message, closeButton, onClose) { + this.doShowMessage(message, closeButton, this.errorClassName, onClose); + } + }, { + key: "createCloseButton", + value: function createCloseButton() { + var _this3 = this; + + if (this._messageContainer) { + var closeButton = document.createElement('span'); + + this._messageContainer.appendChild(closeButton); + + closeButton.className = 'paella_messageContainer_closeButton icon-cancel-circle'; + $(closeButton).click(function (event) { + return _this3.onCloseButtonClick(); + }); + $(window).keyup(function (evt) { + if (evt.keyCode == 27) { + _this3.onCloseButtonClick(); + } + }); + } + } + }, { + key: "adjustTop", + value: function adjustTop() { + if (this.currentMessageBox) { + var msgHeight = $(this._messageContainer).outerHeight(); + var containerHeight = $(this.currentMessageBox).height(); + var top = containerHeight / 2 - msgHeight / 2; + this._messageContainer.style.marginTop = top + 'px'; + } + } + }, { + key: "close", + value: function close() { + if (this.currentMessageBox && this.currentMessageBox.parentNode) { + var msgBox = this.currentMessageBox; + var parent = msgBox.parentNode; + $('#playerContainer').removeClass("modalVisible"); + $(msgBox).animate({ + opacity: 0.0 + }, 300, function () { + parent.removeChild(msgBox); + }); + + if (this.onClose) { + this.onClose(); + } + } + } + }, { + key: "onCloseButtonClick", + value: function onCloseButtonClick() { + this.close(); + } + }]); + + return MessageBox; + }(); + + paella.MessageBox = MessageBox; + paella.messageBox = new paella.MessageBox(); +})(); + +paella.AntiXSS = { + htmlEscape: function htmlEscape(str) { + return String(str).replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''').replace(/</g, '<').replace(/>/g, '>'); + }, + htmlUnescape: function htmlUnescape(value) { + return String(value).replace(/"/g, '"').replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&'); + } +}; + +function paella_DeferredResolved(param) { + return new Promise(function (resolve) { + resolve(param); + }); +} + +function paella_DeferredRejected(param) { + return new Promise(function (resolve, reject) { + reject(param); + }); +} + +function paella_DeferredNotImplemented() { + return paella_DeferredRejected(new Error("not implemented")); +} +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var Node = + /*#__PURE__*/ + function () { + _createClass(Node, [{ + key: "identifier", + get: function get() { + return this._identifier; + }, + set: function set(id) { + this._identifier = id; + } + }, { + key: "nodeList", + get: function get() { + return this._nodeList; + } + }, { + key: "parent", + get: function get() { + return this._parent; + }, + set: function set(p) { + this._parent = p; + } + }]); + + function Node(id) { + _classCallCheck(this, Node); + + this._nodeList = {}; + this.identifier = id; + } + + _createClass(Node, [{ + key: "addTo", + value: function addTo(parentNode) { + parentNode.addNode(this); + } + }, { + key: "addNode", + value: function addNode(childNode) { + childNode.parent = this; + this.nodeList[childNode.identifier] = childNode; + return childNode; + } + }, { + key: "getNode", + value: function getNode(id) { + return this.nodeList[id]; + } + }, { + key: "removeNode", + value: function removeNode(childNode) { + if (this.nodeList[childNode.identifier]) { + delete this.nodeList[childNode.identifier]; + return true; + } + + return false; + } + }]); + + return Node; + }(); + + paella.Node = Node; + + var DomNode = + /*#__PURE__*/ + function (_paella$Node) { + _inherits(DomNode, _paella$Node); + + _createClass(DomNode, [{ + key: "domElement", + get: function get() { + return this._domElement; + } + }, { + key: "domElementType", + get: function get() { + return this._elementType; + }, + set: function set(newType) { + this._elementType = newType; + var oldElement = this._domElement; + var parent = oldElement.parentNode; + var newElement = document.createElement(newType); + parent.removeChild(oldElement); + parent.appendChild(newElement); + this._domElement = newElement; + newElement.innerHTML = oldElement.innerHTML; + + for (var i = 0; i < oldElement.attributes.length; ++i) { + var attr = oldElement.attributes[i]; + newElement.setAttribute(attr.name, attr.value); + } + } + }]); + + function DomNode(elementType, id, style) { + var _this4; + + _classCallCheck(this, DomNode); + + _this4 = _possibleConstructorReturn(this, _getPrototypeOf(DomNode).call(this, id)); + _this4._elementType = elementType; + _this4._domElement = document.createElement(elementType); + _this4.domElement.id = id; + if (style) _this4.style = style; + return _this4; + } + + _createClass(DomNode, [{ + key: "addNode", + value: function addNode(childNode) { + var returnValue = _get(_getPrototypeOf(DomNode.prototype), "addNode", this).call(this, childNode); + + this.domElement.appendChild(childNode.domElement); + return returnValue; + } + }, { + key: "onresize", + value: function onresize() {} + }, { + key: "removeNode", + value: function removeNode(childNode) { + if (_get(_getPrototypeOf(DomNode.prototype), "removeNode", this).call(this, childNode)) { + this.domElement.removeChild(childNode.domElement); + } + } + }, { + key: "style", + set: function set(s) { + $(this.domElement).css(s); + } + }]); + + return DomNode; + }(paella.Node); + + paella.DomNode = DomNode; + + var Button = + /*#__PURE__*/ + function (_paella$DomNode) { + _inherits(Button, _paella$DomNode); + + _createClass(Button, [{ + key: "isToggle", + get: function get() { + return this._isToggle; + }, + set: function set(t) { + this._isToggle = t; + } + }]); + + function Button(id, className, action, isToggle) { + var _this5; + + _classCallCheck(this, Button); + + var style = {}; + _this5 = _possibleConstructorReturn(this, _getPrototypeOf(Button).call(this, 'div', id, style)); + _this5.isToggle = isToggle; + _this5.domElement.className = className; + + if (isToggle) { + $(_this5.domElement).click(function (event) { + _this5.toggleIcon(); + }); + } + + $(_this5.domElement).click('click', action); + return _this5; + } + + _createClass(Button, [{ + key: "isToggled", + value: function isToggled() { + if (this.isToggle) { + var element = this.domElement; + return /([a-zA-Z0-9_]+)_active/.test(element.className); + } else { + return false; + } + } + }, { + key: "toggle", + value: function toggle() { + this.toggleIcon(); + } + }, { + key: "toggleIcon", + value: function toggleIcon() { + var element = this.domElement; + + if (/([a-zA-Z0-9_]+)_active/.test(element.className)) { + element.className = RegExp.$1; + } else { + element.className = element.className + '_active'; + } + } + }, { + key: "show", + value: function show() { + $(this.domElement).show(); + } + }, { + key: "hide", + value: function hide() { + $(this.domElement).hide(); + } + }, { + key: "visible", + value: function visible() { + return this.domElement.visible(); + } + }]); + + return Button; + }(paella.DomNode); + + paella.Button = Button; +})(); + +(function () { + var g_profiles = []; + + paella.addProfile = function (cb) { + cb().then(function (profileData) { + if (profileData) { + g_profiles.push(profileData); + + if (typeof profileData.onApply != "function") { + profileData.onApply = function () {}; + } + + if (typeof profileData.onDeactivte != "function") { + profileData.onDeactivate = function () {}; + } + + paella.events.trigger(paella.events.profileListChanged, { + profileData: profileData + }); + } + }); + }; // Utility functions + + + function hideBackground() { + var bkgNode = this.container.getNode("videoContainerBackground"); + if (bkgNode) this.container.removeNode(bkgNode); + } + + function showBackground(bkgData) { + if (!bkgData) return; + hideBackground.apply(this); + this.backgroundData = bkgData; + var style = { + backgroundImage: "url(".concat(paella.utils.folders.get("resources"), "/style/").concat(bkgData.content, ")"), + backgroundSize: "100% 100%", + zIndex: bkgData.layer, + position: 'absolute', + left: bkgData.rect.left + "px", + right: bkgData.rect.right + "px", + width: "100%", + height: "100%" + }; + this.container.addNode(new paella.DomNode('div', "videoContainerBackground", style)); + } + + function hideAllLogos() { + if (this.logos == undefined) return; + + for (var i = 0; i < this.logos.length; ++i) { + var logoId = this.logos[i].content.replace(/\./ig, "-"); + var logo = this.container.getNode(logoId); + $(logo.domElement).hide(); + } + } + + function showLogos(logos) { + this.logos = logos; + var relativeSize = new paella.RelativeVideoSize(); + + for (var i = 0; i < logos.length; ++i) { + var logo = logos[i]; + var logoId = logo.content.replace(/\./ig, "-"); + var logoNode = this.container.getNode(logoId); + var rect = logo.rect; + + if (!logoNode) { + style = {}; + logoNode = this.container.addNode(new paella.DomNode('img', logoId, style)); + logoNode.domElement.setAttribute('src', "".concat(paella.utils.folders.get("resources"), "/style/").concat(logo.content)); + } else { + $(logoNode.domElement).show(); + } + + var percentTop = Number(relativeSize.percentVSize(rect.top)) + '%'; + var percentLeft = Number(relativeSize.percentWSize(rect.left)) + '%'; + var percentWidth = Number(relativeSize.percentWSize(rect.width)) + '%'; + var percentHeight = Number(relativeSize.percentVSize(rect.height)) + '%'; + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute', + zIndex: logo.zIndex + }; + $(logoNode.domElement).css(style); + } + } + + function hideButtons() { + var _this6 = this; + + if (this.buttons) { + this.buttons.forEach(function (btn) { + _this6.container.removeNode(_this6.container.getNode(btn.id)); + }); + this.buttons = null; + } + } + + function showButtons(buttons, profileData) { + var _this7 = this; + + hideButtons.apply(this); + + if (buttons) { + var relativeSize = new paella.RelativeVideoSize(); + this.buttons = buttons; + buttons.forEach(function (btn, index) { + btn.id = "button_" + index; + var rect = btn.rect; + var percentTop = relativeSize.percentVSize(rect.top) + '%'; + var percentLeft = relativeSize.percentWSize(rect.left) + '%'; + var percentWidth = relativeSize.percentWSize(rect.width) + '%'; + var percentHeight = relativeSize.percentVSize(rect.height) + '%'; + var url = paella.baseUrl; + url = url.replace(/\\/ig, '/'); + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute', + zIndex: btn.layer, + backgroundImage: "url(".concat(paella.utils.folders.get("resources"), "/style/").concat(btn.icon, ")"), + backgroundSize: '100% 100%', + display: 'block' + }; + + var logoNode = _this7.container.addNode(new paella.DomNode('div', btn.id, style)); + + logoNode.domElement.className = "paella-profile-button"; + logoNode.domElement.data = { + action: btn.onClick, + profileData: profileData + }; + $(logoNode.domElement).click(function (evt) { + this.data.action.apply(this.data.profileData, [evt]); + evt.stopPropagation(); + return false; + }); + }); + } + } + + function getClosestRect(profileData, videoDimensions) { + var minDiff = 10; + var re = /([0-9\.]+)\/([0-9\.]+)/; + var result = profileData.rect[0]; + var videoAspectRatio = videoDimensions.h == 0 ? 1.777777 : videoDimensions.w / videoDimensions.h; + var profileAspectRatio = 1; + var reResult = false; + profileData.rect.forEach(function (rect) { + if (reResult = re.exec(rect.aspectRatio)) { + profileAspectRatio = Number(reResult[1]) / Number(reResult[2]); + } + + var diff = Math.abs(profileAspectRatio - videoAspectRatio); + + if (minDiff > diff) { + minDiff = diff; + result = rect; + } + }); + return result; + } + + function applyProfileWithJson(profileData, animate) { + var _this8 = this; + + if (animate == undefined) animate = true; + if (!profileData) return; + + var getProfile = function getProfile(content) { + var result = null; + profileData && profileData.videos.some(function (videoProfile) { + if (videoProfile.content == content) { + result = videoProfile; + } + + return result != null; + }); + return result; + }; + + var applyVideoRect = function applyVideoRect(profile, videoData, videoWrapper, player) { + var frameStrategy = _this8.profileFrameStrategy; + + if (frameStrategy) { + var rect = getClosestRect(profile, videoData.res); + var videoSize = videoData.res; + var containerSize = { + width: $(_this8.domElement).width(), + height: $(_this8.domElement).height() + }; + var scaleFactor = rect.width / containerSize.width; + var scaledVideoSize = { + width: videoSize.w * scaleFactor, + height: videoSize.h * scaleFactor + }; + rect.left = Number(rect.left); + rect.top = Number(rect.top); + rect.width = Number(rect.width); + rect.height = Number(rect.height); + rect = frameStrategy.adaptFrame(scaledVideoSize, rect); + var visible = /true/i.test(profile.visible); + rect.visible = visible; + var layer = parseInt(profile.layer); + videoWrapper.domElement.style.zIndex = layer; + videoWrapper.setRect(rect, animate); + videoWrapper.setVisible(visible, animate); // The disable/enable functions may not be called on main audio player + + var isMainAudioPlayer = paella.player.videoContainer.streamProvider.mainAudioPlayer == player; + visible ? player.enable(isMainAudioPlayer) : player.disable(isMainAudioPlayer); + } + }; + + profileData && profileData.onApply(); + hideAllLogos.apply(this); + profileData && showLogos.apply(this, [profileData.logos]); + hideBackground.apply(this); + profileData && showBackground.apply(this, [profileData.background]); + hideButtons.apply(this); + profileData && showButtons.apply(this, [profileData.buttons, profileData]); + this.streamProvider.videoStreams.forEach(function (streamData, index) { + var profile = getProfile(streamData.content); + var player = _this8.streamProvider.videoPlayers[index]; + var videoWrapper = _this8.videoWrappers[index]; + + if (profile) { + player.getVideoData().then(function (data) { + applyVideoRect(profile, data, videoWrapper, player); + }); + } else if (videoWrapper) { + videoWrapper.setVisible(false, animate); + + if (paella.player.videoContainer.streamProvider.mainAudioPlayer != player) { + player.disable(); + } + } + }); + } + + var Profiles = + /*#__PURE__*/ + function () { + function Profiles() { + var _this9 = this; + + _classCallCheck(this, Profiles); + + paella.events.bind(paella.events.controlBarDidHide, function () { + return _this9.hideButtons(); + }); + paella.events.bind(paella.events.controlBarDidShow, function () { + return _this9.showButtons(); + }); + paella.events.bind(paella.events.profileListChanged, function () { + if (paella.player && paella.player.videoContainer && (!_this9.currentProfile || _this9.currentProfileName != _this9.currentProfile.id)) { + _this9.setProfile(_this9.currentProfileName, false); + } + }); + } + + _createClass(Profiles, [{ + key: "getDefaultProfile", + value: function getDefaultProfile() { + if (paella.player.videoContainer.masterVideo() && paella.player.videoContainer.masterVideo().defaultProfile()) { + return paella.player.videoContainer.masterVideo().defaultProfile(); + } + + if (paella.player && paella.player.config && paella.player.config.defaultProfile) { + return paella.player.config.defaultProfile; + } + + return undefined; + } + }, { + key: "loadProfile", + value: function loadProfile(profileId) { + var result = null; + g_profiles.some(function (profile) { + if (profile.id == profileId) { + result = profile; + } + + return result; + }); + return result; + } + }, { + key: "setProfile", + value: function setProfile(profileName, animate) { + var _this10 = this; + + if (!profileName) { + return false; + } + + animate = base.userAgent.browser.Explorer ? false : animate; + + if (this.currentProfile) { + this.currentProfile.onDeactivate(); + } + + if (!paella.player.videoContainer.ready) { + return false; // Nothing to do, the video is not loaded + } else { + var profileData = this.loadProfile(profileName) || g_profiles.length > 0 && g_profiles[0]; + + if (!profileData && g_profiles.length == 0) { + // Try to load the profile again later, maybe the profiles are not loaded yet + setTimeout(function () { + _this10.setProfile(profileName, animate); + }, 100); + return false; + } else { + this._currentProfileName = profileName; + applyProfileWithJson.apply(paella.player.videoContainer, [profileData, animate]); + return true; + } + } + } + }, { + key: "getProfile", + value: function getProfile(profileName) { + var result = null; + this.profileList.some(function (p) { + if (p.id == profileName) { + result = p; + return true; + } + }); + return result; + } + }, { + key: "placeVideos", + value: function placeVideos() { + this.setProfile(this._currentProfileName, false); + } + }, { + key: "hideButtons", + value: function hideButtons() { + $('.paella-profile-button').hide(); + } + }, { + key: "showButtons", + value: function showButtons() { + $('.paella-profile-button').show(); + } + }, { + key: "profileList", + get: function get() { + return g_profiles; + } + }, { + key: "currentProfile", + get: function get() { + return this.getProfile(this._currentProfileName); + } + }, { + key: "currentProfileName", + get: function get() { + return this._currentProfileName; + } + }]); + + return Profiles; + }(); + + paella.profiles = new Profiles(); +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var VideoQualityStrategy = + /*#__PURE__*/ + function () { + function VideoQualityStrategy() { + _classCallCheck(this, VideoQualityStrategy); + } + + _createClass(VideoQualityStrategy, [{ + key: "getParams", + value: function getParams() { + return paella.player.config.player.videoQualityStrategyParams || {}; + } + }, { + key: "getQualityIndex", + value: function getQualityIndex(source) { + if (source.length > 0) { + return source[source.length - 1]; + } else { + return source; + } + } + }], [{ + key: "Factory", + value: function Factory() { + var config = paella.player.config; + + try { + var strategyClass = config.player.videoQualityStrategy; + var ClassObject = paella.utils.objectFromString(strategyClass); + var strategy = new ClassObject(); + + if (strategy instanceof paella.VideoQualityStrategy) { + return strategy; + } + } catch (e) {} + + return null; + } + }]); + + return VideoQualityStrategy; + }(); + + paella.VideoQualityStrategy = VideoQualityStrategy; + + var BestFitVideoQualityStrategy = + /*#__PURE__*/ + function (_paella$VideoQualityS) { + _inherits(BestFitVideoQualityStrategy, _paella$VideoQualityS); + + function BestFitVideoQualityStrategy() { + _classCallCheck(this, BestFitVideoQualityStrategy); + + return _possibleConstructorReturn(this, _getPrototypeOf(BestFitVideoQualityStrategy).apply(this, arguments)); + } + + _createClass(BestFitVideoQualityStrategy, [{ + key: "getQualityIndex", + value: function getQualityIndex(source) { + var index = source.length - 1; + + if (source.length > 0) { + var selected = source[0]; + var win_w = $(window).width(); + var win_h = $(window).height(); + var win_res = win_w * win_h; + + if (selected.res && selected.res.w && selected.res.h) { + var selected_res = parseInt(selected.res.w) * parseInt(selected.res.h); + var selected_diff = Math.abs(win_res - selected_res); + + for (var i = 0; i < source.length; ++i) { + var res = source[i].res; + + if (res) { + var m_res = parseInt(source[i].res.w) * parseInt(source[i].res.h); + var m_diff = Math.abs(win_res - m_res); + + if (m_diff <= selected_diff) { + selected_diff = m_diff; + index = i; + } + } + } + } + } + + return index; + } + }]); + + return BestFitVideoQualityStrategy; + }(paella.VideoQualityStrategy); + + paella.BestFitVideoQualityStrategy = BestFitVideoQualityStrategy; + + var LimitedBestFitVideoQualityStrategy = + /*#__PURE__*/ + function (_paella$VideoQualityS2) { + _inherits(LimitedBestFitVideoQualityStrategy, _paella$VideoQualityS2); + + function LimitedBestFitVideoQualityStrategy() { + _classCallCheck(this, LimitedBestFitVideoQualityStrategy); + + return _possibleConstructorReturn(this, _getPrototypeOf(LimitedBestFitVideoQualityStrategy).apply(this, arguments)); + } + + _createClass(LimitedBestFitVideoQualityStrategy, [{ + key: "getQualityIndex", + value: function getQualityIndex(source) { + var index = source.length - 1; + var params = this.getParams(); + + if (source.length > 0) { + //var selected = source[0]; + var selected = null; + var win_h = $(window).height(); + var maxRes = params.maxAutoQualityRes || 720; + var diff = Number.MAX_VALUE; + source.forEach(function (item, i) { + if (item.res && item.res.h <= maxRes) { + var itemDiff = Math.abs(win_h - item.res.h); + + if (itemDiff < diff) { + selected = item; + index = i; + } + } + }); + } + + return index; + } + }]); + + return LimitedBestFitVideoQualityStrategy; + }(paella.VideoQualityStrategy); + + paella.LimitedBestFitVideoQualityStrategy = LimitedBestFitVideoQualityStrategy; + + var VideoFactory = + /*#__PURE__*/ + function () { + function VideoFactory() { + _classCallCheck(this, VideoFactory); + } + + _createClass(VideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + return null; + } + }]); + + return VideoFactory; + }(); + + paella.VideoFactory = VideoFactory; + paella.videoFactories = paella.videoFactories || {}; + paella.videoFactory = { + _factoryList: [], + initFactories: function initFactories() { + if (paella.videoFactories) { + var This = this; + paella.player.config.player.methods.forEach(function (method) { + if (method.enabled && paella.videoFactories[method.factory]) { + This.registerFactory(new paella.videoFactories[method.factory]()); + } + }); + this.registerFactory(new paella.videoFactories.EmptyVideoFactory()); + } + }, + getVideoObject: function getVideoObject(id, streamData, rect) { + if (this._factoryList.length == 0) { + this.initFactories(); + } + + var selectedFactory = null; + + if (this._factoryList.some(function (factory) { + if (factory.isStreamCompatible(streamData)) { + selectedFactory = factory; + return true; + } + })) { + return selectedFactory.getVideoObject(id, streamData, rect); + } + + return null; + }, + registerFactory: function registerFactory(factory) { + this._factoryList.push(factory); + } + }; +})(); + +(function () { + var AudioElementBase = + /*#__PURE__*/ + function (_paella$DomNode2) { + _inherits(AudioElementBase, _paella$DomNode2); + + function AudioElementBase(id, stream) { + var _this11; + + _classCallCheck(this, AudioElementBase); + + _this11 = _possibleConstructorReturn(this, _getPrototypeOf(AudioElementBase).call(this, 'div', id)); + _this11._stream = stream; + _this11._ready = false; + return _this11; + } + + _createClass(AudioElementBase, [{ + key: "setAutoplay", + value: function setAutoplay() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "load", + value: function load() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "play", + value: function play() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "pause", + value: function pause() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "isPaused", + value: function isPaused() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "duration", + value: function duration() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "currentTime", + value: function currentTime() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "volume", + value: function volume() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "playbackRate", + value: function playbackRate() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "unload", + value: function unload() { + return Promise.reject(new Error("no such compatible video player")); + } + }, { + key: "getQualities", + value: function getQualities() { + return Promise.resolve([{ + index: 0, + res: { + w: 0, + h: 1 + }, + src: "", + toString: function toString() { + return ""; + }, + shortLabel: function shortLabel() { + return ""; + }, + compare: function compare() { + return 0; + } + }]); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + return Promise.resolve(0); + } + }, { + key: "defaultProfile", + value: function defaultProfile() { + return null; + } + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + return false; + } + }, { + key: "ready", + get: function get() { + return this._ready; + } + }, { + key: "currentTimeSync", + get: function get() { + return null; + } + }, { + key: "volumeSync", + get: function get() { + return null; + } + }, { + key: "pausedSync", + get: function get() { + return null; + } + }, { + key: "durationSync", + get: function get() { + return null; + } + }, { + key: "stream", + get: function get() { + return this._stream; + } + }]); + + return AudioElementBase; + }(paella.DomNode); + + ; + paella.AudioElementBase = AudioElementBase; + paella.audioFactories = {}; + + var AudioFactory = + /*#__PURE__*/ + function () { + function AudioFactory() { + _classCallCheck(this, AudioFactory); + } + + _createClass(AudioFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + return false; + } + }, { + key: "getAudioObject", + value: function getAudioObject(id, streamData) { + return null; + } + }]); + + return AudioFactory; + }(); + + paella.AudioFactory = AudioFactory; + paella.audioFactory = { + _factoryList: [], + initFactories: function initFactories() { + if (paella.audioFactories) { + var This = this; + paella.player.config.player.audioMethods = paella.player.config.player.audioMethods || {}; + paella.player.config.player.audioMethods.forEach(function (method) { + if (method.enabled) { + This.registerFactory(new paella.audioFactories[method.factory]()); + } + }); + } + }, + getAudioObject: function getAudioObject(id, streamData) { + if (this._factoryList.length == 0) { + this.initFactories(); + } + + var selectedFactory = null; + + if (this._factoryList.some(function (factory) { + if (factory.isStreamCompatible(streamData)) { + selectedFactory = factory; + return true; + } + })) { + return selectedFactory.getAudioObject(id, streamData); + } + + return null; + }, + registerFactory: function registerFactory(factory) { + this._factoryList.push(factory); + } + }; +})(); + +(function () { + function checkReady(cb) { + var This = this; + return new Promise(function (resolve, reject) { + if (This._ready) { + resolve(typeof cb == 'function' ? cb() : true); + } else { + var doCheck = function doCheck() { + if (This.audio.readyState >= This.audio.HAVE_CURRENT_DATA) { + This._ready = true; + resolve(typeof cb == 'function' ? cb() : true); + } else { + setTimeout(doCheck, 50); + } + }; + + doCheck(); + } + }); + } + + var MultiformatAudioElement = + /*#__PURE__*/ + function (_paella$AudioElementB) { + _inherits(MultiformatAudioElement, _paella$AudioElementB); + + function MultiformatAudioElement(id, stream) { + var _this12; + + _classCallCheck(this, MultiformatAudioElement); + + _this12 = _possibleConstructorReturn(this, _getPrototypeOf(MultiformatAudioElement).call(this, id, stream)); + _this12._streamName = "audio"; + _this12._audio = document.createElement('audio'); + + _this12.domElement.appendChild(_this12._audio); + + return _this12; + } + + _createClass(MultiformatAudioElement, [{ + key: "setAutoplay", + value: function setAutoplay(ap) { + this.audio.autoplay = ap; + } + }, { + key: "load", + value: function load() { + var This = this; + var sources = this._stream.sources[this._streamName]; + var stream = sources.length > 0 ? sources[0] : null; + this.audio.innerText = ""; + + if (stream) { + var sourceElem = this.audio.querySelector('source'); + + if (!sourceElem) { + sourceElem = document.createElement('source'); + this.audio.appendChild(sourceElem); + } + + sourceElem.src = stream.src; + if (stream.type) sourceElem.type = stream.type; + this.audio.load(); + return checkReady.apply(this, [function () { + return stream; + }]); + } else { + return Promise.reject(new Error("Could not load video: invalid quality stream index")); + } + } + }, { + key: "play", + value: function play() { + var _this13 = this; + + return checkReady.apply(this, [function () { + _this13.audio.play(); + }]); + } + }, { + key: "pause", + value: function pause() { + var _this14 = this; + + return checkReady.apply(this, [function () { + _this14.audio.pause(); + }]); + } + }, { + key: "isPaused", + value: function isPaused() { + var _this15 = this; + + return checkReady.apply(this, [function () { + return _this15.audio.paused; + }]); + } + }, { + key: "duration", + value: function duration() { + var _this16 = this; + + return checkReady.apply(this, [function () { + return _this16.audio.duration; + }]); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this17 = this; + + return checkReady.apply(this, [function () { + _this17.audio.currentTime = time; + }]); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this18 = this; + + return checkReady.apply(this, [function () { + return _this18.audio.currentTime; + }]); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + var _this19 = this; + + return checkReady.apply(this, [function () { + return _this19.audio.volume = volume; + }]); + } + }, { + key: "volume", + value: function volume() { + var _this20 = this; + + return checkReady.apply(this, [function () { + return _this20.audio.volume; + }]); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var _this21 = this; + + return checkReady.apply(this, [function () { + _this21.audio.playbackRate = rate; + }]); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var _this22 = this; + + return checkReady.apply(this, [function () { + return _this22.audio.playbackRate; + }]); + } + }, { + key: "unload", + value: function unload() { + return Promise.resolve(); + } + }, { + key: "audio", + get: function get() { + return this._audio; + } + }, { + key: "currentTimeSync", + get: function get() { + return this.ready ? this.audio.currentTimeSync : null; + } + }, { + key: "volumeSync", + get: function get() { + return this.ready ? this.audio.volumeSync : null; + } + }, { + key: "pausedSync", + get: function get() { + return this.ready ? this.audio.pausedSync : null; + } + }, { + key: "durationSync", + get: function get() { + return this.ready ? this.audio.durationSync : null; + } + }]); + + return MultiformatAudioElement; + }(paella.AudioElementBase); + + ; + paella.MultiformatAudioElement = MultiformatAudioElement; + + var MultiformatAudioFactory = + /*#__PURE__*/ + function () { + function MultiformatAudioFactory() { + _classCallCheck(this, MultiformatAudioFactory); + } + + _createClass(MultiformatAudioFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + return true; + } + }, { + key: "getAudioObject", + value: function getAudioObject(id, streamData) { + return new paella.MultiformatAudioElement(id, streamData); + } + }]); + + return MultiformatAudioFactory; + }(); + + paella.audioFactories.MultiformatAudioFactory = MultiformatAudioFactory; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + paella.Profiles = { + profileList: null, + getDefaultProfile: function getDefaultProfile() { + if (paella.player.videoContainer.masterVideo() && paella.player.videoContainer.masterVideo().defaultProfile()) { + return paella.player.videoContainer.masterVideo().defaultProfile(); + } + + if (paella.player && paella.player.config && paella.player.config.defaultProfile) { + return paella.player.config.defaultProfile; + } + + return undefined; + }, + loadProfile: function loadProfile(profileName, onSuccessFunction) { + var defaultProfile = this.getDefaultProfile(); + this.loadProfileList(function (data) { + var profileData; + + if (data[profileName]) { + // Successful mapping + profileData = data[profileName]; + } else if (data[defaultProfile]) { + // Fallback to default profile + profileData = data[defaultProfile]; + } else { + // Unable to find or map defaultProfile in profiles.json + base.log.debug("Error loading the default profile. Check your Paella Player configuration"); + return false; + } + + onSuccessFunction(profileData); + }); + }, + loadProfileList: function loadProfileList(onSuccessFunction) { + var thisClass = this; + + if (this.profileList == null) { + var params = { + url: paella.utils.folders.profiles() + "/profiles.json" + }; + base.ajax.get(params, function (data, mimetype, code) { + if (typeof data == "string") { + data = JSON.parse(data); + } + + thisClass.profileList = data; + onSuccessFunction(thisClass.profileList); + }, function (data, mimetype, code) { + base.log.debug("Error loading video profiles. Check your Paella Player configuration"); + }); + } else { + onSuccessFunction(thisClass.profileList); + } + } + }; + + var RelativeVideoSize = + /*#__PURE__*/ + function () { + function RelativeVideoSize() { + _classCallCheck(this, RelativeVideoSize); + } + + _createClass(RelativeVideoSize, [{ + key: "proportionalHeight", + value: function proportionalHeight(newWidth) { + return Math.floor(this.h * newWidth / this.w); + } + }, { + key: "proportionalWidth", + value: function proportionalWidth(newHeight) { + return Math.floor(this.w * newHeight / this.h); + } + }, { + key: "percentVSize", + value: function percentVSize(pxSize) { + return pxSize * 100 / this.h; + } + }, { + key: "percentWSize", + value: function percentWSize(pxSize) { + return pxSize * 100 / this.w; + } + }, { + key: "aspectRatio", + value: function aspectRatio() { + return this.w / this.h; + } + }, { + key: "w", + get: function get() { + return this._w || 1280; + }, + set: function set(v) { + this._w = v; + } + }, { + key: "h", + get: function get() { + return this._h || 720; + }, + set: function set(v) { + this._h = v; + } + }]); + + return RelativeVideoSize; + }(); + + paella.RelativeVideoSize = RelativeVideoSize; + + var VideoRect = + /*#__PURE__*/ + function (_paella$DomNode3) { + _inherits(VideoRect, _paella$DomNode3); + + function VideoRect(id, domType, left, top, width, height) { + var _this23; + + _classCallCheck(this, VideoRect); + + _this23 = _possibleConstructorReturn(this, _getPrototypeOf(VideoRect).call(this, domType, id, {})); + var zoomSettings = paella.player.config.player.videoZoom || {}; + + var zoomEnabled = (zoomSettings.enabled !== undefined ? zoomSettings.enabled : true) && _this23.allowZoom(); + + _this23.style = zoomEnabled ? { + width: _this23._zoom + '%', + height: "100%", + position: 'absolute' + } : { + width: "100%", + height: "100%" + }; + _this23._rect = null; + var eventCapture = document.createElement('div'); + setTimeout(function () { + return _this23.domElement.parentElement.appendChild(eventCapture); + }, 10); + eventCapture.id = id + "EventCapture"; + eventCapture.style.position = "absolute"; + eventCapture.style.top = "0px"; + eventCapture.style.left = "0px"; + eventCapture.style.right = "0px"; + eventCapture.style.bottom = "0px"; + _this23.eventCapture = eventCapture; + + if (zoomEnabled) { + var checkZoomAvailable = function checkZoomAvailable() { + var minWindowSize = paella.player.config.player && paella.player.config.player.videoZoom && paella.player.config.player.videoZoom.minWindowSize || 500; + var available = $(window).width() >= minWindowSize; + + if (this._zoomAvailable != available) { + this._zoomAvailable = available; + paella.events.trigger(paella.events.zoomAvailabilityChanged, { + available: available + }); + } + }; + + var mousePos = function mousePos(evt) { + return { + x: evt.originalEvent.offsetX, + y: evt.originalEvent.offsetY + }; + }; + + var wheelDelta = function wheelDelta(evt) { + var wheel = evt.originalEvent.deltaY * (paella.utils.userAgent.Firefox ? 2 : 1); + var maxWheel = 6; + return -Math.abs(wheel) < maxWheel ? wheel : maxWheel * Math.sign(wheel); + }; + + var touchesLength = function touchesLength(p0, p1) { + return Math.sqrt((p1.x - p0.x) * (p1.x - p0.x) + (p1.y - p0.y) * (p1.y - p0.y)); + }; + + var centerPoint = function centerPoint(p0, p1) { + return { + x: (p1.x - p0.x) / 2 + p0.x, + y: (p1.y - p0.y) / 2 + p0.y + }; + }; + + var panImage = function panImage(o) { + var center = { + x: this._mouseCenter.x - o.x * 1.1, + y: this._mouseCenter.y - o.y * 1.1 + }; + var videoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + var maxOffset = this._zoom - 100; + var offset = { + x: center.x * maxOffset / videoSize.w * (maxOffset / 100), + y: center.y * maxOffset / videoSize.h * (maxOffset / 100) + }; + + if (offset.x > maxOffset) { + offset.x = maxOffset; + } else if (offset.x < 0) { + offset.x = 0; + } else { + this._mouseCenter.x = center.x; + } + + if (offset.y > maxOffset) { + offset.y = maxOffset; + } else if (offset.y < 0) { + offset.y = 0; + } else { + this._mouseCenter.y = center.y; + } + + $(this.domElement).css({ + left: "-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged, { + video: this + }); + }; + + var clearAltScrollMessage = function clearAltScrollMessage() { + var animate = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + animate ? $(altScrollMessageContainer).animate({ + opacity: 0.0 + }) : $(altScrollMessageContainer).css({ + opacity: 0.0 + }); + }; + + var showAltScrollMessage = function showAltScrollMessage() { + if (altScrollMessageTimer) { + clearTimeout(altScrollMessageTimer); + altScrollMessageTimer = null; + } else { + $(altScrollMessageContainer).css({ + opacity: 1.0 + }); + } + + altScrollMessageTimer = setTimeout(function () { + clearAltScrollMessage(); + altScrollMessageTimer = null; + }, 500); + }; + + _this23._zoomAvailable = true; + checkZoomAvailable.apply(_assertThisInitialized(_this23)); + $(window).resize(function () { + checkZoomAvailable.apply(_assertThisInitialized(_this23)); + }); + _this23._zoom = 100; + _this23._mouseCenter = { + x: 0, + y: 0 + }; + _this23._mouseDown = { + x: 0, + y: 0 + }; + _this23._zoomOffset = { + x: 0, + y: 0 + }; + _this23._maxZoom = zoomSettings.max || 400; + $(_this23.domElement).css({ + width: "100%", + height: "100%", + left: "0%", + top: "0%" + }); + Object.defineProperty(_assertThisInitialized(_this23), 'zoom', { + get: function get() { + return this._zoom; + } + }); + Object.defineProperty(_assertThisInitialized(_this23), 'zoomOffset', { + get: function get() { + return this._zoomOffset; + } + }); + var touches = []; + $(eventCapture).on('touchstart', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; + touches = []; + var videoOffset = $(_this23.domElement).offset(); + + for (var i = 0; i < evt.originalEvent.targetTouches.length; ++i) { + var touch = evt.originalEvent.targetTouches[i]; + touches.push({ + x: touch.screenX - videoOffset.left, + y: touch.screenY - videoOffset.top + }); + } + + if (touches.length > 1) evt.preventDefault(); + }); + $(eventCapture).on('touchmove', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; + var curTouches = []; + var videoOffset = $(_this23.domElement).offset(); + + for (var i = 0; i < evt.originalEvent.targetTouches.length; ++i) { + var touch = evt.originalEvent.targetTouches[i]; + curTouches.push({ + x: touch.screenX - videoOffset.left, + y: touch.screenY - videoOffset.top + }); + } + + if (curTouches.length > 1 && touches.length > 1) { + var l0 = touchesLength(touches[0], touches[1]); + var l1 = touchesLength(curTouches[0], curTouches[1]); + var delta = l1 - l0; + var center = centerPoint(touches[0], touches[1]); + _this23._mouseCenter = center; + _this23._zoom += delta; + _this23._zoom = _this23._zoom < 100 ? 100 : _this23._zoom; + _this23._zoom = _this23._zoom > _this23._maxZoom ? _this23._maxZoom : _this23._zoom; + var newVideoSize = { + w: $(_this23.domElement).width(), + h: $(_this23.domElement).height() + }; + var mouse = _this23._mouseCenter; + $(_this23.domElement).css({ + width: _this23._zoom + '%', + height: _this23._zoom + '%' + }); + var maxOffset = _this23._zoom - 100; + var offset = { + x: mouse.x * maxOffset / newVideoSize.w, + y: mouse.y * maxOffset / newVideoSize.h + }; + offset.x = offset.x < maxOffset ? offset.x : maxOffset; + offset.y = offset.y < maxOffset ? offset.y : maxOffset; + $(_this23.domElement).css({ + left: "-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + _this23._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged, { + video: _assertThisInitialized(_this23) + }); + touches = curTouches; + evt.preventDefault(); + } else if (curTouches.length > 0) { + var desp = { + x: curTouches[0].x - touches[0].x, + y: curTouches[0].y - touches[0].y + }; + panImage.apply(_assertThisInitialized(_this23), [desp]); + touches = curTouches; + evt.preventDefault(); + } + }); + $(eventCapture).on('touchend', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; + if (touches.length > 1) evt.preventDefault(); + }); + + _this23.zoomIn = function () { + if (_this23._zoom >= _this23._maxZoom || !_this23._zoomAvailable) return; + + if (!_this23._mouseCenter) { + _this23._mouseCenter = { + x: $(_this23.domElement).width() / 2, + y: $(_this23.domElement).height() / 2 + }; + } + + _this23._zoom += 25; + _this23._zoom = _this23._zoom < 100 ? 100 : _this23._zoom; + _this23._zoom = _this23._zoom > _this23._maxZoom ? _this23._maxZoom : _this23._zoom; + var newVideoSize = { + w: $(_this23.domElement).width(), + h: $(_this23.domElement).height() + }; + var mouse = _this23._mouseCenter; + $(_this23.domElement).css({ + width: _this23._zoom + '%', + height: _this23._zoom + '%' + }); + var maxOffset = _this23._zoom - 100; + var offset = { + x: mouse.x * maxOffset / newVideoSize.w * (maxOffset / 100), + y: mouse.y * maxOffset / newVideoSize.h * (maxOffset / 100) + }; + offset.x = offset.x < maxOffset ? offset.x : maxOffset; + offset.y = offset.y < maxOffset ? offset.y : maxOffset; + $(_this23.domElement).css({ + left: "-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + _this23._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged, { + video: _assertThisInitialized(_this23) + }); + }; + + _this23.zoomOut = function () { + if (_this23._zoom <= 100 || !_this23._zoomAvailable) return; + + if (!_this23._mouseCenter) { + _this23._mouseCenter = { + x: $(_this23.domElement).width() / 2, + y: $(_this23.domElement).height() / 2 + }; + } + + _this23._zoom -= 25; + _this23._zoom = _this23._zoom < 100 ? 100 : _this23._zoom; + _this23._zoom = _this23._zoom > _this23._maxZoom ? _this23._maxZoom : _this23._zoom; + var newVideoSize = { + w: $(_this23.domElement).width(), + h: $(_this23.domElement).height() + }; + var mouse = _this23._mouseCenter; + $(_this23.domElement).css({ + width: _this23._zoom + '%', + height: _this23._zoom + '%' + }); + var maxOffset = _this23._zoom - 100; + var offset = { + x: mouse.x * maxOffset / newVideoSize.w * (maxOffset / 100), + y: mouse.y * maxOffset / newVideoSize.h * (maxOffset / 100) + }; + offset.x = offset.x < maxOffset ? offset.x : maxOffset; + offset.y = offset.y < maxOffset ? offset.y : maxOffset; + $(_this23.domElement).css({ + left: "-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + _this23._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged, { + video: _assertThisInitialized(_this23) + }); + }; + + var altScrollMessageContainer = document.createElement('div'); + altScrollMessageContainer.className = "alt-scroll-message-container"; + altScrollMessageContainer.innerHTML = "<p>" + paella.dictionary.translate("Use Alt+Scroll to zoom the video") + "</p>"; + eventCapture.appendChild(altScrollMessageContainer); + $(altScrollMessageContainer).css({ + opacity: 0.0 + }); + var altScrollMessageTimer = null; + $(eventCapture).on('mousewheel wheel', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; + + if (!evt.altKey) { + showAltScrollMessage(); + return; + } else { + clearAltScrollMessage(false); + + if (altScrollMessageTimer) { + clearTimeout(altScrollMessageTimer); + altScrollMessageTimer = null; + } + } + + var mouse = mousePos(evt); + var wheel = wheelDelta(evt); + if (_this23._zoom >= _this23._maxZoom && wheel > 0) return; + _this23._zoom += wheel; + _this23._zoom = _this23._zoom < 100 ? 100 : _this23._zoom; + _this23._zoom = _this23._zoom > _this23._maxZoom ? _this23._maxZoom : _this23._zoom; + var newVideoSize = { + w: $(_this23.domElement).width(), + h: $(_this23.domElement).height() + }; + $(_this23.domElement).css({ + width: _this23._zoom + '%', + height: _this23._zoom + '%' + }); + var maxOffset = _this23._zoom - 100; + var offset = { + x: mouse.x * maxOffset / newVideoSize.w * (maxOffset / 100), + y: mouse.y * maxOffset / newVideoSize.h * (maxOffset / 100) + }; + offset.x = offset.x < maxOffset ? offset.x : maxOffset; + offset.y = offset.y < maxOffset ? offset.y : maxOffset; + $(_this23.domElement).css({ + left: "-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + _this23._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged, { + video: _assertThisInitialized(_this23) + }); + _this23._mouseCenter = mouse; + evt.stopPropagation(); + return false; + }); + $(eventCapture).on('mousedown', function (evt) { + _this23._mouseDown = mousePos(evt); + _this23.drag = true; + }); + $(eventCapture).on('mousemove', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; //this.drag = evt.buttons>0; + + if (_this23.drag) { + paella.player.videoContainer.disablePlayOnClick(); + var mouse = mousePos(evt); + panImage.apply(_assertThisInitialized(_this23), [{ + x: mouse.x - _this23._mouseDown.x, + y: mouse.y - _this23._mouseDown.y + }]); + _this23._mouseDown = mouse; + } + }); + $(eventCapture).on('mouseup', function (evt) { + if (!_this23.allowZoom() || !_this23._zoomAvailable) return; + _this23.drag = false; + setTimeout(function () { + return paella.player.videoContainer.enablePlayOnClick(); + }, 10); + }); + $(eventCapture).on('mouseleave', function (evt) { + _this23.drag = false; + }); + } + + return _this23; + } + + _createClass(VideoRect, [{ + key: "allowZoom", + value: function allowZoom() { + return !this.canvasData.mouseEventsSupport; + } + }, { + key: "setZoom", + value: function setZoom(zoom, left, top) { + var tween = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + + if (this.zoomAvailable()) { + this._zoomOffset.x = left; + this._zoomOffset.y = top; + this._zoom = zoom; + + if (tween == 0) { + $(this.domElement).css({ + width: this._zoom + '%', + height: this._zoom + '%', + left: "-" + this._zoomOffset.x + "%", + top: "-" + this._zoomOffset.y + "%" + }); + } else { + $(this.domElement).stop(true, false).animate({ + width: this._zoom + '%', + height: this._zoom + '%', + left: "-" + this._zoomOffset.x + "%", + top: "-" + this._zoomOffset.y + "%" + }, tween, "linear"); + } + + paella.events.trigger(paella.events.videoZoomChanged, { + video: this + }); + } + } + }, { + key: "captureFrame", + value: function captureFrame() { + return Promise.resolve(null); + } + }, { + key: "supportsCaptureFrame", + value: function supportsCaptureFrame() { + return Promise.resolve(false); + } // zoomAvailable will only return true if the zoom is enabled, the + // video plugin supports zoom and the current video resolution is higher than + // the current video size + + }, { + key: "zoomAvailable", + value: function zoomAvailable() { + return this.allowZoom() && this._zoomAvailable; + } + }, { + key: "disableEventCapture", + value: function disableEventCapture() { + this.eventCapture.style.pointerEvents = 'none'; + } + }, { + key: "enableEventCapture", + value: function enableEventCapture() { + this.eventCapture.style.pointerEvents = ''; + } + }, { + key: "canvasData", + get: function get() { + var canvasType = this._stream && Array.isArray(this._stream.canvas) && this._stream.canvas[0]; + + var canvasData = canvasType && paella.getVideoCanvasData(this._stream.canvas[0]) || { + mouseEventsSupport: false, + webglSupport: false + }; + return canvasData; + } + }]); + + return VideoRect; + }(paella.DomNode); + + paella.VideoRect = VideoRect; + + var VideoElementBase = + /*#__PURE__*/ + function (_paella$VideoRect) { + _inherits(VideoElementBase, _paella$VideoRect); + + function VideoElementBase(id, stream, containerType, left, top, width, height) { + var _this24; + + _classCallCheck(this, VideoElementBase); + + _this24 = _possibleConstructorReturn(this, _getPrototypeOf(VideoElementBase).call(this, id, containerType, left, top, width, height)); + _this24._stream = stream; + _this24._ready = false; + _this24._autoplay = false; + _this24._videoQualityStrategy = null; + if (_this24._stream.preview) _this24.setPosterFrame(_this24._stream.preview); + + if (_this24.canvasData.mouseEventsSupport) { + _this24.disableEventCapture(); + } + + return _this24; + } + + _createClass(VideoElementBase, [{ + key: "defaultProfile", + value: function defaultProfile() { + return null; + } // Synchronous functions: returns null if the resource is not loaded. Use only if + // the resource is loaded. + + }, { + key: "setVideoQualityStrategy", + // Initialization functions + value: function setVideoQualityStrategy(strategy) { + this._videoQualityStrategy = strategy; + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + base.log.debug("TODO: implement setPosterFrame() function"); + } + }, { + key: "setAutoplay", + value: function setAutoplay(autoplay) { + this._autoplay = autoplay; + } + }, { + key: "setMetadata", + value: function setMetadata(data) { + this._metadata = data; + } + }, { + key: "load", + value: function load() { + return paella_DeferredNotImplemented(); + } + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + return true; + } // Video canvas functions + + }, { + key: "videoCanvas", + value: function videoCanvas() { + return Promise.reject(new Error("VideoElementBase::videoCanvas(): Not implemented in child class.")); + } // Playback functions + + }, { + key: "getVideoData", + value: function getVideoData() { + return paella_DeferredNotImplemented(); + } + }, { + key: "play", + value: function play() { + base.log.debug("TODO: implement play() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "pause", + value: function pause() { + base.log.debug("TODO: implement pause() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "isPaused", + value: function isPaused() { + base.log.debug("TODO: implement isPaused() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "duration", + value: function duration() { + base.log.debug("TODO: implement duration() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + base.log.debug("TODO: implement setCurrentTime() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "currentTime", + value: function currentTime() { + base.log.debug("TODO: implement currentTime() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + base.log.debug("TODO: implement setVolume() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "volume", + value: function volume() { + base.log.debug("TODO: implement volume() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + base.log.debug("TODO: implement setPlaybackRate() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "playbackRate", + value: function playbackRate() { + base.log.debug("TODO: implement playbackRate() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + }, { + key: "getQualities", + value: function getQualities() { + return paella_DeferredNotImplemented(); + } + }, { + key: "setQuality", + value: function setQuality(index) { + return paella_DeferredNotImplemented(); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + return paella_DeferredNotImplemented(); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); // { width:X, height:Y } + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + return paella_DeferredNotImplemented(); + } + }, { + key: "freeze", + value: function freeze() { + return paella_DeferredNotImplemented(); + } + }, { + key: "unFreeze", + value: function unFreeze() { + return paella_DeferredNotImplemented(); + } + }, { + key: "disable", + value: function disable(isMainAudioPlayer) { + console.log("Disable video requested"); + } + }, { + key: "enable", + value: function enable(isMainAudioPlayer) { + console.log("Enable video requested"); + } // Utility functions + + }, { + key: "setClassName", + value: function setClassName(className) { + this.domElement.className = className; + } + }, { + key: "_callReadyEvent", + value: function _callReadyEvent() { + paella.events.trigger(paella.events.singleVideoReady, { + sender: this + }); + } + }, { + key: "_callUnloadEvent", + value: function _callUnloadEvent() { + paella.events.trigger(paella.events.singleVideoUnloaded, { + sender: this + }); + } + }, { + key: "ready", + get: function get() { + return this._ready; + } + }, { + key: "stream", + get: function get() { + return this._stream; + } + }, { + key: "currentTimeSync", + get: function get() { + return null; + } + }, { + key: "volumeSync", + get: function get() { + return null; + } + }, { + key: "pausedSync", + get: function get() { + return null; + } + }, { + key: "durationSync", + get: function get() { + return null; + } + }]); + + return VideoElementBase; + }(paella.VideoRect); + + paella.VideoElementBase = VideoElementBase; + + var EmptyVideo = + /*#__PURE__*/ + function (_paella$VideoElementB) { + _inherits(EmptyVideo, _paella$VideoElementB); + + function EmptyVideo(id, stream, left, top, width, height) { + _classCallCheck(this, EmptyVideo); + + return _possibleConstructorReturn(this, _getPrototypeOf(EmptyVideo).call(this, id, stream, 'div', left, top, width, height)); + } // Initialization functions + + + _createClass(EmptyVideo, [{ + key: "setPosterFrame", + value: function setPosterFrame(url) {} + }, { + key: "setAutoplay", + value: function setAutoplay(auto) {} + }, { + key: "load", + value: function load() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "play", + value: function play() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "pause", + value: function pause() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "isPaused", + value: function isPaused() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "duration", + value: function duration() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "currentTime", + value: function currentTime() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "volume", + value: function volume() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "playbackRate", + value: function playbackRate() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "unFreeze", + value: function unFreeze() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "freeze", + value: function freeze() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "unload", + value: function unload() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredRejected(new Error("no such compatible video player")); + } + }]); + + return EmptyVideo; + }(paella.VideoElementBase); + + paella.EmptyVideo = EmptyVideo; + + var EmptyVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory) { + _inherits(EmptyVideoFactory, _paella$VideoFactory); + + function EmptyVideoFactory() { + _classCallCheck(this, EmptyVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(EmptyVideoFactory).apply(this, arguments)); + } + + _createClass(EmptyVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + return true; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + return new paella.EmptyVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return EmptyVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.EmptyVideoFactory = EmptyVideoFactory; + + var Html5Video = + /*#__PURE__*/ + function (_paella$VideoElementB2) { + _inherits(Html5Video, _paella$VideoElementB2); + + function Html5Video(id, stream, left, top, width, height, streamName) { + var _this25; + + _classCallCheck(this, Html5Video); + + _this25 = _possibleConstructorReturn(this, _getPrototypeOf(Html5Video).call(this, id, stream, 'video', left, top, width, height)); + _this25._posterFrame = null; + _this25._currentQuality = null; + _this25._autoplay = false; + _this25._streamName = streamName || 'mp4'; + _this25._playbackRate = 1; + + if (_this25._stream.sources[_this25._streamName]) { + _this25._stream.sources[_this25._streamName].sort(function (a, b) { + return a.res.h - b.res.h; + }); + } + + _this25.video.preload = "auto"; + + _this25.video.setAttribute("playsinline", ""); + + _this25.video.setAttribute("tabindex", "-1"); + + _this25._configureVideoEvents(_this25.video); + + return _this25; + } + + _createClass(Html5Video, [{ + key: "_configureVideoEvents", + value: function _configureVideoEvents(videoElement) { + var _this26 = this; + + function onProgress(event) { + if (!this._ready && this.video.readyState == 4) { + this._ready = true; + + if (this._initialCurrentTipe !== undefined) { + this.video.currentTime = this._initialCurrentTime; + delete this._initialCurrentTime; + } + + this._callReadyEvent(); + } + } + + var evtCallback = function evtCallback(event) { + onProgress.apply(_this26, [event]); + }; + + $(this.video).bind('progress', evtCallback); + $(this.video).bind('loadstart', evtCallback); + $(this.video).bind('loadedmetadata', evtCallback); + $(this.video).bind('canplay', evtCallback); + $(this.video).bind('oncanplay', evtCallback); // Save current time to resume video + + $(this.video).bind('timeupdate', function (evt) { + _this26._resumeCurrentTime = _this26.video.currentTime; + }); + $(this.video).bind('ended', function (evt) { + paella.events.trigger(paella.events.endVideo); + }); + $(this.video).bind('emptied', function (evt) { + if (_this26._resumeCurrentTime && !isNaN(_this26._resumeCurrentTime)) { + _this26.video.currentTime = _this26._resumeCurrentTime; + } + }); // Fix safari setQuelity bug + + if (paella.utils.userAgent.browser.Safari) { + $(this.video).bind('canplay canplaythrough', function (evt) { + _this26._resumeCurrentTime && (_this26.video.currentTime = _this26._resumeCurrentTime); + }); + } + } + }, { + key: "_deferredAction", + value: function _deferredAction(action) { + var _this27 = this; + + return new Promise(function (resolve, reject) { + function processResult(actionResult) { + if (actionResult instanceof Promise) { + actionResult.then(function (p) { + return resolve(p); + })["catch"](function (err) { + return reject(err); + }); + } else { + resolve(actionResult); + } + } + + if (_this27.ready) { + processResult(action()); + } else { + $(_this27.video).bind('canplay', function () { + processResult(action()); + $(_this27.video).unbind('canplay'); + }); + } + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString: function toString() { + return this.res.w == 0 ? "auto" : this.res.w + "x" + this.res.h; + }, + shortLabel: function shortLabel() { + return this.res.w == 0 ? "auto" : this.res.h + "p"; + }, + compare: function compare(q2) { + return this.res.w * this.res.h - q2.res.w * q2.res.h; + } + }; + } + }, { + key: "captureFrame", + value: function captureFrame() { + var _this28 = this; + + return new Promise(function (resolve) { + resolve({ + source: _this28.video, + width: _this28.video.videoWidth, + height: _this28.video.videoHeight + }); + }); + } + }, { + key: "supportsCaptureFrame", + value: function supportsCaptureFrame() { + return Promise.resolve(true); + } // Initialization functions + + }, { + key: "getVideoData", + value: function getVideoData() { + var _this29 = this; + + var This = this; + return new Promise(function (resolve, reject) { + _this29._deferredAction(function () { + resolve({ + duration: This.video.duration, + currentTime: This.video.currentTime, + volume: This.video.volume, + paused: This.video.paused, + ended: This.video.ended, + res: { + w: This.video.videoWidth, + h: This.video.videoHeight + } + }); + }); + }); + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + this._posterFrame = url; + } + }, { + key: "setAutoplay", + value: function setAutoplay(auto) { + this._autoplay = auto; + + if (auto && this.video) { + this.video.setAttribute("autoplay", auto); + } + } + }, { + key: "videoCanvas", + value: function videoCanvas() { + var canvasType = this._stream.canvas || ["video"]; + return paella.getVideoCanvas(canvasType); + } + }, { + key: "webGlDidLoad", + value: function webGlDidLoad() { + return Promise.resolve(); + } + }, { + key: "load", + value: function load() { + var _this30 = this; + + return new Promise(function (resolve, reject) { + var sources = _this30._stream.sources[_this30._streamName]; + + if (_this30._currentQuality === null && _this30._videoQualityStrategy) { + _this30._currentQuality = _this30._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = _this30._currentQuality < sources.length ? sources[_this30._currentQuality] : null; + _this30.video.innerText = ""; + + _this30.videoCanvas().then(function (CanvasClass) { + var canvasInstance = new CanvasClass(stream); + _this30._zoomAvailable = canvasInstance.allowZoom(); + + if (window.$paella_bg && bg.app && canvasInstance instanceof bg.app.WindowController) { + // WebGL canvas + _this30.domElementType = 'canvas'; + + if (stream) { + // WebGL engine load callback + return new Promise(function (webglResolve, webglReject) { + _this30.webGlDidLoad().then(function () { + _this30.canvasController = null; + var mainLoop = bg.app.MainLoop.singleton; + mainLoop.updateMode = bg.app.FrameUpdate.AUTO; + mainLoop.canvas = _this30.domElement; + mainLoop.run(canvasInstance); + return _this30.loadVideoStream(canvasInstance, stream); + }).then(function (canvas) { + webglResolve(canvas); + })["catch"](function (err) { + return webglReject(err); + }); + }); + } else { + Promise.reject(new Error("Invalid stream data.")); + } + } else { + return _this30.loadVideoStream(canvasInstance, stream); + } + }).then(function (canvas) { + if (canvas && paella.WebGLCanvas && canvas instanceof paella.WebGLCanvas) { + _this30._video = canvas.video; + + _this30._video.pause(); + + _this30._configureVideoEvents(_this30.video); + } + + resolve(stream); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "loadVideoStream", + value: function loadVideoStream(canvasInstance, stream) { + return canvasInstance.loadVideo(this, stream); + } + }, { + key: "disable", + value: function disable(isMainAudioPlayer) {//if (isMainAudioPlayer) return; + //this._isDisabled = true; + //this._playState = !this.video.paused; + //this.video.pause(); + } + }, { + key: "enable", + value: function enable(isMainAudioPlayer) {//if (isMainAudioPlayer) return; + //this._isDisabled = false; + //if (this._playState) { + // this.video.play(); + //} + } + }, { + key: "getQualities", + value: function getQualities() { + var _this31 = this; + + return new Promise(function (resolve, reject) { + setTimeout(function () { + var result = []; + var sources = _this31._stream.sources[_this31._streamName]; + var index = -1; + sources.forEach(function (s) { + index++; + result.push(_this31._getQualityObject(index, s)); + }); + resolve(result); + }, 10); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this32 = this; + + return new Promise(function (resolve) { + var paused = _this32.video.paused; + var sources = _this32._stream.sources[_this32._streamName]; + _this32._currentQuality = index < sources.length ? index : 0; + var currentTime = _this32.video.currentTime; + var This = _this32; + + var onSeek = function onSeek() { + This.unFreeze().then(function () { + resolve(); + This.video.removeEventListener('seeked', onSeek, false); + }); + }; + + _this32.freeze().then(function () { + return _this32.load(); + }).then(function () { + if (!paused) { + _this32.play(); + } + + _this32.video.addEventListener('seeked', onSeek); + + _this32.video.currentTime = currentTime; + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this33 = this; + + return new Promise(function (resolve) { + resolve(_this33._getQualityObject(_this33._currentQuality, _this33._stream.sources[_this33._streamName][_this33._currentQuality])); + }); + } + }, { + key: "play", + value: function play() { + var _this34 = this; + + return this._deferredAction(function () { + if (!_this34._isDisabled) { + return _this34.video.play(); + } else { + return Promise.resolve(); + } + }); + } + }, { + key: "pause", + value: function pause() { + var _this35 = this; + + return this._deferredAction(function () { + if (!_this35._isDisabled) { + return _this35.video.pause(); + } else { + return Promise.resolve(); + } + }); + } + }, { + key: "isPaused", + value: function isPaused() { + var _this36 = this; + + return this._deferredAction(function () { + return _this36.video.paused; + }); + } + }, { + key: "duration", + value: function duration() { + var _this37 = this; + + return this._deferredAction(function () { + return _this37.video.duration; + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this38 = this; + + return this._deferredAction(function () { + (time == 0 || time) && !isNaN(time) && (_this38.video.currentTime = time); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this39 = this; + + return this._deferredAction(function () { + return _this39.video.currentTime; + }); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + var _this40 = this; + + return this._deferredAction(function () { + _this40.video.volume = volume; + + if (volume == 0) { + _this40.video.setAttribute("muted", "muted"); + + _this40.video.muted = true; + } else { + _this40.video.removeAttribute("muted"); + + _this40.video.muted = false; + } + }); + } + }, { + key: "volume", + value: function volume() { + var _this41 = this; + + return this._deferredAction(function () { + return _this41.video.volume; + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var _this42 = this; + + return this._deferredAction(function () { + _this42._playbackRate = rate; + _this42.video.playbackRate = rate; + }); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var _this43 = this; + + return this._deferredAction(function () { + return _this43.video.playbackRate; + }); + } + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + var macOS10_12_safari = paella.utils.userAgent.system.MacOS && paella.utils.userAgent.system.Version.minor >= 12 && paella.utils.userAgent.browser.Safari; + var iOS = paella.utils.userAgent.system.iOS; // Autoplay does not work from Chrome version 64 + + var chrome_v64 = paella.utils.userAgent.browser.Chrome && paella.utils.userAgent.browser.Version.major == 64; + + if (macOS10_12_safari || iOS || chrome_v64) { + return false; + } else { + return true; + } + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + var _this44 = this; + + return this._deferredAction(function () { + var elem = _this44.video; + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + }, { + key: "unFreeze", + value: function unFreeze() { + var _this45 = this; + + return this._deferredAction(function () { + var c = document.getElementById(_this45.video.id + "canvas"); + + if (c) { + $(c).remove(); + } + }); + } + }, { + key: "freeze", + value: function freeze() { + var This = this; + return this._deferredAction(function () { + var canvas = document.createElement("canvas"); + canvas.id = This.video.id + "canvas"; + canvas.className = "freezeFrame"; + canvas.width = This.video.videoWidth; + canvas.height = This.video.videoHeight; + canvas.style.cssText = This.video.style.cssText; + canvas.style.zIndex = 2; + var ctx = canvas.getContext("2d"); + ctx.drawImage(This.video, 0, 0, Math.ceil(canvas.width / 16) * 16, Math.ceil(canvas.height / 16) * 16); //Draw image + + This.video.parentElement.appendChild(canvas); + }); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); + } + }, { + key: "video", + get: function get() { + if (this.domElementType == 'video') { + return this.domElement; + } else { + this._video = this._video || document.createElement('video'); + return this._video; + } + } + }, { + key: "ready", + get: function get() { + // Fix Firefox specific issue when video reaches the end + if (paella.utils.userAgent.browser.Firefox && this.video.currentTime == this.video.duration && this.video.readyState == 2) { + this.video.currentTime = 0; + } + + return this.video.readyState >= 3; + } // Synchronous functions: returns null if the resource is not loaded. Use only if + // the resource is loaded. + + }, { + key: "currentTimeSync", + get: function get() { + return this.ready ? this.video.currentTime : null; + } + }, { + key: "volumeSync", + get: function get() { + return this.ready ? this.video.volume : null; + } + }, { + key: "pausedSync", + get: function get() { + return this.ready ? this.video.paused : null; + } + }, { + key: "durationSync", + get: function get() { + return this.ready ? this.video.duration : null; + } + }]); + + return Html5Video; + }(paella.VideoElementBase); + + paella.Html5Video = Html5Video; + + paella.Html5Video.IsAutoplaySupported = function () { + var debug = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return new Promise(function (resolve) { + // Create video element to test autoplay + var video = document.createElement('video'); + video.src = 'data:video/mp4;base64,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'; + video.load(); //video.style.display = 'none'; + + if (debug) { + video.style = "position: fixed; top: 0px; right: 0px; z-index: 1000000;"; + document.body.appendChild(video); + } else { + video.style.display = 'none'; + } + + video.playing = false; + video.play().then(function (status) { + resolve(true); + })["catch"](function (err) { + resolve(false); + }); + }); + }; + + var Html5VideoFactory = + /*#__PURE__*/ + function () { + function Html5VideoFactory() { + _classCallCheck(this, Html5VideoFactory); + } + + _createClass(Html5VideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + if (paella.videoFactories.Html5VideoFactory.s_instances > 0 && base.userAgent.system.iOS && paella.utils.userAgent.system.Version.major <= 10 && paella.utils.userAgent.system.Version.minor < 3) { + return false; + } + + for (var key in streamData.sources) { + if (key == 'mp4' || key == 'mp3') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.Html5Video(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return Html5VideoFactory; + }(); + + paella.videoFactories.Html5VideoFactory = Html5VideoFactory; + paella.videoFactories.Html5VideoFactory.s_instances = 0; + + var ImageVideo = + /*#__PURE__*/ + function (_paella$VideoElementB3) { + _inherits(ImageVideo, _paella$VideoElementB3); + + function ImageVideo(id, stream, left, top, width, height) { + var _this46; + + _classCallCheck(this, ImageVideo); + + _this46 = _possibleConstructorReturn(this, _getPrototypeOf(ImageVideo).call(this, id, stream, 'img', left, top, width, height)); + _this46._posterFrame = null; + _this46._currentQuality = null; + _this46._currentTime = 0; + _this46._duration = 0; + _this46._ended = false; + _this46._playTimer = null; + _this46._playbackRate = 1; + _this46._frameArray = null; + + _this46._stream.sources.image.sort(function (a, b) { + return a.res.h - b.res.h; + }); + + return _this46; + } + + _createClass(ImageVideo, [{ + key: "_deferredAction", + value: function _deferredAction(action) { + var _this47 = this; + + return new Promise(function (_resolve) { + if (_this47.ready) { + _resolve(action()); + } else { + var _resolve = function resolve() { + _this47._ready = true; + + _resolve(action()); + }; + + $(_this47.video).bind('paella:imagevideoready', _resolve); + } + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString: function toString() { + return Number(this.res.w) + "x" + Number(this.res.h); + }, + shortLabel: function shortLabel() { + return this.res.h + "p"; + }, + compare: function compare(q2) { + return Number(this.res.w) * Number(this.res.h) - Number(q2.res.w) * Number(q2.res.h); + } + }; + } + }, { + key: "_loadCurrentFrame", + value: function _loadCurrentFrame() { + var This = this; + + if (this._frameArray) { + var frame = this._frameArray[0]; + + this._frameArray.some(function (f) { + if (This._currentTime < f.time) { + return true; + } else { + frame = f.src; + } + }); + + this.img.src = frame; + } + } // Initialization functions + + /*allowZoom:function() { + return false; + },*/ + + }, { + key: "getVideoData", + value: function getVideoData() { + var _this48 = this; + + return new Promise(function (resolve) { + _this48._deferredAction(function () { + var imgStream = _this48._stream.sources.image[_this48._currentQuality]; + var videoData = { + duration: _this48._duration, + currentTime: _this48._currentTime, + volume: 0, + paused: _this48._paused, + ended: _this48._ended, + res: { + w: imgStream.res.w, + h: imgStream.res.h + } + }; + resolve(videoData); + }); + }); + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + this._posterFrame = url; + } + }, { + key: "setAutoplay", + value: function setAutoplay(auto) { + this._autoplay = auto; + + if (auto && this.video) { + this.video.setAttribute("autoplay", auto); + } + } + }, { + key: "load", + value: function load() { + var This = this; + var sources = this._stream.sources.image; + + if (this._currentQuality === null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = this._currentQuality < sources.length ? sources[this._currentQuality] : null; + + if (stream) { + this._frameArray = []; + + for (var key in stream.frames) { + var time = Math.floor(Number(key.replace("frame_", ""))); + + this._frameArray.push({ + src: stream.frames[key], + time: time + }); + } + + this._frameArray.sort(function (a, b) { + return a.time - b.time; + }); + + this._ready = true; + this._currentTime = 0; + this._duration = stream.duration; + + this._loadCurrentFrame(); + + paella.events.trigger("paella:imagevideoready"); + return this._deferredAction(function () { + return stream; + }); + } else { + return paella_DeferredRejected(new Error("Could not load video: invalid quality stream index")); + } + } + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + return true; + } + }, { + key: "getQualities", + value: function getQualities() { + var _this49 = this; + + return new Promise(function (resolve) { + setTimeout(function () { + var result = []; + var sources = _this49._stream.sources[_this49._streamName]; + var index = -1; + sources.forEach(function (s) { + index++; + result.push(_this49._getQualityObject(index, s)); + }); + resolve(result); + }, 10); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this50 = this; + + return new Promise(function (resolve) { + var paused = _this50._paused; + var sources = _this50._stream.sources.image; + _this50._currentQuality = index < sources.length ? index : 0; + var currentTime = _this50._currentTime; + + _this50.load().then(function () { + this._loadCurrentFrame(); + + resolve(); + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this51 = this; + + return new Promise(function (resolve) { + resolve(_this51._getQualityObject(_this51._currentQuality, _this51._stream.sources.image[_this51._currentQuality])); + }); + } + }, { + key: "play", + value: function play() { + var This = this; + return this._deferredAction(function () { + This._playTimer = new base.Timer(function () { + This._currentTime += 0.25 * This._playbackRate; + + This._loadCurrentFrame(); + }, 250); + This._playTimer.repeat = true; + }); + } + }, { + key: "pause", + value: function pause() { + var This = this; + return this._deferredAction(function () { + This._playTimer.repeat = false; + This._playTimer = null; + }); + } + }, { + key: "isPaused", + value: function isPaused() { + var _this52 = this; + + return this._deferredAction(function () { + return _this52._paused; + }); + } + }, { + key: "duration", + value: function duration() { + var _this53 = this; + + return this._deferredAction(function () { + return _this53._duration; + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this54 = this; + + return this._deferredAction(function () { + _this54._currentTime = time; + + _this54._loadCurrentFrame(); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this55 = this; + + return this._deferredAction(function () { + return _this55._currentTime; + }); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + return this._deferredAction(function () {// No audo sources in image video + }); + } + }, { + key: "volume", + value: function volume() { + return this._deferredAction(function () { + // No audo sources in image video + return 0; + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var _this56 = this; + + return this._deferredAction(function () { + _this56._playbackRate = rate; + }); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var _this57 = this; + + return this._deferredAction(function () { + return _this57._playbackRate; + }); + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + var _this58 = this; + + return this._deferredAction(function () { + var elem = _this58.img; + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + }, { + key: "unFreeze", + value: function unFreeze() { + return this._deferredAction(function () {}); + } + }, { + key: "freeze", + value: function freeze() { + return this._deferredAction(function () {}); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); + } + }, { + key: "img", + get: function get() { + return this.domElement; + } + }, { + key: "imgStream", + get: function get() { + this._stream.sources.image[this._currentQuality]; + } + }, { + key: "_paused", + get: function get() { + return this._playTimer == null; + } + }]); + + return ImageVideo; + }(paella.VideoElementBase); + + paella.ImageVideo = ImageVideo; + + var ImageVideoFactory = + /*#__PURE__*/ + function () { + function ImageVideoFactory() { + _classCallCheck(this, ImageVideoFactory); + } + + _createClass(ImageVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + for (var key in streamData.sources) { + if (key == 'image') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + return new paella.ImageVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return ImageVideoFactory; + }(); + + paella.videoFactories.ImageVideoFactory = ImageVideoFactory; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var BackgroundContainer = + /*#__PURE__*/ + function (_paella$DomNode4) { + _inherits(BackgroundContainer, _paella$DomNode4); + + function BackgroundContainer(id, image) { + var _this59; + + _classCallCheck(this, BackgroundContainer); + + _this59 = _possibleConstructorReturn(this, _getPrototypeOf(BackgroundContainer).call(this, 'img', id, { + position: 'relative', + top: '0px', + left: '0px', + right: '0px', + bottom: '0px', + zIndex: GlobalParams.background.zIndex + })); + + _this59.domElement.setAttribute('src', image); + + _this59.domElement.setAttribute('alt', ''); + + _this59.domElement.setAttribute('width', '100%'); + + _this59.domElement.setAttribute('height', '100%'); + + return _this59; + } + + _createClass(BackgroundContainer, [{ + key: "setImage", + value: function setImage(image) { + this.domElement.setAttribute('src', image); + } + }]); + + return BackgroundContainer; + }(paella.DomNode); + + paella.BackgroundContainer = BackgroundContainer; + + var VideoOverlay = + /*#__PURE__*/ + function (_paella$DomNode5) { + _inherits(VideoOverlay, _paella$DomNode5); + + _createClass(VideoOverlay, [{ + key: "size", + get: function get() { + if (!this._size) { + this._size = { + w: 1280, + h: 720 + }; + } + + return this._size; + } + }]); + + function VideoOverlay() { + var _this60; + + _classCallCheck(this, VideoOverlay); + + var style = { + position: 'absolute', + left: '0px', + right: '0px', + top: '0px', + bottom: '0px', + overflow: 'hidden', + zIndex: 10 + }; + _this60 = _possibleConstructorReturn(this, _getPrototypeOf(VideoOverlay).call(this, 'div', 'overlayContainer', style)); + + _this60.domElement.setAttribute("role", "main"); + + return _this60; + } + + _createClass(VideoOverlay, [{ + key: "_generateId", + value: function _generateId() { + return Math.ceil(Date.now() * Math.random()); + } + }, { + key: "enableBackgroundMode", + value: function enableBackgroundMode() { + this.domElement.className = 'overlayContainer background'; + } + }, { + key: "disableBackgroundMode", + value: function disableBackgroundMode() { + this.domElement.className = 'overlayContainer'; + } + }, { + key: "clear", + value: function clear() { + this.domElement.innerText = ""; + } + }, { + key: "getVideoRect", + value: function getVideoRect(index) { + return paella.player.videoContainer.getVideoRect(index); + } + }, { + key: "addText", + value: function addText(text, rect, isDebug) { + var textElem = document.createElement('div'); + textElem.innerText = text; + textElem.className = "videoOverlayText"; + if (isDebug) textElem.style.backgroundColor = "red"; + return this.addElement(textElem, rect); + } + }, { + key: "addElement", + value: function addElement(element, rect) { + this.domElement.appendChild(element); + element.style.position = 'absolute'; + element.style.left = this.getHSize(rect.left) + '%'; + element.style.top = this.getVSize(rect.top) + '%'; + element.style.width = this.getHSize(rect.width) + '%'; + element.style.height = this.getVSize(rect.height) + '%'; + return element; + } + }, { + key: "getLayer", + value: function getLayer(id, zindex) { + id = id || this._generateId(); + return $(this.domElement).find("#" + id)[0] || this.addLayer(id, zindex); + } + }, { + key: "addLayer", + value: function addLayer(id, zindex) { + zindex = zindex || 10; + var element = document.createElement('div'); + element.className = "row"; + element.id = id || this._generateId(); + return this.addElement(element, { + left: 0, + top: 0, + width: 1280, + height: 720 + }); + } + }, { + key: "removeLayer", + value: function removeLayer(id) { + var elem = $(this.domElement).find("#" + id)[0]; + + if (elem) { + this.domElement.removeChild(elem); + } + } + }, { + key: "removeElement", + value: function removeElement(element) { + if (element) { + try { + this.domElement.removeChild(element); + } catch (e) {} + } + } + }, { + key: "getVSize", + value: function getVSize(px) { + return px * 100 / this.size.h; + } + }, { + key: "getHSize", + value: function getHSize(px) { + return px * 100 / this.size.w; + } + }]); + + return VideoOverlay; + }(paella.DomNode); + + paella.VideoOverlay = VideoOverlay; + + var VideoWrapper = + /*#__PURE__*/ + function (_paella$DomNode6) { + _inherits(VideoWrapper, _paella$DomNode6); + + function VideoWrapper(id, left, top, width, height) { + var _this61; + + _classCallCheck(this, VideoWrapper); + + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(top) + '%'; + var percentLeft = relativeSize.percentWSize(left) + '%'; + var percentWidth = relativeSize.percentWSize(width) + '%'; + var percentHeight = relativeSize.percentVSize(height) + '%'; + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute', + zIndex: GlobalParams.video.zIndex, + overflow: 'hidden' + }; + _this61 = _possibleConstructorReturn(this, _getPrototypeOf(VideoWrapper).call(this, 'div', id, style)); + _this61._rect = { + left: left, + top: top, + width: width, + height: height + }; + _this61.domElement.className = "videoWrapper"; + return _this61; + } + + _createClass(VideoWrapper, [{ + key: "setRect", + value: function setRect(rect, animate) { + this._rect = JSON.parse(JSON.stringify(rect)); + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(rect.top) + '%'; + var percentLeft = relativeSize.percentWSize(rect.left) + '%'; + var percentWidth = relativeSize.percentWSize(rect.width) + '%'; + var percentHeight = relativeSize.percentVSize(rect.height) + '%'; + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute' + }; + + if (animate) { + this.disableClassName(); + var thisClass = this; + $(this.domElement).animate(style, 400, function () { + thisClass.enableClassName(); + paella.events.trigger(paella.events.setComposition, { + video: thisClass + }); + }); + this.enableClassNameAfter(400); + } else { + $(this.domElement).css(style); + paella.events.trigger(paella.events.setComposition, { + video: this + }); + } + } + }, { + key: "getRect", + value: function getRect() { + return this._rect; + } + }, { + key: "disableClassName", + value: function disableClassName() { + this.classNameBackup = this.domElement.className; + this.domElement.className = ""; + } + }, { + key: "enableClassName", + value: function enableClassName() { + this.domElement.className = this.classNameBackup; + } + }, { + key: "enableClassNameAfter", + value: function enableClassNameAfter(millis) { + setTimeout("$('#" + this.domElement.id + "')[0].className = '" + this.classNameBackup + "'", millis); + } + }, { + key: "setVisible", + value: function setVisible(visible, animate) { + if (_typeof(visible == "string")) { + visible = /true/i.test(visible) ? true : false; + } + + if (visible && animate) { + $(this.domElement).show(); + $(this.domElement).animate({ + opacity: 1.0 + }, 300); + } else if (visible && !animate) { + $(this.domElement).show(); + } else if (!visible && animate) { + $(this.domElement).animate({ + opacity: 0.0 + }, 300); + } else if (!visible && !animate) { + $(this.domElement).hide(); + } + } + }, { + key: "setLayer", + value: function setLayer(layer) { + this.domElement.style.zIndex = layer; + } + }]); + + return VideoWrapper; + }(paella.DomNode); + + paella.VideoWrapper = VideoWrapper; + paella.SeekType = { + FULL: 1, + BACKWARDS_ONLY: 2, + FORWARD_ONLY: 3, + DISABLED: 4 + }; + + var VideoContainerBase = + /*#__PURE__*/ + function (_paella$DomNode7) { + _inherits(VideoContainerBase, _paella$DomNode7); + + function VideoContainerBase(id) { + var _this62; + + _classCallCheck(this, VideoContainerBase); + + var style = { + position: 'absolute', + left: '0px', + right: '0px', + top: '0px', + bottom: '0px', + overflow: 'hidden' + }; + _this62 = _possibleConstructorReturn(this, _getPrototypeOf(VideoContainerBase).call(this, 'div', id, style)); + _this62._trimming = { + enabled: false, + start: 0, + end: 0 + }; + _this62.timeupdateEventTimer = null; + _this62.timeupdateInterval = 250; + _this62.masterVideoData = null; + _this62.slaveVideoData = null; + _this62.currentMasterVideoData = null; + _this62.currentSlaveVideoData = null; + _this62._force = false; + _this62._playOnClickEnabled = true; + _this62._seekDisabled = false; + _this62._seekType = paella.SeekType.FULL; + _this62._seekTimeLimit = 0; + _this62._attenuationEnabled = false; + $(_this62.domElement).click(function (evt) { + if (_this62.firstClick && base.userAgent.browser.IsMobileVersion) return; + if (_this62.firstClick && !_this62._playOnClickEnabled) return; + paella.player.videoContainer.paused().then(function (paused) { + // If some player needs mouse events support, the click is ignored + if (_this62.firstClick && _this62.streamProvider.videoPlayers.some(function (p) { + return p.canvasData.mouseEventsSupport; + })) { + return; + } + + _this62.firstClick = true; + + if (paused) { + paella.player.play(); + } else { + paella.player.pause(); + } + }); + }); + + _this62.domElement.addEventListener("touchstart", function (event) { + if (paella.player.controls) { + paella.player.controls.restartHideTimer(); + } + }); + + var endedTimer = null; + paella.events.bind(paella.events.endVideo, function (event) { + if (endedTimer) { + clearTimeout(endedTimer); + endedTimer = null; + } + + endedTimer = setTimeout(function () { + paella.events.trigger(paella.events.ended); + }, 1000); + }); + return _this62; + } + + _createClass(VideoContainerBase, [{ + key: "triggerTimeupdate", + value: function triggerTimeupdate() { + var _this63 = this; + + var paused = 0; + var duration = 0; + this.paused().then(function (p) { + paused = p; + return _this63.duration(); + }).then(function (d) { + duration = d; + return _this63.currentTime(); + }).then(function (currentTime) { + if (!paused || _this63._force) { + _this63._seekTimeLimit = currentTime > _this63._seekTimeLimit ? currentTime : _this63._seekTimeLimit; + _this63._force = false; + paella.events.trigger(paella.events.timeupdate, { + videoContainer: _this63, + currentTime: currentTime, + duration: duration + }); + } + }); + } + }, { + key: "startTimeupdate", + value: function startTimeupdate() { + var _this64 = this; + + this.timeupdateEventTimer = new Timer(function (timer) { + _this64.triggerTimeupdate(); + }, this.timeupdateInterval); + this.timeupdateEventTimer.repeat = true; + } + }, { + key: "stopTimeupdate", + value: function stopTimeupdate() { + if (this.timeupdateEventTimer) { + this.timeupdateEventTimer.repeat = false; + } + + this.timeupdateEventTimer = null; + } + }, { + key: "enablePlayOnClick", + value: function enablePlayOnClick() { + this._playOnClickEnabled = true; + } + }, { + key: "disablePlayOnClick", + value: function disablePlayOnClick() { + this._playOnClickEnabled = false; + } + }, { + key: "isPlayOnClickEnabled", + value: function isPlayOnClickEnabled() { + return this._playOnClickEnabled; + } + }, { + key: "play", + value: function play() { + this.streamProvider.startVideoSync(this.audioPlayer); + this.startTimeupdate(); + setTimeout(function () { + return paella.events.trigger(paella.events.play); + }, 50); + } + }, { + key: "pause", + value: function pause() { + paella.events.trigger(paella.events.pause); + this.stopTimeupdate(); + this.streamProvider.stopVideoSync(); + } + }, { + key: "seekTo", + value: function seekTo(newPositionPercent) { + var _this65 = this; + + return new Promise(function (resolve, reject) { + var time = 0; + paella.player.videoContainer.currentTime().then(function (t) { + time = t; + return paella.player.videoContainer.duration(); + }).then(function (duration) { + if (_this65._seekTimeLimit > 0 && _this65._seekType == paella.SeekType.BACKWARDS_ONLY) { + time = _this65._seekTimeLimit; + } + + var currentPercent = time / duration * 100; + + switch (_this65._seekType) { + case paella.SeekType.FULL: + break; + + case paella.SeekType.BACKWARDS_ONLY: + if (newPositionPercent > currentPercent) { + reject(new Error("Warning: Seek is disabled")); + return; + } + + break; + + case paella.SeekType.FORWARD_ONLY: + if (newPositionPercent < currentPercent) { + reject(new Error("Warning: Seek is disabled")); + return; + } + + break; + + case paella.SeekType.DISABLED: + reject(new Error("Warning: Seek is disabled")); + return; + } + + _this65.setCurrentPercent(newPositionPercent).then(function (timeData) { + _this65._force = true; + + _this65.triggerTimeupdate(); + + paella.events.trigger(paella.events.seekToTime, { + newPosition: timeData.time + }); + paella.events.trigger(paella.events.seekTo, { + newPositionPercent: newPositionPercent + }); + resolve(); + }); + }); + }); + } + }, { + key: "seekToTime", + value: function seekToTime(time) { + var _this66 = this; + + return new Promise(function (resolve, reject) { + paella.player.videoContainer.currentTime().then(function (currentTime) { + if (_this66._seekTimeLimit && _this66._seekType == paella.SeekType.BACKWARDS_ONLY) { + currentTime = _this66._seekTimeLimit; + } + + switch (_this66._seekType) { + case paella.SeekType.FULL: + break; + + case paella.SeekType.BACKWARDS_ONLY: + if (time > currentTime) { + reject(new Error("Warning: Seek is disabled")); + return; + } + + break; + + case paella.SeekType.FORWARD_ONLY: + if (time < currentTime) { + reject(new Error("Warning: Seek is disabled")); + return; + } + + break; + + case paella.SeekType.DISABLED: + reject(new Error("Warning: Seek is disabled")); + return; + } + + _this66.setCurrentTime(time).then(function (timeData) { + _this66._force = true; + + _this66.triggerTimeupdate(); + + var percent = timeData.time * 100 / timeData.duration; + paella.events.trigger(paella.events.seekToTime, { + newPosition: timeData.time + }); + paella.events.trigger(paella.events.seekTo, { + newPositionPercent: percent + }); + }); + }); + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(params) { + paella.events.trigger(paella.events.setPlaybackRate, { + rate: params + }); + } + }, { + key: "mute", + value: function mute() {} + }, { + key: "unmute", + value: function unmute() {} + }, { + key: "setVolume", + value: function setVolume(params) {} + }, { + key: "volume", + value: function volume() { + return 1; + } + }, { + key: "trimStart", + value: function trimStart() { + var _this67 = this; + + return new Promise(function (resolve) { + resolve(_this67._trimming.start); + }); + } + }, { + key: "trimEnd", + value: function trimEnd() { + var _this68 = this; + + return new Promise(function (resolve) { + resolve(_this68._trimming.end); + }); + } + }, { + key: "trimEnabled", + value: function trimEnabled() { + var _this69 = this; + + return new Promise(function (resolve) { + resolve(_this69._trimming.enabled); + }); + } + }, { + key: "trimming", + value: function trimming() { + var _this70 = this; + + return new Promise(function (resolve) { + resolve(_this70._trimming); + }); + } + }, { + key: "enableTrimming", + value: function enableTrimming() { + this._trimming.enabled = true; + var cap = paella.captions.getActiveCaptions(); + if (cap !== undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions, "list"); + paella.events.trigger(paella.events.setTrim, { + trimEnabled: this._trimming.enabled, + trimStart: this._trimming.start, + trimEnd: this._trimming.end + }); + } + }, { + key: "disableTrimming", + value: function disableTrimming() { + this._trimming.enabled = false; + var cap = paella.captions.getActiveCaptions(); + if (cap !== undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions, "list"); + paella.events.trigger(paella.events.setTrim, { + trimEnabled: this._trimming.enabled, + trimStart: this._trimming.start, + trimEnd: this._trimming.end + }); + } + }, { + key: "setTrimming", + value: function setTrimming(start, end) { + var _this71 = this; + + return new Promise(function (resolve) { + var currentTime = 0; + + _this71.currentTime(true).then(function (c) { + currentTime = c; + return _this71.duration(); + }).then(function (duration) { + _this71._trimming.start = Math.floor(start); + _this71._trimming.end = Math.floor(end); + + if (_this71._trimming.enabled) { + if (currentTime < _this71._trimming.start) { + _this71.setCurrentTime(0); + } + + if (currentTime > _this71._trimming.end) { + _this71.setCurrentTime(duration); + } + + var cap = paella.captions.getActiveCaptions(); + if (cap !== undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions, "list"); + } + + paella.events.trigger(paella.events.setTrim, { + trimEnabled: _this71._trimming.enabled, + trimStart: _this71._trimming.start, + trimEnd: _this71._trimming.end + }); + resolve(); + }); + }); + } + }, { + key: "setTrimmingStart", + value: function setTrimmingStart(start) { + return this.setTrimming(start, this._trimming.end); + } + }, { + key: "setTrimmingEnd", + value: function setTrimmingEnd(end) { + return this.setTrimming(this._trimming.start, end); + } + }, { + key: "setCurrentPercent", + value: function setCurrentPercent(percent) { + var _this72 = this; + + var duration = 0; + return new Promise(function (resolve) { + _this72.duration().then(function (d) { + duration = d; + return _this72.trimming(); + }).then(function (trimming) { + var position = 0; + + if (trimming.enabled) { + var start = trimming.start; + var end = trimming.end; + duration = end - start; + var trimedPosition = percent * duration / 100; + position = parseFloat(trimedPosition); + } else { + position = percent * duration / 100; + } + + return _this72.setCurrentTime(position); + }).then(function (timeData) { + resolve(timeData); + }); + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + base.log.debug("VideoContainerBase.setCurrentTime(" + time + ")"); + } + }, { + key: "currentTime", + value: function currentTime() { + base.log.debug("VideoContainerBase.currentTime()"); + return 0; + } + }, { + key: "duration", + value: function duration() { + base.log.debug("VideoContainerBase.duration()"); + return 0; + } + }, { + key: "paused", + value: function paused() { + base.log.debug("VideoContainerBase.paused()"); + return true; + } + }, { + key: "setupVideo", + value: function setupVideo(onSuccess) { + base.log.debug("VideoContainerBase.setupVide()"); + } + }, { + key: "isReady", + value: function isReady() { + base.log.debug("VideoContainerBase.isReady()"); + return true; + } + }, { + key: "onresize", + value: function (_onresize) { + function onresize() { + return _onresize.apply(this, arguments); + } + + onresize.toString = function () { + return _onresize.toString(); + }; + + return onresize; + }(function () { + _get(_getPrototypeOf(VideoContainerBase.prototype), "onresize", this).call(this, onresize); + }) + }, { + key: "attenuationEnabled", + set: function set(att) { + this._attenuationEnabled = att; + Array.from(paella.player.videoContainer.container.domElement.children).forEach(function (ch) { + if (ch.id == "overlayContainer") { + return; + } + + if (att) { + $(ch).addClass("dimmed-element"); + } else { + $(ch).removeClass("dimmed-element"); + } + }); + }, + get: function get() { + return this._attenuationEnabled; + } + }, { + key: "seekType", + set: function set(type) { + switch (type) { + case paella.SeekType.FULL: + case paella.SeekType.BACKWARDS_ONLY: + case paella.SeekType.FORWARD_ONLY: + case paella.SeekType.DISABLED: + this._seekType = type; + paella.events.trigger(paella.events.seekAvailabilityChanged, { + type: type, + enabled: type == paella.SeekType.FULL, + disabled: type != paella.SeekType.FULL + }); + break; + + default: + throw new Error("Invalid seekType. Allowed seek types:\n\t\t\t\tpaella.SeekType.FULL\n\t\t\t\tpaella.SeekType.BACKWARDS_ONLY\n\t\t\t\tpaella.SeekType.FORWARD_ONLY\n\t\t\t\tpaella.SeekType.DISABLED"); + } + }, + get: function get() { + return this._seekType; + } + }]); + + return VideoContainerBase; + }(paella.DomNode); + + paella.VideoContainerBase = VideoContainerBase; // Profile frame strategies + + var ProfileFrameStrategy = + /*#__PURE__*/ + function () { + function ProfileFrameStrategy() { + _classCallCheck(this, ProfileFrameStrategy); + } + + _createClass(ProfileFrameStrategy, [{ + key: "valid", + value: function valid() { + return true; + } + }, { + key: "adaptFrame", + value: function adaptFrame(videoDimensions, frameRect) { + return frameRect; + } + }], [{ + key: "Factory", + value: function Factory() { + var config = paella.player.config; + + try { + var strategyClass = config.player.profileFrameStrategy; + var ClassObject = paella.utils.objectFromString(strategyClass); + var strategy = new ClassObject(); + + if (strategy instanceof paella.ProfileFrameStrategy) { + return strategy; + } + } catch (e) {} + + return null; + } + }]); + + return ProfileFrameStrategy; + }(); + + paella.ProfileFrameStrategy = ProfileFrameStrategy; + + var LimitedSizeProfileFrameStrategy = + /*#__PURE__*/ + function (_ProfileFrameStrategy) { + _inherits(LimitedSizeProfileFrameStrategy, _ProfileFrameStrategy); + + function LimitedSizeProfileFrameStrategy() { + _classCallCheck(this, LimitedSizeProfileFrameStrategy); + + return _possibleConstructorReturn(this, _getPrototypeOf(LimitedSizeProfileFrameStrategy).apply(this, arguments)); + } + + _createClass(LimitedSizeProfileFrameStrategy, [{ + key: "adaptFrame", + value: function adaptFrame(videoDimensions, frameRect) { + if (videoDimensions.width < frameRect.width || videoDimensions.height < frameRect.height) { + var frameRectCopy = JSON.parse(JSON.stringify(frameRect)); + frameRectCopy.width = videoDimensions.width; + frameRectCopy.height = videoDimensions.height; + var diff = { + w: frameRect.width - videoDimensions.width, + h: frameRect.height - videoDimensions.height + }; + frameRectCopy.top = frameRectCopy.top + diff.h / 2; + frameRectCopy.left = frameRectCopy.left + diff.w / 2; + return frameRectCopy; + } + + return frameRect; + } + }]); + + return LimitedSizeProfileFrameStrategy; + }(ProfileFrameStrategy); + + paella.LimitedSizeProfileFrameStrategy = LimitedSizeProfileFrameStrategy; + + var StreamProvider = + /*#__PURE__*/ + function () { + function StreamProvider(videoData) { + _classCallCheck(this, StreamProvider); + + this._mainStream = null; + this._videoStreams = []; + this._audioStreams = []; + this._mainPlayer = null; + this._audioPlayer = null; + this._videoPlayers = []; + this._audioPlayers = []; + this._players = []; + this._autoplay = base.parameters.get('autoplay') == 'true' || this.isLiveStreaming; + this._startTime = 0; + } + + _createClass(StreamProvider, [{ + key: "init", + value: function init(videoData) { + var _this73 = this; + + if (videoData.length == 0) throw Error("Empty video data."); + this._videoData = videoData; + + if (!this._videoData.some(function (stream) { + return stream.role == "master"; + })) { + this._videoData[0].role = "master"; + } + + this._videoData.forEach(function (stream, index) { + stream.type = stream.type || 'video'; + + if (stream.role == 'master') { + _this73._mainStream = stream; + } + + if (stream.type == 'video') { + _this73._videoStreams.push(stream); + } else if (stream.type == 'audio') { + _this73._audioStreams.push(stream); + } + }); + + if (this._videoStreams.length == 0) { + throw new Error("No video streams found. Paella Player requires at least one video stream."); + } // Create video players + + + var autoplay = this.autoplay; + + this._videoStreams.forEach(function (videoStream, index) { + var rect = { + x: 0, + y: 0, + w: 1280, + h: 720 + }; + var player = paella.videoFactory.getVideoObject("video_".concat(index), videoStream, rect); + player.setVideoQualityStrategy(_this73._qualityStrategy); + player.setAutoplay(autoplay); + + if (videoStream == _this73._mainStream) { + _this73._mainPlayer = player; + _this73._audioPlayer = player; + } else { + player.setVolume(0); + } + + _this73._videoPlayers.push(player); + + _this73._players.push(player); + }); // Create audio player + + + this._audioStreams.forEach(function (audioStream, index) { + var player = paella.audioFactory.getAudioObject("audio_".concat(index), audioStream); + player.setAutoplay(autoplay); + + if (player) { + _this73._audioPlayers.push(player); + + _this73._players.push(player); + } + }); + } + }, { + key: "startVideoSync", + value: function startVideoSync(syncProviderPlayer) { + var _this74 = this; + + this._syncProviderPlayer = syncProviderPlayer; + this._audioPlayer = syncProviderPlayer; // The player that provides the synchronization is also used as main audio player. + + this.stopVideoSync(); + console.debug("Start sync to player:"); + console.debug(this._syncProviderPlayer); + var maxDiff = 0.3; + + var sync = function sync() { + _this74._syncProviderPlayer.currentTime().then(function (t) { + _this74.players.forEach(function (player) { + if (player != syncProviderPlayer && player.currentTimeSync != null && Math.abs(player.currentTimeSync - t) > maxDiff) { + console.debug("Sync player current time: ".concat(player.currentTimeSync, " to time ").concat(t)); + console.debug(player); + player.setCurrentTime(t); + } + }); + }); + + _this74._syncTimer = setTimeout(function () { + return sync(); + }, 1000); + }; + + this._syncTimer = setTimeout(function () { + return sync(); + }, 1000); + } + }, { + key: "stopVideoSync", + value: function stopVideoSync() { + if (this._syncTimer) { + console.debug("Stop video sync"); + clearTimeout(this._syncTimer); + this._syncTimer = null; + } + } + }, { + key: "loadVideos", + value: function loadVideos() { + var promises = []; + + this._players.forEach(function (player) { + promises.push(player.load()); + }); + + return Promise.all(promises); + } + }, { + key: "callPlayerFunction", + value: function callPlayerFunction(fnName) { + var _this75 = this; + + var promises = []; + var functionArguments = []; + + for (var i = 1; i < arguments.length; ++i) { + functionArguments.push(arguments[i]); + } + + this.players.forEach(function (player) { + promises.push(player[fnName].apply(player, functionArguments)); + }); + return new Promise(function (resolve, reject) { + Promise.all(promises).then(function () { + if (fnName == 'play' && !_this75._firstPlay) { + _this75._firstPlay = true; + + if (_this75._startTime) { + _this75.players.forEach(function (p) { + return p.setCurrentTime(_this75._startTime); + }); + } + } + + resolve(); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "startTime", + get: function get() { + return this._startTime; + }, + set: function set(s) { + this._startTime = s; + } + }, { + key: "isMonostream", + get: function get() { + return this._videoStreams.length == 1; + } + }, { + key: "mainStream", + get: function get() { + return this._mainStream; + } + }, { + key: "videoStreams", + get: function get() { + //return this._videoData; + return this._videoStreams; + } + }, { + key: "audioStreams", + get: function get() { + return this._audioStreams; + } + }, { + key: "streams", + get: function get() { + return this._videoStreams.concat(this._audioStreams); + } + }, { + key: "videoPlayers", + get: function get() { + return this._videoPlayers; + } + }, { + key: "audioPlayers", + get: function get() { + return this._audioPlayers; + } + }, { + key: "players", + get: function get() { + return this._videoPlayers.concat(this._audioPlayers); + } + }, { + key: "mainVideoPlayer", + get: function get() { + return this._mainPlayer; + } + }, { + key: "mainAudioPlayer", + get: function get() { + return this._audioPlayer; + } + }, { + key: "isLiveStreaming", + get: function get() { + return paella.player.isLiveStream(); + } + }, { + key: "qualityStrategy", + set: function set(strategy) { + this._qualityStrategy = strategy; + + this._videoPlayers.forEach(function (player) { + player.setVideoQualityStrategy(strategy); + }); + }, + get: function get() { + return this._qualityStrategy || null; + } + }, { + key: "autoplay", + get: function get() { + return this.supportAutoplay && this._autoplay; + }, + set: function set(ap) { + if (!this.supportAutoplay || this.isLiveStreaming) return; + this._autoplay = ap; + + if (this.videoPlayers) { + this.videoPlayers.forEach(function (player) { + return player.setAutoplay(ap); + }); + this.audioPlayers.forEach(function (player) { + return player.setAutoplay(ap); + }); + } + } + }, { + key: "supportAutoplay", + get: function get() { + return this.videoPlayers.every(function (player) { + return player.supportAutoplay(); + }); + } + }]); + + return StreamProvider; + }(); + + paella.StreamProvider = StreamProvider; + + function addVideoWrapper(id, videoPlayer) { + var wrapper = new paella.VideoWrapper(id); + wrapper.addNode(videoPlayer); + this.videoWrappers.push(wrapper); + this.container.addNode(wrapper); + return wrapper; + } + + var VideoContainer = + /*#__PURE__*/ + function (_paella$VideoContaine) { + _inherits(VideoContainer, _paella$VideoContaine); + + _createClass(VideoContainer, [{ + key: "streamProvider", + get: function get() { + return this._streamProvider; + } + }, { + key: "ready", + get: function get() { + return this._ready; + } + }, { + key: "isMonostream", + get: function get() { + return this._streamProvider.isMonostream; + } + }, { + key: "trimmingHandler", + get: function get() { + return this._trimmingHandler; + } + }, { + key: "videoWrappers", + get: function get() { + return this._videoWrappers; + } + }, { + key: "container", + get: function get() { + return this._container; + } + }, { + key: "profileFrameStrategy", + get: function get() { + return this._profileFrameStrategy; + } + }, { + key: "sourceData", + get: function get() { + return this._sourceData; + } + }]); + + function VideoContainer(id) { + var _this76; + + _classCallCheck(this, VideoContainer); + + _this76 = _possibleConstructorReturn(this, _getPrototypeOf(VideoContainer).call(this, id)); + _this76._streamProvider = new paella.StreamProvider(); + _this76._ready = false; + _this76._videoWrappers = []; + _this76._container = new paella.DomNode('div', 'playerContainer_videoContainer_container', { + position: 'relative', + display: 'block', + marginLeft: 'auto', + marginRight: 'auto', + width: '1024px', + height: '567px' + }); + + _this76._container.domElement.setAttribute('role', 'main'); + + _this76.addNode(_this76._container); + + _this76.overlayContainer = new paella.VideoOverlay(_this76.domElement); + + _this76.container.addNode(_this76.overlayContainer); + + _this76.setProfileFrameStrategy(paella.ProfileFrameStrategy.Factory()); + + _this76.setVideoQualityStrategy(paella.VideoQualityStrategy.Factory()); + + _this76._audioTag = paella.player.config.player.defaultAudioTag || paella.dictionary.currentLanguage(); + _this76._audioPlayer = null; // Initial volume level + + _this76._volume = paella.utils.cookies.get("volume") ? Number(paella.utils.cookies.get("volume")) : 1; + _this76._muted = false; + return _this76; + } // Playback and status functions + + + _createClass(VideoContainer, [{ + key: "play", + value: function play() { + var _this77 = this; + + return new Promise(function (resolve, reject) { + _this77.streamProvider.startTime = _this77._startTime; + + _this77.streamProvider.callPlayerFunction('play').then(function () { + _get(_getPrototypeOf(VideoContainer.prototype), "play", _this77).call(_this77); + + resolve(); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "pause", + value: function pause() { + var _this78 = this; + + return new Promise(function (resolve, reject) { + _this78.streamProvider.callPlayerFunction('pause').then(function () { + _get(_getPrototypeOf(VideoContainer.prototype), "pause", _this78).call(_this78); + + resolve(); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this79 = this; + + return new Promise(function (resolve, reject) { + _this79.trimming().then(function (trimmingData) { + if (trimmingData.enabled) { + time += trimmingData.start; + + if (time < trimmingData.start) { + time = trimmingData.start; + } + + if (time > trimmingData.end) { + time = trimmingData.end; + } + } + + return _this79.streamProvider.callPlayerFunction('setCurrentTime', time); + }).then(function () { + return _this79.duration(false); + }).then(function (duration) { + resolve({ + time: time, + duration: duration + }); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this80 = this; + + var ignoreTrimming = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return new Promise(function (resolve) { + var trimmingData = null; + var p = ignoreTrimming ? Promise.resolve({ + enabled: false + }) : _this80.trimming(); + p.then(function (t) { + trimmingData = t; + return _this80.masterVideo().currentTime(); + }).then(function (time) { + if (trimmingData.enabled) { + time = time - trimmingData.start; + } + + resolve(time); + }); + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + this.streamProvider.callPlayerFunction('setPlaybackRate', rate); + + _get(_getPrototypeOf(VideoContainer.prototype), "setPlaybackRate", this).call(this, rate); + } + }, { + key: "mute", + value: function mute() { + var _this81 = this; + + return new Promise(function (resolve) { + _this81._muted = true; + + _this81._audioPlayer.setVolume(0).then(function () { + paella.events.trigger(paella.events.setVolume, { + master: 0 + }); + resolve(); + }); + }); + } + }, { + key: "unmute", + value: function unmute() { + var _this82 = this; + + return new Promise(function (resolve) { + _this82._muted = false; + + _this82._audioPlayer.setVolume(_this82._volume).then(function () { + paella.events.trigger(paella.events.setVolume, { + master: _this82._volume + }); + resolve(); + }); + }); + } + }, { + key: "setVolume", + value: function setVolume(params) { + var _this83 = this; + + if (_typeof(params) == 'object') { + console.warn("videoContainer.setVolume(): set parameter as object is deprecated"); + return Promise.resolve(); + } else if (params == 0) { + return this.mute(); + } else { + return new Promise(function (resolve, reject) { + paella.utils.cookies.set("volume", params); + _this83._volume = params; + + _this83._audioPlayer.setVolume(params).then(function () { + paella.events.trigger(paella.events.setVolume, { + master: params + }); + resolve(params); + })["catch"](function (err) { + reject(err); + }); + }); + } + } + }, { + key: "volume", + value: function volume() { + return this._audioPlayer.volume(); + } + }, { + key: "duration", + value: function duration() { + var _this84 = this; + + var ignoreTrimming = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + return new Promise(function (resolve) { + var trimmingData = null; + var p = ignoreTrimming ? Promise.resolve({ + enabled: false + }) : _this84.trimming(); + p.then(function (t) { + trimmingData = t; + return _this84.masterVideo().duration(); + }).then(function (duration) { + if (trimmingData.enabled) { + duration = trimmingData.end - trimmingData.start; + } + + resolve(duration); + }); + }); + } + }, { + key: "paused", + value: function paused() { + return this.masterVideo().isPaused(); + } // Video quality functions + + }, { + key: "getQualities", + value: function getQualities() { + return this.masterVideo().getQualities(); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var qualities = []; + var promises = []; + this.streamProvider.videoPlayers.forEach(function (player) { + var playerData = { + player: player, + promise: player.getQualities() + }; + qualities.push(playerData); + promises.push(playerData.promise); + }); + return new Promise(function (resolve) { + var resultPromises = []; + Promise.all(promises).then(function () { + qualities.forEach(function (data) { + data.promise.then(function (videoQualities) { + var videoQuality = videoQualities.length > index ? index : videoQualities.length - 1; + resultPromises.push(data.player.setQuality(videoQuality)); + }); + }); + return Promise.all(resultPromises); + }).then(function () { + //setTimeout(() => { + paella.events.trigger(paella.events.qualityChanged); + resolve(); //},10); + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + return this.masterVideo().getCurrentQuality(); + } // Current audio functions + + }, { + key: "getAudioTags", + value: function getAudioTags() { + var _this85 = this; + + return new Promise(function (resolve) { + var lang = []; + var p = _this85.streamProvider.players; + p.forEach(function (player) { + if (player.stream.audioTag) { + lang.push(player.stream.audioTag); + } + }); + resolve(lang); + }); + } + }, { + key: "setAudioTag", + value: function setAudioTag(lang) { + var _this86 = this; + + this.streamProvider.stopVideoSync(); + return new Promise(function (resolve) { + var audioSet = false; + var firstAudioPlayer = null; + var promises = []; + + _this86.streamProvider.players.forEach(function (player) { + if (!firstAudioPlayer) { + firstAudioPlayer = player; + } + + if (!audioSet && player.stream.audioTag == lang) { + audioSet = true; + _this86._audioPlayer = player; + } + + promises.push(player.setVolume(0)); + }); // NOTE: The audio only streams must define a valid audio tag + + + if (!audioSet && _this86.streamProvider.mainVideoPlayer) { + _this86._audioPlayer = _this86.streamProvider.mainVideoPlayer; + } else if (!audioSet && firstAudioPlayer) { + _this86._audioPlayer = firstAudioPlayer; + } + + Promise.all(promises).then(function () { + return _this86._audioPlayer.setVolume(_this86._volume); + }).then(function () { + _this86._audioTag = _this86._audioPlayer.stream.audioTag; + paella.events.trigger(paella.events.audioTagChanged); + + _this86.streamProvider.startVideoSync(_this86.audioPlayer); + + resolve(); + }); + }); + } + }, { + key: "setProfileFrameStrategy", + value: function setProfileFrameStrategy(strategy) { + this._profileFrameStrategy = strategy; + } + }, { + key: "setVideoQualityStrategy", + value: function setVideoQualityStrategy(strategy) { + this.streamProvider.qualityStrategy = strategy; + } + }, { + key: "autoplay", + value: function autoplay() { + return this.streamProvider.autoplay; + } + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + return this.streamProvider.supportAutoplay; + } + }, { + key: "setAutoplay", + value: function setAutoplay() { + var ap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + this.streamProvider.autoplay = ap; + return this.streamProvider.supportAutoplay; + } + }, { + key: "masterVideo", + value: function masterVideo() { + return this.streamProvider.mainVideoPlayer || this.audioPlayer; + } + }, { + key: "getVideoRect", + value: function getVideoRect(videoIndex) { + if (this.videoWrappers.length > videoIndex) { + return this.videoWrappers[videoIndex].getRect(); + } else { + throw new Error("Video wrapper with index ".concat(videoIndex, " not found")); + } + } + }, { + key: "setStreamData", + value: function setStreamData(videoData) { + var _this87 = this; + + var urlParamTime = base.parameters.get("time"); + var hashParamTime = base.hashParams.get("time"); + var timeString = hashParamTime ? hashParamTime : urlParamTime ? urlParamTime : "0s"; + var startTime = paella.utils.timeParse.timeToSeconds(timeString); + + if (startTime) { + this._startTime = startTime; + } + + videoData.forEach(function (stream) { + for (var type in stream.sources) { + var source = stream.sources[type]; + source.forEach(function (item) { + if (item.res) { + item.res.w = Number(item.res.w); + item.res.h = Number(item.res.h); + } + }); + } + }); + this._sourceData = videoData; + return new Promise(function (resolve, reject) { + _this87.streamProvider.init(videoData); + + var streamDataAudioTag = null; + videoData.forEach(function (video) { + if (video.audioTag && streamDataAudioTag == null) { + streamDataAudioTag = video.audioTag; + } + + if (video.audioTag == _this87._audioTag) { + streamDataAudioTag = _this87._audioTag; + } + }); + + if (streamDataAudioTag != _this87._audioTag && streamDataAudioTag != null) { + _this87._audioTag = streamDataAudioTag; + } + + _this87.streamProvider.videoPlayers.forEach(function (player, index) { + addVideoWrapper.apply(_this87, ['videoPlayerWrapper_' + index, player]); + player.setAutoplay(_this87.autoplay()); + }); + + _this87.streamProvider.loadVideos()["catch"](function (err) { + reject(err); + }).then(function () { + return _this87.setAudioTag(_this87.audioTag); + }).then(function () { + var endedTimer = null; + + var eventBindingObject = _this87.masterVideo().video || _this87.masterVideo().audio; + + $(eventBindingObject).bind('timeupdate', function (evt) { + _this87.trimming().then(function (trimmingData) { + var current = evt.currentTarget.currentTime; + var duration = evt.currentTarget.duration; + + if (trimmingData.enabled) { + current -= trimmingData.start; + duration = trimmingData.end - trimmingData.start; + } + + paella.events.trigger(paella.events.timeupdate, { + videoContainer: _this87, + currentTime: current, + duration: duration + }); + + if (current >= duration) { + _this87.streamProvider.callPlayerFunction('pause'); + + if (endedTimer) { + clearTimeout(endedTimer); + endedTimer = null; + } + + endedTimer = setTimeout(function () { + paella.events.trigger(paella.events.ended); + }, 1000); + } + }); + }); + _this87._ready = true; + paella.events.trigger(paella.events.videoReady); + var profileToUse = base.parameters.get('profile') || base.cookies.get('profile') || paella.profiles.getDefaultProfile(); + + if (paella.profiles.setProfile(profileToUse, false)) { + resolve(); + } else if (!paella.profiles.setProfile(paella.profiles.getDefaultProfile(), false)) { + resolve(); + } + }); + }); + } + }, { + key: "resizePortrait", + value: function resizePortrait() { + var width = paella.player.isFullScreen() == true ? $(window).width() : $(this.domElement).width(); + var relativeSize = new paella.RelativeVideoSize(); + var height = relativeSize.proportionalHeight(width); + this.container.domElement.style.width = width + 'px'; + this.container.domElement.style.height = height + 'px'; + var containerHeight = paella.player.isFullScreen() == true ? $(window).height() : $(this.domElement).height(); + var newTop = containerHeight / 2 - height / 2; + this.container.domElement.style.top = newTop + "px"; + } + }, { + key: "resizeLandscape", + value: function resizeLandscape() { + var height = paella.player.isFullScreen() == true ? $(window).height() : $(this.domElement).height(); + var relativeSize = new paella.RelativeVideoSize(); + var width = relativeSize.proportionalWidth(height); + this.container.domElement.style.width = width + 'px'; + this.container.domElement.style.height = height + 'px'; + this.container.domElement.style.top = '0px'; + } + }, { + key: "onresize", + value: function onresize() { + _get(_getPrototypeOf(VideoContainer.prototype), "onresize", this).call(this); + + var relativeSize = new paella.RelativeVideoSize(); + var aspectRatio = relativeSize.aspectRatio(); + var width = paella.player.isFullScreen() == true ? $(window).width() : $(this.domElement).width(); + var height = paella.player.isFullScreen() == true ? $(window).height() : $(this.domElement).height(); + var containerAspectRatio = width / height; + + if (containerAspectRatio > aspectRatio) { + this.resizeLandscape(); + } else { + this.resizePortrait(); + } //paella.profiles.setProfile(paella.player.selectedProfile,false) + + } + }, { + key: "muted", + get: function get() { + return this._muted; + } + }, { + key: "audioTag", + get: function get() { + return this._audioTag; + } + }, { + key: "audioPlayer", + get: function get() { + return this._audioPlayer; + } + }]); + + return VideoContainer; + }(paella.VideoContainerBase); + + paella.VideoContainer = VideoContainer; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var PluginManager = + /*#__PURE__*/ + function () { + _createClass(PluginManager, [{ + key: "setupPlugin", + value: function setupPlugin(plugin) { + plugin.setup(); + this.enabledPlugins.push(plugin); + + if (eval("plugin instanceof paella.UIPlugin")) { + plugin.checkVisibility(); + } + } + }, { + key: "checkPluginsVisibility", + value: function checkPluginsVisibility() { + this.enabledPlugins.forEach(function (plugin) { + if (eval("plugin instanceof paella.UIPlugin")) { + plugin.checkVisibility(); + } + }); + } + }]); + + function PluginManager() { + var _this88 = this; + + _classCallCheck(this, PluginManager); + + this.targets = null; + this.pluginList = []; + this.eventDrivenPlugins = []; + this.enabledPlugins = []; + this.doResize = true; + this.targets = {}; + paella.events.bind(paella.events.loadPlugins, function (event) { + _this88.loadPlugins("paella.DeferredLoadPlugin"); + }); + var timer = new base.Timer(function () { + if (paella.player && paella.player.controls && _this88.doResize) paella.player.controls.onresize(); + }, 1000); + timer.repeat = true; + } + + _createClass(PluginManager, [{ + key: "setTarget", + value: function setTarget(pluginType, target) { + if (target.addPlugin) { + this.targets[pluginType] = target; + } + } + }, { + key: "getTarget", + value: function getTarget(pluginType) { + // PluginManager can handle event-driven events: + if (pluginType == "eventDriven") { + return this; + } else { + var target = this.targets[pluginType]; + return target; + } + } + }, { + key: "registerPlugin", + value: function registerPlugin(plugin) { + // Registra los plugins en una lista y los ordena + this.importLibraries(plugin); + this.pluginList.push(plugin); + this.pluginList.sort(function (a, b) { + return a.getIndex() - b.getIndex(); + }); + } + }, { + key: "importLibraries", + value: function importLibraries(plugin) { + plugin.getDependencies().forEach(function (lib) { + var script = document.createElement('script'); + script.type = "text/javascript"; + script.src = 'javascript/' + lib + '.js'; + document.head.appendChild(script); + }); + } // callback => function(plugin,pluginConfig) + + }, { + key: "loadPlugins", + value: function loadPlugins(pluginBaseClass) { + if (pluginBaseClass != undefined) { + var This = this; + this.foreach(function (plugin, config) { + // Prevent load a plugin twice + if (plugin.isLoaded()) return; + + if (eval("plugin instanceof " + pluginBaseClass)) { + if (config.enabled) { + base.log.debug("Load plugin (" + pluginBaseClass + "): " + plugin.getName()); + plugin.config = config; + plugin.load(This); + } + } + }); + } + } + }, { + key: "foreach", + value: function foreach(callback) { + var enablePluginsByDefault = false; + var pluginsConfig = {}; + + try { + enablePluginsByDefault = paella.player.config.plugins.enablePluginsByDefault; + } catch (e) {} + + try { + pluginsConfig = paella.player.config.plugins.list; + } catch (e) {} + + this.pluginList.forEach(function (plugin) { + var name = plugin.getName(); + var config = pluginsConfig[name]; + + if (!config) { + config = { + enabled: enablePluginsByDefault + }; + } + + callback(plugin, config); + }); + } + }, { + key: "addPlugin", + value: function addPlugin(plugin) { + var _this89 = this; + + // Prevent add a plugin twice + if (plugin.__added__) return; + plugin.__added__ = true; + plugin.checkEnabled(function (isEnabled) { + if (plugin.type == "eventDriven" && isEnabled) { + paella.pluginManager.setupPlugin(plugin); + + _this89.eventDrivenPlugins.push(plugin); + + var events = plugin.getEvents(); + + var eventBind = function eventBind(event, params) { + plugin.onEvent(event.type, params); + }; + + for (var i = 0; i < events.length; ++i) { + var eventName = events[i]; + paella.events.bind(eventName, eventBind); + } + } + }); + } + }, { + key: "getPlugin", + value: function getPlugin(name) { + for (var i = 0; i < this.pluginList.length; ++i) { + if (this.pluginList[i].getName() == name) return this.pluginList[i]; + } + + return null; + } + }, { + key: "registerPlugins", + value: function registerPlugins() { + g_pluginCallbackList.forEach(function (pluginCallback) { + var PluginClass = pluginCallback(); + var pluginInstance = new PluginClass(); + + if (pluginInstance.getInstanceName()) { + paella.plugins = paella.plugins || {}; + paella.plugins[pluginInstance.getInstanceName()] = pluginInstance; + } + + paella.pluginManager.registerPlugin(pluginInstance); + }); + } + }]); + + return PluginManager; + }(); + + paella.PluginManager = PluginManager; + paella.pluginManager = new paella.PluginManager(); + var g_pluginCallbackList = []; + + paella.addPlugin = function (cb) { + g_pluginCallbackList.push(cb); + }; + + var Plugin = + /*#__PURE__*/ + function () { + function Plugin() { + _classCallCheck(this, Plugin); + } + + _createClass(Plugin, [{ + key: "isLoaded", + value: function isLoaded() { + return this.__loaded__; + } + }, { + key: "getDependencies", + value: function getDependencies() { + return []; + } + }, { + key: "load", + value: function load(pluginManager) { + if (this.__loaded__) return; + this.__loaded__ = true; + var target = pluginManager.getTarget(this.type); + + if (target && target.addPlugin) { + target.addPlugin(this); + } + } + }, { + key: "getInstanceName", + value: function getInstanceName() { + return null; + } + }, { + key: "getRootNode", + value: function getRootNode(id) { + return null; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "getIndex", + value: function getIndex() { + return 0; + } + }, { + key: "getName", + value: function getName() { + return ""; + } + }, { + key: "type", + get: function get() { + return ""; + } + }]); + + return Plugin; + }(); + + paella.Plugin = Plugin; + + var FastLoadPlugin = + /*#__PURE__*/ + function (_paella$Plugin) { + _inherits(FastLoadPlugin, _paella$Plugin); + + function FastLoadPlugin() { + _classCallCheck(this, FastLoadPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FastLoadPlugin).apply(this, arguments)); + } + + return FastLoadPlugin; + }(paella.Plugin); + + var EarlyLoadPlugin = + /*#__PURE__*/ + function (_paella$Plugin2) { + _inherits(EarlyLoadPlugin, _paella$Plugin2); + + function EarlyLoadPlugin() { + _classCallCheck(this, EarlyLoadPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(EarlyLoadPlugin).apply(this, arguments)); + } + + return EarlyLoadPlugin; + }(paella.Plugin); + + var DeferredLoadPlugin = + /*#__PURE__*/ + function (_paella$Plugin3) { + _inherits(DeferredLoadPlugin, _paella$Plugin3); + + function DeferredLoadPlugin() { + _classCallCheck(this, DeferredLoadPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(DeferredLoadPlugin).apply(this, arguments)); + } + + return DeferredLoadPlugin; + }(paella.Plugin); + + paella.FastLoadPlugin = FastLoadPlugin; + paella.EarlyLoadPlugin = EarlyLoadPlugin; + paella.DeferredLoadPlugin = DeferredLoadPlugin; + + var PopUpContainer = + /*#__PURE__*/ + function (_paella$DomNode8) { + _inherits(PopUpContainer, _paella$DomNode8); + + function PopUpContainer(id, className) { + var _this90; + + _classCallCheck(this, PopUpContainer); + + var style = {}; + _this90 = _possibleConstructorReturn(this, _getPrototypeOf(PopUpContainer).call(this, 'div', id, style)); + _this90.containers = null; + _this90.currentContainerId = -1; + _this90.domElement.className = className; + _this90.containers = {}; + return _this90; + } + + _createClass(PopUpContainer, [{ + key: "hideContainer", + value: function hideContainer(identifier, button) { + var container = this.containers[identifier]; + + if (container && this.currentContainerId == identifier) { + container.identifier = identifier; + paella.events.trigger(paella.events.hidePopUp, { + container: container + }); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected', ''); + $(this.domElement).css({ + width: '0px' + }); + this.currentContainerId = -1; + container.plugin.didHideContent(); + } + } + }, { + key: "showContainer", + value: function showContainer(identifier, button) { + var thisClass = this; + var width = 0; + + function hideContainer(container) { + paella.events.trigger(paella.events.hidePopUp, { + container: container + }); + container.plugin.willHideContent(); + $(container.element).hide(); + $(thisClass.domElement).css({ + width: '0px' + }); + container.button.className = container.button.className.replace(' selected', ''); + thisClass.currentContainerId = -1; + container.plugin.didHideContent(); + } + + function showContainer(container) { + paella.events.trigger(paella.events.showPopUp, { + container: container + }); + container.plugin.willShowContent(); + container.button.className = container.button.className + ' selected'; + $(container.element).show(); + width = $(container.element).width(); + + if (container.plugin.getAlignment() == 'right') { + var right = $(button.parentElement).width() - $(button).position().left - $(button).width(); + $(thisClass.domElement).css({ + width: width + 'px', + right: right + 'px', + left: '' + }); + } else { + var left = $(button).position().left; + $(thisClass.domElement).css({ + width: width + 'px', + left: left + 'px', + right: '' + }); + } + + thisClass.currentContainerId = identifier; + container.plugin.didShowContent(); + } + + var container = this.containers[identifier]; + + if (container && this.currentContainerId != identifier && this.currentContainerId != -1) { + var prevContainer = this.containers[this.currentContainerId]; + hideContainer(prevContainer); + showContainer(container); + } else if (container && this.currentContainerId == identifier) { + hideContainer(container); + } else if (container) { + showContainer(container); + } + } + }, { + key: "registerContainer", + value: function registerContainer(identifier, domElement, button, plugin) { + var containerInfo = { + identifier: identifier, + button: button, + element: domElement, + plugin: plugin + }; + this.containers[identifier] = containerInfo; + + if (plugin.closeOnMouseOut && plugin.closeOnMouseOut()) { + var popUpId = identifier; + var btn = button; + $(domElement).mouseleave(function (evt) { + paella.player.controls.playbackControl().hidePopUp(popUpId, btn); + }); + } // this.domElement.appendChild(domElement); + + + $(domElement).hide(); + button.popUpIdentifier = identifier; + button.sourcePlugin = plugin; + $(button).click(function (event) { + if (!this.plugin.isPopUpOpen()) { + paella.player.controls.playbackControl().showPopUp(this.popUpIdentifier, this); + } else { + paella.player.controls.playbackControl().hidePopUp(this.popUpIdentifier, this); + } + }); + $(button).keyup(function (event) { + if (event.keyCode == 13 && !this.plugin.isPopUpOpen()) { + paella.player.controls.playbackControl().showPopUp(this.popUpIdentifier, this); + } else if (event.keyCode == 27) { + paella.player.controls.playbackControl().hidePopUp(this.popUpIdentifier, this); + } + }); + plugin.containerManager = this; + } + }]); + + return PopUpContainer; + }(paella.DomNode); + + paella.PopUpContainer = PopUpContainer; + + var TimelineContainer = + /*#__PURE__*/ + function (_paella$PopUpContaine) { + _inherits(TimelineContainer, _paella$PopUpContaine); + + function TimelineContainer() { + _classCallCheck(this, TimelineContainer); + + return _possibleConstructorReturn(this, _getPrototypeOf(TimelineContainer).apply(this, arguments)); + } + + _createClass(TimelineContainer, [{ + key: "hideContainer", + value: function hideContainer(identifier, button) { + var container = this.containers[identifier]; + + if (container && this.currentContainerId == identifier) { + paella.events.trigger(paella.events.hidePopUp, { + container: container + }); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected', ''); + this.currentContainerId = -1; + $(this.domElement).css({ + height: '0px' + }); + container.plugin.didHideContent(); + } + } + }, { + key: "showContainer", + value: function showContainer(identifier, button) { + var height = 0; + var container = this.containers[identifier]; + + if (container && this.currentContainerId != identifier && this.currentContainerId != -1) { + var prevContainer = this.containers[this.currentContainerId]; + prevContainer.button.className = prevContainer.button.className.replace(' selected', ''); + container.button.className = container.button.className + ' selected'; + paella.events.trigger(paella.events.hidePopUp, { + container: prevContainer + }); + prevContainer.plugin.willHideContent(); + $(prevContainer.element).hide(); + prevContainer.plugin.didHideContent(); + paella.events.trigger(paella.events.showPopUp, { + container: container + }); + container.plugin.willShowContent(); + $(container.element).show(); + this.currentContainerId = identifier; + height = $(container.element).height(); + $(this.domElement).css({ + height: height + 'px' + }); + container.plugin.didShowContent(); + } else if (container && this.currentContainerId == identifier) { + paella.events.trigger(paella.events.hidePopUp, { + container: container + }); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected', ''); + $(this.domElement).css({ + height: '0px' + }); + this.currentContainerId = -1; + container.plugin.didHideContent(); + } else if (container) { + paella.events.trigger(paella.events.showPopUp, { + container: container + }); + container.plugin.willShowContent(); + container.button.className = container.button.className + ' selected'; + $(container.element).show(); + this.currentContainerId = identifier; + height = $(container.element).height(); + $(this.domElement).css({ + height: height + 'px' + }); + container.plugin.didShowContent(); + } + } + }]); + + return TimelineContainer; + }(paella.PopUpContainer); + + paella.TimelineContainer = TimelineContainer; + + var UIPlugin = + /*#__PURE__*/ + function (_paella$DeferredLoadP) { + _inherits(UIPlugin, _paella$DeferredLoadP); + + function UIPlugin() { + _classCallCheck(this, UIPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(UIPlugin).apply(this, arguments)); + } + + _createClass(UIPlugin, [{ + key: "checkVisibility", + value: function checkVisibility() { + var modes = this.config.visibleOn || [paella.PaellaPlayer.mode.standard, paella.PaellaPlayer.mode.fullscreen, paella.PaellaPlayer.mode.embed]; + var visible = false; + modes.forEach(function (m) { + if (m == paella.player.getPlayerMode()) { + visible = true; + } + }); + + if (visible) { + this.showUI(); + } else { + this.hideUI(); + } + } + }, { + key: "hideUI", + value: function hideUI() { + this.ui.setAttribute('aria-hidden', 'true'); + $(this.ui).hide(); + } + }, { + key: "showUI", + value: function showUI() { + var thisClass = this; + paella.pluginManager.enabledPlugins.forEach(function (p) { + if (p == thisClass) { + thisClass.ui.setAttribute('aria-hidden', 'false'); + $(thisClass.ui).show(); + } + }); + } + }, { + key: "ui", + get: function get() { + return this._ui; + }, + set: function set(val) { + this._ui = val; + } + }]); + + return UIPlugin; + }(paella.DeferredLoadPlugin); + + paella.UIPlugin = UIPlugin; + + var ButtonPlugin = + /*#__PURE__*/ + function (_paella$UIPlugin) { + _inherits(ButtonPlugin, _paella$UIPlugin); + + _createClass(ButtonPlugin, [{ + key: "type", + get: function get() { + return 'button'; + } + }]); + + function ButtonPlugin() { + var _this91; + + _classCallCheck(this, ButtonPlugin); + + _this91 = _possibleConstructorReturn(this, _getPrototypeOf(ButtonPlugin).call(this)); + _this91.subclass = ''; + _this91.container = null; + _this91.containerManager = null; + return _this91; + } + + _createClass(ButtonPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'left'; // or right + } // Returns the button subclass. + + }, { + key: "getSubclass", + value: function getSubclass() { + return "myButtonPlugin"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return ""; + } + }, { + key: "addSubclass", + value: function addSubclass($subclass) { + $(this.container).addClass($subclass); + } + }, { + key: "removeSubclass", + value: function removeSubclass($subclass) { + $(this.container).removeClass($subclass); + } + }, { + key: "action", + value: function action(button) {// Implement this if you want to do something when the user push the plugin button + } + }, { + key: "getName", + value: function getName() { + return "ButtonPlugin"; + } + }, { + key: "getMinWindowSize", + value: function getMinWindowSize() { + return this.config.minWindowSize || 0; + } + }, { + key: "buildContent", + value: function buildContent(domElement) {// Override if your plugin + } + }, { + key: "willShowContent", + value: function willShowContent() { + base.log.debug(this.getName() + " willDisplayContent"); + } + }, { + key: "didShowContent", + value: function didShowContent() { + base.log.debug(this.getName() + " didDisplayContent"); + } + }, { + key: "willHideContent", + value: function willHideContent() { + base.log.debug(this.getName() + " willHideContent"); + } + }, { + key: "didHideContent", + value: function didHideContent() { + base.log.debug(this.getName() + " didHideContent"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + //return paella.ButtonPlugin.type.popUpButton; + //return paella.ButtonPlugin.type.timeLineButton; + return paella.ButtonPlugin.type.actionButton; + } + }, { + key: "getText", + value: function getText() { + return ""; + } + }, { + key: "getAriaLabel", + value: function getAriaLabel() { + return ""; + } + }, { + key: "setText", + value: function setText(text) { + this.container.innerHTML = '<span class="button-text">' + paella.AntiXSS.htmlEscape(text) + '</span>'; + + if (this._i) { + this.container.appendChild(this._i); + } + } + }, { + key: "hideButton", + value: function hideButton() { + this.hideUI(); + } + }, { + key: "showButton", + value: function showButton() { + this.showUI(); + } // Utility functions: do not override + + }, { + key: "changeSubclass", + value: function changeSubclass(newSubclass) { + this.subclass = newSubclass; + this.container.className = this.getClassName(); + } + }, { + key: "changeIconClass", + value: function changeIconClass(newClass) { + this._i.className = 'button-icon ' + newClass; + } + }, { + key: "getClassName", + value: function getClassName() { + return paella.ButtonPlugin.kClassName + ' ' + this.getAlignment() + ' ' + this.subclass; + } + }, { + key: "getContainerClassName", + value: function getContainerClassName() { + if (this.getButtonType() == paella.ButtonPlugin.type.timeLineButton) { + return paella.ButtonPlugin.kTimeLineClassName + ' ' + this.getSubclass(); + } else if (this.getButtonType() == paella.ButtonPlugin.type.popUpButton) { + return paella.ButtonPlugin.kPopUpClassName + ' ' + this.getSubclass(); + } + } + }, { + key: "setToolTip", + value: function setToolTip(message) { + this.button.setAttribute("title", message); + this.button.setAttribute("aria-label", message); + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return ""; + } + }, { + key: "isPopUpOpen", + value: function isPopUpOpen() { + return this.button.popUpIdentifier == this.containerManager.currentContainerId; + } + }, { + key: "getExpandableContent", + value: function getExpandableContent() { + return null; + } + }, { + key: "expand", + value: function expand() { + if (this._expand) { + $(this._expand).show(); + } + } + }, { + key: "contract", + value: function contract() { + if (this._expand) { + $(this._expand).hide(); + } + } + }], [{ + key: "BuildPluginButton", + value: function BuildPluginButton(plugin, id) { + plugin.subclass = plugin.getSubclass(); + var elem = document.createElement('div'); + var ariaLabel = plugin.getAriaLabel(); + + if (ariaLabel != "") { + elem = document.createElement('button'); + } + + elem.className = plugin.getClassName(); + elem.id = id; + var buttonText = document.createElement('span'); + buttonText.className = "button-text"; + buttonText.innerHTML = paella.AntiXSS.htmlEscape(plugin.getText()); + buttonText.plugin = plugin; + elem.appendChild(buttonText); + + if (ariaLabel) { + elem.setAttribute("tabindex", 1000 + plugin.getIndex()); + elem.setAttribute("aria-label", ariaLabel); + } + + elem.setAttribute("alt", ""); + elem.plugin = plugin; + plugin.button = elem; + plugin.container = elem; + plugin.ui = elem; + plugin.setToolTip(plugin.getDefaultToolTip()); + var icon = document.createElement('i'); + icon.className = 'button-icon ' + plugin.getIconClass(); + icon.plugin = plugin; + elem.appendChild(icon); + plugin._i = icon; + + function onAction(self) { + paella.userTracking.log("paella:button:action", self.plugin.getName()); + self.plugin.action(self); + } + + $(elem).click(function (event) { + onAction(this); + }); + $(elem).keyup(function (event) { + event.preventDefault(); + }); + $(elem).focus(function (event) { + plugin.expand(); + }); + return elem; + } + }, { + key: "BuildPluginExpand", + value: function BuildPluginExpand(plugin, id) { + var expandContent = plugin.getExpandableContent(); + + if (expandContent) { + var expand = document.createElement('span'); + expand.plugin = plugin; + expand.className = 'expandable-content ' + plugin.getClassName(); + plugin._expand = expand; + expand.appendChild(expandContent); + $(plugin._expand).hide(); + return expand; + } + + return null; + } + }, { + key: "BuildPluginPopUp", + value: function BuildPluginPopUp(parent, plugin, id) { + plugin.subclass = plugin.getSubclass(); + var elem = document.createElement('div'); + parent.appendChild(elem); + elem.className = plugin.getContainerClassName(); + elem.id = id; + elem.plugin = plugin; + plugin.buildContent(elem); + return elem; + } + }]); + + return ButtonPlugin; + }(paella.UIPlugin); + + paella.ButtonPlugin = ButtonPlugin; + paella.ButtonPlugin.alignment = { + left: 'left', + right: 'right' + }; + paella.ButtonPlugin.kClassName = 'buttonPlugin'; + paella.ButtonPlugin.kPopUpClassName = 'buttonPluginPopUp'; + paella.ButtonPlugin.kTimeLineClassName = 'buttonTimeLine'; + paella.ButtonPlugin.type = { + actionButton: 1, + popUpButton: 2, + timeLineButton: 3 + }; + + var VideoOverlayButtonPlugin = + /*#__PURE__*/ + function (_paella$ButtonPlugin) { + _inherits(VideoOverlayButtonPlugin, _paella$ButtonPlugin); + + function VideoOverlayButtonPlugin() { + _classCallCheck(this, VideoOverlayButtonPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoOverlayButtonPlugin).apply(this, arguments)); + } + + _createClass(VideoOverlayButtonPlugin, [{ + key: "getSubclass", + // Returns the button subclass. + value: function getSubclass() { + return "myVideoOverlayButtonPlugin" + " " + this.getAlignment(); + } + }, { + key: "action", + value: function action(button) {// Implement this if you want to do something when the user push the plugin button + } + }, { + key: "getName", + value: function getName() { + return "VideoOverlayButtonPlugin"; + } + }, { + key: "type", + get: function get() { + return 'videoOverlayButton'; + } + }, { + key: "tabIndex", + get: function get() { + return -1; + } + }]); + + return VideoOverlayButtonPlugin; + }(paella.ButtonPlugin); + + paella.VideoOverlayButtonPlugin = VideoOverlayButtonPlugin; + + var EventDrivenPlugin = + /*#__PURE__*/ + function (_paella$EarlyLoadPlug) { + _inherits(EventDrivenPlugin, _paella$EarlyLoadPlug); + + _createClass(EventDrivenPlugin, [{ + key: "type", + get: function get() { + return 'eventDriven'; + } + }]); + + function EventDrivenPlugin() { + var _this92; + + _classCallCheck(this, EventDrivenPlugin); + + _this92 = _possibleConstructorReturn(this, _getPrototypeOf(EventDrivenPlugin).call(this)); + + var events = _this92.getEvents(); + + for (var i = 0; i < events.length; ++i) { + var event = events[i]; + + if (event == paella.events.loadStarted) { + _this92.onEvent(paella.events.loadStarted); + } + } + + return _this92; + } + + _createClass(EventDrivenPlugin, [{ + key: "getEvents", + value: function getEvents() { + return []; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) {} + }, { + key: "getName", + value: function getName() { + return "EventDrivenPlugin"; + } + }]); + + return EventDrivenPlugin; + }(paella.EarlyLoadPlugin); + + paella.EventDrivenPlugin = EventDrivenPlugin; +})(); + +(function () { + var VideoCanvas = + /*#__PURE__*/ + function () { + function VideoCanvas(stream) { + _classCallCheck(this, VideoCanvas); + + this._stream = stream; + } + + _createClass(VideoCanvas, [{ + key: "loadVideo", + value: function loadVideo(videoPlugin, stream) { + return Promise.reject(new Error("Not implemented")); + } + }, { + key: "allowZoom", + value: function allowZoom() { + return true; + } + }]); + + return VideoCanvas; + }(); + + paella.VideoCanvas = VideoCanvas; + + function initWebGLCanvas() { + if (!paella.WebGLCanvas) { + var WebGLCanvas = + /*#__PURE__*/ + function (_bg$app$WindowControl) { + _inherits(WebGLCanvas, _bg$app$WindowControl); + + function WebGLCanvas(stream) { + var _this93; + + _classCallCheck(this, WebGLCanvas); + + _this93 = _possibleConstructorReturn(this, _getPrototypeOf(WebGLCanvas).call(this)); + _this93._stream = stream; + return _this93; + } + + _createClass(WebGLCanvas, [{ + key: "loaded", + value: function loaded() { + var _this94 = this; + + return new Promise(function (resolve) { + var checkLoaded = function checkLoaded() { + if (_this94.video) { + resolve(_this94); + } else { + setTimeout(checkLoaded, 100); + } + }; + + checkLoaded(); + }); + } + }, { + key: "loadVideo", + value: function loadVideo(videoPlugin, stream) { + return Promise.reject(new Error("Not implemented")); + } + }, { + key: "allowZoom", + value: function allowZoom() { + return false; + } // WebGL engine functions + + }, { + key: "registerPlugins", + value: function registerPlugins() { + bg.base.Loader.RegisterPlugin(new bg.base.TextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VWGLBLoaderPlugin()); + } + }, { + key: "loadVideoTexture", + value: function loadVideoTexture() { + return bg.base.Loader.Load(this.gl, this.stream.src); + } + }, { + key: "buildVideoSurface", + value: function buildVideoSurface(sceneRoot, videoTexture) { + var sphere = bg.scene.PrimitiveFactory.Sphere(this.gl, 1, 50); + var sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1, -1, 1))); + sceneRoot.addChild(sphereNode); + } + }, { + key: "buildCamera", + value: function buildCamera() { + var cameraNode = new bg.scene.Node(this.gl, "Camera"); + var camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + var projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + var oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + return cameraNode; + } + }, { + key: "buildScene", + value: function buildScene() { + var _this95 = this; + + this._root = new bg.scene.Node(this.gl, "Root node"); + this.registerPlugins(); + this.loadVideoTexture().then(function (texture) { + _this95._texture = texture; + + _this95.buildVideoSurface(_this95._root, texture); + }); + var lightNode = new bg.scene.Node(this.gl, "Light"); + var light = new bg.base.Light(); + light.ambient = bg.Color.White(); + light.diffuse = bg.Color.Black(); + light.specular = bg.Color.Black(); + lightNode.addComponent(new bg.scene.Light(light)); + + this._root.addChild(lightNode); + + var cameraNode = this.buildCamera(); + this._camera = cameraNode.component("bg.scene.Camera"); + + this._root.addChild(cameraNode); + } + }, { + key: "init", + value: function init() { + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + this.buildScene(); + this._renderer = bg.render.Renderer.Create(this.gl, bg.render.RenderPath.FORWARD); + this._inputVisitor = new bg.scene.InputVisitor(); + } + }, { + key: "frame", + value: function frame(delta) { + if (this.texture) { + this.texture.update(); + } + + this._renderer.frame(this._root, delta); + + this.postReshape(); + } + }, { + key: "display", + value: function display() { + this._renderer.display(this._root, this._camera); + } + }, { + key: "reshape", + value: function reshape(width, height) { + this._camera.viewport = new bg.Viewport(0, 0, width, height); + + if (!this._camera.projectionStrategy) { + this._camera.projection.perspective(60, this._camera.viewport.aspectRatio, 0.1, 100); + } + } + }, { + key: "mouseDrag", + value: function mouseDrag(evt) { + this._inputVisitor.mouseDrag(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "mouseWheel", + value: function mouseWheel(evt) { + this._inputVisitor.mouseWheel(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "touchMove", + value: function touchMove(evt) { + this._inputVisitor.touchMove(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "mouseDown", + value: function mouseDown(evt) { + this._inputVisitor.mouseDown(this._root, evt); + } + }, { + key: "touchStar", + value: function touchStar(evt) { + this._inputVisitor.touchStar(this._root, evt); + } + }, { + key: "mouseUp", + value: function mouseUp(evt) { + this._inputVisitor.mouseUp(this._root, evt); + } + }, { + key: "mouseMove", + value: function mouseMove(evt) { + this._inputVisitor.mouseMove(this._root, evt); + } + }, { + key: "mouseOut", + value: function mouseOut(evt) { + this._inputVisitor.mouseOut(this._root, evt); + } + }, { + key: "touchEnd", + value: function touchEnd(evt) { + this._inputVisitor.touchEnd(this._root, evt); + } + }, { + key: "stream", + get: function get() { + return this._stream; + } + }, { + key: "video", + get: function get() { + return this.texture ? this.texture.video : null; + } + }, { + key: "camera", + get: function get() { + return this._camera; + } + }, { + key: "texture", + get: function get() { + return this._texture; + } + }]); + + return WebGLCanvas; + }(bg.app.WindowController); + + paella.WebGLCanvas = WebGLCanvas; + } + } + + function buildVideoCanvas(stream) { + if (!paella.WebGLCanvas) { + var WebGLCanvas = + /*#__PURE__*/ + function (_bg$app$WindowControl2) { + _inherits(WebGLCanvas, _bg$app$WindowControl2); + + function WebGLCanvas(stream) { + var _this96; + + _classCallCheck(this, WebGLCanvas); + + _this96 = _possibleConstructorReturn(this, _getPrototypeOf(WebGLCanvas).call(this)); + _this96._stream = stream; + return _this96; + } + + _createClass(WebGLCanvas, [{ + key: "allowZoom", + value: function allowZoom() { + return false; + } + }, { + key: "loaded", + value: function loaded() { + var _this97 = this; + + return new Promise(function (resolve) { + var checkLoaded = function checkLoaded() { + if (_this97.video) { + resolve(_this97); + } else { + setTimeout(checkLoaded, 100); + } + }; + + checkLoaded(); + }); + } + }, { + key: "registerPlugins", + value: function registerPlugins() { + bg.base.Loader.RegisterPlugin(new bg.base.TextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VWGLBLoaderPlugin()); + } + }, { + key: "loadVideoTexture", + value: function loadVideoTexture() { + return bg.base.Loader.Load(this.gl, this.stream.src); + } + }, { + key: "buildVideoSurface", + value: function buildVideoSurface(sceneRoot, videoTexture) { + var sphere = bg.scene.PrimitiveFactory.Sphere(this.gl, 1, 50); + var sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1, -1, 1))); + sceneRoot.addChild(sphereNode); + } + }, { + key: "buildCamera", + value: function buildCamera() { + var cameraNode = new bg.scene.Node(this.gl, "Camera"); + var camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + var projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + var oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + return cameraNode; + } + }, { + key: "buildScene", + value: function buildScene() { + var _this98 = this; + + this._root = new bg.scene.Node(this.gl, "Root node"); + this.registerPlugins(); + this.loadVideoTexture().then(function (texture) { + _this98._texture = texture; + + _this98.buildVideoSurface(_this98._root, texture); + }); + var lightNode = new bg.scene.Node(this.gl, "Light"); + var light = new bg.base.Light(); + light.ambient = bg.Color.White(); + light.diffuse = bg.Color.Black(); + light.specular = bg.Color.Black(); + lightNode.addComponent(new bg.scene.Light(light)); + + this._root.addChild(lightNode); + + var cameraNode = this.buildCamera(); + this._camera = cameraNode.component("bg.scene.Camera"); + + this._root.addChild(cameraNode); + } + }, { + key: "init", + value: function init() { + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + this.buildScene(); + this._renderer = bg.render.Renderer.Create(this.gl, bg.render.RenderPath.FORWARD); + this._inputVisitor = new bg.scene.InputVisitor(); + } + }, { + key: "frame", + value: function frame(delta) { + if (this.texture) { + this.texture.update(); + } + + this._renderer.frame(this._root, delta); + + this.postReshape(); + } + }, { + key: "display", + value: function display() { + this._renderer.display(this._root, this._camera); + } + }, { + key: "reshape", + value: function reshape(width, height) { + this._camera.viewport = new bg.Viewport(0, 0, width, height); + + if (!this._camera.projectionStrategy) { + this._camera.projection.perspective(60, this._camera.viewport.aspectRatio, 0.1, 100); + } + } + }, { + key: "mouseDrag", + value: function mouseDrag(evt) { + this._inputVisitor.mouseDrag(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "mouseWheel", + value: function mouseWheel(evt) { + this._inputVisitor.mouseWheel(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "touchMove", + value: function touchMove(evt) { + this._inputVisitor.touchMove(this._root, evt); + + this.postRedisplay(); + } + }, { + key: "mouseDown", + value: function mouseDown(evt) { + this._inputVisitor.mouseDown(this._root, evt); + } + }, { + key: "touchStar", + value: function touchStar(evt) { + this._inputVisitor.touchStar(this._root, evt); + } + }, { + key: "mouseUp", + value: function mouseUp(evt) { + this._inputVisitor.mouseUp(this._root, evt); + } + }, { + key: "mouseMove", + value: function mouseMove(evt) { + this._inputVisitor.mouseMove(this._root, evt); + } + }, { + key: "mouseOut", + value: function mouseOut(evt) { + this._inputVisitor.mouseOut(this._root, evt); + } + }, { + key: "touchEnd", + value: function touchEnd(evt) { + this._inputVisitor.touchEnd(this._root, evt); + } + }, { + key: "stream", + get: function get() { + return this._stream; + } + }, { + key: "video", + get: function get() { + return this.texture ? this.texture.video : null; + } + }, { + key: "camera", + get: function get() { + return this._camera; + } + }, { + key: "texture", + get: function get() { + return this._texture; + } + }]); + + return WebGLCanvas; + }(bg.app.WindowController); + + paella.WebGLCanvas = WebGLCanvas; + } + + return paella.WebGLCanvas; + } + + var g_canvasCallbacks = {}; + + paella.addCanvasPlugin = function (canvasType, webglSupport, mouseEventsSupport, canvasPluginCallback) { + g_canvasCallbacks[canvasType] = { + callback: canvasPluginCallback, + webglSupport: webglSupport, + mouseEventsSupport: mouseEventsSupport + }; + }; + + function loadWebGLDeps() { + return new Promise(function (resolve) { + if (!window.$paella_bg) { + paella.require("".concat(paella.baseUrl, "javascript/bg2e-es2015.js")).then(function () { + window.$paella_bg = bg; + buildVideoCanvas(); // loadWebGLDeps(); + + resolve(window.$paella_bg); + }); + } else { + resolve(window.$paella_bg); + } + }); + } + + function loadCanvasPlugin(canvasType) { + return new Promise(function (resolve, reject) { + var callbackData = g_canvasCallbacks[canvasType]; + + if (callbackData) { + (callbackData.webglSupport ? loadWebGLDeps() : Promise.resolve()).then(function () { + resolve(callbackData.callback()); + })["catch"](function (err) { + reject(err); + }); + } else { + reject(new Error("No such canvas type: \"".concat(canvasType, "\""))); + } + }); + } + + paella.getVideoCanvas = function (type) { + return new Promise(function (resolve, reject) { + var canvasData = g_canvasCallbacks[type]; + + if (!canvasData) { + reject(new Error("No such canvas type: " + type)); + } else { + if (canvasData.webglSupport) { + loadWebGLDeps().then(function () { + resolve(canvasData.callback()); + }); + } else { + resolve(canvasData.callback()); + } + } + }); + }; + + paella.getVideoCanvasData = function (type) { + return g_canvasCallbacks[type]; + }; // Standard <video> canvas + + + paella.addCanvasPlugin("video", false, false, function () { + return ( + /*#__PURE__*/ + function (_paella$VideoCanvas) { + _inherits(VideoCanvas, _paella$VideoCanvas); + + function VideoCanvas(stream) { + _classCallCheck(this, VideoCanvas); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoCanvas).call(this, stream)); + } + + _createClass(VideoCanvas, [{ + key: "loadVideo", + value: function loadVideo(videoPlugin, stream) { + var doLoadCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + return new Promise(function (resolve, reject) { + doLoadCallback = doLoadCallback || function (video) { + return new Promise(function (cbResolve, cbReject) { + var sourceElem = video.querySelector('source'); + + if (!sourceElem) { + sourceElem = document.createElement('source'); + video.appendChild(sourceElem); + } + + if (video._posterFrame) { + video.setAttribute("poster", video._posterFrame); + } + + sourceElem.src = stream.src; + sourceElem.type = stream.type; + video.load(); + video.playbackRate = video._playbackRate || 1; + cbResolve(); + }); + }; + + doLoadCallback(videoPlugin.video).then(function () { + resolve(stream); + }); + }); + } + }]); + + return VideoCanvas; + }(paella.VideoCanvas) + ); + }); + /* + + paella.getVideoCanvas = function(type, stream) { + console.log("TODO: Remove paella.getVideoCanvas() function"); + return new Promise((resolve,reject) => { + if (!window.$paella_bg) { + paella.require(`${ paella.baseUrl }javascript/bg2e-es2015.js`) + .then(() => { + window.$paella_bg = bg; + loadCanvasPlugins(); + resolve(buildVideoCanvas(stream)); + }) + .catch((err) => { + console.error(err); + reject(err); + }); + } + else { + resolve(buildVideoCanvas(stream)); + } + }); + } + */ +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var CaptionParserManager = + /*#__PURE__*/ + function () { + _createClass(CaptionParserManager, [{ + key: "addPlugin", + value: function addPlugin(plugin) { + var self = this; + var ext = plugin.ext; + + if ((Array.isArray && Array.isArray(ext) || ext instanceof Array) == false) { + ext = [ext]; + } + + if (ext.length == 0) { + base.log.debug("No extension provided by the plugin " + plugin.getName()); + } else { + base.log.debug("New captionParser added: " + plugin.getName()); + ext.forEach(function (f) { + self._formats[f] = plugin; + }); + } + } + }]); + + function CaptionParserManager() { + _classCallCheck(this, CaptionParserManager); + + this._formats = {}; + paella.pluginManager.setTarget('captionParser', this); + } + + return CaptionParserManager; + }(); + + var captionParserManager = new CaptionParserManager(); + + var SearchCallback = + /*#__PURE__*/ + function (_base$AsyncLoaderCall) { + _inherits(SearchCallback, _base$AsyncLoaderCall); + + function SearchCallback(caption, text) { + var _this99; + + _classCallCheck(this, SearchCallback); + + _this99 = _possibleConstructorReturn(this, _getPrototypeOf(SearchCallback).call(this)); + _this99.name = "captionSearchCallback"; + _this99.caption = caption; + _this99.text = text; + return _this99; + } + + _createClass(SearchCallback, [{ + key: "load", + value: function load(onSuccess, onError) { + var _this100 = this; + + this.caption.search(this.text, function (err, result) { + if (err) { + onError(); + } else { + _this100.result = result; + onSuccess(); + } + }); + } + }]); + + return SearchCallback; + }(base.AsyncLoaderCallback); + + paella.captions = { + parsers: {}, + _captions: {}, + _activeCaption: undefined, + addCaptions: function addCaptions(captions) { + var cid = captions._captionsProvider + ':' + captions._id; + this._captions[cid] = captions; + paella.events.trigger(paella.events.captionAdded, cid); + }, + getAvailableLangs: function getAvailableLangs() { + var ret = []; + var self = this; + Object.keys(this._captions).forEach(function (k) { + var c = self._captions[k]; + ret.push({ + id: k, + lang: c._lang + }); + }); + return ret; + }, + getCaptions: function getCaptions(cid) { + if (cid && this._captions[cid]) { + return this._captions[cid]; + } + + return undefined; + }, + getActiveCaptions: function getActiveCaptions(cid) { + return this._activeCaption; + }, + setActiveCaptions: function setActiveCaptions(cid) { + this._activeCaption = this.getCaptions(cid); + + if (this._activeCaption != undefined) { + paella.events.trigger(paella.events.captionsEnabled, cid); + } else { + paella.events.trigger(paella.events.captionsDisabled); + } + + return this._activeCaption; + }, + getCaptionAtTime: function getCaptionAtTime(cid, time) { + var c = this.getCaptions(cid); + + if (c != undefined) { + return c.getCaptionAtTime(time); + } + + return undefined; + }, + search: function search(text, next) { + var self = this; + var asyncLoader = new base.AsyncLoader(); + this.getAvailableLangs().forEach(function (l) { + asyncLoader.addCallback(new SearchCallback(self.getCaptions(l.id), text)); + }); + asyncLoader.load(function () { + var res = []; + Object.keys(asyncLoader.callbackArray).forEach(function (k) { + res = res.concat(asyncLoader.getCallback(k).result); + }); + if (next) next(false, res); + }, function () { + if (next) next(true); + }); + } + }; + + var Caption = + /*#__PURE__*/ + function () { + function Caption(id, format, url, lang, next) { + _classCallCheck(this, Caption); + + this._id = id; + this._format = format; + this._url = url; + this._captions = undefined; + this._index = undefined; + + if (typeof lang == "string") { + lang = { + code: lang, + txt: lang + }; + } + + this._lang = lang; + this._captionsProvider = "downloadCaptionsProvider"; + this.reloadCaptions(next); + } + + _createClass(Caption, [{ + key: "canEdit", + value: function canEdit(next) { + // next(err, canEdit) + next(false, false); + } + }, { + key: "goToEdit", + value: function goToEdit() {} + }, { + key: "reloadCaptions", + value: function reloadCaptions(next) { + var self = this; + jQuery.ajax({ + url: self._url, + cache: false, + type: 'get', + dataType: "text" + }).then(function (dataRaw) { + var parser = captionParserManager._formats[self._format]; + + if (parser == undefined) { + base.log.debug("Error adding captions: Format not supported!"); + paella.player.videoContainer.duration(true).then(function (duration) { + self._captions = [{ + id: 0, + begin: 0, + end: duration, + content: base.dictionary.translate("Error! Captions format not supported.") + }]; + + if (next) { + next(true); + } + }); + } else { + parser.parse(dataRaw, self._lang.code, function (err, c) { + if (!err) { + self._captions = c; + self._index = lunr(function () { + var thisLunr = this; + thisLunr.ref('id'); + thisLunr.field('content', { + boost: 10 + }); + + self._captions.forEach(function (cap) { + thisLunr.add({ + id: cap.id, + content: cap.content + }); + }); + }); + } + + if (next) { + next(err); + } + }); + } + }).fail(function (error) { + base.log.debug("Error loading captions: " + self._url); + + if (next) { + next(true); + } + }); + } + }, { + key: "getCaptions", + value: function getCaptions() { + return this._captions; + } + }, { + key: "getCaptionAtTime", + value: function getCaptionAtTime(time) { + if (this._captions != undefined) { + for (var i = 0; i < this._captions.length; ++i) { + var l_cap = this._captions[i]; + + if (l_cap.begin <= time && l_cap.end >= time) { + return l_cap; + } + } + } + + return undefined; + } + }, { + key: "getCaptionById", + value: function getCaptionById(id) { + if (this._captions != undefined) { + for (var i = 0; i < this._captions.length; ++i) { + var l_cap = this._captions[i]; + + if (l_cap.id == id) { + return l_cap; + } + } + } + + return undefined; + } + }, { + key: "search", + value: function search(txt, next) { + var _this101 = this; + + var self = this; + + if (this._index == undefined) { + if (next) { + next(true, "Error. No captions found."); + } + } else { + var results = []; + paella.player.videoContainer.trimming().then(function (trimming) { + _this101._index.search(txt).forEach(function (s) { + var c = self.getCaptionById(s.ref); + + if (trimming.enabled && (c.end < trimming.start || c.begin > trimming.end)) { + return; + } + + results.push({ + time: c.begin, + content: c.content, + score: s.score + }); + }); + + if (next) { + next(false, results); + } + }); + } + } + }]); + + return Caption; + }(); + + paella.captions.Caption = Caption; + + var CaptionParserPlugIn = + /*#__PURE__*/ + function (_paella$FastLoadPlugi) { + _inherits(CaptionParserPlugIn, _paella$FastLoadPlugi); + + function CaptionParserPlugIn() { + _classCallCheck(this, CaptionParserPlugIn); + + return _possibleConstructorReturn(this, _getPrototypeOf(CaptionParserPlugIn).apply(this, arguments)); + } + + _createClass(CaptionParserPlugIn, [{ + key: "getIndex", + value: function getIndex() { + return -1; + } + }, { + key: "parse", + value: function parse(content, lang, next) { + throw new Error('paella.CaptionParserPlugIn#parse must be overridden by subclass'); + } + }, { + key: "type", + get: function get() { + return 'captionParser'; + } + }, { + key: "ext", + get: function get() { + if (!this._ext) { + this._ext = []; + } + + return this._ext; + } + }]); + + return CaptionParserPlugIn; + }(paella.FastLoadPlugin); + + paella.CaptionParserPlugIn = CaptionParserPlugIn; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var searchServiceManager = { + _plugins: [], + addPlugin: function addPlugin(plugin) { + this._plugins.push(plugin); + }, + initialize: function initialize() { + paella.pluginManager.setTarget('SearchServicePlugIn', this); + } + }; + + var SearchCallback = + /*#__PURE__*/ + function (_base$AsyncLoaderCall2) { + _inherits(SearchCallback, _base$AsyncLoaderCall2); + + function SearchCallback(plugin, text) { + var _this102; + + _classCallCheck(this, SearchCallback); + + _this102 = _possibleConstructorReturn(this, _getPrototypeOf(SearchCallback).call(this)); + _this102.name = "searchCallback"; + _this102.plugin = plugin; + _this102.text = text; + return _this102; + } + + _createClass(SearchCallback, [{ + key: "load", + value: function load(onSuccess, onError) { + var _this103 = this; + + this.plugin.search(this.text, function (err, result) { + if (err) { + onError(); + } else { + _this103.result = result; + onSuccess(); + } + }); + } + }]); + + return SearchCallback; + }(base.AsyncLoaderCallback); + + paella.searchService = { + search: function search(text, next) { + var asyncLoader = new base.AsyncLoader(); + paella.userTracking.log("paella:searchService:search", text); + + searchServiceManager._plugins.forEach(function (p) { + asyncLoader.addCallback(new SearchCallback(p, text)); + }); + + asyncLoader.load(function () { + var res = []; + Object.keys(asyncLoader.callbackArray).forEach(function (k) { + res = res.concat(asyncLoader.getCallback(k).result); + }); + if (next) next(false, res); + }, function () { + if (next) next(true); + }); + } + }; + + var SearchServicePlugIn = + /*#__PURE__*/ + function (_paella$FastLoadPlugi2) { + _inherits(SearchServicePlugIn, _paella$FastLoadPlugi2); + + function SearchServicePlugIn() { + _classCallCheck(this, SearchServicePlugIn); + + return _possibleConstructorReturn(this, _getPrototypeOf(SearchServicePlugIn).apply(this, arguments)); + } + + _createClass(SearchServicePlugIn, [{ + key: "getIndex", + value: function getIndex() { + return -1; + } + }, { + key: "search", + value: function search(text, next) { + throw new Error('paella.SearchServicePlugIn#search must be overridden by subclass'); + } + }, { + key: "type", + get: function get() { + return 'SearchServicePlugIn'; + } + }]); + + return SearchServicePlugIn; + }(paella.FastLoadPlugin); + + paella.SearchServicePlugIn = SearchServicePlugIn; + searchServiceManager.initialize(); +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var userTrackingManager = { + _plugins: [], + addPlugin: function addPlugin(plugin) { + var _this104 = this; + + plugin.checkEnabled(function (isEnabled) { + if (isEnabled) { + plugin.setup(); + + _this104._plugins.push(plugin); + } + }); + }, + initialize: function initialize() { + paella.pluginManager.setTarget('userTrackingSaverPlugIn', this); + } + }; + paella.userTracking = {}; + userTrackingManager.initialize(); + + var SaverPlugIn = + /*#__PURE__*/ + function (_paella$FastLoadPlugi3) { + _inherits(SaverPlugIn, _paella$FastLoadPlugi3); + + function SaverPlugIn() { + _classCallCheck(this, SaverPlugIn); + + return _possibleConstructorReturn(this, _getPrototypeOf(SaverPlugIn).apply(this, arguments)); + } + + _createClass(SaverPlugIn, [{ + key: "getIndex", + value: function getIndex() { + return -1; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "log", + value: function log(event, params) { + throw new Error('paella.userTracking.SaverPlugIn#log must be overridden by subclass'); + } + }, { + key: "type", + get: function get() { + return 'userTrackingSaverPlugIn'; + } + }]); + + return SaverPlugIn; + }(paella.FastLoadPlugin); + + paella.userTracking.SaverPlugIn = SaverPlugIn; + var evsentsToLog = {}; + + paella.userTracking.log = function (event, params) { + if (evsentsToLog[event] != undefined) { + evsentsToLog[event].cancel(); + } + + evsentsToLog[event] = new base.Timer(function (timer) { + userTrackingManager._plugins.forEach(function (p) { + p.log(event, params); + }); + + delete evsentsToLog[event]; + }, 500); + }; ////////////////////////////////////////////////////////// + // Log automatic events + ////////////////////////////////////////////////////////// + // Log simple events + + + [paella.events.play, paella.events.pause, paella.events.endVideo, paella.events.showEditor, paella.events.hideEditor, paella.events.enterFullscreen, paella.events.exitFullscreen, paella.events.loadComplete].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + paella.userTracking.log(event); + }); + }); // Log show/hide PopUp + + [paella.events.showPopUp, paella.events.hidePopUp].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + paella.userTracking.log(event, params.identifier); + }); + }); // Log captions Events + + [// paella.events.captionAdded, + paella.events.captionsEnabled, paella.events.captionsDisabled].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + var log; + + if (params != undefined) { + var c = paella.captions.getCaptions(params); + log = { + id: params, + lang: c._lang, + url: c._url + }; + } + + paella.userTracking.log(event, log); + }); + }); // Log setProfile + + [paella.events.setProfile].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + paella.userTracking.log(event, params.profileName); + }); + }); // Log seek events + + [paella.events.seekTo, paella.events.seekToTime].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + var log; + + try { + JSON.stringify(params); + log = params; + } catch (e) {} + + paella.userTracking.log(event, log); + }); + }); // Log param events + + [paella.events.setVolume, paella.events.resize, paella.events.setPlaybackRate, paella.events.qualityChanged].forEach(function (event) { + paella.events.bind(event, function (ev, params) { + var log; + + try { + JSON.stringify(params); + log = params; + } catch (e) {} + + paella.userTracking.log(event, log); + }); + }); +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var TimeControl = + /*#__PURE__*/ + function (_paella$DomNode9) { + _inherits(TimeControl, _paella$DomNode9); + + function TimeControl(id) { + var _this105; + + _classCallCheck(this, TimeControl); + + _this105 = _possibleConstructorReturn(this, _getPrototypeOf(TimeControl).call(this, 'div', id, { + left: "0%" + })); + _this105.domElement.className = 'timeControlOld'; + _this105.domElement.className = 'timeControl'; //this.domElement.innerText = "0:00:00"; + + var thisClass = _assertThisInitialized(_this105); + + paella.events.bind(paella.events.timeupdate, function (event, params) { + thisClass.onTimeUpdate(params); + }); + return _this105; + } + + _createClass(TimeControl, [{ + key: "onTimeUpdate", + value: function onTimeUpdate(memo) { + this.domElement.innerText = this.secondsToHours(parseInt(memo.currentTime)); + } + }, { + key: "secondsToHours", + value: function secondsToHours(sec_numb) { + var hours = Math.floor(sec_numb / 3600); + var minutes = Math.floor((sec_numb - hours * 3600) / 60); + var seconds = sec_numb - hours * 3600 - minutes * 60; + + if (hours < 10) { + hours = "0" + hours; + } + + if (minutes < 10) { + minutes = "0" + minutes; + } + + if (seconds < 10) { + seconds = "0" + seconds; + } + + return hours + ':' + minutes + ':' + seconds; + } + }]); + + return TimeControl; + }(paella.DomNode); + + paella.TimeControl = TimeControl; + + var PlaybackBar = + /*#__PURE__*/ + function (_paella$DomNode10) { + _inherits(PlaybackBar, _paella$DomNode10); + + function PlaybackBar(id) { + var _this106; + + _classCallCheck(this, PlaybackBar); + + var style = {}; + _this106 = _possibleConstructorReturn(this, _getPrototypeOf(PlaybackBar).call(this, 'div', id, style)); + _this106.playbackFullId = ''; + _this106.updatePlayBar = true; + _this106.timeControlId = ''; + _this106._images = null; + _this106._keys = null; + _this106._prev = null; + _this106._next = null; + _this106._videoLength = null; + _this106._lastSrc = null; + _this106._aspectRatio = 1.777777778; + _this106._hasSlides = null; + _this106._imgNode = null; + _this106._canvas = null; + _this106.domElement.className = "playbackBar"; + + _this106.domElement.setAttribute("alt", ""); //this.domElement.setAttribute("title", "Timeline Slider"); + + + _this106.domElement.setAttribute("aria-label", "Timeline Slider"); + + _this106.domElement.setAttribute("role", "slider"); + + _this106.domElement.setAttribute("aria-valuemin", "0"); + + _this106.domElement.setAttribute("aria-valuemax", "100"); + + _this106.domElement.setAttribute("aria-valuenow", "0"); + + _this106.domElement.setAttribute("tabindex", "1100"); + + $(_this106.domElement).keyup(function (event) { + var currentTime = 0; + var duration = 0; + paella.player.videoContainer.currentTime().then(function (t) { + currentTime = t; + return paella.player.videoContainer.duration(); + }).then(function (d) { + duration = d; + var curr, selectedPosition; + + switch (event.keyCode) { + case 37: + //Left + curr = 100 * currentTime / duration; + selectedPosition = curr - 5; + paella.player.videoContainer.seekTo(selectedPosition); + break; + + case 39: + //Right + curr = 100 * currentTime / duration; + selectedPosition = curr + 5; + paella.player.videoContainer.seekTo(selectedPosition); + break; + } + }); + }); + _this106.playbackFullId = id + "_full"; + _this106.timeControlId = id + "_timeControl"; + var playbackFull = new paella.DomNode('div', _this106.playbackFullId, { + width: '0%' + }); + playbackFull.domElement.className = "playbackBarFull"; + + _this106.addNode(playbackFull); + + _this106.addNode(new paella.TimeControl(_this106.timeControlId)); + + var thisClass = _assertThisInitialized(_this106); + + paella.events.bind(paella.events.timeupdate, function (event, params) { + thisClass.onTimeUpdate(params); + }); + $(_this106.domElement).bind('mousedown', function (event) { + paella.utils.mouseManager.down(thisClass, event); + event.stopPropagation(); + }); + $(playbackFull.domElement).bind('mousedown', function (event) { + paella.utils.mouseManager.down(thisClass, event); + event.stopPropagation(); + }); + + if (!base.userAgent.browser.IsMobileVersion) { + $(_this106.domElement).bind('mousemove', function (event) { + thisClass.movePassive(event); + paella.utils.mouseManager.move(event); + }); + $(playbackFull.domElement).bind('mousemove', function (event) { + paella.utils.mouseManager.move(event); + }); + $(_this106.domElement).bind("mouseout", function (event) { + thisClass.mouseOut(event); + }); + } + + _this106.domElement.addEventListener('touchstart', function (event) { + paella.utils.mouseManager.down(thisClass, event); + event.stopPropagation(); + }, false); + + _this106.domElement.addEventListener('touchmove', function (event) { + thisClass.movePassive(event); + paella.utils.mouseManager.move(event); + }, false); + + _this106.domElement.addEventListener('touchend', function (event) { + paella.utils.mouseManager.up(event); + }, false); + + $(_this106.domElement).bind('mouseup', function (event) { + paella.utils.mouseManager.up(event); + }); + $(playbackFull.domElement).bind('mouseup', function (event) { + paella.utils.mouseManager.up(event); + }); + + if (paella.player.isLiveStream()) { + $(_this106.domElement).hide(); + } + + paella.events.bind(paella.events.seekAvailabilityChanged, function (e, data) { + if (data.type != paella.SeekType.DISABLED) { + $(playbackFull.domElement).removeClass("disabled"); + } else { + $(playbackFull.domElement).addClass("disabled"); + } + }); + return _this106; + } + + _createClass(PlaybackBar, [{ + key: "mouseOut", + value: function mouseOut(event) { + if (this._hasSlides) { + $("#divTimeImageOverlay").remove(); + } else { + $("#divTimeOverlay").remove(); + } + } + }, { + key: "drawTimeMarks", + value: function drawTimeMarks() { + var _this107 = this; + + var trimming = {}; + paella.player.videoContainer.trimming().then(function (t) { + trimming = t; + return _this107.imageSetup(); + }).then(function () { + // Updated duration value. The duration may change during playback, because it's + // possible to set the trimming during playback (for instance, using a plugin) + var duration = trimming.enabled ? trimming.end - trimming.start : _this107._videoLength; + var parent = $("#playerContainer_controls_playback_playbackBar"); + + _this107.clearCanvas(); + + if (_this107._keys && paella.player.config.player.slidesMarks.enabled) { + _this107._keys.forEach(function (l) { + var timeInstant = parseInt(l) - trimming.start; + + if (timeInstant > 0) { + var aux = timeInstant * parent.width() / _this107._videoLength; // conversion to canvas + + + _this107.drawTimeMark(aux); + } + }); + } + }); + } + }, { + key: "drawTimeMark", + value: function drawTimeMark(sec) { + var ht = 12; //default height value + + var ctx = this.getCanvasContext(); + ctx.fillStyle = paella.player.config.player.slidesMarks.color; + ctx.fillRect(sec, 0, 1, ht); + } + }, { + key: "clearCanvas", + value: function clearCanvas() { + if (this._canvas) { + var ctx = this.getCanvasContext(); + ctx.clearRect(0, 0, this._canvas.width, this._canvas.height); + } + } + }, { + key: "getCanvas", + value: function getCanvas() { + if (!this._canvas) { + var parent = $("#playerContainer_controls_playback_playbackBar"); + var canvas = document.createElement("canvas"); + canvas.className = "playerContainer_controls_playback_playbackBar_canvas"; + canvas.id = "playerContainer_controls_playback_playbackBar_canvas"; + canvas.width = parent.width(); + var ht = canvas.height = parent.height(); + parent.prepend(canvas); + this._canvas = document.getElementById("playerContainer_controls_playback_playbackBar_canvas"); + } + + return this._canvas; + } + }, { + key: "getCanvasContext", + value: function getCanvasContext() { + return this.getCanvas().getContext("2d"); + } + }, { + key: "movePassive", + value: function movePassive(event) { + var This = this; + + function updateTimePreview(duration, trimming) { + // CONTROLS_BAR POSITON + var p = $(This.domElement); + var pos = p.offset(); + var width = p.width(); + var left = event.clientX - pos.left; + left = left < 0 ? 0 : left; + var position = left * 100 / width; // GET % OF THE STREAM + + var time = position * duration / 100; + + if (trimming.enabled) { + time += trimming.start; + } + + var hou = Math.floor((time - trimming.start) / 3600) % 24; + hou = ("00" + hou).slice(hou.toString().length); + var min = Math.floor((time - trimming.start) / 60) % 60; + min = ("00" + min).slice(min.toString().length); + var sec = Math.floor((time - trimming.start) % 60); + sec = ("00" + sec).slice(sec.toString().length); + var timestr = hou + ":" + min + ":" + sec; // CREATING THE OVERLAY + + if (This._hasSlides) { + if ($("#divTimeImageOverlay").length == 0) This.setupTimeImageOverlay(timestr, pos.top, width);else { + $("#divTimeOverlay")[0].innerText = timestr; //IF CREATED, UPDATE TIME AND IMAGE + } // CALL IMAGEUPDATE + + This.imageUpdate(time); + } else { + if ($("#divTimeOverlay").length == 0) { + This.setupTimeOnly(timestr, pos.top, width); + } else { + $("#divTimeOverlay")[0].innerText = timestr; + } + } // UPDATE POSITION IMAGE OVERLAY + + + if (This._hasSlides) { + var ancho = $("#divTimeImageOverlay").width(); + var posx = event.clientX - ancho / 2; + + if (event.clientX > ancho / 2 + pos.left && event.clientX < pos.left + width - ancho / 2) { + // LEFT + $("#divTimeImageOverlay").css("left", posx); // CENTER THE DIV HOVER THE MOUSE + } else if (event.clientX < width / 2) $("#divTimeImageOverlay").css("left", pos.left);else $("#divTimeImageOverlay").css("left", pos.left + width - ancho); + } // UPDATE POSITION TIME OVERLAY + + + var ancho2 = $("#divTimeOverlay").width(); + var posx2 = event.clientX - ancho2 / 2; + + if (event.clientX > ancho2 / 2 + pos.left && event.clientX < pos.left + width - ancho2 / 2) { + $("#divTimeOverlay").css("left", posx2); // CENTER THE DIV HOVER THE MOUSE + } else if (event.clientX < width / 2) $("#divTimeOverlay").css("left", pos.left);else $("#divTimeOverlay").css("left", pos.left + width - ancho2 - 2); + + if (This._hasSlides) { + $("#divTimeImageOverlay").css("bottom", $('.playbackControls').height()); + } + } + + paella.player.videoContainer.duration(); + var duration = 0; + paella.player.videoContainer.duration().then(function (d) { + duration = d; + return paella.player.videoContainer.trimming(); + }).then(function (trimming) { + updateTimePreview(duration, trimming); + }); + } + }, { + key: "imageSetup", + value: function imageSetup() { + var _this108 = this; + + return new Promise(function (resolve) { + paella.player.videoContainer.duration().then(function (duration) { + // BRING THE IMAGE ARRAY TO LOCAL + _this108._images = {}; + var n = paella.initDelegate.initParams.videoLoader.frameList; + + if (!n || Object.keys(n).length === 0) { + _this108._hasSlides = false; + return; + } else { + _this108._hasSlides = true; + } + + _this108._images = n; // COPY TO LOCAL + + _this108._videoLength = duration; // SORT KEYS FOR SEARCH CLOSEST + + _this108._keys = Object.keys(_this108._images); + _this108._keys = _this108._keys.sort(function (a, b) { + return parseInt(a) - parseInt(b); + }); // SORT FRAME NUMBERS STRINGS + //NEXT + + _this108._next = 0; + _this108._prev = 0; + resolve(); + }); + }); + } + }, { + key: "imageUpdate", + value: function imageUpdate(sec) { + var src = $("#imgOverlay").attr('src'); + $(this._imgNode).show(); + + if (sec > this._next || sec < this._prev) { + src = this.getPreviewImageSrc(sec); + + if (src) { + this._lastSrc = src; + $("#imgOverlay").attr('src', src); // UPDATING IMAGE + } else { + this.hideImg(); + } + } // RELOAD IF OUT OF INTERVAL + else { + if (src != undefined) { + return; + } else { + $("#imgOverlay").attr('src', this._lastSrc); + } // KEEP LAST IMAGE + + } + } + }, { + key: "hideImg", + value: function hideImg() { + $(this._imgNode).hide(); + } + }, { + key: "getPreviewImageSrc", + value: function getPreviewImageSrc(sec) { + var keys = Object.keys(this._images); + keys.push(sec); + keys.sort(function (a, b) { + return parseInt(a) - parseInt(b); + }); + var n = keys.indexOf(sec) - 1; + n = n > 0 ? n : 0; + var i = keys[n]; + var next = keys[n + 2]; + var prev = keys[n]; + next = next == undefined ? keys.length - 1 : parseInt(next); + this._next = next; + prev = prev == undefined ? 0 : parseInt(prev); + this._prev = prev; + i = parseInt(i); + + if (this._images[i]) { + return this._images[i].url || this._images[i].url; + } else return false; + } + }, { + key: "setupTimeImageOverlay", + value: function setupTimeImageOverlay(time_str, top, width) { + var div = document.createElement("div"); + div.className = "divTimeImageOverlay"; + div.id = "divTimeImageOverlay"; + var aux = Math.round(width / 10); + div.style.width = Math.round(aux * self._aspectRatio) + "px"; //KEEP ASPECT RATIO 4:3 + //div.style.height = Math.round(aux)+"px"; + + if (this._hasSlides) { + var img = document.createElement("img"); + img.className = "imgOverlay"; + img.id = "imgOverlay"; + this._imgNode = img; + div.appendChild(img); + } + + var div2 = document.createElement("div"); + div2.className = "divTimeOverlay"; + div2.style.top = top - 20 + "px"; + div2.id = "divTimeOverlay"; + div2.innerText = time_str; + div.appendChild(div2); //CHILD OF CONTROLS_BAR + + $(this.domElement).parent().append(div); + } + }, { + key: "setupTimeOnly", + value: function setupTimeOnly(time_str, top, width) { + var div2 = document.createElement("div"); + div2.className = "divTimeOverlay"; + div2.style.top = top - 20 + "px"; + div2.id = "divTimeOverlay"; + div2.innerText = time_str; //CHILD OF CONTROLS_BAR + + $(this.domElement).parent().append(div2); + } + }, { + key: "playbackFull", + value: function playbackFull() { + return this.getNode(this.playbackFullId); + } + }, { + key: "timeControl", + value: function timeControl() { + return this.getNode(this.timeControlId); + } + }, { + key: "setPlaybackPosition", + value: function setPlaybackPosition(percent) { + this.playbackFull().domElement.style.width = percent + '%'; + } + }, { + key: "isSeeking", + value: function isSeeking() { + return !this.updatePlayBar; + } + }, { + key: "onTimeUpdate", + value: function onTimeUpdate(memo) { + if (this.updatePlayBar) { + var currentTime = memo.currentTime; + var duration = memo.duration; + this.setPlaybackPosition(currentTime * 100 / duration); + } + } + }, { + key: "down", + value: function down(event, x, y) { + this.updatePlayBar = false; + this.move(event, x, y); + } + }, { + key: "move", + value: function move(event, x, y) { + var width = $(this.domElement).width(); + var selectedPosition = x - $(this.domElement).offset().left; // pixels + + if (selectedPosition < 0) { + selectedPosition = 0; + } else if (selectedPosition > width) { + selectedPosition = 100; + } else { + selectedPosition = selectedPosition * 100 / width; // percent + } + + this.setPlaybackPosition(selectedPosition); + } + }, { + key: "up", + value: function up(event, x, y) { + var width = $(this.domElement).width(); + var selectedPosition = x - $(this.domElement).offset().left; // pixels + + if (selectedPosition < 0) { + selectedPosition = 0; + } else if (selectedPosition > width) { + selectedPosition = 100; + } else { + selectedPosition = selectedPosition * 100 / width; // percent + } + + paella.player.videoContainer.seekTo(selectedPosition); + this.updatePlayBar = true; + } + }, { + key: "onresize", + value: function onresize() { + var playbackBar = $("#playerContainer_controls_playback_playbackBar"); + this.getCanvas().width = playbackBar.width(); + this.drawTimeMarks(); + } + }]); + + return PlaybackBar; + }(paella.DomNode); + + paella.PlaybackBar = PlaybackBar; + + var PlaybackControl = + /*#__PURE__*/ + function (_paella$DomNode11) { + _inherits(PlaybackControl, _paella$DomNode11); + + _createClass(PlaybackControl, [{ + key: "addPlugin", + value: function addPlugin(plugin) { + var _this110 = this; + + var id = 'buttonPlugin' + this.buttonPlugins.length; + this.buttonPlugins.push(plugin); + var button = paella.ButtonPlugin.BuildPluginButton(plugin, id); + button.plugin = plugin; + var expand = paella.ButtonPlugin.BuildPluginExpand(plugin, id); + plugin.button = button; + plugin._expandElement = expand; + this.pluginsContainer.domElement.appendChild(button); + + if (expand) { + var This = this; + $(button).mouseover(function (evt) { + evt.target.plugin.expand(); + This._expandedPlugin = evt.target.plugin; + }); + this.pluginsContainer.domElement.appendChild(expand); + } + + $(button).hide(); + plugin.checkEnabled(function (isEnabled) { + var parent; + + if (isEnabled) { + $(plugin.button).show(); + paella.pluginManager.setupPlugin(plugin); + var id = 'buttonPlugin' + _this110.buttonPlugins.length; + + if (plugin.getButtonType() == paella.ButtonPlugin.type.popUpButton) { + parent = _this110.popUpPluginContainer.domElement; + var popUpContent = paella.ButtonPlugin.BuildPluginPopUp(parent, plugin, id + '_container'); + + _this110.popUpPluginContainer.registerContainer(plugin.getName(), popUpContent, button, plugin); + } else if (plugin.getButtonType() == paella.ButtonPlugin.type.timeLineButton) { + parent = _this110.timeLinePluginContainer.domElement; + var timeLineContent = paella.ButtonPlugin.BuildPluginPopUp(parent, plugin, id + '_timeline'); + + _this110.timeLinePluginContainer.registerContainer(plugin.getName(), timeLineContent, button, plugin); + } + } else { + _this110.pluginsContainer.domElement.removeChild(plugin.button); + } + }); + } + }]); + + function PlaybackControl(id) { + var _this109; + + _classCallCheck(this, PlaybackControl); + + var style = {}; + _this109 = _possibleConstructorReturn(this, _getPrototypeOf(PlaybackControl).call(this, 'div', id, style)); + _this109.playbackBarId = ''; + _this109.pluginsContainer = null; + _this109._popUpPluginContainer = null; + _this109._timeLinePluginContainer = null; + _this109.playbackPluginsWidth = 0; + _this109.popupPluginsWidth = 0; + _this109.minPlaybackBarSize = 120; + _this109.playbackBarInstance = null; + _this109.buttonPlugins = []; + _this109.domElement.className = 'playbackControls'; + _this109.playbackBarId = id + '_playbackBar'; + + var thisClass = _assertThisInitialized(_this109); + + _this109.pluginsContainer = new paella.DomNode('div', id + '_playbackBarPlugins'); + _this109.pluginsContainer.domElement.className = 'playbackBarPlugins'; + + _this109.pluginsContainer.domElement.setAttribute("role", "toolbar"); + + _this109.addNode(_this109.pluginsContainer); + + _this109.addNode(new paella.PlaybackBar(_this109.playbackBarId)); + + paella.pluginManager.setTarget('button', _assertThisInitialized(_this109)); + $(window).mousemove(function (evt) { + if (_this109._expandedPlugin && $(window).height() - evt.clientY > 50) { + _this109._expandedPlugin.contract(); + + _this109._expandPlugin = null; + } + }); + return _this109; + } + + _createClass(PlaybackControl, [{ + key: "showPopUp", + value: function showPopUp(identifier, button) { + this.popUpPluginContainer.showContainer(identifier, button); + this.timeLinePluginContainer.showContainer(identifier, button); + } + }, { + key: "hidePopUp", + value: function hidePopUp(identifier, button) { + this.popUpPluginContainer.hideContainer(identifier, button); + this.timeLinePluginContainer.hideContainer(identifier, button); + } + }, { + key: "playbackBar", + value: function playbackBar() { + if (this.playbackBarInstance == null) { + this.playbackBarInstance = this.getNode(this.playbackBarId); + } + + return this.playbackBarInstance; + } + }, { + key: "onresize", + value: function onresize() { + var windowSize = $(this.domElement).width(); + base.log.debug("resize playback bar (width=" + windowSize + ")"); + + for (var i = 0; i < this.buttonPlugins.length; ++i) { + var plugin = this.buttonPlugins[i]; + var minSize = plugin.getMinWindowSize(); + + if (minSize > 0 && windowSize < minSize) { + plugin.hideUI(); + } else { + plugin.checkVisibility(); + } + } + + this.getNode(this.playbackBarId).onresize(); + } + }, { + key: "popUpPluginContainer", + get: function get() { + if (!this._popUpPluginContainer) { + this._popUpPluginContainer = new paella.PopUpContainer(this.identifier + '_popUpPluginContainer', 'popUpPluginContainer'); + this.addNode(this._popUpPluginContainer); + } + + return this._popUpPluginContainer; + } + }, { + key: "timeLinePluginContainer", + get: function get() { + if (!this._timeLinePluginContainer) { + this._timeLinePluginContainer = new paella.TimelineContainer(this.identifier + '_timelinePluginContainer', 'timelinePluginContainer'); + this.addNode(this._timeLinePluginContainer); + } + + return this._timeLinePluginContainer; + } + }]); + + return PlaybackControl; + }(paella.DomNode); + + paella.PlaybackControl = PlaybackControl; + + var ControlsContainer = + /*#__PURE__*/ + function (_paella$DomNode12) { + _inherits(ControlsContainer, _paella$DomNode12); + + _createClass(ControlsContainer, [{ + key: "addPlugin", + value: function addPlugin(plugin) { + var id = 'videoOverlayButtonPlugin' + this.buttonPlugins.length; + this.buttonPlugins.push(plugin); + var button = paella.ButtonPlugin.BuildPluginButton(plugin, id); + this.videoOverlayButtons.domElement.appendChild(button); + plugin.button = button; + $(button).hide(); + plugin.checkEnabled(function (isEnabled) { + if (isEnabled) { + $(plugin.button).show(); + paella.pluginManager.setupPlugin(plugin); + } + }); + } + }]); + + function ControlsContainer(id) { + var _this111; + + _classCallCheck(this, ControlsContainer); + + _this111 = _possibleConstructorReturn(this, _getPrototypeOf(ControlsContainer).call(this, 'div', id)); + _this111.playbackControlId = ''; + _this111.editControlId = ''; + _this111.isEnabled = true; + _this111.autohideTimer = null; + _this111.hideControlsTimeMillis = 3000; + _this111.playbackControlInstance = null; + _this111.videoOverlayButtons = null; + _this111.buttonPlugins = []; + _this111._hidden = false; + _this111._over = false; + _this111.viewControlId = id + '_view'; + _this111.playbackControlId = id + '_playback'; + _this111.editControlId = id + '_editor'; + + _this111.addNode(new paella.PlaybackControl(_this111.playbackControlId)); + + var thisClass = _assertThisInitialized(_this111); + + paella.events.bind(paella.events.showEditor, function (event) { + thisClass.onShowEditor(); + }); + paella.events.bind(paella.events.hideEditor, function (event) { + thisClass.onHideEditor(); + }); + paella.events.bind(paella.events.play, function (event) { + thisClass.onPlayEvent(); + }); + paella.events.bind(paella.events.pause, function (event) { + thisClass.onPauseEvent(); + }); + $(document).mousemove(function (event) { + paella.player.controls.restartHideTimer(); + }); + $(_this111.domElement).bind("mousemove", function (event) { + thisClass._over = true; + }); + $(_this111.domElement).bind("mouseout", function (event) { + thisClass._over = false; + }); + paella.events.bind(paella.events.endVideo, function (event) { + thisClass.onEndVideoEvent(); + }); + paella.events.bind('keydown', function (event) { + thisClass.onKeyEvent(); + }); + _this111.videoOverlayButtons = new paella.DomNode('div', id + '_videoOverlayButtonPlugins'); + _this111.videoOverlayButtons.domElement.className = 'videoOverlayButtonPlugins'; + + _this111.videoOverlayButtons.domElement.setAttribute("role", "toolbar"); + + _this111.addNode(_this111.videoOverlayButtons); + + paella.pluginManager.setTarget('videoOverlayButton', _assertThisInitialized(_this111)); + return _this111; + } + + _createClass(ControlsContainer, [{ + key: "onShowEditor", + value: function onShowEditor() { + var editControl = this.editControl(); + if (editControl) $(editControl.domElement).hide(); + } + }, { + key: "onHideEditor", + value: function onHideEditor() { + var editControl = this.editControl(); + if (editControl) $(editControl.domElement).show(); + } + }, { + key: "enterEditMode", + value: function enterEditMode() { + var playbackControl = this.playbackControl(); + var editControl = this.editControl(); + + if (playbackControl && editControl) { + $(playbackControl.domElement).hide(); + } + } + }, { + key: "exitEditMode", + value: function exitEditMode() { + var playbackControl = this.playbackControl(); + var editControl = this.editControl(); + + if (playbackControl && editControl) { + $(playbackControl.domElement).show(); + } + } + }, { + key: "playbackControl", + value: function playbackControl() { + if (this.playbackControlInstance == null) { + this.playbackControlInstance = this.getNode(this.playbackControlId); + } + + return this.playbackControlInstance; + } + }, { + key: "editControl", + value: function editControl() { + return this.getNode(this.editControlId); + } + }, { + key: "disable", + value: function disable() { + this.isEnabled = false; + this.hide(); + } + }, { + key: "enable", + value: function enable() { + this.isEnabled = true; + this.show(); + } + }, { + key: "isHidden", + value: function isHidden() { + return this._hidden; + } + }, { + key: "hide", + value: function hide() { + var This = this; + this._doHide = true; + + function hideIfNotCanceled() { + if (This._doHide) { + $(This.domElement).css({ + opacity: 0.0 + }); + $(This.domElement).hide(); + This.domElement.setAttribute('aria-hidden', 'true'); + This._hidden = true; + paella.events.trigger(paella.events.controlBarDidHide); + } + } + + paella.events.trigger(paella.events.controlBarWillHide); + + if (this._doHide) { + if (!base.userAgent.browser.IsMobileVersion && !base.userAgent.browser.Explorer) { + $(this.domElement).animate({ + opacity: 0.0 + }, { + duration: 300, + complete: hideIfNotCanceled + }); + } else { + hideIfNotCanceled(); + } + } + } + }, { + key: "showPopUp", + value: function showPopUp(identifier) { + this.playbackControl().showPopUp(identifier); + } + }, { + key: "hidePopUp", + value: function hidePopUp(identifier) { + this.playbackControl().hidePopUp(identifier); + } + }, { + key: "show", + value: function show() { + if (this.isEnabled) { + $(this.domElement).stop(); + this._doHide = false; + this.domElement.style.opacity = 1.0; + this.domElement.setAttribute('aria-hidden', 'false'); + this._hidden = false; + $(this.domElement).show(); + paella.events.trigger(paella.events.controlBarDidShow); + } + } + }, { + key: "autohideTimeout", + value: function autohideTimeout() { + var playbackBar = this.playbackControl().playbackBar(); + + if (playbackBar.isSeeking() || this._over) { + paella.player.controls.restartHideTimer(); + } else { + paella.player.controls.hideControls(); + } + } + }, { + key: "hideControls", + value: function hideControls() { + var _this112 = this; + + paella.player.videoContainer.paused().then(function (paused) { + if (!paused) { + _this112.hide(); + } else { + _this112.show(); + } + }); + } + }, { + key: "showControls", + value: function showControls() { + this.show(); + } + }, { + key: "onPlayEvent", + value: function onPlayEvent() { + this.restartHideTimer(); + } + }, { + key: "onPauseEvent", + value: function onPauseEvent() { + this.clearAutohideTimer(); + } + }, { + key: "onEndVideoEvent", + value: function onEndVideoEvent() { + this.show(); + this.clearAutohideTimer(); + } + }, { + key: "onKeyEvent", + value: function onKeyEvent() { + this.restartHideTimer(); + paella.player.videoContainer.paused().then(function (paused) { + if (!paused) { + paella.player.controls.restartHideTimer(); + } + }); + } + }, { + key: "cancelHideBar", + value: function cancelHideBar() { + this.restartTimerEvent(); + } + }, { + key: "restartTimerEvent", + value: function restartTimerEvent() { + var _this113 = this; + + if (this.isHidden()) { + this.showControls(); + } + + this._doHide = false; + paella.player.videoContainer.paused(function (paused) { + if (!paused) { + _this113.restartHideTimer(); + } + }); + } + }, { + key: "clearAutohideTimer", + value: function clearAutohideTimer() { + if (this.autohideTimer != null) { + this.autohideTimer.cancel(); + this.autohideTimer = null; + } + } + }, { + key: "restartHideTimer", + value: function restartHideTimer() { + this.showControls(); + this.clearAutohideTimer(); + var thisClass = this; + this.autohideTimer = new base.Timer(function (timer) { + thisClass.autohideTimeout(); + }, this.hideControlsTimeMillis); + } + }, { + key: "onresize", + value: function onresize() { + this.playbackControl().onresize(); + } + }]); + + return ControlsContainer; + }(paella.DomNode); + + paella.ControlsContainer = ControlsContainer; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var LoaderContainer = + /*#__PURE__*/ + function (_paella$DomNode13) { + _inherits(LoaderContainer, _paella$DomNode13); + + function LoaderContainer(id) { + var _this114; + + _classCallCheck(this, LoaderContainer); + + _this114 = _possibleConstructorReturn(this, _getPrototypeOf(LoaderContainer).call(this, 'div', id, { + position: 'fixed', + backgroundColor: 'white', + opacity: '0.7', + top: '0px', + left: '0px', + right: '0px', + bottom: '0px', + zIndex: 10000 + })); + _this114.timer = null; + _this114.loader = null; + _this114.loaderPosition = 0; + _this114.loader = _this114.addNode(new paella.DomNode('i', '', { + width: "100px", + height: "100px", + color: "black", + display: "block", + marginLeft: "auto", + marginRight: "auto", + marginTop: "32%", + fontSize: "100px" + })); + _this114.loader.domElement.className = "icon-spinner"; + paella.events.bind(paella.events.loadComplete, function (event, params) { + _this114.loadComplete(params); + }); + _this114.timer = new base.Timer(function (timer) { + //thisClass.loaderPosition -= 128; + //thisClass.loader.domElement.style.backgroundPosition = thisClass.loaderPosition + 'px'; + _this114.loader.domElement.style.transform = "rotate(".concat(_this114.loaderPosition, "deg"); + _this114.loaderPosition += 45; + }, 250); + _this114.timer.repeat = true; + return _this114; + } + + _createClass(LoaderContainer, [{ + key: "loadComplete", + value: function loadComplete(params) { + $(this.domElement).hide(); + this.timer.repeat = false; + } + }]); + + return LoaderContainer; + }(paella.DomNode); + + paella.LoaderContainer = LoaderContainer; + paella.Keys = { + Space: 32, + Left: 37, + Up: 38, + Right: 39, + Down: 40, + A: 65, + B: 66, + C: 67, + D: 68, + E: 69, + F: 70, + G: 71, + H: 72, + I: 73, + J: 74, + K: 75, + L: 76, + M: 77, + N: 78, + O: 79, + P: 80, + Q: 81, + R: 82, + S: 83, + T: 84, + U: 85, + V: 86, + W: 87, + X: 88, + Y: 89, + Z: 90 + }; + + var KeyPlugin = + /*#__PURE__*/ + function (_paella$FastLoadPlugi4) { + _inherits(KeyPlugin, _paella$FastLoadPlugi4); + + function KeyPlugin() { + _classCallCheck(this, KeyPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(KeyPlugin).apply(this, arguments)); + } + + _createClass(KeyPlugin, [{ + key: "onKeyPress", + value: function onKeyPress(key) { + console.log(key); + return false; + } + }, { + key: "type", + get: function get() { + return 'keyboard'; + } + }]); + + return KeyPlugin; + }(paella.FastLoadPlugin); + + paella.KeyPlugin = KeyPlugin; + var g_keyboardEventSet = false; + + var KeyManager = + /*#__PURE__*/ + function () { + _createClass(KeyManager, [{ + key: "isPlaying", + get: function get() { + return this._isPlaying; + }, + set: function set(p) { + this._isPlaying = p; + } + }, { + key: "enabled", + get: function get() { + return this._enabled !== undefined ? this._enabled : true; + }, + set: function set(e) { + this._enabled = e; + } + }]); + + function KeyManager() { + _classCallCheck(this, KeyManager); + + this._isPlaying = false; + var thisClass = this; + paella.events.bind(paella.events.loadComplete, function (event, params) { + thisClass.loadComplete(event, params); + }); + paella.events.bind(paella.events.play, function (event) { + thisClass.onPlay(); + }); + paella.events.bind(paella.events.pause, function (event) { + thisClass.onPause(); + }); + paella.pluginManager.setTarget('keyboard', this); + this._pluginList = []; + } + + _createClass(KeyManager, [{ + key: "addPlugin", + value: function addPlugin(plugin) { + var _this115 = this; + + if (plugin.checkEnabled(function (e) { + _this115._pluginList.push(plugin); + + plugin.setup(); + })) ; + } + }, { + key: "loadComplete", + value: function loadComplete(event, params) { + var _this116 = this; + + if (g_keyboardEventSet) { + return; + } + + paella.events.bind("keyup", function (event) { + _this116.keyUp(event); + }); + g_keyboardEventSet = true; + } + }, { + key: "onPlay", + value: function onPlay() { + this.isPlaying = true; + } + }, { + key: "onPause", + value: function onPause() { + this.isPlaying = false; + } + }, { + key: "keyUp", + value: function keyUp(event) { + if (!this.enabled) return; + + this._pluginList.some(function (plugin) { + return plugin.onKeyPress(event); + }); + } + }]); + + return KeyManager; + }(); + + paella.keyManager = new KeyManager(); +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var VideoLoader = + /*#__PURE__*/ + function () { + function VideoLoader() { + _classCallCheck(this, VideoLoader); + + this.metadata = { + // Video metadata + title: "", + duration: 0 + }; + this.streams = []; // {sources:{mp4:{src:"videourl.mp4",type:"video/mp4"}, + // ogg:{src:"videourl.ogv",type:"video/ogg"}, + // webm:{src:"videourl.webm",type:"video/webm"}, + // flv:{src:"videourl.flv",type:"video/x-flv"}, + // rtmp:{src:"rtmp://server.com/endpoint/url.loquesea",type="video/mp4 | video/x-flv"}, + // image:{frames:{frame_1:'frame_1.jpg',...frame_n:'frame_n.jpg'},duration:183}, + // preview:'video_preview.jpg'} + + this.frameList = []; // frameList[timeInstant] = { id:"frame_id", mimetype:"image/jpg", time:timeInstant, url:"image_url"} + + this.loadStatus = false; + this.codecStatus = false; + } + + _createClass(VideoLoader, [{ + key: "getMetadata", + value: function getMetadata() { + return this.metadata; + } + }, { + key: "getVideoId", + value: function getVideoId() { + return paella.initDelegate.getId(); + } + }, { + key: "getVideoUrl", + value: function getVideoUrl() { + // This function must to return the base video URL + return ""; + } + }, { + key: "getDataUrl", + value: function getDataUrl() {// This function must to return the location of the video data file + } + }, { + key: "loadVideo", + value: function loadVideo(onSuccess) { + // This function must to: + // - load this.streams and this.frameList + // - Check streams compatibility using this.isStreamCompatible(streamIndex) + // - Set this.loadStatus = true if load is Ok, or false if something gone wrong + // - Set this.codecStatus = true if the browser can reproduce all streams + // - Call onSuccess() + onSuccess(); + } + }]); + + return VideoLoader; + }(); + + paella.VideoLoader = VideoLoader; + + var AccessControl = + /*#__PURE__*/ + function () { + function AccessControl() { + _classCallCheck(this, AccessControl); + } + + _createClass(AccessControl, [{ + key: "canRead", + value: function canRead() { + return paella_DeferredResolved(true); + } + }, { + key: "canWrite", + value: function canWrite() { + return paella_DeferredResolved(false); + } + }, { + key: "userData", + value: function userData() { + return paella_DeferredResolved({ + username: 'anonymous', + name: 'Anonymous', + avatar: paella.utils.folders.resources() + '/images/default_avatar.png', + isAnonymous: true + }); + } + }, { + key: "getAuthenticationUrl", + value: function getAuthenticationUrl(callbackParams) { + var authCallback = this._authParams.authCallbackName && window[this._authParams.authCallbackName]; + + if (!authCallback && paella.player.config.auth) { + authCallback = paella.player.config.auth.authCallbackName && window[paella.player.config.auth.authCallbackName]; + } + + if (typeof authCallback == "function") { + return authCallback(callbackParams); + } + + return ""; + } + }]); + + return AccessControl; + }(); + + paella.AccessControl = AccessControl; + + var PlayerBase = + /*#__PURE__*/ + function () { + _createClass(PlayerBase, [{ + key: "checkCompatibility", + value: function checkCompatibility() { + var message = ""; + + if (base.parameters.get('ignoreBrowserCheck')) { + return true; + } + + if (base.userAgent.browser.IsMobileVersion) return true; + var isCompatible = base.userAgent.browser.Chrome || base.userAgent.browser.Safari || base.userAgent.browser.Firefox || base.userAgent.browser.Opera || base.userAgent.browser.Edge || base.userAgent.browser.Explorer && base.userAgent.browser.Version.major >= 9; + + if (isCompatible) { + return true; + } else { + var errorMessage = base.dictionary.translate("It seems that your browser is not HTML 5 compatible"); + paella.events.trigger(paella.events.error, { + error: errorMessage + }); + message = errorMessage + '<div style="display:block;width:470px;height:140px;margin-left:auto;margin-right:auto;font-family:Verdana,sans-sherif;font-size:12px;"><a href="http://www.google.es/chrome" style="color:#004488;float:left;margin-right:20px;"><img src="' + paella.utils.folders.resources() + 'images/chrome.png" style="width:80px;height:80px" alt="Google Chrome"></img><p>Google Chrome</p></a><a href="http://windows.microsoft.com/en-US/internet-explorer/products/ie/home" style="color:#004488;float:left;margin-right:20px;"><img src="' + paella.utils.folders.resources() + 'images/explorer.png" style="width:80px;height:80px" alt="Internet Explorer 9"></img><p>Internet Explorer 9</p></a><a href="http://www.apple.com/safari/" style="float:left;margin-right:20px;color:#004488"><img src="' + paella.utils.folders.resources() + 'images/safari.png" style="width:80px;height:80px" alt="Safari"></img><p>Safari 5</p></a><a href="http://www.mozilla.org/firefox/" style="float:left;color:#004488"><img src="' + paella.utils.folders.resources() + 'images/firefox.png" style="width:80px;height:80px" alt="Firefox"></img><p>Firefox 12</p></a></div>'; + message += '<div style="margin-top:30px;"><a id="ignoreBrowserCheckLink" href="#" onclick="window.location = window.location + \'&ignoreBrowserCheck=true\'">' + base.dictionary.translate("Continue anyway") + '</a></div>'; + paella.messageBox.showError(message, { + height: '40%' + }); + } + + return false; + } + }]); + + function PlayerBase(playerId) { + _classCallCheck(this, PlayerBase); + + this.config = null; + this.playerId = ''; + this.mainContainer = null; + this.videoContainer = null; + this.controls = null; + this.accessControl = null; + + if (base.parameters.get('log') != undefined) { + var log = 0; + + switch (base.parameters.get('log')) { + case "error": + log = base.Log.kLevelError; + break; + + case "warn": + log = base.Log.kLevelWarning; + break; + + case "debug": + log = base.Log.kLevelDebug; + break; + + case "log": + case "true": + log = base.Log.kLevelLog; + break; + } + + base.log.setLevel(log); + } + + if (!this.checkCompatibility()) { + base.log.debug('It seems that your browser is not HTML 5 compatible'); + } else { + paella.player = this; + this.playerId = playerId; + this.mainContainer = $('#' + this.playerId)[0]; + var thisClass = this; + paella.events.bind(paella.events.loadComplete, function (event, params) { + thisClass.loadComplete(event, params); + }); + } + } + + _createClass(PlayerBase, [{ + key: "loadComplete", + value: function loadComplete(event, params) {} + }, { + key: "repoUrl", + get: function get() { + return paella.player.videoLoader._url || paella.player.config.standalone && paella.player.config.standalone.repository; + } + }, { + key: "videoUrl", + get: function get() { + return paella.player.videoLoader.getVideoUrl(); + } + }, { + key: "dataUrl", + get: function get() { + return paella.player.videoLoader.getDataUrl(); + } + }, { + key: "videoId", + get: function get() { + return paella.initDelegate.getId(); + } + }, { + key: "auth", + get: function get() { + return { + login: function login(redirect) { + redirect = redirect || window.location.href; + var url = paella.initDelegate.initParams.accessControl.getAuthenticationUrl(redirect); + + if (url) { + window.location.href = url; + } + }, + // The following functions returns promises + canRead: function canRead() { + return paella.initDelegate.initParams.accessControl.canRead(); + }, + canWrite: function canWrite() { + return paella.initDelegate.initParams.accessControl.canWrite(); + }, + userData: function userData() { + return paella.initDelegate.initParams.accessControl.userData(); + } + }; + } + }]); + + return PlayerBase; + }(); + + paella.PlayerBase = PlayerBase; + + var InitDelegate = + /*#__PURE__*/ + function () { + _createClass(InitDelegate, [{ + key: "initParams", + get: function get() { + if (!this._initParams) { + this._initParams = { + configUrl: paella.baseUrl + 'config/config.json', + dictionaryUrl: paella.baseUrl + 'localization/paella', + accessControl: null, + videoLoader: null // Other parameters set externally: + // config: json containing the configuration file + // loadConfig: function(defaultConfigUrl). Returns a promise with the config.json data + // url: attribute. Contains the repository base URL + // videoUrl: function. Returns the base URL of the video (example: baseUrl + videoID) + // dataUrl: function. Returns the full URL to get the data.json file + // loadVideo: Function. Returns a promise with the data.json file content + + }; + } + + return this._initParams; + } + }]); + + function InitDelegate(params) { + _classCallCheck(this, InitDelegate); + + if (arguments.length == 2) { + this._config = arguments[0]; + } + + if (params) { + for (var key in params) { + this.initParams[key] = params[key]; + } + } + + if (!this.initParams.getId) { + this.initParams.getId = function () { + return base.parameters.get('id') || "noid"; + }; + } + } + + _createClass(InitDelegate, [{ + key: "getId", + value: function getId() { + return this.initParams.getId(); + } + }, { + key: "loadDictionary", + value: function loadDictionary() { + var _this117 = this; + + return new Promise(function (resolve) { + base.ajax.get({ + url: _this117.initParams.dictionaryUrl + "_" + base.dictionary.currentLanguage() + '.json' + }, function (data, type, returnCode) { + base.dictionary.addDictionary(data); + resolve(data); + }, function (data, type, returnCode) { + resolve(); + }); + }); + } + }, { + key: "loadConfig", + value: function loadConfig() { + var _this118 = this; + + var loadAccessControl = function loadAccessControl(data) { + var AccessControlClass = Class.fromString(data.player.accessControlClass || "paella.AccessControl"); + _this118.initParams.accessControl = new AccessControlClass(); + }; + + if (this.initParams.config) { + return new Promise(function (resolve) { + loadAccessControl(_this118.initParams.config); + resolve(_this118.initParams.config); + }); + } else if (this.initParams.loadConfig) { + return new Promise(function (resolve, reject) { + _this118.initParams.loadConfig(_this118.initParams.configUrl).then(function (data) { + loadAccessControl(data); + resolve(data); + })["catch"](function (err) { + reject(err); + }); + }); + } else { + return new Promise(function (resolve, reject) { + var configUrl = _this118.initParams.configUrl; + var params = {}; + params.url = configUrl; + base.ajax.get(params, function (data, type, returnCode) { + try { + data = JSON.parse(data); + } catch (e) {} + + loadAccessControl(data); + resolve(data); + }, function (data, type, returnCode) { + paella.messageBox.showError(base.dictionary.translate("Error! Config file not found. Please configure paella!")); //onSuccess({}); + }); + }); + } + } + }]); + + return InitDelegate; + }(); + + paella.InitDelegate = InitDelegate; + window.paellaPlayer = null; + paella.plugins = {}; + paella.plugins.events = {}; + paella.initDelegate = null; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var PaellaPlayer = + /*#__PURE__*/ + function (_paella$PlayerBase) { + _inherits(PaellaPlayer, _paella$PlayerBase); + + _createClass(PaellaPlayer, [{ + key: "getPlayerMode", + value: function getPlayerMode() { + if (paella.player.isFullScreen()) { + return paella.PaellaPlayer.mode.fullscreen; + } else if (window.self !== window.top) { + return paella.PaellaPlayer.mode.embed; + } + + return paella.PaellaPlayer.mode.standard; + } + }, { + key: "checkFullScreenCapability", + value: function checkFullScreenCapability() { + var fs = document.getElementById(paella.player.mainContainer.id); + + if (fs.webkitRequestFullScreen || fs.mozRequestFullScreen || fs.msRequestFullscreen || fs.requestFullScreen) { + return true; + } + + if (base.userAgent.browser.IsMobileVersion && paella.player.videoContainer.isMonostream) { + return true; + } + + return false; + } + }, { + key: "addFullScreenListeners", + value: function addFullScreenListeners() { + var thisClass = this; + + var onFullScreenChangeEvent = function onFullScreenChangeEvent() { + setTimeout(function () { + paella.pluginManager.checkPluginsVisibility(); + }, 1000); + var fs = document.getElementById(paella.player.mainContainer.id); + + if (paella.player.isFullScreen()) { + fs.style.width = '100%'; + fs.style.height = '100%'; + } else { + fs.style.width = ''; + fs.style.height = ''; + } + + if (thisClass.isFullScreen()) { + paella.events.trigger(paella.events.enterFullscreen); + } else { + paella.events.trigger(paella.events.exitFullscreen); + } + }; + + if (!this.eventFullScreenListenerAdded) { + this.eventFullScreenListenerAdded = true; + document.addEventListener("fullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("webkitfullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("mozfullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("MSFullscreenChange", onFullScreenChangeEvent, false); + document.addEventListener("webkitendfullscreen", onFullScreenChangeEvent, false); + } + } + }, { + key: "isFullScreen", + value: function isFullScreen() { + var webKitIsFullScreen = document.webkitIsFullScreen === true; + var msIsFullScreen = document.msFullscreenElement !== undefined && document.msFullscreenElement !== null; + var mozIsFullScreen = document.mozFullScreen === true; + var stdIsFullScreen = document.fullScreenElement !== undefined && document.fullScreenElement !== null; + return webKitIsFullScreen || msIsFullScreen || mozIsFullScreen || stdIsFullScreen; + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + if (!this.isFullScreen()) { + if (base.userAgent.system.iOS && (paella.utils.userAgent.browser.Version.major < 12 || !paella.utils.userAgent.system.iPad)) { + paella.player.videoContainer.masterVideo().goFullScreen(); + } else { + var fs = document.getElementById(paella.player.mainContainer.id); + + if (fs.webkitRequestFullScreen) { + fs.webkitRequestFullScreen(); + } else if (fs.mozRequestFullScreen) { + fs.mozRequestFullScreen(); + } else if (fs.msRequestFullscreen) { + fs.msRequestFullscreen(); + } else if (fs.requestFullScreen) { + fs.requestFullScreen(); + } + } + } + } + }, { + key: "exitFullScreen", + value: function exitFullScreen() { + if (this.isFullScreen()) { + if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.msExitFullscreen()) { + document.msExitFullscreen(); + } else if (document.cancelFullScreen) { + document.cancelFullScreen(); + } + } + } + }, { + key: "setProfile", + value: function setProfile(profileName, animate) { + if (paella.profiles.setProfile(profileName, animate)) { + var profileData = paella.player.getProfile(profileName); + + if (profileData && !paella.player.videoContainer.isMonostream) { + base.cookies.set('lastProfile', profileName); + } + + paella.events.trigger(paella.events.setProfile, { + profileName: profileName + }); + } + } + }, { + key: "getProfile", + value: function getProfile(profileName) { + return paella.profiles.getProfile(profileName); + } + }]); + + function PaellaPlayer(playerId) { + var _this119; + + _classCallCheck(this, PaellaPlayer); + + _this119 = _possibleConstructorReturn(this, _getPrototypeOf(PaellaPlayer).call(this, playerId)); + _this119.player = null; + _this119.videoIdentifier = ''; + _this119.loader = null; // Video data: + + _this119.videoData = null; // if initialization ok + + if (_this119.playerId == playerId) { + _this119.loadPaellaPlayer(); + + var thisClass = _assertThisInitialized(_this119); + } + + return _this119; + } + + _createClass(PaellaPlayer, [{ + key: "loadPaellaPlayer", + value: function loadPaellaPlayer() { + var This = this; + this.loader = new paella.LoaderContainer('paellaPlayer_loader'); + $('body')[0].appendChild(this.loader.domElement); + paella.events.trigger(paella.events.loadStarted); + paella.initDelegate.loadDictionary().then(function () { + return paella.initDelegate.loadConfig(); + }).then(function (config) { + This.accessControl = paella.initDelegate.initParams.accessControl; + This.videoLoader = paella.initDelegate.initParams.videoLoader; + This.onLoadConfig(config); + + if (config.skin) { + var skin = config.skin["default"] || 'dark'; + paella.utils.skin.restore(skin); + } + }); + } + }, { + key: "onLoadConfig", + value: function onLoadConfig(configData) { + paella.data = new paella.Data(configData); + paella.pluginManager.registerPlugins(); + this.config = configData; + this.videoIdentifier = paella.initDelegate.getId(); + + if (this.videoIdentifier) { + if (this.mainContainer) { + this.videoContainer = new paella.VideoContainer(this.playerId + "_videoContainer"); + var videoQualityStrategy = new paella.BestFitVideoQualityStrategy(); + + try { + var StrategyClass = this.config.player.videoQualityStrategy; + var ClassObject = Class.fromString(StrategyClass); + videoQualityStrategy = new ClassObject(); + } catch (e) { + base.log.warning("Error selecting video quality strategy: strategy not found"); + } + + this.videoContainer.setVideoQualityStrategy(videoQualityStrategy); + this.mainContainer.appendChild(this.videoContainer.domElement); + } + + $(window).resize(function (event) { + paella.player.onresize(); + }); + this.onload(); + } + + paella.pluginManager.loadPlugins("paella.FastLoadPlugin"); + } + }, { + key: "onload", + value: function onload() { + var thisClass = this; + var ac = this.accessControl; + var canRead = false; + var userData = {}; + this.accessControl.canRead().then(function (c) { + canRead = c; + return thisClass.accessControl.userData(); + }).then(function (d) { + userData = d; + + if (canRead) { + thisClass.loadVideo(); + } else if (userData.isAnonymous) { + var redirectUrl = paella.initDelegate.initParams.accessControl.getAuthenticationUrl("player/?id=" + paella.player.videoIdentifier); + var message = '<div>' + base.dictionary.translate("You are not authorized to view this resource") + '</div>'; + + if (redirectUrl) { + message += '<div class="login-link"><a href="' + redirectUrl + '">' + base.dictionary.translate("Login") + '</a></div>'; + } + + thisClass.unloadAll(message); + } else { + var errorMessage = base.dictionary.translate("You are not authorized to view this resource"); + thisClass.unloadAll(errorMessage); + paella.events.trigger(paella.events.error, { + error: errorMessage + }); + } + })["catch"](function (error) { + var errorMessage = base.dictionary.translate(error); + thisClass.unloadAll(errorMessage); + paella.events.trigger(paella.events.error, { + error: errorMessage + }); + }); + } + }, { + key: "onresize", + value: function onresize() { + this.videoContainer.onresize(); + if (this.controls) this.controls.onresize(); // Resize the layout profile + + if (this.videoContainer.ready) { + var cookieProfile = paella.utils.cookies.get('lastProfile'); + + if (cookieProfile) { + this.setProfile(cookieProfile, false); + } else { + this.setProfile(paella.player.selectedProfile, false); + } + } + + paella.events.trigger(paella.events.resize, { + width: $(this.videoContainer.domElement).width(), + height: $(this.videoContainer.domElement).height() + }); + } + }, { + key: "unloadAll", + value: function unloadAll(message) { + var loaderContainer = $('#paellaPlayer_loader')[0]; + this.mainContainer.innerText = ""; + paella.messageBox.showError(message); + } + }, { + key: "reloadVideos", + value: function reloadVideos(masterQuality, slaveQuality) { + if (this.videoContainer) { + this.videoContainer.reloadVideos(masterQuality, slaveQuality); + this.onresize(); + } + } + }, { + key: "loadVideo", + value: function loadVideo() { + if (this.videoIdentifier) { + var This = this; + var loader = paella.player.videoLoader; + this.onresize(); + loader.loadVideo(function () { + var playOnLoad = false; + This.videoContainer.setStreamData(loader.streams).then(function () { + paella.events.trigger(paella.events.loadComplete); + This.addFullScreenListeners(); + This.onresize(); // If the player has been loaded using lazyLoad, the video should be + // played as soon as it loads + + if (This.videoContainer.autoplay() || g_lazyLoadInstance != null) { + This.play(); + } else if (loader.metadata.preview) { + This.lazyLoadContainer = new LazyThumbnailContainer(loader.metadata.preview); + document.body.appendChild(This.lazyLoadContainer.domElement); + } + })["catch"](function (error) { + console.log(error); + paella.messageBox.showError(base.dictionary.translate("Could not load the video")); + }); + }); + } + } + }, { + key: "showPlaybackBar", + value: function showPlaybackBar() { + if (!this.controls) { + this.controls = new paella.ControlsContainer(this.playerId + '_controls'); + this.mainContainer.appendChild(this.controls.domElement); + this.controls.onresize(); + paella.events.trigger(paella.events.loadPlugins, { + pluginManager: paella.pluginManager + }); + } + } + }, { + key: "isLiveStream", + value: function isLiveStream() { + var loader = paella.initDelegate.initParams.videoLoader; + + var checkSource = function checkSource(sources, index) { + if (sources.length > index) { + var source = sources[index]; + + for (var key in source.sources) { + if (_typeof(source.sources[key]) == "object") { + for (var i = 0; i < source.sources[key].length; ++i) { + var stream = source.sources[key][i]; + if (stream.isLiveStream) return true; + } + } + } + } + + return false; + }; + + return checkSource(loader.streams, 0) || checkSource(loader.streams, 1); + } + }, { + key: "loadPreviews", + value: function loadPreviews() { + var streams = paella.initDelegate.initParams.videoLoader.streams; + var slavePreviewImg = null; + var masterPreviewImg = streams[0].preview; + + if (streams.length >= 2) { + slavePreviewImg = streams[1].preview; + } + + if (masterPreviewImg) { + var masterRect = paella.player.videoContainer.overlayContainer.getVideoRect(0); + this.masterPreviewElem = document.createElement('img'); + this.masterPreviewElem.src = masterPreviewImg; + paella.player.videoContainer.overlayContainer.addElement(this.masterPreviewElem, masterRect); + } + + if (slavePreviewImg) { + var slaveRect = paella.player.videoContainer.overlayContainer.getVideoRect(1); + this.slavePreviewElem = document.createElement('img'); + this.slavePreviewElem.src = slavePreviewImg; + paella.player.videoContainer.overlayContainer.addElement(this.slavePreviewElem, slaveRect); + } + + paella.events.bind(paella.events.timeUpdate, function (event) { + paella.player.unloadPreviews(); + }); + } + }, { + key: "unloadPreviews", + value: function unloadPreviews() { + if (this.masterPreviewElem) { + paella.player.videoContainer.overlayContainer.removeElement(this.masterPreviewElem); + this.masterPreviewElem = null; + } + + if (this.slavePreviewElem) { + paella.player.videoContainer.overlayContainer.removeElement(this.slavePreviewElem); + this.slavePreviewElem = null; + } + } + }, { + key: "loadComplete", + value: function loadComplete(event, params) { + var thisClass = this; //var master = paella.player.videoContainer.masterVideo(); + + paella.pluginManager.loadPlugins("paella.EarlyLoadPlugin"); + + if (paella.player.videoContainer._autoplay) { + this.play(); + } + } + }, { + key: "play", + value: function play() { + var _this120 = this; + + if (this.lazyLoadContainer) { + document.body.removeChild(this.lazyLoadContainer.domElement); + this.lazyLoadContainer = null; + } + + return new Promise(function (resolve, reject) { + _this120.videoContainer.play().then(function () { + if (!_this120.controls) { + _this120.showPlaybackBar(); + + paella.events.trigger(paella.events.controlBarLoaded); + + _this120.controls.onresize(); + } + + resolve(); + })["catch"](function (err) { + reject(err); + }); + }); + } + }, { + key: "pause", + value: function pause() { + return this.videoContainer.pause(); + } + }, { + key: "playing", + value: function playing() { + var _this121 = this; + + return new Promise(function (resolve) { + _this121.paused().then(function (p) { + resolve(!p); + }); + }); + } + }, { + key: "paused", + value: function paused() { + return this.videoContainer.paused(); + } + }, { + key: "selectedProfile", + get: function get() { + return paella.profiles.currentProfileName; + } + }]); + + return PaellaPlayer; + }(paella.PlayerBase); + + paella.PaellaPlayer = PaellaPlayer; + window.PaellaPlayer = PaellaPlayer; + paella.PaellaPlayer.mode = { + standard: 'standard', + fullscreen: 'fullscreen', + embed: 'embed' + }; + + var LazyThumbnailContainer = + /*#__PURE__*/ + function (_paella$DomNode14) { + _inherits(LazyThumbnailContainer, _paella$DomNode14); + + _createClass(LazyThumbnailContainer, null, [{ + key: "GetIconElement", + value: function GetIconElement() { + var container = document.createElement('div'); + container.className = "play-button-on-screen"; + container.style.width = "100%"; + container.style.height = "100%"; + container.style.pointerEvents = "none"; + var icon = document.createElement('div'); + icon['className'] = 'play-icon'; + container.appendChild(icon); + return container; + } + }]); + + function LazyThumbnailContainer(src) { + var _this122; + + _classCallCheck(this, LazyThumbnailContainer); + + _this122 = _possibleConstructorReturn(this, _getPrototypeOf(LazyThumbnailContainer).call(this, 'img', 'lazyLoadThumbnailContainer', {})); + _this122.domElement.src = src; + _this122.domElement.alt = ""; + _this122.container = LazyThumbnailContainer.GetIconElement(); + + if (!paella.player.videoContainer) { + document.body.appendChild(_this122.container); + } + + return _this122; + } + + _createClass(LazyThumbnailContainer, [{ + key: "setImage", + value: function setImage(url) { + this.domElement.src = url; + } + }, { + key: "onClick", + value: function onClick(closure) { + this.domElement.onclick = closure; + } + }, { + key: "destroyElements", + value: function destroyElements() { + document.body.removeChild(this.domElement); + document.body.removeChild(this.container); + } + }]); + + return LazyThumbnailContainer; + }(paella.DomNode); + + paella.LazyThumbnailContainer = LazyThumbnailContainer; + var g_lazyLoadInstance = null; + + var PaellaPlayerLazy = + /*#__PURE__*/ + function (_PaellaPlayer) { + _inherits(PaellaPlayerLazy, _PaellaPlayer); + + function PaellaPlayerLazy(playerId, initDelegate) { + var _this123; + + _classCallCheck(this, PaellaPlayerLazy); + + _this123 = _possibleConstructorReturn(this, _getPrototypeOf(PaellaPlayerLazy).call(this, playerId, initDelegate)); + g_lazyLoadInstance = _assertThisInitialized(_this123); + return _this123; + } + + _createClass(PaellaPlayerLazy, [{ + key: "loadComplete", + value: function loadComplete(event, params) {} + }, { + key: "onLoadConfig", + value: function onLoadConfig(configData) { + //paella.data = new paella.Data(configData); + this.config = configData; + this.videoIdentifier = paella.initDelegate.getId(); + + if (this.videoIdentifier) { + $(window).resize(function (event) { + paella.player.onresize(); + }); + this.onload(); + } + } + }, { + key: "loadVideo", + value: function loadVideo() { + var _this124 = this; + + if (this.videoIdentifier) { + var This = this; + var loader = paella.player.videoLoader; + this.onresize(); + loader.loadVideo(function () { + if (!loader.metadata.preview) { + paella.load(_this124.playerId, paella.loaderFunctionParams); + g_lazyLoadInstance = null; // Lazy load is disabled when the video has no preview + } else { + _this124.lazyLoadContainer = new LazyThumbnailContainer(loader.metadata.preview); + document.body.appendChild(_this124.lazyLoadContainer.domElement); + + _this124.lazyLoadContainer.onClick(function () { + _this124.lazyLoadContainer.destroyElements(); + + _this124.lazyLoadContainer = null; + _this124._onPlayClosure && _this124._onPlayClosure(); + }); + + paella.events.trigger(paella.events.loadComplete); + } + }); + } + } + }, { + key: "onresize", + value: function onresize() {} + }, { + key: "onPlay", + set: function set(closure) { + this._onPlayClosure = closure; + } + }]); + + return PaellaPlayerLazy; + }(PaellaPlayer); + + paella.PaellaPlayerLazy = PaellaPlayerLazy; + /* Initializer function */ + + window.initPaellaEngage = function (playerId, initDelegate) { + if (!initDelegate) { + initDelegate = new paella.InitDelegate(); + } + + paella.initDelegate = initDelegate; + paellaPlayer = new PaellaPlayer(playerId, paella.initDelegate); + }; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + // Default Video Loader + // + var DefaultVideoLoader = + /*#__PURE__*/ + function (_paella$VideoLoader) { + _inherits(DefaultVideoLoader, _paella$VideoLoader); + + function DefaultVideoLoader(data) { + var _this125; + + _classCallCheck(this, DefaultVideoLoader); + + _this125 = _possibleConstructorReturn(this, _getPrototypeOf(DefaultVideoLoader).call(this, data)); + _this125._url = null; + + if (_typeof(data) == "object") { + _this125._data = data; + } else { + try { + _this125._data = JSON.parse(data); + } catch (e) { + _this125._url = data; + } + } + + return _this125; + } + + _createClass(DefaultVideoLoader, [{ + key: "getVideoUrl", + value: function getVideoUrl() { + if (paella.initDelegate.initParams.videoUrl) { + return typeof paella.initDelegate.initParams.videoUrl == "function" ? paella.initDelegate.initParams.videoUrl() : paella.initDelegate.initParams.videoUrl; + } else { + var url = this._url || paella.player.config.standalone && paella.player.config.standalone.repository || ''; + return (/\/$/.test(url) ? url : url + '/') + paella.initDelegate.getId() + '/'; + } + } + }, { + key: "getDataUrl", + value: function getDataUrl() { + if (paella.initDelegate.initParams.dataUrl) { + return typeof paella.initDelegate.initParams.dataUrl == 'function' ? paella.initDelegate.initParams.dataUrl() : paella.initDelegate.initParams.dataUrl; + } else { + return this.getVideoUrl() + 'data.json'; + } + } + }, { + key: "loadVideo", + value: function loadVideo(onSuccess) { + var _this126 = this; + + var loadVideoDelegate = paella.initDelegate.initParams.loadVideo; + var url = this._url || this.getDataUrl(); + + if (this._data) { + this.loadVideoData(this._data, onSuccess); + } else if (loadVideoDelegate) { + loadVideoDelegate().then(function (data) { + _this126._data = data; + + _this126.loadVideoData(_this126._data, onSuccess); + }); + } else if (url) { + var This = this; + base.ajax.get({ + url: this.getDataUrl() + }, function (data, type, err) { + if (typeof data == "string") { + try { + data = JSON.parse(data); + } catch (e) {} + } + + This._data = data; + This.loadVideoData(This._data, onSuccess); + }, function (data, type, err) { + switch (err) { + case 401: + paella.messageBox.showError(base.dictionary.translate("You are not logged in")); + break; + + case 403: + paella.messageBox.showError(base.dictionary.translate("You are not authorized to view this resource")); + break; + + case 404: + paella.messageBox.showError(base.dictionary.translate("The specified video identifier does not exist")); + break; + + default: + paella.messageBox.showError(base.dictionary.translate("Could not load the video")); + } + }); + } + } + }, { + key: "loadVideoData", + value: function loadVideoData(data, onSuccess) { + var This = this; + + if (data.metadata) { + this.metadata = data.metadata; + } + + if (data.streams) { + data.streams.forEach(function (stream) { + This.loadStream(stream); + }); + } + + if (data.frameList) { + this.loadFrameData(data); + } + + if (data.captions) { + this.loadCaptions(data.captions); + } + + if (data.blackboard) { + this.loadBlackboard(data.streams[0], data.blackboard); + } + + this.streams = data.streams; + this.frameList = data.frameList; + this.loadStatus = this.streams.length > 0; + onSuccess(); + } + }, { + key: "loadFrameData", + value: function loadFrameData(data) { + var This = this; + + if (data.frameList && data.frameList.forEach) { + var newFrames = {}; + data.frameList.forEach(function (frame) { + if (!/^[a-zA-Z]+:\/\//.test(frame.url) && !/^data:/.test(frame.url)) { + frame.url = This.getVideoUrl() + frame.url; + } + + if (frame.thumb && !/^[a-zA-Z]+:\/\//.test(frame.thumb) && !/^data:/.test(frame.thumb)) { + frame.thumb = This.getVideoUrl() + frame.thumb; + } + + var id = frame.time; + newFrames[id] = frame; + }); + data.frameList = newFrames; + } + } + }, { + key: "loadStream", + value: function loadStream(stream) { + var This = this; + + if (stream.preview && !/^[a-zA-Z]+:\/\//.test(stream.preview) && !/^data:/.test(stream.preview)) { + stream.preview = This.getVideoUrl() + stream.preview; + } + + if (!stream.sources) { + return; + } + + if (stream.sources.image) { + stream.sources.image.forEach(function (image) { + if (image.frames.forEach) { + var newFrames = {}; + image.frames.forEach(function (frame) { + if (frame.src && !/^[a-zA-Z]+:\/\//.test(frame.src) && !/^data:/.test(frame.src)) { + frame.src = This.getVideoUrl() + frame.src; + } + + if (frame.thumb && !/^[a-zA-Z]+:\/\//.test(frame.thumb) && !/^data:/.test(frame.thumb)) { + frame.thumb = This.getVideoUrl() + frame.thumb; + } + + var id = "frame_" + frame.time; + newFrames[id] = frame.src; + }); + image.frames = newFrames; + } + }); + } + + for (var type in stream.sources) { + if (stream.sources[type]) { + if (type != 'image') { + var source = stream.sources[type]; + source.forEach(function (sourceItem) { + var pattern = /^[a-zA-Z\:]+\:\/\//gi; + + if (typeof sourceItem.src == "string") { + if (sourceItem.src.match(pattern) == null) { + sourceItem.src = This.getVideoUrl() + sourceItem.src; + } + } + + sourceItem.type = sourceItem.mimetype; + }); + } + } else { + delete stream.sources[type]; + } + } + } + }, { + key: "loadCaptions", + value: function loadCaptions(captions) { + if (captions) { + for (var i = 0; i < captions.length; ++i) { + var url = captions[i].url; + + if (!/^[a-zA-Z]+:\/\//.test(url)) { + url = this.getVideoUrl() + url; + } + + var c = new paella.captions.Caption(i, captions[i].format, url, { + code: captions[i].lang, + txt: captions[i].text + }); + paella.captions.addCaptions(c); + } + } + } + }, { + key: "loadBlackboard", + value: function loadBlackboard(stream, blackboard) { + var This = this; + + if (!stream.sources.image) { + stream.sources.image = []; + } + + var imageObject = { + count: blackboard.frames.length, + duration: blackboard.duration, + mimetype: blackboard.mimetype, + res: blackboard.res, + frames: {} + }; + blackboard.frames.forEach(function (frame) { + var id = "frame_" + Math.round(frame.time); + + if (!/^[a-zA-Z]+:\/\//.test(frame.src)) { + frame.src = This.getVideoUrl() + frame.src; + } + + imageObject.frames[id] = frame.src; + }); + stream.sources.image.push(imageObject); + } + }]); + + return DefaultVideoLoader; + }(paella.VideoLoader); + + paella.DefaultVideoLoader = DefaultVideoLoader; + + var DefaultInitDelegate = + /*#__PURE__*/ + function (_paella$InitDelegate) { + _inherits(DefaultInitDelegate, _paella$InitDelegate); + + function DefaultInitDelegate() { + _classCallCheck(this, DefaultInitDelegate); + + return _possibleConstructorReturn(this, _getPrototypeOf(DefaultInitDelegate).apply(this, arguments)); + } + + return DefaultInitDelegate; + }(paella.InitDelegate); + + paella.DefaultInitDelegate = DefaultInitDelegate; + + function getManifestFromParameters(params) { + var master = null; + + if (master = paella.utils.parameters.get('video')) { + var slave = paella.utils.parameters.get('videoSlave'); + slave = slave && decodeURIComponent(slave); + var masterPreview = paella.utils.parameters.get('preview'); + masterPreview = masterPreview && decodeURIComponent(masterPreview); + var slavePreview = paella.utils.parameters.get('previewSlave'); + slavePreview = slavePreview && decodeURIComponent(slavePreview); + var title = paella.utils.parameters.get('preview') || "Untitled Video"; + var data = { + metadata: { + title: title + }, + streams: [{ + sources: { + mp4: [{ + src: decodeURIComponent(master), + mimetype: "video/mp4", + res: { + w: 0, + h: 0 + } + }] + }, + preview: masterPreview + }] + }; + + if (slave) { + data.streams.push({ + sources: { + mp4: [{ + src: slave, + mimetype: "video/mp4", + res: { + w: 0, + h: 0 + } + }] + }, + preview: slavePreview + }); + } + + return data; + } + + return null; + } + /* + * playerContainer Player DOM container id + * params.configUrl Url to the config json file + * params.config Use this configuration file + * params.data Paella video data schema + * params.url Repository URL + */ + + + paella.load = function (playerContainer, params) { + paella.loaderFunctionParams = params; + var auth = params && params.auth || {}; // Build custom init data using url parameters + + var data = getManifestFromParameters(params); + + if (data) { + params.data = data; + } + + var initObjects = params; + initObjects.videoLoader = new paella.DefaultVideoLoader(params.data || params.url); + paella.initDelegate = new paella.DefaultInitDelegate(initObjects); + new PaellaPlayer(playerContainer, paella.initDelegate); + }; + /* + * playerContainer Player DOM container id + * params.configUrl Url to the config json file + * params.config Use this configuration file + * params.data Paella video data schema + * params.url Repository URL + * forceLazyLoad Use lazyLoad even if your browser does not allow automatic playback of the video + */ + + + paella.lazyLoad = function (playerContainer, params) { + var forceLazyLoad = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + paella.loaderFunctionParams = params; + var auth = params && params.auth || {}; // Check autoplay. If autoplay is enabled, this function must call paella.load() + + paella.Html5Video.IsAutoplaySupported().then(function (supported) { + if (supported || forceLazyLoad) { + // Build custom init data using url parameters + var data = getManifestFromParameters(params); + + if (data) { + params.data = data; + } + + var initObjects = params; + initObjects.videoLoader = new paella.DefaultVideoLoader(params.data || params.url); + paella.initDelegate = new paella.DefaultInitDelegate(initObjects); + var lazyLoad = new paella.PaellaPlayerLazy(playerContainer, paella.initDelegate); + + lazyLoad.onPlay = function () { + $('#' + playerContainer).innerHTML = ""; + paella.load(playerContainer, params); + }; + } else { + paella.load(playerContainer, params); + } + }); + }; +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function () { + var RightBarPlugin = + /*#__PURE__*/ + function (_paella$DeferredLoadP2) { + _inherits(RightBarPlugin, _paella$DeferredLoadP2); + + function RightBarPlugin() { + _classCallCheck(this, RightBarPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(RightBarPlugin).apply(this, arguments)); + } + + _createClass(RightBarPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.RightBarPlugin"; + } + }, { + key: "buildContent", + value: function buildContent(domElement) {} + }, { + key: "type", + get: function get() { + return 'rightBarPlugin'; + } + }]); + + return RightBarPlugin; + }(paella.DeferredLoadPlugin); + + paella.RightBarPlugin = RightBarPlugin; + + var TabBarPlugin = + /*#__PURE__*/ + function (_paella$DeferredLoadP3) { + _inherits(TabBarPlugin, _paella$DeferredLoadP3); + + function TabBarPlugin() { + _classCallCheck(this, TabBarPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(TabBarPlugin).apply(this, arguments)); + } + + _createClass(TabBarPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.TabBarPlugin"; + } + }, { + key: "getTabName", + value: function getTabName() { + return "New Tab"; + } + }, { + key: "action", + value: function action(tab) {} + }, { + key: "buildContent", + value: function buildContent(domElement) {} + }, { + key: "setToolTip", + value: function setToolTip(message) { + this.button.setAttribute("title", message); + this.button.setAttribute("aria-label", message); + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return ""; + } + }, { + key: "type", + get: function get() { + return 'tabBarPlugin'; + } + }]); + + return TabBarPlugin; + }(paella.DeferredLoadPlugin); + + paella.TabBarPlugin = TabBarPlugin; + + var ExtendedAdapter = + /*#__PURE__*/ + function () { + function ExtendedAdapter() { + _classCallCheck(this, ExtendedAdapter); + + this.rightContainer = null; + this.bottomContainer = null; + this.rightBarPlugins = []; + this.tabBarPlugins = []; + this.currentTabIndex = 0; + this.bottomContainerTabs = null; + this.bottomContainerContent = null; + this.rightContainer = document.createElement('div'); //this.rightContainer.id = this.settings.rightContainerId; + + this.rightContainer.className = "rightPluginContainer"; + this.bottomContainer = document.createElement('div'); //this.bottomContainer.id = this.settings.bottomContainerId; + + this.bottomContainer.className = "tabsPluginContainer"; + var tabs = document.createElement('div'); //tabs.id = 'bottomContainer_tabs'; + + tabs.className = 'tabsLabelContainer'; + this.bottomContainerTabs = tabs; + this.bottomContainer.appendChild(tabs); + var bottomContent = document.createElement('div'); //bottomContent.id = 'bottomContainer_content'; + + bottomContent.className = 'tabsContentContainer'; + this.bottomContainerContent = bottomContent; + this.bottomContainer.appendChild(bottomContent); + this.initPlugins(); + } + + _createClass(ExtendedAdapter, [{ + key: "initPlugins", + value: function initPlugins() { + paella.pluginManager.setTarget('rightBarPlugin', this); + paella.pluginManager.setTarget('tabBarPlugin', this); + } + }, { + key: "addPlugin", + value: function addPlugin(plugin) { + var thisClass = this; + plugin.checkEnabled(function (isEnabled) { + if (isEnabled) { + paella.pluginManager.setupPlugin(plugin); + + if (plugin.type == 'rightBarPlugin') { + thisClass.rightBarPlugins.push(plugin); + thisClass.addRightBarPlugin(plugin); + } + + if (plugin.type == 'tabBarPlugin') { + thisClass.tabBarPlugins.push(plugin); + thisClass.addTabPlugin(plugin); + } + } + }); + } + }, { + key: "showTab", + value: function showTab(tabIndex) { + var i = 0; + var labels = this.bottomContainer.getElementsByClassName("tabLabel"); + var contents = this.bottomContainer.getElementsByClassName("tabContent"); + + for (i = 0; i < labels.length; ++i) { + if (labels[i].getAttribute("tab") == tabIndex) { + labels[i].className = "tabLabel enabled"; + } else { + labels[i].className = "tabLabel disabled"; + } + } + + for (i = 0; i < contents.length; ++i) { + if (contents[i].getAttribute("tab") == tabIndex) { + contents[i].className = "tabContent enabled"; + } else { + contents[i].className = "tabContent disabled"; + } + } + } + }, { + key: "addTabPlugin", + value: function addTabPlugin(plugin) { + var thisClass = this; + var tabIndex = this.currentTabIndex; // Add tab + + var tabItem = document.createElement('div'); + tabItem.setAttribute("tab", tabIndex); + tabItem.className = "tabLabel disabled"; + tabItem.innerText = plugin.getTabName(); + tabItem.plugin = plugin; + $(tabItem).click(function (event) { + if (/disabled/.test(this.className)) { + thisClass.showTab(tabIndex); + this.plugin.action(this); + } + }); + $(tabItem).keyup(function (event) { + if (event.keyCode == 13) { + if (/disabledTabItem/.test(this.className)) { + thisClass.showTab(tabIndex); + this.plugin.action(this); + } + } + }); + this.bottomContainerTabs.appendChild(tabItem); // Add tab content + + var tabContent = document.createElement('div'); + tabContent.setAttribute("tab", tabIndex); + tabContent.className = "tabContent disabled " + plugin.getSubclass(); + this.bottomContainerContent.appendChild(tabContent); + plugin.buildContent(tabContent); + plugin.button = tabItem; + plugin.container = tabContent; + plugin.button.setAttribute("tabindex", 3000 + plugin.getIndex()); + plugin.button.setAttribute("alt", ""); + plugin.setToolTip(plugin.getDefaultToolTip()); // Show tab + + if (this.firstTabShown === undefined) { + this.showTab(tabIndex); + this.firstTabShown = true; + } + + ++this.currentTabIndex; + } + }, { + key: "addRightBarPlugin", + value: function addRightBarPlugin(plugin) { + var container = document.createElement('div'); + container.className = "rightBarPluginContainer " + plugin.getSubclass(); + this.rightContainer.appendChild(container); + plugin.buildContent(container); + } + }]); + + return ExtendedAdapter; + }(); + + paella.ExtendedAdapter = ExtendedAdapter; + paella.extendedAdapter = new paella.ExtendedAdapter(); +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +/* +Class ("paella.editor.EmbedPlayer", base.AsyncLoaderCallback,{ + editar:null, + + initialize:function() { + this.editor = paella.editor.instance; + }, + + load:function(onSuccess,onError) { + var barHeight = this.editor.bottomBar.getHeight() + 20; + var rightBarWidth = this.editor.rightBar.getWidth() + 20; + $(paella.player.mainContainer).css({ + 'position':'fixed', + "width":"", + "bottom":barHeight + "px", + "right":rightBarWidth + "px", + "left":"20px", + "top":"20px" + }); + paella.player.mainContainer.className = "paellaMainContainerEditorMode"; + new Timer(function(timer) { + paella.player.controls.disable(); + paella.player.onresize(); + if (onSuccess) { + onSuccess(); + } + },500); + }, + + restorePlayer:function() { + $('body')[0].appendChild(paella.player.mainContainer); + paella.player.controls.enable(); + paella.player.mainContainer.className = ""; + $(paella.player.mainContainer).css({ + 'position':'', + "width":"", + "bottom":"", + "left":"", + "right":"", + "top":"" + }); + paella.player.onresize(); + }, + + onresize:function() { + var barHeight = this.editor.bottomBar.getHeight() + 20; + var rightBarWidth = this.editor.rightBar.getWidth() + 20; + $(paella.player.mainContainer).css({ + 'position':'fixed', + "width":"", + "bottom":barHeight + "px", + "right":rightBarWidth + "px", + "left":"20px", + "top":"20px" + }); + + } +}); + +*/ + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ +/////////////////////////////////////////////////////// +// Deprecated functions/objects +// +// Will be removed in next paella version. +/////////////////////////////////////////////////////// + + +function DeprecatedClass(name, replacedBy, p) { + Class(name, p, { + initialize: function initialize() { + base.log.warning(name + " is deprecated, use " + replacedBy + " instead."); + this.parent.apply(this, arguments); + } + }); +} + +function DeprecatedFunc(name, replacedBy, func) { + function ret() { + base.log.warning(name + " is deprecated, use " + replacedBy + " instead."); + func.apply(this, arguments); + } + + return ret; +} // Pella Dictionary +/////////////////////////////////////////////////////// + + +DeprecatedClass("paella.Dictionary", "base.Dictionary", base.Dictionary); +paella.dictionary = base.dictionary; // Paella AsyncLoader +/////////////////////////////////////////////////////// + +DeprecatedClass("paella.AsyncLoaderCallback", "base.AsyncLoaderCallback", base.AsyncLoaderCallback); +DeprecatedClass("paella.AjaxCallback", "base.AjaxCallback", base.AjaxCallback); +DeprecatedClass("paella.JSONCallback", "base.JSONCallback", base.JSONCallback); +DeprecatedClass("paella.DictionaryCallback", "base.DictionaryCallback", base.DictionaryCallback); +DeprecatedClass("paella.AsyncLoader", "base.AsyncLoader", base.AsyncLoader); // Paella Timer +/////////////////////////////////////////////////////// + +DeprecatedClass("paella.Timer", "base.Timer", base.Timer); +DeprecatedClass("paella.utils.Timer", "base.Timer", base.Timer); // Paella Ajax +/////////////////////////////////////////////////////// + +paella.ajax = {}; +paella.ajax['send'] = DeprecatedFunc("paella.ajax.send", "base.ajax.send", base.ajax.send); +paella.ajax['get'] = DeprecatedFunc("paella.ajax.get", "base.ajax.get", base.ajax.get); +paella.ajax['put'] = DeprecatedFunc("paella.ajax.put", "base.ajax.put", base.ajax.put); +paella.ajax['post'] = DeprecatedFunc("paella.ajax.post", "base.ajax.post", base.ajax.post); +paella.ajax['delete'] = DeprecatedFunc("paella.ajax.delete", "base.ajax.delete", base.ajax.send); // Paella UI +/////////////////////////////////////////////////////// + +paella.ui = {}; + +paella.ui.Container = function (params) { + var elem = document.createElement('div'); + if (params.id) elem.id = params.id; + if (params.className) elem.className = params.className; + if (params.style) $(elem).css(params.style); + return elem; +}; // paella.utils +/////////////////////////////////////////////////////// + + +paella.utils.ajax = base.ajax; +paella.utils.cookies = base.cookies; +paella.utils.parameters = base.parameters; +paella.utils.require = base.require; +paella.utils.importStylesheet = base.importStylesheet; +paella.utils.language = base.dictionary.currentLanguage; +paella.utils.uuid = base.uuid; +paella.utils.userAgent = base.userAgent; // paella.debug +/////////////////////////////////////////////////////// + +paella.debug = { + log: function log(msg) { + base.log.warning("paella.debug.log is deprecated, use base.debug.[error/warning/debug/log] instead."); + base.log.log(msg); + } +}; +paella.debugReady = true; +paella.addPlugin(function () { + var FlexSkipPlugin = + /*#__PURE__*/ + function (_paella$ButtonPlugin2) { + _inherits(FlexSkipPlugin, _paella$ButtonPlugin2); + + function FlexSkipPlugin() { + _classCallCheck(this, FlexSkipPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FlexSkipPlugin).apply(this, arguments)); + } + + _createClass(FlexSkipPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'left'; + } + }, { + key: "getName", + value: function getName() { + return "edu.harvard.dce.paella.flexSkipPlugin"; + } + }, { + key: "getIndex", + value: function getIndex() { + return 121; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return 'flexSkip_Rewind_10'; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-back-10-s'; + } + }, { + key: "formatMessage", + value: function formatMessage() { + return 'Rewind 10 seconds'; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate(this.formatMessage()); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(!paella.player.isLiveStream()); + } + }, { + key: "action", + value: function action(button) { + paella.player.videoContainer.currentTime().then(function (currentTime) { + paella.player.videoContainer.seekToTime(currentTime - 10); + }); + } + }]); + + return FlexSkipPlugin; + }(paella.ButtonPlugin); + + paella.plugins.FlexSkipPlugin = FlexSkipPlugin; + return FlexSkipPlugin; +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$plugins$FlexS) { + _inherits(FlexSkipForwardPlugin, _paella$plugins$FlexS); + + function FlexSkipForwardPlugin() { + _classCallCheck(this, FlexSkipForwardPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FlexSkipForwardPlugin).apply(this, arguments)); + } + + _createClass(FlexSkipForwardPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 122; + } + }, { + key: "getName", + value: function getName() { + return "edu.harvard.dce.paella.flexSkipForwardPlugin"; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return 'flexSkip_Forward_30'; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-forward-30-s'; + } + }, { + key: "formatMessage", + value: function formatMessage() { + return 'Forward 30 seconds'; + } + }, { + key: "action", + value: function action(button) { + paella.player.videoContainer.currentTime().then(function (currentTime) { + paella.player.videoContainer.seekToTime(currentTime + 30); + }); + } + }]); + + return FlexSkipForwardPlugin; + }(paella.plugins.FlexSkipPlugin) + ); +}); +paella.addPlugin(function () { + ///////////////////////////////////////////////// + // WebVTT Parser + ///////////////////////////////////////////////// + return ( + /*#__PURE__*/ + function (_paella$CaptionParser) { + _inherits(WebVTTParserPlugin, _paella$CaptionParser); + + function WebVTTParserPlugin() { + _classCallCheck(this, WebVTTParserPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(WebVTTParserPlugin).apply(this, arguments)); + } + + _createClass(WebVTTParserPlugin, [{ + key: "getName", + value: function getName() { + return "es.teltek.paella.captions.WebVTTParserPlugin"; + } + }, { + key: "parse", + value: function parse(content, lang, next) { + var captions = []; + var self = this; + var lls = content.split("\n"); + var c; + var id = 0; + var skip = false; + + for (var idx = 0; idx < lls.length; ++idx) { + var ll = lls[idx].trim(); + + if (/^WEBVTT/.test(ll) && c === undefined || ll.length === 0) { + continue; + } + + if ((/^[0-9]+$/.test(ll) || /^[0-9]+ -/.test(ll)) && lls[idx - 1].trim().length === 0) { + continue; + } + + if (/^NOTE/.test(ll) || /^STYLE/.test(ll)) { + skip = true; + continue; + } + + if (/^(([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3} --> ([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3})/.test(ll)) { + skip = false; + + if (c != undefined) { + captions.push(c); + id++; + } + + c = { + id: id, + begin: self.parseTimeTextToSeg(ll.split("-->")[0]), + end: self.parseTimeTextToSeg(ll.split("-->")[1]) + }; + continue; + } + + if (c !== undefined && !skip) { + ll = ll.replace(/^- /, ""); + ll = ll.replace(/<[^>]*>/g, ""); + + if (c.content === undefined) { + c.content = ll; + } else { + c.content += "\n" + ll; + } + } + } + + captions.push(c); + + if (captions.length > 0) { + next(false, captions); + } else { + next(true); + } + } + }, { + key: "parseTimeTextToSeg", + value: function parseTimeTextToSeg(ttime) { + var nseg = 0; + var factor = 1; + ttime = /(([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3})/.exec(ttime); + var split = ttime[0].split(":"); + + for (var i = split.length - 1; i >= 0; i--) { + factor = Math.pow(60, split.length - 1 - i); + nseg += split[i] * factor; + } + + return nseg; + } + }, { + key: "ext", + get: function get() { + return ["vtt"]; + } + }]); + + return WebVTTParserPlugin; + }(paella.CaptionParserPlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$userTracking$) { + _inherits(xAPISaverPlugin, _paella$userTracking$); + + function xAPISaverPlugin() { + _classCallCheck(this, xAPISaverPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(xAPISaverPlugin).apply(this, arguments)); + } + + _createClass(xAPISaverPlugin, [{ + key: "getName", + value: function getName() { + return "es.teltek.paella.usertracking.xAPISaverPlugin"; + } + }, { + key: "setup", + value: function setup() { + this.endpoint = this.config.endpoint; + this.auth = this.config.auth; + this.user_info = {}; + this.paused = true; + this.played_segments = ""; + this.played_segments_segment_start = null; + this.played_segments_segment_end = null; + this.progress = 0; + this.duration = 0; + this.current_time = []; + this.completed = false; + this.volume = null; + this.speed = null; + this.language = "us-US"; + this.quality = null; + this.fullscreen = false; + this.title = "No title available"; + this.description = ""; + this.user_agent = ""; + this.total_time = 0; + this.total_time_start = 0; + this.total_time_end = 0; + this.session_id = ""; + var self = this; + + this._loadDeps().then(function () { + var conf = { + "endpoint": self.endpoint, + "auth": "Basic " + toBase64(self.auth) + }; + ADL.XAPIWrapper.changeConfig(conf); + }); + + paella.events.bind(paella.events.timeUpdate, function (event, params) { + self.current_time.push(params.currentTime); + + if (self.current_time.length >= 10) { + self.current_time = self.current_time.slice(-10); + } + + var a = Math.round(self.current_time[0]); + var b = Math.round(self.current_time[9]); + + if (params.currentTime !== 0 && a + 1 >= b && b - 1 >= a) { + self.progress = self.get_progress(params.currentTime, params.duration); + + if (self.progress >= 0.95 && self.completed === false) { + self.completed = true; + self.end_played_segment(params.currentTime); + self.start_played_segment(params.currentTime); + self.send_completed(params.currentTime, self.progress); + } + } + }); + } + }, { + key: "get_session_data", + value: function get_session_data() { + var myparams = ADL.XAPIWrapper.searchParams(); + var agent = JSON.stringify({ + "mbox": this.user_info.email + }); + var timestamp = new Date(); + timestamp.setDate(timestamp.getDate() - 1); + timestamp = timestamp.toISOString(); + myparams['activity'] = window.location.href; + myparams['verb'] = 'http://adlnet.gov/expapi/verbs/terminated'; + myparams['since'] = timestamp; + myparams['limit'] = 1; + myparams['agent'] = agent; + var ret = ADL.XAPIWrapper.getStatements(myparams); + + if (ret.statements.length === 1) { + this.played_segments = ret.statements[0].result.extensions['https://w3id.org/xapi/video/extensions/played-segments']; + this.progress = ret.statements[0].result.extensions['https://w3id.org/xapi/video/extensions/progress']; + ADL.XAPIWrapper.lrs.registration = ret.statements[0].context.registration; + } else { + ADL.XAPIWrapper.lrs.registration = ADL.ruuid(); + } + } + }, { + key: "getCookie", + value: function getCookie(cname) { + var name = cname + "="; + var decodedCookie = decodeURIComponent(document.cookie); + var ca = decodedCookie.split(';'); + + for (var i = 0; i < ca.length; i++) { + var c = ca[i]; + + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + + return ""; + } + }, { + key: "setCookie", + value: function setCookie(cname, cvalue, exdays) { + var d = new Date(); + d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); + var expires = "expires=" + d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; + } + }, { + key: "checkCookie", + value: function checkCookie() { + var user_info = this.getCookie("user_info"); + + if (user_info === "") { + user_info = JSON.stringify(generateName()); + } + + this.setCookie("user_info", user_info); + return JSON.parse(user_info); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._url = this.config.url; + this._index = this.config.index || "paellaplayer"; + this._type = this.config.type || "usertracking"; + onSuccess(true); + } + }, { + key: "_loadDeps", + value: function _loadDeps() { + return new Promise(function (resolve, reject) { + if (!window.$paella_mpd) { + require(['resources/deps/xapiwrapper.min.js'], function () { + require(['resources/deps/random_name_generator.js'], function () { + window.$paella_bg2e = true; + resolve(window.$paella_bg2e); + }); + }); + } else { + defer.resolve(window.$paella_mpd); + } + }); + } + }, { + key: "log", + value: function log(event, params) { + var p = params; + var self = this; // console.log(event) + // console.log(params) + + switch (event) { + //Retrieve initial parameters from player + case "paella:loadComplete": + this.user_agent = navigator.userAgent.toString(); + this.get_title(); + this.get_description(); + paella.player.videoContainer.duration().then(function (duration) { + return paella.player.videoContainer.streamProvider.mainAudioPlayer.volume().then(function (volume) { + return paella.player.videoContainer.getCurrentQuality().then(function (quality) { + return paella.player.auth.userData().then(function (user_info) { + self.duration = duration; + self.volume = volume; + self.speed = 1; + + if (paella.player.videoContainer.streamProvider.mainAudioPlayer.stream.language) { + self.language = paella.player.videoContainer.streamProvider.mainAudioPlayer.stream.language.replace("_", "-"); + } + + self.quality = quality.shortLabel(); + + if (user_info.email && user_info.name) { + self.user_info = user_info; + } else { + self.user_info = self.checkCookie(); + } + + self.get_session_data(); + self.send_initialized(); + }); + }); + }); + }); + + window.onbeforeunload = function (e) { + if (!self.paused) { + self.send_pause(self); + } //TODO Algunas veces se envia terminated antes que paused + + + self.send_terminated(self); // var dialogText = 'Dialog text here'; + // e.returnValue = dialogText; + // window.onbeforeunload = null; + // return dialogText; + }; + + break; + + case "paella:play": + this.send_play(self); + break; + + case "paella:pause": + this.send_pause(self); + break; + + case "paella:seektotime": + this.send_seek(self, params); + break; + //Player options + + case "paella:setVolume": + paella.player.videoContainer.currentTime().then(function (currentTime) { + var current_time = self.format_float(currentTime); + self.volume = params.master; //self.send_interacted(current_time, {"https://w3id.org/xapi/video/extensions/volume": params.master}) + + var interacted = { + "https://w3id.org/xapi/video/extensions/volume": self.format_float(params.master) + }; + self.send_interacted(current_time, interacted); + }); + break; + + case "paella:setplaybackrate": + paella.player.videoContainer.currentTime().then(function (currentTime) { + var current_time = self.format_float(currentTime); + self.speed = params.rate; + var interacted = { + "https://w3id.org/xapi/video/extensions/speed": params.rate + "x" + }; + self.send_interacted(current_time, interacted); + }); + break; + + case "paella:qualityChanged": + paella.player.videoContainer.currentTime().then(function (currentTime) { + return paella.player.videoContainer.getCurrentQuality().then(function (quality) { + self.quality = quality.shortLabel(); + var current_time = self.format_float(currentTime); + var interacted = { + "https://w3id.org/xapi/video/extensions/quality": quality.shortLabel() + }; + self.send_interacted(current_time, interacted); + }); + }); + break; + + case "paella:enterFullscreen": + case "paella:exitFullscreen": + paella.player.videoContainer.currentTime().then(function (currentTime) { + var current_time = self.format_float(currentTime); + self.fullscreen ? self.fullscreen = false : self.fullscreen = true; + var interacted = { + "https://w3id.org/xapi/video/extensions/full-screen": self.fullscreen + }; + self.send_interacted(current_time, interacted); + }); + break; + + default: + break; + } + } + }, { + key: "send", + value: function send(params) { + var agent = new ADL.XAPIStatement.Agent(this.user_info.email, this.user_info.name); + var verb = new ADL.XAPIStatement.Verb(params.verb.id, params.verb.description); + var activity = new ADL.XAPIStatement.Activity(window.location.href, this.title, this.description); + activity.definition.type = "https://w3id.org/xapi/video/activity-type/video"; + paella.player.videoContainer.streamProvider.mainAudioPlayer.volume().then(function (volume) {}); + var statement = new ADL.XAPIStatement(agent, verb, activity); + statement.result = params.result; + + if (params.verb.id === "http://adlnet.gov/expapi/verbs/initialized") { + statement.generateId(); + this.session_id = statement.id; + } + + var ce_base = { + "https://w3id.org/xapi/video/extensions/session-id": this.session_id, + "https://w3id.org/xapi/video/extensions/length": Math.floor(this.duration), + "https://w3id.org/xapi/video/extensions/user-agent": this.user_agent + }; + var ce_interactions = { + "https://w3id.org/xapi/video/extensions/volume": this.format_float(this.volume), + "https://w3id.org/xapi/video/extensions/speed": this.speed + "x", + "https://w3id.org/xapi/video/extensions/quality": this.quality, + "https://w3id.org/xapi/video/extensions/full-screen": this.fullscreen + }; + var context_extensions = {}; + + if (params.interacted) { + context_extensions = $.extend({}, ce_base, params.interacted); + } else { + context_extensions = $.extend({}, ce_base, ce_interactions); + } + + statement.context = { + "language": this.language, + "extensions": context_extensions, + "contextActivities": { + "category": [{ + "objectType": "Activity", + "id": "https://w3id.org/xapi/video" + }] + } + }; // Dispatch the statement to the LRS + + var result = ADL.XAPIWrapper.sendStatement(statement); + } + }, { + key: "send_initialized", + value: function send_initialized() { + var statement = { + "verb": { + "id": "http://adlnet.gov/expapi/verbs/initialized", + "description": "initalized" + } + }; + this.send(statement); + } + }, { + key: "send_terminated", + value: function send_terminated(self) { + paella.player.videoContainer.currentTime().then(function (end_time) { + var statement = { + "verb": { + "id": "http://adlnet.gov/expapi/verbs/terminated", + "description": "terminated" + }, + "result": { + "extensions": { + "https://w3id.org/xapi/video/extensions/time": end_time, + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + }; + self.send(statement); + }); + } + }, { + key: "send_play", + value: function send_play(self) { + this.paused = false; + this.total_time_start = new Date().getTime() / 1000; + paella.player.videoContainer.currentTime().then(function (currentTime) { + var start_time = self.format_float(currentTime); //When the video starts we force start_time to 0 + + if (start_time <= 1) { + start_time = 0; + } + + self.start_played_segment(start_time); + var statement = { + "verb": { + "id": "https://w3id.org/xapi/video/verbs/played", + "description": "played" + }, + "result": { + "extensions": { + "https://w3id.org/xapi/video/extensions/time": start_time + } + } + }; + self.send(statement); + }); + } + }, { + key: "send_pause", + value: function send_pause(self) { + this.paused = true; + this.total_time_end = new Date().getTime() / 1000; + this.total_time += this.total_time_end - this.total_time_start; + paella.player.videoContainer.currentTime().then(function (currentTime) { + //return paella.player.videoContainer.duration().then(function(duration) { + var end_time = self.format_float(currentTime); //self.progress = self.get_progress(end_time, duration) + //If a video end, the player go to the video start and raise a pause event with currentTime = 0 + + if (end_time === 0) { + end_time = self.duration; + } + + self.end_played_segment(end_time); + var statement = { + "verb": { + "id": "https://w3id.org/xapi/video/verbs/paused", + "description": "paused" + }, + "result": { + "extensions": { + "https://w3id.org/xapi/video/extensions/time": end_time, + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + }; + self.send(statement); + }); //}); + } + }, { + key: "send_seek", + value: function send_seek(self, params) { + var seekedto = this.format_float(params.newPosition); //FIXME Metodo para obtener el instante desde donde empieza el seek + + var a = this.current_time.filter(function (value) { + return value <= seekedto - 1; + }); + + if (a.length === 0) { + a = this.current_time.filter(function (value) { + return value >= seekedto + 1; + }); + } //In some cases, when you seek to the end of the video the array contains zeros at the end + + + var seekedfrom = a.filter(Number).pop(); + this.current_time = []; + this.current_time.push(seekedto); // Fin de FIXME + //If the video is paused it's not neccesary create a new segment, because the pause event already close a segment + + self.progress = self.get_progress(seekedfrom, self.duration); + + if (!this.paused) { + this.end_played_segment(seekedfrom); + this.start_played_segment(seekedto); + } //paella.player.videoContainer.duration().then(function(duration) { + //var progress = self.get_progress(seekedfrom, duration) + + + var statement = { + "verb": { + "id": "https://w3id.org/xapi/video/verbs/seeked", + "description": "seeked" + }, + "result": { + "extensions": { + "https://w3id.org/xapi/video/extensions/time-from": seekedfrom, + "https://w3id.org/xapi/video/extensions/time-to": seekedto, + // Aqui tambien deberiamos de enviar los segmentos reproducidos y el porcentaje + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + }; + self.send(statement); //}) + } + }, { + key: "send_completed", + value: function send_completed(time, progress) { + var statement = { + "verb": { + "id": "http://adlnet.gov/xapi/verbs/completed", + "description": "completed" + }, + "result": { + "completion": true, + "success": true, + "duration": "PT" + this.total_time + "S", + "extensions": { + "https://w3id.org/xapi/video/extensions/time": time, + "https://w3id.org/xapi/video/extensions/progress": progress, + "https://w3id.org/xapi/video/extensions/played-segments": this.played_segments + } + } + }; + this.send(statement); + } + }, { + key: "send_interacted", + value: function send_interacted(current_time, interacted) { + var statement = { + "verb": { + "id": "http://adlnet.gov/expapi/verbs/interacted", + "description": "interacted" + }, + "result": { + "extensions": { + "https://w3id.org/xapi/video/extensions/time": current_time + } + }, + "interacted": interacted + }; + this.send(statement); + } + }, { + key: "start_played_segment", + value: function start_played_segment(start_time) { + this.played_segments_segment_start = start_time; + } + }, { + key: "end_played_segment", + value: function end_played_segment(end_time) { + var arr; + arr = this.played_segments === "" ? [] : this.played_segments.split("[,]"); + arr.push(this.played_segments_segment_start + "[.]" + end_time); + this.played_segments = arr.join("[,]"); + this.played_segments_segment_end = end_time; //this.played_segments_segment_start = null; + } + }, { + key: "format_float", + value: function format_float(number) { + number = parseFloat(number); //Ensure that number is a float + + return parseFloat(number.toFixed(3)); + } + }, { + key: "get_title", + value: function get_title() { + if (paella.player.videoLoader.getMetadata().i18nTitle) { + this.title = paella.player.videoLoader.getMetadata().i18nTitle; + } else if (paella.player.videoLoader.getMetadata().title) { + this.title = paella.player.videoLoader.getMetadata().title; + } + } + }, { + key: "get_description", + value: function get_description() { + if (paella.player.videoLoader.getMetadata().i18nTitle) { + this.description = paella.player.videoLoader.getMetadata().i18nDescription; + } else { + this.description = paella.player.videoLoader.getMetadata().description; + } + } + }, { + key: "get_progress", + value: function get_progress(currentTime, duration) { + var arr, arr2; //get played segments array + + arr = this.played_segments === "" ? [] : this.played_segments.split("[,]"); + + if (this.played_segments_segment_start != null) { + arr.push(this.played_segments_segment_start + "[.]" + currentTime); + } + + arr2 = []; + arr.forEach(function (v, i) { + arr2[i] = v.split("[.]"); + arr2[i][0] *= 1; + arr2[i][1] *= 1; + }); //sort the array + + arr2.sort(function (a, b) { + return a[0] - b[0]; + }); //normalize the segments + + arr2.forEach(function (v, i) { + if (i > 0) { + if (arr2[i][0] < arr2[i - 1][1]) { + //overlapping segments: this segment's starting point is less than last segment's end point. + //console.log(arr2[i][0] + " < " + arr2[i-1][1] + " : " + arr2[i][0] +" = " +arr2[i-1][1] ); + arr2[i][0] = arr2[i - 1][1]; + if (arr2[i][0] > arr2[i][1]) arr2[i][1] = arr2[i][0]; + } + } + }); //calculate progress_length + + var progress_length = 0; + arr2.forEach(function (v, i) { + if (v[1] > v[0]) progress_length += v[1] - v[0]; + }); + var progress = 1 * (progress_length / duration).toFixed(2); + return progress; + } + }]); + + return xAPISaverPlugin; + }(paella.userTracking.SaverPlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl) { + _inherits(SingleStreamProfilePlugin, _paella$EventDrivenPl); + + function SingleStreamProfilePlugin() { + _classCallCheck(this, SingleStreamProfilePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(SingleStreamProfilePlugin).apply(this, arguments)); + } + + _createClass(SingleStreamProfilePlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.singleStreamProfilePlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var config = this.config; + config.videoSets.forEach(function (videoSet, index) { + var validContent = videoSet.content; + + if (validContent.length == 1) { + var streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach(function (v) { + if (validContent.indexOf(v.content) != -1) { + streamCount++; + } + }); + + if (streamCount >= 1) { + onSuccess(true); + paella.addProfile(function () { + return new Promise(function (resolve, reject) { + resolve({ + id: videoSet.id, + name: { + es: "Un stream" + }, + hidden: false, + icon: videoSet.icon, + videos: [{ + content: validContent[0], + rect: [{ + aspectRatio: "1/1", + left: 280, + top: 0, + width: 720, + height: 720 + }, { + aspectRatio: "6/5", + left: 208, + top: 0, + width: 864, + height: 720 + }, { + aspectRatio: "5/4", + left: 190, + top: 0, + width: 900, + height: 720 + }, { + aspectRatio: "4/3", + left: 160, + top: 0, + width: 960, + height: 720 + }, { + aspectRatio: "11/8", + left: 145, + top: 0, + width: 990, + height: 720 + }, { + aspectRatio: "1.41/1", + left: 132, + top: 0, + width: 1015, + height: 720 + }, { + aspectRatio: "1.43/1", + left: 125, + top: 0, + width: 1029, + height: 720 + }, { + aspectRatio: "3/2", + left: 100, + top: 0, + width: 1080, + height: 720 + }, { + aspectRatio: "16/10", + left: 64, + top: 0, + width: 1152, + height: 720 + }, { + aspectRatio: "5/3", + left: 40, + top: 0, + width: 1200, + height: 720 + }, { + aspectRatio: "16/9", + left: 0, + top: 0, + width: 1280, + height: 720 + }, { + aspectRatio: "1.85/1", + left: 0, + top: 14, + width: 1280, + height: 692 + }, { + aspectRatio: "2.35/1", + left: 0, + top: 87, + width: 1280, + height: 544 + }, { + aspectRatio: "2.41/1", + left: 0, + top: 94, + width: 1280, + height: 531 + }, { + aspectRatio: "2.76/1", + left: 0, + top: 128, + width: 1280, + height: 463 + }], + visible: true, + layer: 1 + }], + background: { + content: "slide_professor_paella.jpg", + zIndex: 5, + rect: { + left: 0, + top: 0, + width: 1280, + height: 720 + }, + visible: true, + layer: 0 + }, + logos: [{ + content: "paella_logo.png", + zIndex: 5, + rect: { + top: 10, + left: 10, + width: 49, + height: 42 + } + }], + buttons: [], + onApply: function onApply() {} + }); + }); + }); + } else { + onSuccess(false); + } + } + }); + } + }]); + + return SingleStreamProfilePlugin; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl2) { + _inherits(DualStreamProfilePlugin, _paella$EventDrivenPl2); + + function DualStreamProfilePlugin() { + _classCallCheck(this, DualStreamProfilePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(DualStreamProfilePlugin).apply(this, arguments)); + } + + _createClass(DualStreamProfilePlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.dualStreamProfilePlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var config = this.config; + config.videoSets.forEach(function (videoSet, index) { + var validContent = videoSet.content; + + if (validContent.length == 2) { + var streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach(function (v) { + if (validContent.indexOf(v.content) != -1) { + streamCount++; + } + }); + + if (streamCount >= 2) { + onSuccess(true); + paella.addProfile(function () { + return new Promise(function (resolve, reject) { + resolve({ + id: videoSet.id, + name: { + es: "Dos streams con posición dinámica" + }, + hidden: false, + icon: videoSet.icon, + videos: [{ + content: validContent[0], + rect: [{ + aspectRatio: "16/9", + left: 712, + top: 302, + width: 560, + height: 315 + }, { + aspectRatio: "16/10", + left: 712, + top: 267, + width: 560, + height: 350 + }, { + aspectRatio: "4/3", + left: 712, + top: 198, + width: 560, + height: 420 + }, { + aspectRatio: "5/3", + left: 712, + top: 281, + width: 560, + height: 336 + }, { + aspectRatio: "5/4", + left: 712, + top: 169, + width: 560, + height: 448 + }], + visible: true, + layer: 1 + }, { + content: validContent[1], + rect: [{ + aspectRatio: "16/9", + left: 10, + top: 225, + width: 695, + height: 390 + }, { + aspectRatio: "16/10", + left: 10, + top: 183, + width: 695, + height: 434 + }, { + aspectRatio: "4/3", + left: 10, + top: 96, + width: 695, + height: 521 + }, { + aspectRatio: "5/3", + left: 10, + top: 200, + width: 695, + height: 417 + }, { + aspectRatio: "5/4", + left: 10, + top: 62, + width: 695, + height: 556 + }], + visible: true, + layer: "1" + }], + background: { + content: "slide_professor_paella.jpg", + zIndex: 5, + rect: { + left: 0, + top: 0, + width: 1280, + height: 720 + }, + visible: true, + layer: 0 + }, + logos: [{ + content: "paella_logo.png", + zIndex: 5, + rect: { + top: 10, + left: 10, + width: 49, + height: 42 + } + }], + buttons: [{ + rect: { + left: 682, + top: 565, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this["switch"](); + }, + label: "Switch", + icon: "icon_rotate.svg", + layer: 2 + }, { + rect: { + left: 682, + top: 515, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this.switchMinimize(); + }, + label: "Minimize", + icon: "minimize.svg", + layer: 2 + }], + onApply: function onApply() {}, + "switch": function _switch() { + var v0 = this.videos[0].content; + var v1 = this.videos[1].content; + this.videos[0].content = v1; + this.videos[1].content = v0; + paella.profiles.placeVideos(); + }, + switchMinimize: function switchMinimize() { + if (this.minimized) { + this.minimized = false; + this.videos = [{ + content: validContent[0], + rect: [{ + aspectRatio: "16/9", + left: 712, + top: 302, + width: 560, + height: 315 + }, { + aspectRatio: "16/10", + left: 712, + top: 267, + width: 560, + height: 350 + }, { + aspectRatio: "4/3", + left: 712, + top: 198, + width: 560, + height: 420 + }, { + aspectRatio: "5/3", + left: 712, + top: 281, + width: 560, + height: 336 + }, { + aspectRatio: "5/4", + left: 712, + top: 169, + width: 560, + height: 448 + }], + visible: true, + layer: 1 + }, { + content: validContent[1], + rect: [{ + aspectRatio: "16/9", + left: 10, + top: 225, + width: 695, + height: 390 + }, { + aspectRatio: "16/10", + left: 10, + top: 183, + width: 695, + height: 434 + }, { + aspectRatio: "4/3", + left: 10, + top: 96, + width: 695, + height: 521 + }, { + aspectRatio: "5/3", + left: 10, + top: 200, + width: 695, + height: 417 + }, { + aspectRatio: "5/4", + left: 10, + top: 62, + width: 695, + height: 556 + }], + visible: true, + layer: 2 + }]; + this.buttons = [{ + rect: { + left: 682, + top: 565, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this["switch"](); + }, + label: "Switch", + icon: "icon_rotate.svg", + layer: 2 + }, { + rect: { + left: 682, + top: 515, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this.switchMinimize(); + }, + label: "Minimize", + icon: "minimize.svg", + layer: 2 + }]; + } else { + this.minimized = true; + this.videos = [{ + content: validContent[0], + rect: [{ + aspectRatio: "16/9", + left: 0, + top: 0, + width: 1280, + height: 720 + }, { + aspectRatio: "16/10", + left: 64, + top: 0, + width: 1152, + height: 720 + }, { + aspectRatio: "5/3", + left: 40, + top: 0, + width: 1200, + height: 720 + }, { + aspectRatio: "5/4", + left: 190, + top: 0, + width: 900, + height: 720 + }, { + aspectRatio: "4/3", + left: 160, + top: 0, + width: 960, + height: 720 + }], + visible: true, + layer: 1 + }, { + content: validContent[1], + rect: [{ + aspectRatio: "16/9", + left: 50, + top: 470, + width: 350, + height: 197 + }, { + aspectRatio: "16/10", + left: 50, + top: 448, + width: 350, + height: 219 + }, { + aspectRatio: "5/3", + left: 50, + top: 457, + width: 350, + height: 210 + }, { + aspectRatio: "5/4", + left: 50, + top: 387, + width: 350, + height: 280 + }, { + aspectRatio: "4/3", + left: 50, + top: 404, + width: 350, + height: 262 + }], + visible: true, + layer: 2 + }]; + this.buttons = [{ + rect: { + left: 388, + top: 465, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this["switch"](); + }, + label: "Switch", + icon: "icon_rotate.svg", + layer: 2 + }, { + rect: { + left: 388, + top: 415, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this.switchMinimize(); + }, + label: "Switch", + icon: "minimize.svg", + layer: 2 + }]; + } + + paella.profiles.placeVideos(); + } + }); + }); + }); + } else { + onSuccess(false); + } + } + }); + } + }]); + + return DualStreamProfilePlugin; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl3) { + _inherits(TripleStreamProfilePlugin, _paella$EventDrivenPl3); + + function TripleStreamProfilePlugin() { + _classCallCheck(this, TripleStreamProfilePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(TripleStreamProfilePlugin).apply(this, arguments)); + } + + _createClass(TripleStreamProfilePlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.tripleStreamProfilePlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var config = this.config; + config.videoSets.forEach(function (videoSet, index) { + var validContent = videoSet.content; + + if (validContent.length == 3) { + var streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach(function (v) { + if (validContent.indexOf(v.content) != -1) { + streamCount++; + } + }); + + if (streamCount >= 3) { + onSuccess(true); + paella.addProfile(function () { + return new Promise(function (resolve, reject) { + resolve({ + id: videoSet.id, + name: { + es: "Tres streams posición dinámica" + }, + hidden: false, + icon: videoSet.icon, + videos: [{ + content: validContent[0], + rect: [{ + aspectRatio: "16/9", + left: 239, + top: 17, + width: 803, + height: 451 + }], + visible: true, + layer: 1 + }, { + content: validContent[1], + rect: [{ + aspectRatio: "16/9", + left: 44, + top: 482, + width: 389, + height: 218 + }], + visible: true, + layer: 1 + }, { + content: validContent[2], + rect: [{ + aspectRatio: "16/9", + left: 847, + top: 482, + width: 389, + height: 218 + }], + visible: true, + layer: 1 + }], + background: { + content: "slide_professor_paella.jpg", + zIndex: 5, + rect: { + left: 0, + top: 0, + width: 1280, + height: 720 + }, + visible: true, + layer: 0 + }, + logos: [{ + content: "paella_logo.png", + zIndex: 5, + rect: { + top: 10, + left: 10, + width: 49, + height: 42 + } + }], + buttons: [{ + rect: { + left: 618, + top: 495, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this.rotate(); + }, + label: "Rotate", + icon: "icon_rotate.svg", + layer: 2 + }], + onApply: function onApply() {}, + rotate: function rotate() { + var v0 = this.videos[0].content; + var v1 = this.videos[1].content; + var v2 = this.videos[2].content; + this.videos[0].content = v2; + this.videos[1].content = v0; + this.videos[2].content = v1; + paella.profiles.placeVideos(); + } + }); + }); + }); + } else { + onSuccess(false); + } + } + }); + } + }]); + + return TripleStreamProfilePlugin; + }(paella.EventDrivenPlugin) + ); +}); +paella.addProfile(function () { + return new Promise(function (resolve, reject) { + paella.events.bind(paella.events.videoReady, function () { + var available = paella.player.videoContainer.streamProvider.videoStreams.some(function (v) { + return v.content == "blackboard"; + }); + + if (!available) { + resolve(null); + } else { + resolve({ + id: "blackboard_video_stream", + name: { + es: "Pizarra" + }, + hidden: false, + icon: "s_p_blackboard.svg", + videos: [{ + content: "presentation", + rect: [{ + aspectRatio: "16/9", + left: 10, + top: 70, + width: 432, + height: 243 + }], + visible: true, + layer: 1 + }, { + content: "blackboard", + rect: [{ + aspectRatio: "16/9", + left: 450, + top: 135, + width: 816, + height: 459 + }], + visible: true, + layer: 1 + }, { + content: "presenter", + rect: [{ + aspectRatio: "16/9", + left: 10, + top: 325, + width: 432, + height: 324 + }], + visible: true, + layer: 1 + }], + //blackBoardImages: {left:10,top:325,width:432,height:324}, + background: { + content: "slide_professor_paella.jpg", + zIndex: 5, + rect: { + left: 0, + top: 0, + width: 1280, + height: 720 + }, + visible: true, + layer: 0 + }, + logos: [{ + content: "paella_logo.png", + zIndex: 5, + rect: { + top: 10, + left: 10, + width: 49, + height: 42 + } + }], + buttons: [{ + rect: { + left: 422, + top: 295, + width: 45, + height: 45 + }, + onClick: function onClick(event) { + this.rotate(); + }, + label: "Rotate", + icon: "icon_rotate.svg", + layer: 2 + }], + rotate: function rotate() { + var v0 = this.videos[0].content; + var v1 = this.videos[1].content; + var v2 = this.videos[2].content; + this.videos[0].content = v2; + this.videos[1].content = v0; + this.videos[2].content = v1; + paella.profiles.placeVideos(); + } + }); + } + }); + }); +}); +paella.addProfile(function () { + return new Promise(function (resolve, reject) { + paella.events.bind(paella.events.videoReady, function () { + // TODO: videoContainer.sourceData is deprecated. Update this code + var n = paella.player.videoContainer.sourceData[0].sources; + + if (!n.chroma) { + resolve(null); + } else { + resolve({ + id: "chroma", + name: { + es: "Polimedia" + }, + hidden: false, + icon: "chroma.svg", + videos: [{ + content: "presenter", + rect: [{ + aspectRatio: "16/9", + left: 0, + top: 0, + width: 1280, + height: 720 + }, { + aspectRatio: "16/10", + left: 64, + top: 0, + width: 1152, + height: 720 + }, { + aspectRatio: "5/3", + left: 40, + top: 0, + width: 1200, + height: 720 + }, { + aspectRatio: "5/4", + left: 190, + top: 0, + width: 900, + height: 720 + }, { + aspectRatio: "4/3", + left: 160, + top: 0, + width: 960, + height: 720 + }], + visible: "true", + layer: "1" + }, { + content: "presentation", + rect: [{ + aspectRatio: "16/9", + left: 0, + top: 0, + width: 1280, + height: 720 + }, { + aspectRatio: "16/10", + left: 64, + top: 0, + width: 1152, + height: 720 + }, { + aspectRatio: "5/3", + left: 40, + top: 0, + width: 1200, + height: 720 + }, { + aspectRatio: "5/4", + left: 190, + top: 0, + width: 900, + height: 720 + }, { + aspectRatio: "4/3", + left: 160, + top: 0, + width: 960, + height: 720 + }], + visible: "true", + layer: "0" + }], + background: { + content: "default_background_paella.jpg", + zIndex: 5, + rect: { + left: 0, + top: 0, + width: 1280, + height: 720 + }, + visible: "true", + layer: "0" + }, + logos: [{ + content: "paella_logo.png", + zIndex: 5, + rect: { + top: 10, + left: 10, + width: 49, + height: 42 + } + }] + }); + } + }); + }); +}); +/* +paella.plugins.TrimmingTrackPlugin = Class.create(paella.editor.MainTrackPlugin,{ + trimmingTrack:null, + trimmingData:{s:0,e:0}, + + getTrackItems:function() { + if (this.trimmingTrack==null) { + this.trimmingTrack = {id:1,s:0,e:0}; + this.trimmingTrack.s = paella.player.videoContainer.trimStart(); + this.trimmingTrack.e = paella.player.videoContainer.trimEnd(); + this.trimmingData.s = this.trimmingTrack.s; + this.trimmingData.e = this.trimmingTrack.e; + } + var tracks = []; + tracks.push(this.trimmingTrack); + return tracks; + }, + + getName:function() { return "es.upv.paella.editor.trimmingTrackPlugin"; }, + + getTools:function() { + if(this.config.enableResetButton) { + return [ + {name:'reset', label:base.dictionary.translate('Reset'), hint:base.dictionary.translate('Resets the trimming bar to the default length of the video.')} + ]; + } + }, + + onToolSelected:function(toolName) { + if(this.config.enableResetButton) { + if(toolName=='reset') { + this.trimmingTrack = {id:1,s:0,e:0}; + this.trimmingTrack.s = 0; + this.trimmingTrack.e = paella.player.videoContainer.duration(true); + return true; + } + } + }, + + getTrackName:function() { + return base.dictionary.translate("Trimming"); + }, + + getColor:function() { + return 'rgb(0, 51, 107)'; + }, + + //checkEnabled:function(isEnabled) { + // isEnabled(paella.plugins.trimmingLoaderPlugin.config.enabled); + //isEnabled(paella.player.config.trimming && paella.player.config.trimming.enabled); + //}, + + onSave:function(onDone) { + paella.player.videoContainer.enableTrimming(); + paella.player.videoContainer.setTrimmingStart(this.trimmingTrack.s); + paella.player.videoContainer.setTrimmingEnd(this.trimmingTrack.e); + + this.trimmingData.s = this.trimmingTrack.s; + this.trimmingData.e = this.trimmingTrack.e; + + paella.data.write('trimming',{id:paella.initDelegate.getId()},{start:this.trimmingTrack.s,end:this.trimmingTrack.e},function(data,status) { + onDone(status); + }); + }, + + onDiscard:function(onDone) { + this.trimmingTrack.s = this.trimmingData.s; + this.trimmingTrack.e = this.trimmingData.e; + onDone(true); + }, + + allowDrag:function() { + return false; + }, + + onTrackChanged:function(id,start,end) { + //Checks if the trimming is valid (start >= 0 and end <= duration_of_the_video) + playerEnd = paella.player.videoContainer.duration(true); + start = (start < 0)? 0 : start; + end = (end > playerEnd)? playerEnd : end; + this.trimmingTrack.s = start; + this.trimmingTrack.e = end; + this.parent(id,start,end); + }, + + contextHelpString:function() { + // TODO: Implement this using the standard base.dictionary class + if (base.dictionary.currentLanguage()=="es") { + return "Utiliza la herramienta de recorte para definir el instante inicial y el instante final de la clase. Para cambiar la duración solo hay que arrastrar el inicio o el final de la pista \"Recorte\", en la linea de tiempo."; + } + else { + return "Use this tool to define the start and finish time."; + } + } +}); + +paella.plugins.trimmingTrackPlugin = new paella.plugins.TrimmingTrackPlugin(); + +*/ + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl4) { + _inherits(TrimmingLoaderPlugin, _paella$EventDrivenPl4); + + function TrimmingLoaderPlugin() { + _classCallCheck(this, TrimmingLoaderPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(TrimmingLoaderPlugin).apply(this, arguments)); + } + + _createClass(TrimmingLoaderPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.trimmingPlayerPlugin"; + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.controlBarLoaded, paella.events.showEditor, paella.events.hideEditor]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + switch (eventType) { + case paella.events.controlBarLoaded: + this.loadTrimming(); + break; + + case paella.events.showEditor: + paella.player.videoContainer.disableTrimming(); + break; + + case paella.events.hideEditor: + if (paella.player.config.trimming && paella.player.config.trimming.enabled) { + paella.player.videoContainer.enableTrimming(); + } + + break; + } + } + }, { + key: "loadTrimming", + value: function loadTrimming() { + var videoId = paella.initDelegate.getId(); + paella.data.read('trimming', { + id: videoId + }, function (data, status) { + if (data && status && data.end > 0) { + paella.player.videoContainer.enableTrimming(); + paella.player.videoContainer.setTrimming(data.start, data.end).then(function () {}); + } else { + // Check for optional trim 'start' and 'end', in seconds, in location args + var startTime = base.parameters.get('start'); + var endTime = base.parameters.get('end'); + + if (startTime && endTime) { + paella.player.videoContainer.setTrimming(startTime, endTime).then(function () { + return paella.player.videoContainer.enableTrimming(); + }); + } + } + }); + } + }]); + + return TrimmingLoaderPlugin; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin3) { + _inherits(AirPlayPlugin, _paella$ButtonPlugin3); + + function AirPlayPlugin() { + _classCallCheck(this, AirPlayPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(AirPlayPlugin).apply(this, arguments)); + } + + _createClass(AirPlayPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 552; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "AirPlayButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-airplay'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.airPlayPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._visible = false; // PIP is only available with single stream videos + + if (paella.player.videoContainer.streamProvider.videoStreams.length != 1) { + onSuccess(false); + } else { + onSuccess(window.WebKitPlaybackTargetAvailabilityEvent); + } + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Emit to AirPlay."); + } + }, { + key: "setup", + value: function setup() { + var _this127 = this; + + var video = paella.player.videoContainer.masterVideo().video; + + if (window.WebKitPlaybackTargetAvailabilityEvent) { + video.addEventListener('webkitplaybacktargetavailabilitychanged', function (event) { + switch (event.availability) { + case "available": + _this127._visible = true; + break; + + case "not-available": + _this127._visible = false; + break; + } + + _this127.updateClassName(); + }); + } + } + }, { + key: "action", + value: function action(button) { + var video = paella.player.videoContainer.masterVideo().video; + video.webkitShowPlaybackTargetPicker(); + } + }, { + key: "updateClassName", + value: function updateClassName() { + this.button.className = this.getButtonItemClass(true); + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(selected) { + return 'buttonPlugin ' + this.getSubclass() + " " + this.getAlignment() + " " + (this._visible ? "available" : "not-available"); + } + }]); + + return AirPlayPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl5) { + _inherits(ArrowSlidesNavigator, _paella$EventDrivenPl5); + + function ArrowSlidesNavigator() { + _classCallCheck(this, ArrowSlidesNavigator); + + return _possibleConstructorReturn(this, _getPrototypeOf(ArrowSlidesNavigator).apply(this, arguments)); + } + + _createClass(ArrowSlidesNavigator, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.arrowSlidesNavigatorPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + if (!paella.initDelegate.initParams.videoLoader.frameList || Object.keys(paella.initDelegate.initParams.videoLoader.frameList).length == 0 || paella.player.videoContainer.isMonostream) { + onSuccess(false); + } else { + onSuccess(true); + } + } + }, { + key: "setup", + value: function setup() { + var self = this; + this._showArrowsIn = this.config.showArrowsIn || 'slave'; + this.createOverlay(); + self._frames = []; + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var numFrames; + + if (frames) { + var framesKeys = Object.keys(frames); + numFrames = framesKeys.length; + framesKeys.map(function (i) { + return Number(i, 10); + }).sort(function (a, b) { + return a - b; + }).forEach(function (key) { + self._frames.push(frames[key]); + }); + } + } + }, { + key: "createOverlay", + value: function createOverlay() { + var self = this; + var overlayContainer = paella.player.videoContainer.overlayContainer; + + if (!this.arrows) { + this.arrows = document.createElement('div'); + this.arrows.id = "arrows"; + this.arrows.style.marginTop = "25%"; + var arrowNext = document.createElement('div'); + arrowNext.className = "buttonPlugin arrowSlideNavidator nextButton right icon-next2"; + this.arrows.appendChild(arrowNext); + var arrowPrev = document.createElement('div'); + arrowPrev.className = "buttonPlugin arrowSlideNavidator prevButton left icon-previous2"; + this.arrows.appendChild(arrowPrev); + $(arrowNext).click(function (e) { + self.goNextSlide(); + e.stopPropagation(); + }); + $(arrowPrev).click(function (e) { + self.goPrevSlide(); + e.stopPropagation(); + }); + } + + if (this.container) { + overlayContainer.removeElement(this.container); + } + + var rect = null; + var element = null; + + if (!paella.profiles.currentProfile) { + return null; + } + + this.config.content = this.config.content || ["presentation"]; + var profilesContent = []; + paella.profiles.currentProfile.videos.forEach(function (profileData) { + profilesContent.push(profileData.content); + }); // Default content, if the "content" setting is not set in the configuration file + + var selectedContent = profilesContent.length == 1 ? profilesContent[0] : profilesContent.length > 1 ? profilesContent[1] : ""; + this.config.content.some(function (preferredContent) { + if (profilesContent.indexOf(preferredContent) != -1) { + selectedContent = preferredContent; + return true; + } + }); + + if (!selectedContent) { + this.container = overlayContainer.addLayer(); + this.container.style.marginRight = "0"; + this.container.style.marginLeft = "0"; + this.arrows.style.marginTop = "25%"; + } else { + var videoIndex = 0; + paella.player.videoContainer.streamProvider.streams.forEach(function (stream, index) { + if (stream.type == "video" && selectedContent == stream.content) { + videoIndex = index; + } + }); + element = document.createElement('div'); + rect = overlayContainer.getVideoRect(videoIndex); // content + + this.container = overlayContainer.addElement(element, rect); + this.visible = rect.visible; + this.arrows.style.marginTop = "33%"; + } + + this.container.appendChild(this.arrows); + this.hideArrows(); + } + }, { + key: "getCurrentRange", + value: function getCurrentRange() { + var _this128 = this; + + return new Promise(function (resolve) { + if (_this128._frames.length < 1) { + resolve(null); + } else { + var trimming = null; + var duration = 0; + paella.player.videoContainer.duration().then(function (d) { + duration = d; + return paella.player.videoContainer.trimming(); + }).then(function (t) { + trimming = t; + return paella.player.videoContainer.currentTime(); + }).then(function (currentTime) { + if (!_this128._frames.some(function (f1, i, array) { + if (i + 1 == array.length) { + return; + } + + var f0 = i == 0 ? f1 : _this128._frames[i - 1]; + var f2 = _this128._frames[i + 1]; + var t0 = trimming.enabled ? f0.time - trimming.start : f0.time; + var t1 = trimming.enabled ? f1.time - trimming.start : f1.time; + var t2 = trimming.enabled ? f2.time - trimming.start : f2.time; + + if (t1 < currentTime && t2 > currentTime || t1 == currentTime) { + var range = { + prev: t0, + next: t2 + }; + + if (t0 < 0) { + range.prev = t1 > 0 ? t1 : 0; + } + + resolve(range); + return true; + } + })) { + var t0 = _this128._frames[_this128._frames.length - 2].time; + var t1 = _this128._frames[_this128._frames.length - 1].time; + resolve({ + prev: trimming.enabled ? t0 - trimming.start : t0, + next: trimming.enabled ? t1 - trimming.start : t1 + }); + } + }); + } + }); + } + }, { + key: "goNextSlide", + value: function goNextSlide() { + var self = this; + var trimming; + this.getCurrentRange().then(function (range) { + return paella.player.videoContainer.seekToTime(range.next); + }).then(function () { + paella.player.videoContainer.play(); + }); + } + }, { + key: "goPrevSlide", + value: function goPrevSlide() { + var self = this; + var trimming = null; + this.getCurrentRange().then(function (range) { + return paella.player.videoContainer.seekToTime(range.prev); + }).then(function () { + paella.player.videoContainer.play(); + }); + } + }, { + key: "showArrows", + value: function showArrows() { + if (this.visible) $(this.arrows).show(); + } + }, { + key: "hideArrows", + value: function hideArrows() { + $(this.arrows).hide(); + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.controlBarDidShow, paella.events.controlBarDidHide, paella.events.setComposition]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + var self = this; + + switch (eventType) { + case paella.events.controlBarDidShow: + this.showArrows(); + break; + + case paella.events.controlBarDidHide: + this.hideArrows(); + break; + + case paella.events.setComposition: + this.createOverlay(); + break; + } + } + }]); + + return ArrowSlidesNavigator; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin4) { + _inherits(AudioSelector, _paella$ButtonPlugin4); + + function AudioSelector() { + _classCallCheck(this, AudioSelector); + + return _possibleConstructorReturn(this, _getPrototypeOf(AudioSelector).apply(this, arguments)); + } + + _createClass(AudioSelector, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "audioSelector"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-headphone'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2040; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.audioSelector"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Set audio stream"); + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this129 = this; + + paella.player.videoContainer.getAudioTags().then(function (tags) { + _this129._tags = tags; + onSuccess(tags.length > 1); + }); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this130 = this; + + this._tags.forEach(function (tag) { + domElement.appendChild(_this130.getItemButton(tag)); + }); + } + }, { + key: "getItemButton", + value: function getItemButton(lang) { + var elem = document.createElement('div'); + var currentTag = paella.player.videoContainer.audioTag; + var label = lang.replace(/[-\_]/g, " "); + elem.className = this.getButtonItemClass(label, lang == currentTag); + elem.id = "audioTagSelectorItem_" + lang; + elem.innerText = label; + elem.data = lang; + $(elem).click(function (event) { + $('.videoAudioTrackItem').removeClass('selected'); + $('.videoAudioTrackItem.' + this.data).addClass('selected'); + paella.player.videoContainer.setAudioTag(this.data); + }); + return elem; + } + }, { + key: "setQualityLabel", + value: function setQualityLabel() { + var This = this; + paella.player.videoContainer.getCurrentQuality().then(function (q) { + This.setText(q.shortLabel()); + }); + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(tag, selected) { + return 'videoAudioTrackItem ' + tag + (selected ? ' selected' : ''); + } + }]); + + return AudioSelector; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl6) { + _inherits(BlackBoard2, _paella$EventDrivenPl6); + + function BlackBoard2() { + _classCallCheck(this, BlackBoard2); + + return _possibleConstructorReturn(this, _getPrototypeOf(BlackBoard2).apply(this, arguments)); + } + + _createClass(BlackBoard2, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.blackBoardPlugin"; + } + }, { + key: "getIndex", + value: function getIndex() { + return 10; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "blackBoardButton2"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("BlackBoard"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._blackBoardProfile = "s_p_blackboard2"; + this._blackBoardDIV = null; + this._hasImages = null; + this._active = false; + this._creationTimer = 500; + this._zImages = null; + this._videoLength = null; + this._keys = null; + this._currentImage = null; + this._next = null; + this._prev = null; + this._lensDIV = null; + this._lensContainer = null; + this._lensWidth = null; + this._lensHeight = null; + this._conImg = null; + this._zoom = 250; + this._currentZoom = null; + this._maxZoom = 500; + this._mousePos = null; + this._containerRect = null; + onSuccess(true); + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.setProfile, paella.events.timeUpdate]; + } + }, { + key: "onEvent", + value: function onEvent(event, params) { + var self = this; + + switch (event) { + case paella.events.setProfile: + if (params.profileName != self._blackBoardProfile) { + if (self._active) { + self.destroyOverlay(); + self._active = false; + } + + break; + } else { + if (!self._hasImages) { + paella.player.setProfile("slide_professor"); + } + + if (self._hasImages && !self._active) { + self.createOverlay(); + self._active = true; + } + } + + break; + + case paella.events.timeUpdate: + if (self._active && self._hasImages) { + paella.player.videoContainer.trimming().then(function (trimmingData) { + if (trimmingData.enabled) { + params.currentTime += trimmingData.start; + } + + self.imageUpdate(event, params); + }); + } + + break; + } + } + }, { + key: "setup", + value: function setup() { + var self = this; + var n = paella.player.videoContainer.sourceData[0].sources; + + if (n.hasOwnProperty("image")) { + self._hasImages = true; // BRING THE IMAGE ARRAY TO LOCAL + + self._zImages = {}; + self._zImages = paella.player.videoContainer.sourceData[0].sources.image[0].frames; // COPY TO LOCAL + + self._videoLength = paella.player.videoContainer.sourceData[0].sources.image[0].duration; // video duration in frames + // SORT KEYS FOR SEARCH CLOSEST + + self._keys = Object.keys(self._zImages); + self._keys = self._keys.sort(function (a, b) { + a = a.slice(6); + b = b.slice(6); + return parseInt(a) - parseInt(b); + }); + } else { + self._hasImages = false; + + if (paella.player.selectedProfile == self._blackBoardProfile) { + var defaultprofile = paella.player.config.defaultProfile; + paella.player.setProfile(defaultprofile); + } + } //NEXT + + + this._next = 0; + this._prev = 0; + + if (paella.player.selectedProfile == self._blackBoardProfile) { + self.createOverlay(); + self._active = true; + } + + self._mousePos = {}; + paella.Profiles.loadProfile(self._blackBoardProfile, function (profileData) { + self._containerRect = profileData.blackBoardImages; + }); + } + }, { + key: "createLens", + value: function createLens() { + var self = this; + + if (self._currentZoom == null) { + self._currentZoom = self._zoom; + } + + var lens = document.createElement("div"); + lens.className = "lensClass"; + self._lensDIV = lens; + var p = $('.conImg').offset(); + var width = $('.conImg').width(); + var height = $('.conImg').height(); + lens.style.width = width / (self._currentZoom / 100) + "px"; + lens.style.height = height / (self._currentZoom / 100) + "px"; + self._lensWidth = parseInt(lens.style.width); + self._lensHeight = parseInt(lens.style.height); + $(self._lensContainer).append(lens); + $(self._lensContainer).mousemove(function (event) { + var mouseX = event.pageX - p.left; + var mouseY = event.pageY - p.top; + self._mousePos.x = mouseX; + self._mousePos.y = mouseY; + var lensTop = mouseY - self._lensHeight / 2; + lensTop = lensTop < 0 ? 0 : lensTop; + lensTop = lensTop > height - self._lensHeight ? height - self._lensHeight : lensTop; + var lensLeft = mouseX - self._lensWidth / 2; + lensLeft = lensLeft < 0 ? 0 : lensLeft; + lensLeft = lensLeft > width - self._lensWidth ? width - self._lensWidth : lensLeft; + self._lensDIV.style.left = lensLeft + "px"; + self._lensDIV.style.top = lensTop + "px"; + + if (self._currentZoom != 100) { + var x = lensLeft * 100 / (width - self._lensWidth); + var y = lensTop * 100 / (height - self._lensHeight); + self._blackBoardDIV.style.backgroundPosition = x.toString() + '% ' + y.toString() + '%'; + } else if (self._currentZoom == 100) { + var xRelative = mouseX * 100 / width; + var yRelative = mouseY * 100 / height; + self._blackBoardDIV.style.backgroundPosition = xRelative.toString() + '% ' + yRelative.toString() + '%'; + } + + self._blackBoardDIV.style.backgroundSize = self._currentZoom + '%'; + }); + $(self._lensContainer).bind('wheel mousewheel', function (e) { + var delta; + + if (e.originalEvent.wheelDelta !== undefined) { + delta = e.originalEvent.wheelDelta; + } else { + delta = e.originalEvent.deltaY * -1; + } + + if (delta > 0 && self._currentZoom < self._maxZoom) { + self.reBuildLens(10); + } else if (self._currentZoom > 100) { + self.reBuildLens(-10); + } else if (self._currentZoom == 100) { + self._lensDIV.style.left = 0 + "px"; + self._lensDIV.style.top = 0 + "px"; + } + + self._blackBoardDIV.style.backgroundSize = self._currentZoom + "%"; + }); + } + }, { + key: "reBuildLens", + value: function reBuildLens(zoomValue) { + var self = this; + self._currentZoom += zoomValue; + var p = $('.conImg').offset(); + var width = $('.conImg').width(); + var height = $('.conImg').height(); + self._lensDIV.style.width = width / (self._currentZoom / 100) + "px"; + self._lensDIV.style.height = height / (self._currentZoom / 100) + "px"; + self._lensWidth = parseInt(self._lensDIV.style.width); + self._lensHeight = parseInt(self._lensDIV.style.height); + + if (self._currentZoom != 100) { + var mouseX = self._mousePos.x; + var mouseY = self._mousePos.y; + var lensTop = mouseY - self._lensHeight / 2; + lensTop = lensTop < 0 ? 0 : lensTop; + lensTop = lensTop > height - self._lensHeight ? height - self._lensHeight : lensTop; + var lensLeft = mouseX - self._lensWidth / 2; + lensLeft = lensLeft < 0 ? 0 : lensLeft; + lensLeft = lensLeft > width - self._lensWidth ? width - self._lensWidth : lensLeft; + self._lensDIV.style.left = lensLeft + "px"; + self._lensDIV.style.top = lensTop + "px"; + var x = lensLeft * 100 / (width - self._lensWidth); + var y = lensTop * 100 / (height - self._lensHeight); + self._blackBoardDIV.style.backgroundPosition = x.toString() + '% ' + y.toString() + '%'; + } + } + }, { + key: "destroyLens", + value: function destroyLens() { + var self = this; + + if (self._lensDIV) { + $(self._lensDIV).remove(); + self._blackBoardDIV.style.backgroundSize = 100 + '%'; + self._blackBoardDIV.style.opacity = 0; + } //self._currentZoom = self._zoom; + + } + }, { + key: "createOverlay", + value: function createOverlay() { + var self = this; + var blackBoardDiv = document.createElement("div"); + blackBoardDiv.className = "blackBoardDiv"; + self._blackBoardDIV = blackBoardDiv; + self._blackBoardDIV.style.opacity = 0; + var lensContainer = document.createElement("div"); + lensContainer.className = "lensContainer"; + self._lensContainer = lensContainer; + var conImg = document.createElement("img"); + conImg.className = "conImg"; + self._conImg = conImg; + + if (self._currentImage) { + self._conImg.src = self._currentImage; + $(self._blackBoardDIV).css('background-image', 'url(' + self._currentImage + ')'); + } + + $(lensContainer).append(conImg); + $(self._lensContainer).mouseenter(function () { + self.createLens(); + self._blackBoardDIV.style.opacity = 1.0; + }); + $(self._lensContainer).mouseleave(function () { + self.destroyLens(); + }); + setTimeout(function () { + // TIMER FOR NICE VIEW + var overlayContainer = paella.player.videoContainer.overlayContainer; + overlayContainer.addElement(blackBoardDiv, overlayContainer.getVideoRect(0)); + overlayContainer.addElement(lensContainer, self._containerRect); + }, self._creationTimer); + } + }, { + key: "destroyOverlay", + value: function destroyOverlay() { + var self = this; + + if (self._blackBoardDIV) { + $(self._blackBoardDIV).remove(); + } + + if (self._lensContainer) { + $(self._lensContainer).remove(); + } + } + }, { + key: "imageUpdate", + value: function imageUpdate(event, params) { + var self = this; + var sec = Math.round(params.currentTime); + var src = $(self._blackBoardDIV).css('background-image'); + + if ($(self._blackBoardDIV).length > 0) { + if (self._zImages.hasOwnProperty("frame_" + sec)) { + // SWAP IMAGES WHEN PLAYING + if (src == self._zImages["frame_" + sec]) { + return; + } else { + src = self._zImages["frame_" + sec]; + } + } else if (sec > self._next || sec < self._prev) { + src = self.returnSrc(sec); + } // RELOAD IF OUT OF INTERVAL + else { + return; + } //PRELOAD NEXT IMAGE + + + var image = new Image(); + + image.onload = function () { + $(self._blackBoardDIV).css('background-image', 'url(' + src + ')'); // UPDATING IMAGE + }; + + image.src = src; + self._currentImage = src; + self._conImg.src = self._currentImage; + } + } + }, { + key: "returnSrc", + value: function returnSrc(sec) { + var prev = 0; + + for (var i = 0; i < this._keys.length; i++) { + var id = parseInt(this._keys[i].slice(6)); + var lastId = parseInt(this._keys[this._keys.length - 1].slice(6)); + + if (sec < id) { + // PREVIOUS IMAGE + this._next = id; + this._prev = prev; + this._imageNumber = i - 1; + return this._zImages["frame_" + prev]; // return previous and keep next change + } else if (sec > lastId && sec < this._videoLength) { + // LAST INTERVAL + this._next = this._videoLength; + this._prev = lastId; + return this._zImages["frame_" + prev]; + } else { + prev = id; + } + } + } + }]); + + return BlackBoard2; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl7) { + _inherits(BreaksPlayerPlugin, _paella$EventDrivenPl7); + + function BreaksPlayerPlugin() { + _classCallCheck(this, BreaksPlayerPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(BreaksPlayerPlugin).apply(this, arguments)); + } + + _createClass(BreaksPlayerPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.breaksPlayerPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + var _this131 = this; + + this.breaks = []; + this.status = false; + this.lastTime = 0; + paella.data.read('breaks', { + id: paella.player.videoIdentifier + }, function (data) { + if (data && _typeof(data) == 'object' && data.breaks && data.breaks.length > 0) { + _this131.breaks = data.breaks; + } + }); + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.timeUpdate]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + var _this132 = this; + + paella.player.videoContainer.currentTime(true).then(function (currentTime) { + // The event type checking must to be done using the time difference, because + // the timeUpdate event may arrive before the seekToTime event + var diff = Math.abs(currentTime - _this132.lastTime); + + _this132.checkBreaks(currentTime, diff >= 1 ? paella.events.seekToTime : paella.events.timeUpdate); + + _this132.lastTime = currentTime; + }); + } + }, { + key: "checkBreaks", + value: function checkBreaks(currentTime, eventType) { + var _this133 = this; + + var breakMessage = ""; + + if (this.breaks.some(function (breakItem) { + if (breakItem.s <= currentTime && breakItem.e >= currentTime) { + if (eventType == paella.events.timeUpdate && !_this133.status) { + _this133.skipTo(breakItem.e); + } + + breakMessage = breakItem.text; + return true; + } + })) { + this.showMessage(breakMessage); + this.status = true; + } else { + this.hideMessage(); + this.status = false; + } + } + }, { + key: "skipTo", + value: function skipTo(time) { + paella.player.videoContainer.trimming().then(function (trimming) { + if (trimming.enabled) { + paella.player.videoContainer.seekToTime(time + trimming.start); + } else { + paella.player.videoContainer.seekToTime(time); + } + }); + } + }, { + key: "showMessage", + value: function showMessage(text) { + if (this.currentText != text) { + if (this.messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this.messageContainer); + } + + var rect = { + left: 100, + top: 350, + width: 1080, + height: 40 + }; + this.currentText = text; + this.messageContainer = paella.player.videoContainer.overlayContainer.addText(paella.dictionary.translate(text), rect); + this.messageContainer.className = 'textBreak'; + this.currentText = text; + } + } + }, { + key: "hideMessage", + value: function hideMessage() { + if (this.messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this.messageContainer); + this.messageContainer = null; + } + + this.currentText = ""; + } + }]); + + return BreaksPlayerPlugin; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + ///////////////////////////////////////////////// + // DFXP Parser + ///////////////////////////////////////////////// + return ( + /*#__PURE__*/ + function (_paella$CaptionParser2) { + _inherits(DFXPParserPlugin, _paella$CaptionParser2); + + function DFXPParserPlugin() { + _classCallCheck(this, DFXPParserPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(DFXPParserPlugin).apply(this, arguments)); + } + + _createClass(DFXPParserPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.captions.DFXPParserPlugin"; + } + }, { + key: "parse", + value: function parse(content, lang, next) { + var captions = []; + var self = this; + var xml = $(content); + var g_lang = xml.attr("xml:lang"); + var lls = xml.find("div"); + + for (var idx = 0; idx < lls.length; ++idx) { + var ll = $(lls[idx]); + var l_lang = ll.attr("xml:lang"); + + if (l_lang == undefined || l_lang == "") { + if (g_lang == undefined || g_lang == "") { + base.log.debug("No xml:lang found! Using '" + lang + "' lang instead."); + l_lang = lang; + } else { + l_lang = g_lang; + } + } // + + + if (l_lang == lang) { + ll.find("p").each(function (i, cap) { + var c = { + id: i, + begin: self.parseTimeTextToSeg(cap.getAttribute("begin")), + end: self.parseTimeTextToSeg(cap.getAttribute("end")), + content: $(cap).text().trim() + }; + captions.push(c); + }); + break; + } + } + + if (captions.length > 0) { + next(false, captions); + } else { + next(true); + } + } + }, { + key: "parseTimeTextToSeg", + value: function parseTimeTextToSeg(ttime) { + var nseg = 0; + var segtime = /^([0-9]*([.,][0-9]*)?)s/.test(ttime); + + if (segtime) { + nseg = parseFloat(RegExp.$1); + } else { + var split = ttime.split(":"); + var h = parseInt(split[0]); + var m = parseInt(split[1]); + var s = parseInt(split[2]); + nseg = s + m * 60 + h * 60 * 60; + } + + return nseg; + } + }, { + key: "ext", + get: function get() { + return ["dfxp"]; + } + }]); + + return DFXPParserPlugin; + }(paella.CaptionParserPlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin5) { + _inherits(CaptionsPlugin, _paella$ButtonPlugin5); + + function CaptionsPlugin() { + _classCallCheck(this, CaptionsPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(CaptionsPlugin).apply(this, arguments)); + } + + _createClass(CaptionsPlugin, [{ + key: "getInstanceName", + value: function getInstanceName() { + return "captionsPlugin"; + } // plugin instance will be available in paella.plugins.captionsPlugin + + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return 'captionsPluginButton'; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-captions'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.captionsPlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Subtitles"); + } + }, { + key: "getIndex", + value: function getIndex() { + return 509; + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return false; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._searchTimerTime = 1500; + this._searchTimer = null; + this._pluginButton = null; + this._open = 0; // 0 closed, 1 st clic; + + this._parent = null; + this._body = null; + this._inner = null; + this._bar = null; + this._input = null; + this._select = null; + this._editor = null; + this._activeCaptions = null; + this._lastSel = null; + this._browserLang = null; + this._defaultBodyHeight = 280; + this._autoScroll = true; + this._searchOnCaptions = null; + onSuccess(true); + } + }, { + key: "showUI", + value: function showUI() { + if (paella.captions.getAvailableLangs().length >= 1) { + _get(_getPrototypeOf(CaptionsPlugin.prototype), "showUI", this).call(this); + } + } + }, { + key: "setup", + value: function setup() { + var self = this; // HIDE UI IF NO Captions + + if (!paella.captions.getAvailableLangs().length) { + paella.plugins.captionsPlugin.hideUI(); + } //BINDS + + + paella.events.bind(paella.events.captionsEnabled, function (event, params) { + self.onChangeSelection(params); + }); + paella.events.bind(paella.events.captionsDisabled, function (event, params) { + self.onChangeSelection(params); + }); + paella.events.bind(paella.events.captionAdded, function (event, params) { + self.onCaptionAdded(params); + paella.plugins.captionsPlugin.showUI(); + }); + paella.events.bind(paella.events.timeUpdate, function (event, params) { + if (self._searchOnCaptions) { + self.updateCaptionHiglighted(params); + } + }); + paella.events.bind(paella.events.controlBarWillHide, function (evt) { + self.cancelHideBar(); + }); + self._activeCaptions = paella.captions.getActiveCaptions(); + self._searchOnCaptions = self.config.searchOnCaptions || false; + } + }, { + key: "cancelHideBar", + value: function cancelHideBar() { + var thisClass = this; + + if (thisClass._open > 0) { + paella.player.controls.cancelHideBar(); + } + } + }, { + key: "updateCaptionHiglighted", + value: function updateCaptionHiglighted(time) { + var thisClass = this; + var sel = null; + var id = null; + + if (time) { + paella.player.videoContainer.trimming().then(function (trimming) { + var offset = trimming.enabled ? trimming.start : 0; + var c = paella.captions.getActiveCaptions(); + var caption = c && c.getCaptionAtTime(time.currentTime + offset); + var id = caption && caption.id; + + if (id != null) { + sel = $(".bodyInnerContainer[sec-id='" + id + "']"); + + if (sel != thisClass._lasSel) { + $(thisClass._lasSel).removeClass("Highlight"); + } + + if (sel) { + $(sel).addClass("Highlight"); + + if (thisClass._autoScroll) { + thisClass.updateScrollFocus(id); + } + + thisClass._lasSel = sel; + } + } + }); + } + } + }, { + key: "updateScrollFocus", + value: function updateScrollFocus(id) { + var thisClass = this; + var resul = 0; + var t = $(".bodyInnerContainer").slice(0, id); + t = t.toArray(); + t.forEach(function (l) { + var i = $(l).outerHeight(true); + resul += i; + }); + var x = parseInt(resul / 280); + $(".captionsBody").scrollTop(x * thisClass._defaultBodyHeight); + } + }, { + key: "onCaptionAdded", + value: function onCaptionAdded(obj) { + var thisClass = this; + var newCap = paella.captions.getCaptions(obj); + var defOption = document.createElement("option"); // NO ONE SELECT + + defOption.text = newCap._lang.txt; + defOption.value = obj; + + thisClass._select.add(defOption); + } + }, { + key: "changeSelection", + value: function changeSelection() { + var thisClass = this; + var sel = $(thisClass._select).val(); + + if (sel == "") { + $(thisClass._body).empty(); + paella.captions.setActiveCaptions(sel); + return; + } // BREAK IF NO ONE SELECTED + + + paella.captions.setActiveCaptions(sel); + thisClass._activeCaptions = sel; + + if (thisClass._searchOnCaptions) { + thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions, "list"); + } + + thisClass.setButtonHideShow(); + } + }, { + key: "onChangeSelection", + value: function onChangeSelection(obj) { + var thisClass = this; + + if (thisClass._activeCaptions != obj) { + $(thisClass._body).empty(); + + if (obj == undefined) { + thisClass._select.value = ""; + $(thisClass._input).prop('disabled', true); + } else { + $(thisClass._input).prop('disabled', false); + thisClass._select.value = obj; + + if (thisClass._searchOnCaptions) { + thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions, "list"); + } + } + + thisClass._activeCaptions = obj; + thisClass.setButtonHideShow(); + } + } + }, { + key: "action", + value: function action() { + var self = this; + self._browserLang = base.dictionary.currentLanguage(); + self._autoScroll = true; + + switch (self._open) { + case 0: + if (self._browserLang && paella.captions.getActiveCaptions() == undefined) { + self.selectDefaultBrowserLang(self._browserLang); + } + + self._open = 1; + paella.keyManager.enabled = false; + break; + + case 1: + paella.keyManager.enabled = true; + self._open = 0; + break; + } + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var thisClass = this; //captions CONTAINER + + thisClass._parent = document.createElement('div'); + thisClass._parent.className = 'captionsPluginContainer'; //captions BAR + + thisClass._bar = document.createElement('div'); + thisClass._bar.className = 'captionsBar'; //captions BODY + + if (thisClass._searchOnCaptions) { + thisClass._body = document.createElement('div'); + thisClass._body.className = 'captionsBody'; + + thisClass._parent.appendChild(thisClass._body); //BODY JQUERY + + + $(thisClass._body).scroll(function () { + thisClass._autoScroll = false; + }); //INPUT + + thisClass._input = document.createElement("input"); + thisClass._input.className = "captionsBarInput"; + thisClass._input.type = "text"; + thisClass._input.id = "captionsBarInput"; + thisClass._input.name = "captionsString"; + thisClass._input.placeholder = base.dictionary.translate("Search captions"); + + thisClass._bar.appendChild(thisClass._input); //INPUT jQuery + + + $(thisClass._input).change(function () { + var text = $(thisClass._input).val(); + thisClass.doSearch(text); + }); + $(thisClass._input).keyup(function () { + var text = $(thisClass._input).val(); + + if (thisClass._searchTimer != null) { + thisClass._searchTimer.cancel(); + } + + thisClass._searchTimer = new base.Timer(function (timer) { + thisClass.doSearch(text); + }, thisClass._searchTimerTime); + }); + } //SELECT + + + thisClass._select = document.createElement("select"); + thisClass._select.className = "captionsSelector"; + var defOption = document.createElement("option"); // NO ONE SELECT + + defOption.text = base.dictionary.translate("None"); + defOption.value = ""; + + thisClass._select.add(defOption); + + paella.captions.getAvailableLangs().forEach(function (l) { + var option = document.createElement("option"); + option.text = l.lang.txt; + option.value = l.id; + + thisClass._select.add(option); + }); + + thisClass._bar.appendChild(thisClass._select); + + thisClass._parent.appendChild(thisClass._bar); //jQuery SELECT + + + $(thisClass._select).change(function () { + thisClass.changeSelection(); + }); //BUTTON EDITOR + + thisClass._editor = document.createElement("button"); + thisClass._editor.className = "editorButton"; + thisClass._editor.innerText = ""; + + thisClass._bar.appendChild(thisClass._editor); //BUTTON jQuery + + + $(thisClass._editor).prop("disabled", true); + $(thisClass._editor).click(function () { + var c = paella.captions.getActiveCaptions(); + paella.userTracking.log("paella:caption:edit", { + id: c._captionsProvider + ':' + c._id, + lang: c._lang + }); + c.goToEdit(); + }); + domElement.appendChild(thisClass._parent); + } + }, { + key: "selectDefaultBrowserLang", + value: function selectDefaultBrowserLang(code) { + var thisClass = this; + var provider = null; + paella.captions.getAvailableLangs().forEach(function (l) { + if (l.lang.code == code) { + provider = l.id; + } + }); + + if (provider) { + paella.captions.setActiveCaptions(provider); + } + /* + else{ + $(thisClass._input).prop("disabled",true); + } + */ + + } + }, { + key: "doSearch", + value: function doSearch(text) { + var thisClass = this; + var c = paella.captions.getActiveCaptions(); + + if (c) { + if (text == "") { + thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions, "list"); + } else { + c.search(text, function (err, resul) { + if (!err) { + thisClass.buildBodyContent(resul, "search"); + } + }); + } + } + } + }, { + key: "setButtonHideShow", + value: function setButtonHideShow() { + var thisClass = this; + var editor = $('.editorButton'); + var c = paella.captions.getActiveCaptions(); + var res = null; + + if (c != null) { + $(thisClass._select).width('39%'); + c.canEdit(function (err, r) { + res = r; + }); + + if (res) { + $(editor).prop("disabled", false); + $(editor).show(); + } else { + $(editor).prop("disabled", true); + $(editor).hide(); + $(thisClass._select).width('47%'); + } + } else { + $(editor).prop("disabled", true); + $(editor).hide(); + $(thisClass._select).width('47%'); + } + + if (!thisClass._searchOnCaptions) { + if (res) { + $(thisClass._select).width('92%'); + } else { + $(thisClass._select).width('100%'); + } + } + } + }, { + key: "buildBodyContent", + value: function buildBodyContent(obj, type) { + var _this134 = this; + + paella.player.videoContainer.trimming().then(function (trimming) { + var thisClass = _this134; + $(thisClass._body).empty(); + obj.forEach(function (l) { + if (trimming.enabled && (l.end < trimming.start || l.begin > trimming.end)) { + return; + } + + thisClass._inner = document.createElement('div'); + thisClass._inner.className = 'bodyInnerContainer'; + thisClass._inner.innerText = l.content; + + if (type == "list") { + thisClass._inner.setAttribute('sec-begin', l.begin); + + thisClass._inner.setAttribute('sec-end', l.end); + + thisClass._inner.setAttribute('sec-id', l.id); + + thisClass._autoScroll = true; + } + + if (type == "search") { + thisClass._inner.setAttribute('sec-begin', l.time); + } + + thisClass._body.appendChild(thisClass._inner); //JQUERY + + + $(thisClass._inner).hover(function () { + $(this).css('background-color', 'rgba(250, 161, 102, 0.5)'); + }, function () { + $(this).removeAttr('style'); + }); + $(thisClass._inner).click(function () { + var secBegin = $(this).attr("sec-begin"); + paella.player.videoContainer.trimming().then(function (trimming) { + var offset = trimming.enabled ? trimming.start : 0; + paella.player.videoContainer.seekToTime(secBegin - offset + 0.1); + }); + }); + }); + }); + } + }]); + + return CaptionsPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl8) { + _inherits(CaptionsOnScreen, _paella$EventDrivenPl8); + + function CaptionsOnScreen() { + _classCallCheck(this, CaptionsOnScreen); + + return _possibleConstructorReturn(this, _getPrototypeOf(CaptionsOnScreen).apply(this, arguments)); + } + + _createClass(CaptionsOnScreen, [{ + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this.containerId = 'paella_plugin_CaptionsOnScreen'; + this.container = null; + this.innerContainer = null; + this.top = null; + this.actualPos = null; + this.lastEvent = null; + this.controlsPlayback = null; + this.captions = false; + this.captionProvider = null; + onSuccess(!paella.player.isLiveStream()); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.controlBarDidHide, paella.events.resize, paella.events.controlBarDidShow, paella.events.captionsEnabled, paella.events.captionsDisabled, paella.events.timeUpdate]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + var thisClass = this; + + switch (eventType) { + case paella.events.controlBarDidHide: + if (thisClass.lastEvent == eventType || thisClass.captions == false) break; + thisClass.moveCaptionsOverlay("down"); + break; + + case paella.events.resize: + if (thisClass.captions == false) break; + + if (paella.player.controls.isHidden()) { + thisClass.moveCaptionsOverlay("down"); + } else { + thisClass.moveCaptionsOverlay("top"); + } + + break; + + case paella.events.controlBarDidShow: + if (thisClass.lastEvent == eventType || thisClass.captions == false) break; + thisClass.moveCaptionsOverlay("top"); + break; + + case paella.events.captionsEnabled: + thisClass.buildContent(params); + thisClass.captions = true; + + if (paella.player.controls.isHidden()) { + thisClass.moveCaptionsOverlay("down"); + } else { + thisClass.moveCaptionsOverlay("top"); + } + + break; + + case paella.events.captionsDisabled: + thisClass.hideContent(); + thisClass.captions = false; + break; + + case paella.events.timeUpdate: + if (thisClass.captions) { + thisClass.updateCaptions(params); + } + + break; + } + + thisClass.lastEvent = eventType; + } + }, { + key: "buildContent", + value: function buildContent(provider) { + var thisClass = this; + thisClass.captionProvider = provider; + + if (thisClass.container == null) { + // PARENT + thisClass.container = document.createElement('div'); + thisClass.container.className = "CaptionsOnScreen"; + thisClass.container.id = thisClass.containerId; + thisClass.innerContainer = document.createElement('div'); + thisClass.innerContainer.className = "CaptionsOnScreenInner"; + thisClass.container.appendChild(thisClass.innerContainer); + if (thisClass.controlsPlayback == null) thisClass.controlsPlayback = $('#playerContainer_controls_playback'); + paella.player.videoContainer.domElement.appendChild(thisClass.container); + } else { + $(thisClass.container).show(); + } + } + }, { + key: "updateCaptions", + value: function updateCaptions(time) { + var _this135 = this; + + if (this.captions) { + paella.player.videoContainer.trimming().then(function (trimming) { + var offset = trimming.enabled ? trimming.start : 0; + var c = paella.captions.getActiveCaptions(); + var caption = c.getCaptionAtTime(time.currentTime + offset); + + if (caption) { + $(_this135.container).show(); + _this135.innerContainer.innerText = caption.content; + + _this135.moveCaptionsOverlay("auto"); + } else { + _this135.innerContainer.innerText = ""; + + _this135.hideContent(); + } + }); + } + } + }, { + key: "hideContent", + value: function hideContent() { + var thisClass = this; + $(thisClass.container).hide(); + } + }, { + key: "moveCaptionsOverlay", + value: function moveCaptionsOverlay(pos) { + var thisClass = this; + var marginbottom = 10; + if (thisClass.controlsPlayback == null) thisClass.controlsPlayback = $('#playerContainer_controls_playback'); + + if (pos == "auto" || pos == undefined) { + pos = paella.player.controls.isHidden() ? "down" : "top"; + } + + if (pos == "down") { + var t = thisClass.container.offsetHeight; + t -= thisClass.innerContainer.offsetHeight + marginbottom; + thisClass.innerContainer.style.bottom = 0 - t + "px"; + } + + if (pos == "top") { + var t2 = thisClass.controlsPlayback.offset().top; + t2 -= thisClass.innerContainer.offsetHeight + marginbottom; + thisClass.innerContainer.style.bottom = 0 - t2 + "px"; + } + } + }, { + key: "getIndex", + value: function getIndex() { + return 1050; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.overlayCaptionsPlugin"; + } + }]); + + return CaptionsOnScreen; + }(paella.EventDrivenPlugin) + ); +}); + +(function () { + function buildChromaVideoCanvas(stream, canvas) { + var ChromaVideoCanvas = + /*#__PURE__*/ + function (_bg$app$WindowControl3) { + _inherits(ChromaVideoCanvas, _bg$app$WindowControl3); + + function ChromaVideoCanvas(stream) { + var _this136; + + _classCallCheck(this, ChromaVideoCanvas); + + _this136 = _possibleConstructorReturn(this, _getPrototypeOf(ChromaVideoCanvas).call(this)); + _this136.stream = stream; + _this136._chroma = bg.Color.White(); + _this136._crop = new bg.Vector4(0.3, 0.01, 0.3, 0.01); + _this136._transform = bg.Matrix4.Identity().translate(0.6, -0.04, 0); + _this136._bias = 0.01; + return _this136; + } + + _createClass(ChromaVideoCanvas, [{ + key: "loaded", + value: function loaded() { + var _this137 = this; + + return new Promise(function (resolve) { + var checkLoaded = function checkLoaded() { + if (_this137.video) { + resolve(_this137); + } else { + setTimeout(checkLoaded, 100); + } + }; + + checkLoaded(); + }); + } + }, { + key: "buildShape", + value: function buildShape() { + this.plist = new bg.base.PolyList(this.gl); + this.plist.vertex = [-1, -1, 0, 1, -1, 0, 1, 1, 0, -1, 1, 0]; + this.plist.texCoord0 = [0, 0, 1, 0, 1, 1, 0, 1]; + this.plist.index = [0, 1, 2, 2, 3, 0]; + this.plist.build(); + } + }, { + key: "buildShader", + value: function buildShader() { + var vshader = "\n\t\t\t\t\t\tattribute vec4 position;\n\t\t\t\t\t\tattribute vec2 texCoord;\n\t\t\t\t\t\tuniform mat4 inTransform;\n\t\t\t\t\t\tvarying vec2 vTexCoord;\n\t\t\t\t\t\tvoid main() {\n\t\t\t\t\t\t\tgl_Position = inTransform * position;\n\t\t\t\t\t\t\tvTexCoord = texCoord;\n\t\t\t\t\t\t}\n\t\t\t\t\t"; + var fshader = "\n\t\t\t\t\t\tprecision mediump float;\n\t\t\t\t\t\tvarying vec2 vTexCoord;\n\t\t\t\t\t\tuniform sampler2D inTexture;\n\t\t\t\t\t\tuniform vec4 inChroma;\n\t\t\t\t\t\tuniform float inBias;\n\t\t\t\t\t\tuniform vec4 inCrop;\n\t\t\t\t\t\tvoid main() {\n\t\t\t\t\t\t\tvec4 result = texture2D(inTexture,vTexCoord);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif ((result.r>=inChroma.r-inBias && result.r<=inChroma.r+inBias &&\n\t\t\t\t\t\t\t\tresult.g>=inChroma.g-inBias && result.g<=inChroma.g+inBias &&\n\t\t\t\t\t\t\t\tresult.b>=inChroma.b-inBias && result.b<=inChroma.b+inBias) ||\n\t\t\t\t\t\t\t\t(vTexCoord.x<inCrop.x || vTexCoord.x>inCrop.z || vTexCoord.y<inCrop.w || vTexCoord.y>inCrop.y)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdiscard;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tgl_FragColor = result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t"; + this.shader = new bg.base.Shader(this.gl); + this.shader.addShaderSource(bg.base.ShaderType.VERTEX, vshader); + this.shader.addShaderSource(bg.base.ShaderType.FRAGMENT, fshader); + status = this.shader.link(); + + if (!this.shader.status) { + console.log(this.shader.compileError); + console.log(this.shader.linkError); + } + + this.shader.initVars(["position", "texCoord"], ["inTransform", "inTexture", "inChroma", "inBias", "inCrop"]); + } + }, { + key: "init", + value: function init() { + var _this138 = this; + + // Use WebGL V1 engine + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + this.buildShape(); + this.buildShader(); + this.pipeline = new bg.base.Pipeline(this.gl); + bg.base.Pipeline.SetCurrent(this.pipeline); + this.pipeline.clearColor = bg.Color.Transparent(); + bg.base.Loader.Load(this.gl, this.stream.src).then(function (texture) { + _this138.texture = texture; + }); + } + }, { + key: "frame", + value: function frame(delta) { + if (this.texture) { + this.texture.update(); + } + } + }, { + key: "display", + value: function display() { + this.pipeline.clearBuffers(bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH); + + if (this.texture) { + this.shader.setActive(); + this.shader.setInputBuffer("position", this.plist.vertexBuffer, 3); + this.shader.setInputBuffer("texCoord", this.plist.texCoord0Buffer, 2); + this.shader.setMatrix4("inTransform", this.transform); + this.shader.setTexture("inTexture", this.texture || bg.base.TextureCache.WhiteTexture(this.gl), bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector4("inChroma", this.chroma); + this.shader.setValueFloat("inBias", this.bias); + this.shader.setVector4("inCrop", new bg.Vector4(this.crop.x, 1.0 - this.crop.y, 1.0 - this.crop.z, this.crop.w)); + this.plist.draw(); + this.shader.disableInputBuffer("position"); + this.shader.disableInputBuffer("texCoord"); + this.shader.clearActive(); + } + } + }, { + key: "reshape", + value: function reshape(width, height) { + var canvas = this.canvas.domElement; + canvas.width = width; + canvas.height = height; + this.pipeline.viewport = new bg.Viewport(0, 0, width, height); + } + }, { + key: "mouseMove", + value: function mouseMove(evt) { + this.postRedisplay(); + } + }, { + key: "chroma", + get: function get() { + return this._chroma; + }, + set: function set(c) { + this._chroma = c; + } + }, { + key: "bias", + get: function get() { + return this._bias; + }, + set: function set(b) { + this._bias = b; + } + }, { + key: "crop", + get: function get() { + return this._crop; + }, + set: function set(c) { + this._crop = c; + } + }, { + key: "transform", + get: function get() { + return this._transform; + }, + set: function set(t) { + this._transform = t; + } + }, { + key: "video", + get: function get() { + return this.texture ? this.texture.video : null; + } + }]); + + return ChromaVideoCanvas; + }(bg.app.WindowController); + + var controller = new ChromaVideoCanvas(stream); + var mainLoop = bg.app.MainLoop.singleton; + mainLoop.updateMode = bg.app.FrameUpdate.AUTO; + mainLoop.canvas = canvas; + mainLoop.run(controller); + return controller.loaded(); + } + + var ChromaVideo = + /*#__PURE__*/ + function (_paella$VideoElementB4) { + _inherits(ChromaVideo, _paella$VideoElementB4); + + function ChromaVideo(id, stream, left, top, width, height, streamName) { + var _this139; + + _classCallCheck(this, ChromaVideo); + + _this139 = _possibleConstructorReturn(this, _getPrototypeOf(ChromaVideo).call(this, id, stream, 'canvas', left, top, width, height)); + _this139._posterFrame = null; + _this139._currentQuality = null; + _this139._autoplay = false; + _this139._streamName = null; + _this139._streamName = streamName || 'chroma'; + + var This = _assertThisInitialized(_this139); + + if (_this139._stream.sources[_this139._streamName]) { + _this139._stream.sources[_this139._streamName].sort(function (a, b) { + return a.res.h - b.res.h; + }); + } + + _this139.video = null; + + function onProgress(event) { + if (!This._ready && This.video.readyState == 4) { + This._ready = true; + + if (This._initialCurrentTipe !== undefined) { + This.video.currentTime = This._initialCurrentTime; + delete This._initialCurrentTime; + } + + This._callReadyEvent(); + } + } + + function evtCallback(event) { + onProgress.apply(This, event); + } + + function onUpdateSize() { + if (This.canvasController) { + var canvas = This.canvasController.canvas.domElement; + This.canvasController.reshape($(canvas).width(), $(canvas).height()); + } + } + + var timer = new paella.Timer(function (timer) { + onUpdateSize(); + }, 500); + timer.repeat = true; + return _this139; + } + + _createClass(ChromaVideo, [{ + key: "defaultProfile", + value: function defaultProfile() { + return 'chroma'; + } + }, { + key: "_setVideoElem", + value: function _setVideoElem(video) { + $(this.video).bind('progress', evtCallback); + $(this.video).bind('loadstart', evtCallback); + $(this.video).bind('loadedmetadata', evtCallback); + $(this.video).bind('canplay', evtCallback); + $(this.video).bind('oncanplay', evtCallback); + } + }, { + key: "_loadDeps", + value: function _loadDeps() { + return new Promise(function (resolve, reject) { + if (!window.$paella_bg2e) { + paella.require(paella.baseUrl + 'javascript/bg2e-es2015.js').then(function () { + window.$paella_bg2e = bg; + resolve(window.$paella_bg2e); + })["catch"](function (err) { + console.error(err.message); + reject(); + }); + } else { + defer.resolve(window.$paella_bg2e); + } + }); + } + }, { + key: "_deferredAction", + value: function _deferredAction(action) { + var _this140 = this; + + return new Promise(function (resolve, reject) { + if (_this140.video) { + resolve(action()); + } else { + $(_this140.video).bind('canplay', function () { + _this140._ready = true; + resolve(action()); + }); + } + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString: function toString() { + return this.res.w + "x" + this.res.h; + }, + shortLabel: function shortLabel() { + return this.res.h + "p"; + }, + compare: function compare(q2) { + return this.res.w * this.res.h - q2.res.w * q2.res.h; + } + }; + } // Initialization functions + + }, { + key: "getVideoData", + value: function getVideoData() { + var _this141 = this; + + var This = this; + return new Promise(function (resolve, reject) { + _this141._deferredAction(function () { + resolve({ + duration: This.video.duration, + currentTime: This.video.currentTime, + volume: This.video.volume, + paused: This.video.paused, + ended: This.video.ended, + res: { + w: This.video.videoWidth, + h: This.video.videoHeight + } + }); + }); + }); + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + this._posterFrame = url; + } + }, { + key: "setAutoplay", + value: function setAutoplay(auto) { + this._autoplay = auto; + + if (auto && this.video) { + this.video.setAttribute("autoplay", auto); + } + } + }, { + key: "load", + value: function load() { + var _this142 = this; + + var This = this; + return new Promise(function (resolve, reject) { + _this142._loadDeps().then(function () { + var sources = _this142._stream.sources[_this142._streamName]; + + if (_this142._currentQuality === null && _this142._videoQualityStrategy) { + _this142._currentQuality = _this142._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = _this142._currentQuality < sources.length ? sources[_this142._currentQuality] : null; + _this142.video = null; + _this142.domElement.parentNode.style.backgroundColor = "transparent"; + + if (stream) { + _this142.canvasController = null; + buildChromaVideoCanvas(stream, _this142.domElement).then(function (canvasController) { + _this142.canvasController = canvasController; + _this142.video = canvasController.video; + + _this142.video.pause(); + + if (stream.crop) { + _this142.canvasController.crop = new bg.Vector4(stream.crop.left, stream.crop.top, stream.crop.right, stream.crop.bottom); + } + + if (stream.displacement) { + _this142.canvasController.transform = bg.Matrix4.Translation(stream.displacement.x, stream.displacement.y, 0); + } + + if (stream.chromaColor) { + _this142.canvasController.chroma = new bg.Color(stream.chromaColor[0], stream.chromaColor[1], stream.chromaColor[2], stream.chromaColor[3]); + } + + if (stream.chromaBias) { + _this142.canvasController.bias = stream.chromaBias; + } + + resolve(stream); + }); + } else { + reject(new Error("Could not load video: invalid quality stream index")); + } + }); + }); + } + }, { + key: "getQualities", + value: function getQualities() { + var _this143 = this; + + return new Promise(function (resolve, reject) { + setTimeout(function () { + var result = []; + var sources = _this143._stream.sources[_this143._streamName]; + var index = -1; + sources.forEach(function (s) { + index++; + result.push(_this143._getQualityObject(index, s)); + }); + resolve(result); + }, 10); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this144 = this; + + return new Promise(function (resolve) { + var paused = _this144.video.paused; + var sources = _this144._stream.sources[_this144._streamName]; + _this144._currentQuality = index < sources.length ? index : 0; + var currentTime = _this144.video.currentTime; + + _this144.freeze().then(function () { + _this144._ready = false; + return _this144.load(); + }).then(function () { + if (!paused) { + _this144.play(); + } + + $(_this144.video).on('seeked', function () { + _this144.unFreeze(); + + resolve(); + $(_this144.video).off('seeked'); + }); + _this144.video.currentTime = currentTime; + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this145 = this; + + return new Promise(function (resolve) { + resolve(_this145._getQualityObject(_this145._currentQuality, _this145._stream.sources[_this145._streamName][_this145._currentQuality])); + }); + } + }, { + key: "play", + value: function play() { + var _this146 = this; + + return this._deferredAction(function () { + bg.app.MainLoop.singleton.updateMode = bg.app.FrameUpdate.AUTO; + + _this146.video.play(); + }); + } + }, { + key: "pause", + value: function pause() { + var _this147 = this; + + return this._deferredAction(function () { + bg.app.MainLoop.singleton.updateMode = bg.app.FrameUpdate.MANUAL; + + _this147.video.pause(); + }); + } + }, { + key: "isPaused", + value: function isPaused() { + var _this148 = this; + + return this._deferredAction(function () { + return _this148.video.paused; + }); + } + }, { + key: "duration", + value: function duration() { + var _this149 = this; + + return this._deferredAction(function () { + return _this149.video.duration; + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this150 = this; + + return this._deferredAction(function () { + _this150.video.currentTime = time; + $(_this150.video).on('seeked', function () { + _this150.canvasController.postRedisplay(); + + $(_this150.video).off('seeked'); + }); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this151 = this; + + return this._deferredAction(function () { + return _this151.video.currentTime; + }); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + var _this152 = this; + + return this._deferredAction(function () { + _this152.video.volume = volume; + }); + } + }, { + key: "volume", + value: function volume() { + var _this153 = this; + + return this._deferredAction(function () { + return _this153.video.volume; + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var _this154 = this; + + return this._deferredAction(function () { + _this154.video.playbackRate = rate; + }); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var _this155 = this; + + return this._deferredAction(function () { + return _this155.video.playbackRate; + }); + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + var _this156 = this; + + return this._deferredAction(function () { + var elem = _this156.video; + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + }, { + key: "unFreeze", + value: function unFreeze() { + var _this157 = this; + + return this._deferredAction(function () { + var c = document.getElementById(_this157.video.className + "canvas"); + $(c).remove(); + }); + } + }, { + key: "freeze", + value: function freeze() { + var This = this; + return this._deferredAction(function () {}); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); + } + }]); + + return ChromaVideo; + }(paella.VideoElementBase); + + paella.ChromaVideo = ChromaVideo; + + var ChromaVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory2) { + _inherits(ChromaVideoFactory, _paella$VideoFactory2); + + function ChromaVideoFactory() { + _classCallCheck(this, ChromaVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(ChromaVideoFactory).apply(this, arguments)); + } + + _createClass(ChromaVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + if (paella.ChromaVideo._loaded) { + return false; + } + + if (paella.videoFactories.Html5VideoFactory.s_instances > 0 && base.userAgent.system.iOS) { + return false; + } + + for (var key in streamData.sources) { + if (key == 'chroma') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + paella.ChromaVideo._loaded = true; + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.ChromaVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return ChromaVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.ChromaVideoFactory = ChromaVideoFactory; +})(); +/* +paella.addPlugin(function() { + return class CommentsPlugin extends paella.TabBarPlugin { + get divPublishComment() { return this._divPublishComment; } + set divPublishComment(v) { this._divPublishComment = v; } + get divComments() { return this._divComments; } + set divComments(v) { this._divComments = v; } + get publishCommentTextArea() { return this._publishCommentTextArea; } + set publishCommentTextArea(v) { this._publishCommentTextArea = v; } + get publishCommentButtons() { return this._publishCommentButtons; } + set publishCommentButtons(v) { this._publishCommentButtons = v; } + get canPublishAComment() { return this._canPublishAComment; } + set canPublishAComment(v) { this._canPublishAComment = v; } + get comments() { return this._comments; } + set comments(v) { this._comments = v; } + get commentsTree() { return this._commentsTree; } + set commentsTree(v) { this._commentsTree = v; } + get domElement() { return this._domElement; } + set domElement(v) { this._domElement = v; } + + getSubclass() { return "showCommentsTabBar"; } + getName() { return "es.upv.paella.commentsPlugin"; } + getTabName() { return base.dictionary.translate("Comments"); } + checkEnabled(onSuccess) { onSuccess(true); } + getIndex() { return 40; } + getDefaultToolTip() { return base.dictionary.translate("Comments"); } + + action(tab) { + this.loadContent(); + } + + buildContent(domElement) { + this.domElement = domElement; + this.canPublishAComment = paella.initDelegate.initParams.accessControl.permissions.canWrite; + this.loadContent(); + } + + loadContent() { + this.divRoot = this.domElement; + this.divRoot.innerText =""; + + this.divPublishComment = document.createElement('div'); + this.divPublishComment.className = 'CommentPlugin_Publish'; + this.divPublishComment.id = 'CommentPlugin_Publish'; + + this.divComments = document.createElement('div'); + this.divComments.className = 'CommentPlugin_Comments'; + this.divComments.id = 'CommentPlugin_Comments'; + + if(this.canPublishAComment){ + this.divRoot.appendChild(this.divPublishComment); + this.createPublishComment(); + } + this.divRoot.appendChild(this.divComments); + + this.reloadComments(); + } + + //Allows the user to write a new comment + createPublishComment() { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry"; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = 'comments_entry'; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.style.width = "48px"; + divSil.src = paella.initDelegate.initParams.accessControl.userData.avatar; + divSil.id = rootID+"_silhouette"; + divEntry.appendChild(divSil); + + var divTextAreaContainer; + divTextAreaContainer = document.createElement('div'); + divTextAreaContainer.className = "comments_entry_container"; + divTextAreaContainer.id = rootID+"_textarea_container"; + divEntry.appendChild(divTextAreaContainer); + + this.publishCommentTextArea = document.createElement('textarea'); + this.publishCommentTextArea.id = rootID+"_textarea"; + this.publishCommentTextArea.onclick = function(){paella.keyManager.enabled = false;}; + this.publishCommentTextArea.onblur = function(){paella.keyManager.enabled = true;}; + divTextAreaContainer.appendChild(this.publishCommentTextArea); + + this.publishCommentButtons = document.createElement('div'); + this.publishCommentButtons.id = rootID+"_buttons_area"; + divTextAreaContainer.appendChild(this.publishCommentButtons); + + var btnAddComment; + btnAddComment = document.createElement('button'); + btnAddComment.id = rootID+"_btnAddComment"; + btnAddComment.className = "publish"; + btnAddComment.onclick = function(){ + var txtValue = thisClass.publishCommentTextArea.value; + if (txtValue.replace(/\s/g,'') != "") { + thisClass.addComment(); + } + }; + btnAddComment.innerText = base.dictionary.translate("Publish"); + + this.publishCommentButtons.appendChild(btnAddComment); + + divTextAreaContainer.commentsTextArea = this.publishCommentTextArea; + divTextAreaContainer.commentsBtnAddComment = btnAddComment; + divTextAreaContainer.commentsBtnAddCommentToInstant = this.btnAddCommentToInstant; + + this.divPublishComment.appendChild(divEntry); + } + + addComment() { + var thisClass = this; + var txtValue = paella.AntiXSS.htmlEscape(thisClass.publishCommentTextArea.value); + //var txtValue = thisClass.publishCommentTextArea.value; + var now = new Date(); + + this.comments.push({ + id: base.uuid(), + userName:paella.initDelegate.initParams.accessControl.userData.name, + mode: "normal", + value: txtValue, + created: now + }); + + var data = { + allComments: this.comments + }; + + paella.data.write('comments',{id:paella.initDelegate.getId()},data,function(response,status){ + if (status) {thisClass.loadContent();} + }); + } + + addReply(annotationID, domNodeId) { + var thisClass = this; + var textArea = document.getElementById(domNodeId); + var txtValue = paella.AntiXSS.htmlEscape(textArea.value); + var now = new Date(); + + paella.keyManager.enabled = true; + + this.comments.push({ + id: base.uuid(), + userName:paella.initDelegate.initParams.accessControl.userData.name, + mode: "reply", + parent: annotationID, + value: txtValue, + created: now + }); + + var data = { + allComments: this.comments + }; + + paella.data.write('comments',{id:paella.initDelegate.getId()},data,function(response,status){ + if (status) thisClass.reloadComments(); + }); + } + + reloadComments() { + var thisClass = this; + thisClass.commentsTree = []; + thisClass.comments = []; + this.divComments.innerText =""; + + paella.data.read('comments',{id:paella.initDelegate.getId()},function(data,status) { + var i; + var valueText; + var comment; + if (data && typeof(data)=='object' && data.allComments && data.allComments.length>0) { + thisClass.comments = data.allComments; + var tempDict = {}; + + // obtain normal comments + for (i =0; i < data.allComments.length; ++i ) { + valueText = data.allComments[i].value; + + if (data.allComments[i].mode !== "reply") { + comment = {}; + comment["id"] = data.allComments[i].id; + comment["userName"] = data.allComments[i].userName; + comment["mode"] = data.allComments[i].mode; + comment["value"] = valueText; + comment["created"] = data.allComments[i].created; + comment["replies"] = []; + + thisClass.commentsTree.push(comment); + tempDict[comment["id"]] = thisClass.commentsTree.length - 1; + } + } + + // obtain reply comments + for (i =0; i < data.allComments.length; ++i ){ + valueText = data.allComments[i].value; + + if (data.allComments[i].mode === "reply") { + comment = {}; + comment["id"] = data.allComments[i].id; + comment["userName"] = data.allComments[i].userName; + comment["mode"] = data.allComments[i].mode; + comment["value"] = valueText; + comment["created"] = data.allComments[i].created; + + var index = tempDict[data.allComments[i].parent]; + thisClass.commentsTree[index]["replies"].push(comment); + } + } + thisClass.displayComments(); + } + }); + } + + displayComments() { + var thisClass = this; + for (var i =0; i < thisClass.commentsTree.length; ++i ){ + var comment = thisClass.commentsTree[i]; + var e = thisClass.createACommentEntry(comment); + thisClass.divComments.appendChild(e); + } + } + + createACommentEntry(comment) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry"+comment["id"]; + var users; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.id = rootID+"_silhouette"; + + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container"; + divCommentContainer.id = rootID+"_comment_container"; + divEntry.appendChild(divCommentContainer); + + var divCommentMetadata; + divCommentMetadata = document.createElement('div'); + divCommentMetadata.id = rootID+"_comment_metadata"; + divCommentContainer.appendChild(divCommentMetadata); + + + + // var datePublish = comment["created"]; + var datePublish = ""; + if (comment["created"]) { + var dateToday=new Date(); + var dateComment = paella.utils.timeParse.matterhornTextDateToDate(comment["created"]); + datePublish = paella.utils.timeParse.secondsToText((dateToday.getTime()-dateComment.getTime())/1000); + } + + // var headLine = "<span class='comments_entry_username'>" + comment["userName"] + "</span>"; + // headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + // divCommentMetadata.innerHTML = headLine; + + + var divCommentValue; + divCommentValue = document.createElement('div'); + divCommentValue.id = rootID+"_comment_value"; + divCommentValue.className = "comments_entry_comment"; + divCommentContainer.appendChild(divCommentValue); + + divCommentValue.innerText = comment["value"]; + + var divCommentReply = document.createElement('div'); + divCommentReply.id = rootID+"_comment_reply"; + divCommentContainer.appendChild(divCommentReply); + + paella.data.read('userInfo',{username:comment["userName"]}, function(data,status) { + if (data) { + divSil.src = data.avatar; + + var headLine = "<span class='comments_entry_username'>" + data.name + " " + data.lastname + "</span>"; + headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + divCommentMetadata.innerHTML = headLine; + } + }); + + if (this.canPublishAComment == true) { + //var btnRplyComment = document.createElement('button'); + var btnRplyComment = document.createElement('div'); + btnRplyComment.className = "reply_button"; + btnRplyComment.innerText = base.dictionary.translate("Reply"); + + btnRplyComment.id = rootID+"_comment_reply_button"; + btnRplyComment.onclick = function(){ + var e = thisClass.createAReplyEntry(comment["id"]); + this.style.display="none"; + this.parentElement.parentElement.appendChild(e); + }; + divCommentReply.appendChild(btnRplyComment); + } + + for (var i =0; i < comment.replies.length; ++i ){ + var e = thisClass.createACommentReplyEntry(comment["id"], comment["replies"][i]); + divCommentContainer.appendChild(e); + } + return divEntry; + } + + createACommentReplyEntry(parentID, comment) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry_" + parentID + "_reply_" + comment["id"]; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.id = rootID+"_silhouette"; + + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container"; + divCommentContainer.id = rootID+"_comment_container"; + divEntry.appendChild(divCommentContainer); + + var divCommentMetadata; + divCommentMetadata = document.createElement('div'); + divCommentMetadata.id = rootID+"_comment_metadata"; + divCommentContainer.appendChild(divCommentMetadata); + // var datePublish = comment["created"]; + var datePublish = ""; + if (comment["created"]) { + var dateToday=new Date(); + var dateComment = paella.utils.timeParse.matterhornTextDateToDate(comment["created"]); + datePublish = paella.utils.timeParse.secondsToText((dateToday.getTime()-dateComment.getTime())/1000); + } + + // var headLine = "<span class='comments_entry_username'>" + comment["userName"] + "</span>"; + // headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + // divCommentMetadata.innerHTML = headLine; + + var divCommentValue; + divCommentValue = document.createElement('div'); + divCommentValue.id = rootID+"_comment_value"; + divCommentValue.className = "comments_entry_comment"; + divCommentContainer.appendChild(divCommentValue); + + divCommentValue.innerText = comment["value"]; + + paella.data.read('userInfo',{username:comment["userName"]}, function(data,status) { + if (data) { + divSil.src = data.avatar; + + var headLine = "<span class='comments_entry_username'>" + data.name + " " + data.lastname + "</span>"; + headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + divCommentMetadata.innerHTML = headLine; + } + }); + + return divEntry; + } + + //Allows the user to write a new reply + createAReplyEntry(annotationID) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry_" + annotationID + "_reply"; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID+"_entry"; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.style.width = "48px"; + divSil.id = rootID+"_silhouette"; + divSil.src = paella.initDelegate.initParams.accessControl.userData.avatar; + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container comments_reply_container"; + divCommentContainer.id = rootID+"_reply_container"; + divEntry.appendChild(divCommentContainer); + + var textArea; + textArea = document.createElement('textArea'); + textArea.onclick = function(){paella.keyManager.enabled = false;}; + textArea.draggable = false; + textArea.id = rootID+"_textarea"; + divCommentContainer.appendChild(textArea); + + this.publishCommentButtons = document.createElement('div'); + this.publishCommentButtons.id = rootID+"_buttons_area"; + divCommentContainer.appendChild(this.publishCommentButtons); + + var btnAddComment; + btnAddComment = document.createElement('button'); + btnAddComment.id = rootID+"_btnAddComment"; + btnAddComment.className = "publish"; + btnAddComment.onclick = function(){ + var txtValue = textArea.value; + if (txtValue.replace(/\s/g,'') != "") { + thisClass.addReply(annotationID,textArea.id); + } + }; + btnAddComment.innerText = base.dictionary.translate("Reply"); + + this.publishCommentButtons.appendChild(btnAddComment); + + return divEntry; + } + } +}); +*/ + +/* +paella.addPlugin(function() { + + return class DescriptionPlugin extends paella.TabBarPlugin { + getSubclass() { return "showDescriptionTabBar"; } + getName() { return "es.upv.paella.descriptionPlugin"; } + getTabName() { return "Descripción"; } + + get domElement() { return this._domElement || null; } + set domElement(d) { this._domElement = d; } + + buildContent(domElement) { + this.domElement = domElement; + this.loadContent(); + } + + action(tab) { + this.loadContent(); + } + + loadContent() { + var container = this.domElement; + container.innerText = "Loading..."; + new paella.Timer(function(t) { + container.innerText = "Loading done"; + },2000); + } + } +}) +*/ + + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin6) { + _inherits(extendedTabAdapterPlugin, _paella$ButtonPlugin6); + + function extendedTabAdapterPlugin() { + _classCallCheck(this, extendedTabAdapterPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(extendedTabAdapterPlugin).apply(this, arguments)); + } + + _createClass(extendedTabAdapterPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "extendedTabAdapterPlugin"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-folder'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2030; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.extendedTabAdapterPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Extended Tab Adapter"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + domElement.appendChild(paella.extendedAdapter.bottomContainer); + } + }, { + key: "currentUrl", + get: function get() { + return this._currentUrl; + }, + set: function set(v) { + this._currentUrl = v; + } + }, { + key: "currentMaster", + get: function get() { + return this._currentMaster; + }, + set: function set(v) { + this._currentMaster = v; + } + }, { + key: "currentSlave", + get: function get() { + return this._currentSlave; + }, + set: function set(v) { + this._currentSlave = v; + } + }, { + key: "availableMasters", + get: function get() { + return this._availableMasters; + }, + set: function set(v) { + this._availableMasters = v; + } + }, { + key: "availableSlaves", + get: function get() { + return this._availableSlaves; + }, + set: function set(v) { + this._availableSlaves = v; + } + }, { + key: "showWidthRes", + get: function get() { + return this._showWidthRes; + }, + set: function set(v) { + this._showWidthRes = v; + } + }]); + + return extendedTabAdapterPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin7) { + _inherits(FootPrintsPlugin, _paella$ButtonPlugin7); + + function FootPrintsPlugin() { + _classCallCheck(this, FootPrintsPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FootPrintsPlugin).apply(this, arguments)); + } + + _createClass(FootPrintsPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "footPrints"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-stats'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 590; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Show statistics"); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.footprintsPlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.timeLineButton; + } + }, { + key: "setup", + value: function setup() { + this._INTERVAL_LENGTH = 5; + var thisClass = this; + paella.events.bind(paella.events.timeUpdate, function (event) { + thisClass.onTimeUpdate(); + }); + + switch (this.config.skin) { + case 'custom': + this.fillStyle = this.config.fillStyle; + this.strokeStyle = this.config.strokeStyle; + break; + + case 'dark': + this.fillStyle = '#727272'; + this.strokeStyle = '#424242'; + break; + + case 'light': + this.fillStyle = '#d8d8d8'; + this.strokeStyle = '#ffffff'; + break; + + default: + this.fillStyle = '#d8d8d8'; + this.strokeStyle = '#ffffff'; + break; + } + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(!paella.player.isLiveStream()); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var container = document.createElement('div'); + container.className = 'footPrintsContainer'; + this.canvas = document.createElement('canvas'); + this.canvas.id = 'footPrintsCanvas'; + this.canvas.className = 'footPrintsCanvas'; + container.appendChild(this.canvas); + domElement.appendChild(container); + } + }, { + key: "onTimeUpdate", + value: function onTimeUpdate() { + var _this158 = this; + + var currentTime = -1; + paella.player.videoContainer.currentTime().then(function (c) { + currentTime = c; + return paella.player.videoContainer.trimming(); + }).then(function (trimming) { + var videoCurrentTime = Math.round(currentTime + (trimming.enabled ? trimming.start : 0)); + + if (_this158.inPosition <= videoCurrentTime && videoCurrentTime <= _this158.inPosition + _this158.INTERVAL_LENGTH) { + _this158.outPosition = videoCurrentTime; + + if (_this158.inPosition + _this158.INTERVAL_LENGTH === _this158.outPosition) { + _this158.trackFootPrint(_this158.inPosition, _this158.outPosition); + + _this158.inPosition = _this158.outPosition; + } + } else { + _this158.trackFootPrint(_this158.inPosition, _this158.outPosition); + + _this158.inPosition = videoCurrentTime; + _this158.outPosition = videoCurrentTime; + } + }); + } + }, { + key: "trackFootPrint", + value: function trackFootPrint(inPosition, outPosition) { + var data = { + "in": inPosition, + "out": outPosition + }; + paella.data.write('footprints', { + id: paella.initDelegate.getId() + }, data); + } + }, { + key: "willShowContent", + value: function willShowContent() { + var thisClass = this; + this.loadFootprints(); + this.footPrintsTimer = new base.Timer(function (timer) { + thisClass.loadFootprints(); + }, 5000); + this.footPrintsTimer.repeat = true; + } + }, { + key: "didHideContent", + value: function didHideContent() { + if (this.footPrintsTimer != null) { + this.footPrintsTimer.cancel(); + this.footPrintsTimer = null; + } + } + }, { + key: "loadFootprints", + value: function loadFootprints() { + var thisClass = this; + paella.data.read('footprints', { + id: paella.initDelegate.getId() + }, function (data, status) { + var footPrintsData = {}; + paella.player.videoContainer.duration().then(function (duration) { + var trimStart = Math.floor(paella.player.videoContainer.trimStart()); + var lastPosition = -1; + var lastViews = 0; + + for (var i = 0; i < data.length; i++) { + var position = data[i].position - trimStart; + + if (position < duration) { + var views = data[i].views; + + if (position - 1 != lastPosition) { + for (var j = lastPosition + 1; j < position; j++) { + footPrintsData[j] = lastViews; + } + } + + footPrintsData[position] = views; + lastPosition = position; + lastViews = views; + } + } + + thisClass.drawFootPrints(footPrintsData); + }); + }); + } + }, { + key: "drawFootPrints", + value: function drawFootPrints(footPrintsData) { + if (this.canvas) { + var duration = Object.keys(footPrintsData).length; + var ctx = this.canvas.getContext("2d"); + var h = 20; + var i; + + for (i = 0; i < duration; ++i) { + if (footPrintsData[i] > h) { + h = footPrintsData[i]; + } + } + + this.canvas.setAttribute("width", duration); + this.canvas.setAttribute("height", h); + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + ctx.fillStyle = this.fillStyle; //'#faa166'; //'#9ED4EE'; + + ctx.strokeStyle = this.strokeStyle; //'#fa8533'; //"#0000FF"; + + ctx.lineWidth = 2; + ctx.webkitImageSmoothingEnabled = false; + ctx.mozImageSmoothingEnabled = false; + + for (i = 0; i < duration - 1; ++i) { + ctx.beginPath(); + ctx.moveTo(i, h); + ctx.lineTo(i, h - footPrintsData[i]); + ctx.lineTo(i + 1, h - footPrintsData[i + 1]); + ctx.lineTo(i + 1, h); + ctx.closePath(); + ctx.fill(); + ctx.beginPath(); + ctx.moveTo(i, h - footPrintsData[i]); + ctx.lineTo(i + 1, h - footPrintsData[i + 1]); + ctx.closePath(); + ctx.stroke(); + } + } + } + }, { + key: "INTERVAL_LENGTH", + get: function get() { + return this._INTERVAL_LENGTH; + }, + set: function set(v) { + this._INTERVAL_LENGTH = v; + } + }, { + key: "inPosition", + get: function get() { + return this._inPosition; + }, + set: function set(v) { + this._inPosition = v; + } + }, { + key: "outPosition", + get: function get() { + return this._outPosition; + }, + set: function set(v) { + this._outPosition = v; + } + }, { + key: "canvas", + get: function get() { + return this._canvas; + }, + set: function set(v) { + this._canvas = v; + } + }, { + key: "footPrintsTimer", + get: function get() { + return this._footPrintsTimer; + }, + set: function set(v) { + this._footPrintsTimer = v; + } + }, { + key: "footPrintsData", + get: function get() { + return this._footPrintsData; + }, + set: function set(v) { + this._footPrintsData = v; + } + }]); + + return FootPrintsPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$SearchService) { + _inherits(FrameCaptionsSearchPlugIn, _paella$SearchService); + + function FrameCaptionsSearchPlugIn() { + _classCallCheck(this, FrameCaptionsSearchPlugIn); + + return _possibleConstructorReturn(this, _getPrototypeOf(FrameCaptionsSearchPlugIn).apply(this, arguments)); + } + + _createClass(FrameCaptionsSearchPlugIn, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.frameCaptionsSearchPlugin"; + } + }, { + key: "search", + value: function search(text, next) { + var re = RegExp(text, "i"); + var results = []; + + for (var key in paella.player.videoLoader.frameList) { + var value = paella.player.videoLoader.frameList[key]; + + if (_typeof(value) == "object") { + if (re.test(value.caption)) { + results.push({ + time: key, + content: value.caption, + score: 0 + }); + } + } + } + + if (next) { + next(false, results); + } + } + }]); + + return FrameCaptionsSearchPlugIn; + }(paella.SearchServicePlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin8) { + _inherits(FrameControlPlugin, _paella$ButtonPlugin8); + + function FrameControlPlugin() { + _classCallCheck(this, FrameControlPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FrameControlPlugin).apply(this, arguments)); + } + + _createClass(FrameControlPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "frameControl"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-photo'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 510; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.frameControlPlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.timeLineButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Navigate by slides"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._img = null; + this._searchTimer = null; + this._searchTimerTime = 250; + if (paella.initDelegate.initParams.videoLoader.frameList == null) onSuccess(false);else if (paella.initDelegate.initParams.videoLoader.frameList.length === 0) onSuccess(false);else if (Object.keys(paella.initDelegate.initParams.videoLoader.frameList).length == 0) onSuccess(false);else onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + this._showFullPreview = this.config.showFullPreview || "auto"; + var thisClass = this; + var oldClassName; + var blockCounter = 1; + var correctJump = 0; + var selectedItem = -1; + var jumpAtItem; + var Keys = { + Tab: 9, + Return: 13, + Esc: 27, + End: 35, + Home: 36, + Left: 37, + Up: 38, + Right: 39, + Down: 40 + }; + $(this.button).keyup(function (event) { + var visibleItems = Math.floor(thisClass.contx.offsetWidth / 100); + var rest = thisClass.buttons.length % visibleItems; + var blocks = Math.floor(thisClass.buttons.length / visibleItems); + + if (thisClass.isPopUpOpen()) { + if (event.keyCode == Keys.Left) { + if (selectedItem > 0) { + thisClass.buttons[selectedItem].className = oldClassName; + selectedItem--; + if (blockCounter > blocks) correctJump = visibleItems - rest; + jumpAtItem = visibleItems * (blockCounter - 1) - 1 - correctJump; + + if (selectedItem == jumpAtItem && selectedItem != 0) { + thisClass.navButtons.left.scrollContainer.scrollLeft -= visibleItems * 105; + --blockCounter; + } + + if (this.hiResFrame) thisClass.removeHiResFrame(); + + if (!base.userAgent.browser.IsMobileVersion) { + thisClass.buttons[selectedItem].frameControl.onMouseOver(null, thisClass.buttons[selectedItem].frameData); + } + + oldClassName = thisClass.buttons[selectedItem].className; + thisClass.buttons[selectedItem].className = 'frameControlItem selected'; + } + } else if (event.keyCode == Keys.Right) { + if (selectedItem < thisClass.buttons.length - 1) { + if (selectedItem >= 0) { + thisClass.buttons[selectedItem].className = oldClassName; + } + + selectedItem++; + if (blockCounter == 1) correctJump = 0; + jumpAtItem = visibleItems * blockCounter - correctJump; + + if (selectedItem == jumpAtItem) { + thisClass.navButtons.left.scrollContainer.scrollLeft += visibleItems * 105; + ++blockCounter; + } + + if (this.hiResFrame) thisClass.removeHiResFrame(); + + if (!base.userAgent.browser.IsMobileVersion) { + thisClass.buttons[selectedItem].frameControl.onMouseOver(null, thisClass.buttons[selectedItem].frameData); + } + + oldClassName = thisClass.buttons[selectedItem].className; + thisClass.buttons[selectedItem].className = 'frameControlItem selected'; + } + } else if (event.keyCode == Keys.Return) { + thisClass.buttons[selectedItem].frameControl.onClick(null, thisClass.buttons[selectedItem].frameData); + oldClassName = 'frameControlItem current'; + } else if (event.keyCode == Keys.Esc) { + thisClass.removeHiResFrame(); + } + } + }); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this159 = this; + + var thisClass = this; + this.frames = []; + var container = document.createElement('div'); + container.className = 'frameControlContainer'; + thisClass.contx = container; + var content = document.createElement('div'); + content.className = 'frameControlContent'; + this.navButtons = { + left: document.createElement('div'), + right: document.createElement('div') + }; + this.navButtons.left.className = 'frameControl navButton left'; + this.navButtons.right.className = 'frameControl navButton right'; + var frame = this.getFrame(null); + domElement.appendChild(this.navButtons.left); + domElement.appendChild(container); + container.appendChild(content); + domElement.appendChild(this.navButtons.right); + this.navButtons.left.scrollContainer = container; + $(this.navButtons.left).click(function (event) { + this.scrollContainer.scrollLeft -= 100; + }); + this.navButtons.right.scrollContainer = container; + $(this.navButtons.right).click(function (event) { + this.scrollContainer.scrollLeft += 100; + }); + content.appendChild(frame); + var itemWidth = $(frame).outerWidth(true); + content.innerText = ''; + $(window).mousemove(function (event) { + if ($(content).offset().top > event.pageY || !$(content).is(":visible") || $(content).offset().top + $(content).height() < event.pageY) { + thisClass.removeHiResFrame(); + } + }); + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var numFrames; + + if (frames) { + var framesKeys = Object.keys(frames); + numFrames = framesKeys.length; + framesKeys.map(function (i) { + return Number(i, 10); + }).sort(function (a, b) { + return a - b; + }).forEach(function (key) { + var frameItem = thisClass.getFrame(frames[key]); + content.appendChild(frameItem, 'frameContrlItem_' + numFrames); + thisClass.frames.push(frameItem); + }); + } + + $(content).css({ + width: numFrames * itemWidth + 'px' + }); + paella.events.bind(paella.events.setTrim, function (event, params) { + _this159.updateFrameVisibility(params.trimEnabled, params.trimStart, params.trimEnd); + }); + paella.player.videoContainer.trimming().then(function (trimData) { + _this159.updateFrameVisibility(trimData.enabled, trimData.start, trimData.end); + }); + paella.events.bind(paella.events.timeupdate, function (event, params) { + return _this159.onTimeUpdate(params.currentTime); + }); + } + }, { + key: "showHiResFrame", + value: function showHiResFrame(url, caption) { + var frameRoot = document.createElement("div"); + var frame = document.createElement("div"); + var hiResImage = document.createElement('img'); + this._img = hiResImage; + hiResImage.className = 'frameHiRes'; + hiResImage.setAttribute('src', url); + hiResImage.setAttribute('style', 'width: 100%;'); + $(frame).append(hiResImage); + $(frameRoot).append(frame); + frameRoot.setAttribute('style', 'display: table;'); + frame.setAttribute('style', 'display: table-cell; vertical-align:middle;'); + + if (this.config.showCaptions === true) { + var captionContainer = document.createElement('p'); + captionContainer.className = "frameCaption"; + captionContainer.innerText = caption || ""; + frameRoot.append(captionContainer); + this._caption = captionContainer; + } + + var overlayContainer = paella.player.videoContainer.overlayContainer; + + switch (this._showFullPreview) { + case "auto": + var streams = paella.initDelegate.initParams.videoLoader.streams; + + if (streams.length == 1) { + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + } else if (streams.length >= 2) { + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(1)); + } + + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + break; + + case "master": + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + break; + + case "slave": + var streams = paella.initDelegate.initParams.videoLoader.streams; + + if (streams.length >= 2) { + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + } + + break; + } + } + }, { + key: "removeHiResFrame", + value: function removeHiResFrame() { + var thisClass = this; + var overlayContainer = paella.player.videoContainer.overlayContainer; + + if (this.hiResFrame) { + overlayContainer.removeElement(this.hiResFrame); + } + + overlayContainer.disableBackgroundMode(); + thisClass._img = null; + } + }, { + key: "updateFrameVisibility", + value: function updateFrameVisibility(trimEnabled, trimStart, trimEnd) { + var i; + + if (!trimEnabled) { + for (i = 0; i < this.frames.length; ++i) { + $(this.frames[i]).show(); + } + } else { + for (i = 0; i < this.frames.length; ++i) { + var frameElem = this.frames[i]; + var frameData = frameElem.frameData; + + if (frameData.time < trimStart) { + if (this.frames.length > i + 1 && this.frames[i + 1].frameData.time > trimStart) { + $(frameElem).show(); + } else { + $(frameElem).hide(); + } + } else if (frameData.time > trimEnd) { + $(frameElem).hide(); + } else { + $(frameElem).show(); + } + } + } + } + }, { + key: "getFrame", + value: function getFrame(frameData, id) { + var frame = document.createElement('div'); + frame.className = 'frameControlItem'; + if (id) frame.id = id; + + if (frameData) { + this.buttons.push(frame); + frame.frameData = frameData; + frame.frameControl = this; + var image = frameData.thumb ? frameData.thumb : frameData.url; + var labelTime = paella.utils.timeParse.secondsToTime(frameData.time); + frame.innerHTML = '<img src="' + image + '" alt="" class="frameControlImage" title="' + labelTime + '" aria-label="' + labelTime + '"></img>'; + + if (!base.userAgent.browser.IsMobileVersion) { + $(frame).mouseover(function (event) { + this.frameControl.onMouseOver(event, this.frameData); + }); + } + + $(frame).mouseout(function (event) { + this.frameControl.onMouseOut(event, this.frameData); + }); + $(frame).click(function (event) { + this.frameControl.onClick(event, this.frameData); + }); + } + + return frame; + } + }, { + key: "onMouseOver", + value: function onMouseOver(event, frameData) { + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var frame = frames[frameData.time]; + + if (frame) { + var image = frame.url; + + if (this._img) { + this._img.setAttribute('src', image); + + if (this.config.showCaptions === true) { + this._caption.innerText = frame.caption || ""; + } + } else { + this.showHiResFrame(image, frame.caption); + } + } + + if (this._searchTimer != null) { + clearTimeout(this._searchTimer); + } + } + }, { + key: "onMouseOut", + value: function onMouseOut(event, frameData) { + var _this160 = this; + + this._searchTimer = setTimeout(function (timer) { + return _this160.removeHiResFrame(); + }, this._searchTimerTime); + } + }, { + key: "onClick", + value: function onClick(event, frameData) { + paella.player.videoContainer.trimming().then(function (trimming) { + var time = trimming.enabled ? frameData.time - trimming.start : frameData.time; + + if (time > 0) { + paella.player.videoContainer.seekToTime(time + 1); + } else { + paella.player.videoContainer.seekToTime(0); + } + }); + } + }, { + key: "onTimeUpdate", + value: function onTimeUpdate(currentTime) { + var _this161 = this; + + var frame = null; + paella.player.videoContainer.trimming().then(function (trimming) { + var time = trimming.enabled ? currentTime + trimming.start : currentTime; + + for (var i = 0; i < _this161.frames.length; ++i) { + if (_this161.frames[i].frameData && _this161.frames[i].frameData.time <= time) { + frame = _this161.frames[i]; + } else { + break; + } + } + + if (_this161.currentFrame != frame && frame) { + //this.navButtons.left.scrollContainer.scrollLeft += 100; + if (_this161.currentFrame) _this161.currentFrame.className = 'frameControlItem'; + _this161.currentFrame = frame; + _this161.currentFrame.className = 'frameControlItem current'; + } + }); + } + }, { + key: "frames", + get: function get() { + return this._frames; + }, + set: function set(v) { + this._frames = v; + } + }, { + key: "highResFrames", + get: function get() { + return this._highResFrames; + }, + set: function set(v) { + this._highResFrames = v; + } + }, { + key: "currentFrame", + get: function get() { + return this._currentFrame; + }, + set: function set(v) { + this._currentFrame = v; + } + }, { + key: "navButtons", + get: function get() { + return this._navButtons; + }, + set: function set(v) { + this._navButtons = v; + } + }, { + key: "buttons", + get: function get() { + if (!this._buttons) { + this._buttons = []; + } + + return this._buttons; + }, + set: function set(v) { + this._buttons = v; + } + }, { + key: "contx", + get: function get() { + return this._contx; + }, + set: function set(v) { + this._contx = v; + } + }]); + + return FrameControlPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin9) { + _inherits(FullScreenPlugin, _paella$ButtonPlugin9); + + function FullScreenPlugin() { + _classCallCheck(this, FullScreenPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(FullScreenPlugin).apply(this, arguments)); + } + + _createClass(FullScreenPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 551; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showFullScreenButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-fullscreen'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.fullScreenButtonPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._reload = null; + var enabled = paella.player.checkFullScreenCapability(); + onSuccess(enabled); + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Go Fullscreen"); + } + }, { + key: "setup", + value: function setup() { + var _this162 = this; + + this._reload = this.config.reloadOnFullscreen ? this.config.reloadOnFullscreen.enabled : false; + paella.events.bind(paella.events.enterFullscreen, function (event) { + return _this162.onEnterFullscreen(); + }); + paella.events.bind(paella.events.exitFullscreen, function (event) { + return _this162.onExitFullscreen(); + }); + } + }, { + key: "action", + value: function action(button) { + var _this163 = this; + + if (paella.player.isFullScreen()) { + paella.player.exitFullScreen(); + } else if ((!paella.player.checkFullScreenCapability() || base.userAgent.browser.Explorer) && window.location !== window.parent.location) { + // Iframe and no fullscreen support + var url = window.location.href; + paella.player.pause(); + paella.player.videoContainer.currentTime().then(function (currentTime) { + var obj = _this163.secondsToHours(currentTime); + + window.open(url + "&time=" + obj.h + "h" + obj.m + "m" + obj.s + "s&autoplay=true"); + }); + return; + } else { + paella.player.goFullScreen(); + } + + if (paella.player.config.player.reloadOnFullscreen && paella.player.videoContainer.supportAutoplay()) { + setTimeout(function () { + if (_this163._reload) { + paella.player.videoContainer.setQuality(null).then(function () {}); //paella.player.reloadVideos(); + } + }, 1000); + } + } + }, { + key: "secondsToHours", + value: function secondsToHours(sec_numb) { + var hours = Math.floor(sec_numb / 3600); + var minutes = Math.floor((sec_numb - hours * 3600) / 60); + var seconds = Math.floor(sec_numb - hours * 3600 - minutes * 60); + var obj = {}; + + if (hours < 10) { + hours = "0" + hours; + } + + if (minutes < 10) { + minutes = "0" + minutes; + } + + if (seconds < 10) { + seconds = "0" + seconds; + } + + obj.h = hours; + obj.m = minutes; + obj.s = seconds; + return obj; + } + }, { + key: "onEnterFullscreen", + value: function onEnterFullscreen() { + this.setToolTip(base.dictionary.translate("Exit Fullscreen")); + this.button.className = this.getButtonItemClass(true); + this.changeIconClass('icon-windowed'); + } + }, { + key: "onExitFullscreen", + value: function onExitFullscreen() { + this.setToolTip(base.dictionary.translate("Go Fullscreen")); + this.button.className = this.getButtonItemClass(false); + this.changeIconClass('icon-fullscreen'); + setTimeout(function () { + paella.player.onresize(); + }, 100); + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(selected) { + return 'buttonPlugin ' + this.getAlignment() + ' ' + this.getSubclass() + (selected ? ' active' : ''); + } + }]); + + return FullScreenPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin10) { + _inherits(HelpPlugin, _paella$ButtonPlugin10); + + function HelpPlugin() { + _classCallCheck(this, HelpPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(HelpPlugin).apply(this, arguments)); + } + + _createClass(HelpPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 509; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "helpButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-help'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.helpPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Show help") + ' (' + base.dictionary.translate("Paella version:") + ' ' + paella.version + ')'; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var availableLangs = this.config && this.config.langs || []; + onSuccess(availableLangs.length > 0); + } + }, { + key: "action", + value: function action(button) { + var mylang = base.dictionary.currentLanguage(); + var availableLangs = this.config && this.config.langs || []; + var idx = availableLangs.indexOf(mylang); + + if (idx < 0) { + idx = 0; + } //paella.messageBox.showFrame("http://paellaplayer.upv.es/?page=usage"); + + + var url = "resources/style/help/help_" + availableLangs[idx] + ".html"; + + if (base.userAgent.browser.IsMobileVersion) { + window.open(url); + } else { + paella.messageBox.showFrame(url); + } + } + }]); + + return HelpPlugin; + }(paella.ButtonPlugin) + ); +}); + +(function () { + var s_preventVideoDump = []; + + var HLSPlayer = + /*#__PURE__*/ + function (_paella$Html5Video) { + _inherits(HLSPlayer, _paella$Html5Video); + + _createClass(HLSPlayer, [{ + key: "config", + get: function get() { + var config = { + autoStartLoad: true, + startPosition: -1, + capLevelToPlayerSize: true, + debug: false, + defaultAudioCodec: undefined, + initialLiveManifestSize: 1, + maxBufferLength: 30, + maxMaxBufferLength: 600, + maxBufferSize: 60 * 1000 * 1000, + maxBufferHole: 0.5, + lowBufferWatchdogPeriod: 0.5, + highBufferWatchdogPeriod: 3, + nudgeOffset: 0.1, + nudgeMaxRetry: 3, + maxFragLookUpTolerance: 0.2, + liveSyncDurationCount: 3, + liveMaxLatencyDurationCount: 10, + enableWorker: true, + enableSoftwareAES: true, + manifestLoadingTimeOut: 10000, + manifestLoadingMaxRetry: 1, + manifestLoadingRetryDelay: 500, + manifestLoadingMaxRetryTimeout: 64000, + startLevel: undefined, + levelLoadingTimeOut: 10000, + levelLoadingMaxRetry: 4, + levelLoadingRetryDelay: 500, + levelLoadingMaxRetryTimeout: 64000, + fragLoadingTimeOut: 20000, + fragLoadingMaxRetry: 6, + fragLoadingRetryDelay: 500, + fragLoadingMaxRetryTimeout: 64000, + startFragPrefetch: false, + appendErrorMaxRetry: 3, + // loader: customLoader, + // fLoader: customFragmentLoader, + // pLoader: customPlaylistLoader, + // xhrSetup: XMLHttpRequestSetupCallback, + // fetchSetup: FetchSetupCallback, + // abrController: customAbrController, + // timelineController: TimelineController, + enableWebVTT: true, + enableCEA708Captions: true, + stretchShortVideoTrack: false, + maxAudioFramesDrift: 1, + forceKeyFrameOnDiscontinuity: true, + abrEwmaFastLive: 5.0, + abrEwmaSlowLive: 9.0, + abrEwmaFastVoD: 4.0, + abrEwmaSlowVoD: 15.0, + abrEwmaDefaultEstimate: 500000, + abrBandWidthFactor: 0.95, + abrBandWidthUpFactor: 0.7, + minAutoBitrate: 0 + }; + var pluginConfig = {}; + paella.player.config.player.methods.some(function (methodConfig) { + if (methodConfig.factory == "HLSVideoFactory") { + pluginConfig = methodConfig.config || {}; + return true; + } + }); + + for (var key in config) { + if (pluginConfig[key] != undefined) { + config[key] = pluginConfig[key]; + } + } + + return config; + } + }]); + + function HLSPlayer(id, stream, left, top, width, height) { + _classCallCheck(this, HLSPlayer); + + return _possibleConstructorReturn(this, _getPrototypeOf(HLSPlayer).call(this, id, stream, left, top, width, height, 'hls')); + } + + _createClass(HLSPlayer, [{ + key: "_loadDeps", + value: function _loadDeps() { + return new Promise(function (resolve, reject) { + if (!window.$paella_hls) { + require([paella.baseUrl + 'resources/deps/hls.min.js'], function (hls) { + window.$paella_hls = hls; + resolve(window.$paella_hls); + }); + } else { + resolve(window.$paella_hls); + } + }); + } + }, { + key: "setupHls", + value: function setupHls(video, url) { + var _this164 = this; + + return new Promise(function (resolve, reject) { + _this164._loadDeps().then(function (Hls) { + if (Hls.isSupported()) { + var cfg = _this164.config; + _this164._hls = new Hls(cfg); + + _this164._hls.loadSource(url); + + _this164._hls.attachMedia(video); + + _this164.autoQuality = true; + + _this164._hls.on(Hls.Events.LEVEL_SWITCHED, function (ev, data) { + _this164._qualities = _this164._qualities || []; + _this164._qualityIndex = _this164.autoQuality ? _this164._qualities.length - 1 : data.level; + paella.events.trigger(paella.events.qualityChanged, {}); + if (console && console.log) console.log("HLS: quality level changed to ".concat(data.level)); + }); + + _this164._hls.on(Hls.Events.ERROR, function (event, data) { + if (data.fatal) { + switch (data.type) { + case Hls.ErrorTypes.NETWORK_ERROR: + console.error("paella.HLSPlayer: Fatal network error encountered, try to recover"); + + _this164._hls.startLoad(); + + break; + + case Hls.ErrorTypes.MEDIA_ERROR: + console.error("paella.HLSPlayer: Fatal media error encountered, try to recover"); + + _this164._hls.recoverMediaError(); + + break; + + default: + console.error("paella.HLSPlayer: Fatal error. Can not recover"); + + _this164._hls.destroy(); + + reject(new Errro("Invalid media")); + break; + } + } + }); + + _this164._hls.on(Hls.Events.MANIFEST_PARSED, function () { + //this._deferredAction(function() { + resolve(video); //}); + }); + } else { + reject(new Error("HLS not supported")); + } + }); + }); + } + }, { + key: "webGlDidLoad", + value: function webGlDidLoad() { + var _this165 = this; + + // Register a new video loader in the webgl engine, to enable the + // hls compatibility in webgl canvas + bg.utils.HTTPResourceProvider.AddVideoLoader('m3u8', function (url, onSuccess, onFail) { + var video = document.createElement("video"); + s_preventVideoDump.push(video); + + _this165.setupHls(video, url).then(function () { + return onSuccess(video); + })["catch"](function () { + return onFail(); + }); + }); + return Promise.resolve(); + } + }, { + key: "loadVideoStream", + value: function loadVideoStream(canvasInstance, stream) { + var _this166 = this; + + return canvasInstance.loadVideo(this, stream, function (videoElem) { + return _this166.setupHls(videoElem, stream.src); + }); + } + }, { + key: "getQualities", + value: function getQualities() { + var _this167 = this; + + if (base.userAgent.system.iOS) // || + // base.userAgent.browser.Safari) + { + return new Promise(function (resolve, reject) { + resolve([{ + index: 0, + res: "", + src: "", + toString: function toString() { + return "auto"; + }, + shortLabel: function shortLabel() { + return "auto"; + }, + compare: function compare(q2) { + return 0; + } + }]); + }); + } else { + var _This = this; + + return new Promise(function (resolve) { + if (!_this167._qualities || _this167._qualities.length == 0) { + _This._qualities = []; + + _This._hls.levels.forEach(function (q, index) { + _This._qualities.push(_This._getQualityObject(index, { + index: index, + res: { + w: q.width, + h: q.height + }, + bitrate: q.bitrate + })); + }); + + if (_this167._qualities.length > 1) { + // If there is only one quality level, don't add the "auto" option + _This._qualities.push(_This._getQualityObject(_This._qualities.length, { + index: _This._qualities.length, + res: { + w: 0, + h: 0 + }, + bitrate: 0 + })); + } + } + + _This.qualityIndex = _This._qualities.length - 1; + resolve(_This._qualities); + }); + } + } + }, { + key: "printQualityes", + value: function printQualityes() { + var _this168 = this; + + return new Promise(function (resolve, reject) { + _this168.getCurrentQuality().then(function (cq) { + return _this168.getNextQuality(); + }).then(function (nq) { + resolve(); + }); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + if (base.userAgent.system.iOS) // || + //base.userAgent.browser.Safari) + { + return Promise.resolve(); + } else if (index !== null) { + try { + this.qualityIndex = index; + var level = index; + this.autoQuality = false; + + if (index == this._qualities.length - 1) { + level = -1; + this.autoQuality = true; + } + + this._hls.currentLevel = level; + } catch (err) {} + + return Promise.resolve(); + } else { + return Promise.resolve(); + } + } + }, { + key: "getNextQuality", + value: function getNextQuality() { + var _this169 = this; + + return new Promise(function (resolve, reject) { + var index = _this169.qualityIndex; + resolve(_this169._qualities[index]); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this170 = this; + + if (base.userAgent.system.iOS) // || + //base.userAgent.browser.Safari) + { + return Promise.resolve(0); + } else { + return new Promise(function (resolve, reject) { + resolve(_this170._qualities[_this170.qualityIndex]); + }); + } + } + }]); + + return HLSPlayer; + }(paella.Html5Video); + + paella.HLSPlayer = HLSPlayer; + + var HLSVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory3) { + _inherits(HLSVideoFactory, _paella$VideoFactory3); + + function HLSVideoFactory() { + _classCallCheck(this, HLSVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(HLSVideoFactory).apply(this, arguments)); + } + + _createClass(HLSVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + if (paella.videoFactories.HLSVideoFactory.s_instances === undefined) { + paella.videoFactories.HLSVideoFactory.s_instances = 0; + } + + try { + var cfg = this.config; + + if (base.userAgent.system.iOS && paella.videoFactories.HLSVideoFactory.s_instances >= cfg.iOSMaxStreams || base.userAgent.system.Android && paella.videoFactories.HLSVideoFactory.s_instances >= cfg.androidMaxStreams) // In some old mobile devices, playing a high number of HLS streams may cause that the browser tab crash + { + return false; + } + + for (var key in streamData.sources) { + if (key == 'hls') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + ++paella.videoFactories.HLSVideoFactory.s_instances; + return new paella.HLSPlayer(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }, { + key: "config", + get: function get() { + var hlsConfig = null; + paella.player.config.player.methods.some(function (methodConfig) { + if (methodConfig.factory == "HLSVideoFactory") { + hlsConfig = methodConfig; + } + + return hlsConfig != null; + }); + return hlsConfig || { + iOSMaxStreams: 1, + androidMaxStreams: 1 + }; + } + }]); + + return HLSVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.HLSVideoFactory = HLSVideoFactory; +})(); + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$KeyPlugin) { + _inherits(DefaultKeyPlugin, _paella$KeyPlugin); + + function DefaultKeyPlugin() { + _classCallCheck(this, DefaultKeyPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(DefaultKeyPlugin).apply(this, arguments)); + } + + _createClass(DefaultKeyPlugin, [{ + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.defaultKeysPlugin"; + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "onKeyPress", + value: function onKeyPress(event) { + // Matterhorn standard keys + if (event.altKey && event.ctrlKey) { + if (event.which == paella.Keys.P) { + this.togglePlayPause(); + return true; + } else if (event.which == paella.Keys.S) { + this.pause(); + return true; + } else if (event.which == paella.Keys.M) { + this.mute(); + return true; + } else if (event.which == paella.Keys.U) { + this.volumeUp(); + return true; + } else if (event.which == paella.Keys.D) { + this.volumeDown(); + return true; + } + } else { + // Paella player keys + if (event.which == paella.Keys.Space) { + this.togglePlayPause(); + return true; + } else if (event.which == paella.Keys.Up) { + this.volumeUp(); + return true; + } else if (event.which == paella.Keys.Down) { + this.volumeDown(); + return true; + } else if (event.which == paella.Keys.M) { + this.mute(); + return true; + } + } + + return false; + } + }, { + key: "togglePlayPause", + value: function togglePlayPause() { + paella.player.videoContainer.paused().then(function (p) { + p ? paella.player.play() : paella.player.pause(); + }); + } + }, { + key: "pause", + value: function pause() { + paella.player.pause(); + } + }, { + key: "mute", + value: function mute() { + var videoContainer = paella.player.videoContainer; + + if (videoContainer.muted) { + videoContainer.unmute(); + } else { + videoContainer.mute(); + } // videoContainer.volume().then(function(volume){ + // var newVolume = 0; + // if (volume==0) { newVolume = 1.0; } + // paella.player.videoContainer.setVolume({ master:newVolume, slave: 0}); + // }); + + } + }, { + key: "volumeUp", + value: function volumeUp() { + var videoContainer = paella.player.videoContainer; + videoContainer.volume().then(function (volume) { + volume += 0.1; + volume = volume > 1 ? 1.0 : volume; + paella.player.videoContainer.setVolume(volume); + }); + } + }, { + key: "volumeDown", + value: function volumeDown() { + var videoContainer = paella.player.videoContainer; + videoContainer.volume().then(function (volume) { + volume -= 0.1; + volume = volume < 0 ? 0.0 : volume; + paella.player.videoContainer.setVolume(volume); + }); + } + }]); + + return DefaultKeyPlugin; + }(paella.KeyPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$VideoOverlayB) { + _inherits(LegalPlugin, _paella$VideoOverlayB); + + function LegalPlugin() { + _classCallCheck(this, LegalPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(LegalPlugin).apply(this, arguments)); + } + + _createClass(LegalPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 0; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "legal"; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return paella.player.config.plugins.list[this.getName()].position; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return ""; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + var plugin = paella.player.config.plugins.list[this.getName()]; + var title = document.createElement('a'); + title.innerText = plugin.label; + this._url = plugin.legalUrl; + title.className = ""; + this.button.appendChild(title); + } + }, { + key: "action", + value: function action(button) { + window.open(this._url); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.legalPlugin"; + } + }]); + + return LegalPlugin; + }(paella.VideoOverlayButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$VideoOverlayB2) { + _inherits(LiveStreamIndicator, _paella$VideoOverlayB2); + + function LiveStreamIndicator() { + _classCallCheck(this, LiveStreamIndicator); + + return _possibleConstructorReturn(this, _getPrototypeOf(LiveStreamIndicator).apply(this, arguments)); + } + + _createClass(LiveStreamIndicator, [{ + key: "isEditorVisible", + value: function isEditorVisible() { + return paella.editor.instance != null; + } + }, { + key: "getIndex", + value: function getIndex() { + return 10; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "liveIndicator"; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("This video is a live stream"); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.liveStreamingIndicatorPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(paella.player.isLiveStream()); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "action", + value: function action(button) { + paella.messageBox.showMessage(base.dictionary.translate("Live streaming mode: This is a live video, so, some capabilities of the player are disabled")); + } + }]); + + return LiveStreamIndicator; + }(paella.VideoOverlayButtonPlugin) + ); +}); + +(function () { + var MpegDashVideo = + /*#__PURE__*/ + function (_paella$Html5Video2) { + _inherits(MpegDashVideo, _paella$Html5Video2); + + function MpegDashVideo(id, stream, left, top, width, height) { + var _this171; + + _classCallCheck(this, MpegDashVideo); + + _this171 = _possibleConstructorReturn(this, _getPrototypeOf(MpegDashVideo).call(this, id, stream, left, top, width, height, 'mpd')); + _this171._posterFrame = null; + _this171._player = null; + return _this171; + } + + _createClass(MpegDashVideo, [{ + key: "_loadDeps", + value: function _loadDeps() { + return new Promise(function (resolve, reject) { + if (!window.$paella_mpd) { + require([paella.baseUrl + 'resources/deps/dash.all.js'], function () { + window.$paella_mpd = true; + resolve(window.$paella_mpd); + }); + } else { + resolve(window.$paella_mpd); + } + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(item, index, bitrates) { + var total = bitrates.length; + var percent = Math.round(index * 100 / total); + var label = index == 0 ? "min" : index == total - 1 ? "max" : percent + "%"; + return { + index: index, + res: { + w: null, + h: null + }, + bitrate: item.bitrate, + src: null, + toString: function toString() { + return percent; + }, + shortLabel: function shortLabel() { + return label; + }, + compare: function compare(q2) { + return this.bitrate - q2.bitrate; + } + }; + } + }, { + key: "webGlDidLoad", + value: function webGlDidLoad() { + // Register a new video loader in the webgl engine, to enable the + // hls compatibility in webgl canvas + bg.utils.HTTPResourceProvider.AddVideoLoader('mpd', function (url, onSuccess, onFail) { + var video = document.createElement("video"); + s_preventVideoDump.push(video); // this.setupHls(video,url) + // .then(() => onSuccess(video)) + // .catch(() => onFail()); + }); + return Promise.resolve(); + } + }, { + key: "loadVideoStream", + value: function loadVideoStream(canvasInstance, stream) { + var _this172 = this; + + var This = this; + return canvasInstance.loadVideo(this, stream, function (videoElem) { + return new Promise(function (resolve, reject) { + _this172._loadDeps().then(function () { + var player = dashjs.MediaPlayer().create(); + player.initialize(videoElem, stream.src, true); + player.getDebug().setLogToBrowserConsole(false); + _this172._player = player; + player.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED, function (a, b) { + var bitrates = player.getBitrateInfoListFor("video"); + + This._deferredAction(function () { + if (!This._firstPlay) { + This._player.pause(); + + This._firstPlay = true; + } + + resolve(); + }); + }); + }); + }); + }); + } // load() { + // let This = this; + // return new Promise((resolve,reject) => { + // var source = this._stream.sources.mpd; + // if (source && source.length>0) { + // source = source[0]; + // this._loadDeps() + // .then(function() { + // var context = dashContext; + // var player = dashjs.MediaPlayer().create(); + // var dashContext = context; + // player.initialize(This.video,source.src,true); + // player.getDebug().setLogToBrowserConsole(false); + // This._player = player; + // player.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED,function(a,b) { + // var bitrates = player.getBitrateInfoListFor("video"); + // This._deferredAction(function() { + // if (!This._firstPlay) { + // This._player.pause(); + // This._firstPlay = true; + // } + // resolve(); + // }); + // }); + // }); + // } + // else { + // reject(new Error("Invalid source")); + // } + // }); + // } + + }, { + key: "supportAutoplay", + value: function supportAutoplay() { + return true; + } + }, { + key: "getQualities", + value: function getQualities() { + var _this173 = this; + + return new Promise(function (resolve) { + _this173._deferredAction(function () { + if (!_this173._qualities) { + _this173._qualities = []; + + _this173._player.getBitrateInfoListFor("video").sort(function (a, b) { + return a.bitrate - b.bitrate; + }).forEach(function (item, index, bitrates) { + _this173._qualities.push(_this173._getQualityObject(item, index, bitrates)); + }); + + _this173.autoQualityIndex = _this173._qualities.length; + + _this173._qualities.push({ + index: _this173.autoQualityIndex, + res: { + w: null, + h: null + }, + bitrate: -1, + src: null, + toString: function toString() { + return "auto"; + }, + shortLabel: function shortLabel() { + return "auto"; + }, + compare: function compare(q2) { + return this.bitrate - q2.bitrate; + } + }); + } + + resolve(_this173._qualities); + }); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this174 = this; + + return new Promise(function (resolve, reject) { + var currentQuality = _this174._player.getQualityFor("video"); + + if (index == _this174.autoQualityIndex) { + _this174._player.setAutoSwitchQuality(true); + + resolve(); + } else if (index != currentQuality) { + _this174._player.setAutoSwitchQuality(false); + + _this174._player.off(dashjs.MediaPlayer.events.METRIC_CHANGED); + + _this174._player.on(dashjs.MediaPlayer.events.METRIC_CHANGED, function (a, b) { + if (a.type == "metricchanged") { + if (currentQuality != _this174._player.getQualityFor("video")) { + currentQuality = _this174._player.getQualityFor("video"); + resolve(); + } + } + }); + + _this174._player.setQualityFor("video", index); + } else { + resolve(); + } + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this175 = this; + + return new Promise(function (resolve, reject) { + if (_this175._player.getAutoSwitchQuality()) { + // auto quality + resolve({ + index: _this175.autoQualityIndex, + res: { + w: null, + h: null + }, + bitrate: -1, + src: null, + toString: function toString() { + return "auto"; + }, + shortLabel: function shortLabel() { + return "auto"; + }, + compare: function compare(q2) { + return this.bitrate - q2.bitrate; + } + }); + } else { + var index = _this175._player.getQualityFor("video"); + + resolve(_this175._getQualityObject(_this175._qualities[index], index, _this175._player.getBitrateInfoListFor("video"))); + } + }); + } + }, { + key: "unFreeze", + value: function unFreeze() { + return paella_DeferredNotImplemented(); + } + }, { + key: "freeze", + value: function freeze() { + return paella_DeferredNotImplemented(); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }]); + + return MpegDashVideo; + }(paella.Html5Video); + + paella.MpegDashVideo = MpegDashVideo; + + var MpegDashVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory4) { + _inherits(MpegDashVideoFactory, _paella$VideoFactory4); + + function MpegDashVideoFactory() { + _classCallCheck(this, MpegDashVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(MpegDashVideoFactory).apply(this, arguments)); + } + + _createClass(MpegDashVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + if (base.userAgent.system.iOS) { + return false; + } + + for (var key in streamData.sources) { + if (key == 'mpd') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.MpegDashVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return MpegDashVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.MpegDashVideoFactory = MpegDashVideoFactory; +})(); + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin11) { + _inherits(MultipleQualitiesPlugin, _paella$ButtonPlugin11); + + function MultipleQualitiesPlugin() { + _classCallCheck(this, MultipleQualitiesPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(MultipleQualitiesPlugin).apply(this, arguments)); + } + + _createClass(MultipleQualitiesPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showMultipleQualitiesPlugin"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-screen'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2030; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.multipleQualitiesPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Change video quality"); + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this176 = this; + + this._available = []; + paella.player.videoContainer.getQualities().then(function (q) { + _this176._available = q; + onSuccess(q.length > 1); + }); + } + }, { + key: "setup", + value: function setup() { + var _this177 = this; + + this.setQualityLabel(); + paella.events.bind(paella.events.qualityChanged, function (event) { + return _this177.setQualityLabel(); + }); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this178 = this; + + this._available.forEach(function (q) { + var title = q.shortLabel(); + domElement.appendChild(_this178.getItemButton(q)); + }); + } + }, { + key: "getItemButton", + value: function getItemButton(quality) { + var _this179 = this; + + var elem = document.createElement('div'); + var This = this; + paella.player.videoContainer.getCurrentQuality().then(function (currentIndex, currentData) { + var label = quality.shortLabel(); + elem.className = _this179.getButtonItemClass(label, quality.index == currentIndex); + elem.id = label; + elem.innerText = label; + elem.data = quality; + $(elem).click(function (event) { + $('.multipleQualityItem').removeClass('selected'); + $('.multipleQualityItem.' + this.data.toString()).addClass('selected'); + paella.player.videoContainer.setQuality(this.data.index).then(function () { + paella.player.controls.hidePopUp(This.getName()); + This.setQualityLabel(); + }); + }); + }); + return elem; + } + }, { + key: "setQualityLabel", + value: function setQualityLabel() { + var _this180 = this; + + paella.player.videoContainer.getCurrentQuality().then(function (q) { + _this180.setText(q.shortLabel()); + }); + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(profileName, selected) { + return 'multipleQualityItem ' + profileName + (selected ? ' selected' : ''); + } + }]); + + return MultipleQualitiesPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin12) { + _inherits(PIPModePlugin, _paella$ButtonPlugin12); + + function PIPModePlugin() { + _classCallCheck(this, PIPModePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(PIPModePlugin).apply(this, arguments)); + } + + _createClass(PIPModePlugin, [{ + key: "getIndex", + value: function getIndex() { + return 551; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "PIPModeButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-pip'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.pipModePlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var mainVideo = paella.player.videoContainer.masterVideo(); + var video = mainVideo.video; // PIP is only available with single stream videos + + if (paella.player.videoContainer.streamProvider.videoStreams.length != 1) { + onSuccess(false); + } else if (video && video.webkitSetPresentationMode) { + onSuccess(true); + } else if (video && 'pictureInPictureEnabled' in document) { + onSuccess(true); + } else { + onSuccess(false); + } + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Set picture-in-picture mode."); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "action", + value: function action(button) { + var video = paella.player.videoContainer.masterVideo().video; + + if (video.webkitSetPresentationMode) { + if (video.webkitPresentationMode == "picture-in-picture") { + video.webkitSetPresentationMode("inline"); + } else { + video.webkitSetPresentationMode("picture-in-picture"); + } + } else if ('pictureInPictureEnabled' in document) { + if (video !== document.pictureInPictureElement) { + video.requestPictureInPicture(); + } else { + document.exitPictureInPicture(); + } + } + } + }]); + + return PIPModePlugin; + }(paella.ButtonPlugin) + ); +}); //paella.plugins.PlayPauseButtonPlugin = Class.create(paella.ButtonPlugin, { + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin13) { + _inherits(PlayPauseButtonPlugin, _paella$ButtonPlugin13); + + function PlayPauseButtonPlugin() { + var _this181; + + _classCallCheck(this, PlayPauseButtonPlugin); + + _this181 = _possibleConstructorReturn(this, _getPrototypeOf(PlayPauseButtonPlugin).call(this)); + _this181.playIconClass = 'icon-play'; + _this181.pauseIconClass = 'icon-pause'; + _this181.playSubclass = 'playButton'; + _this181.pauseSubclass = 'pauseButton'; + return _this181; + } + + _createClass(PlayPauseButtonPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'left'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return this.playSubclass; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return this.playIconClass; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.playPauseButtonPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Play"); + } + }, { + key: "getIndex", + value: function getIndex() { + return 110; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + var _this182 = this; + + if (paella.player.playing()) { + this.changeIconClass(this.playIconClass); + } + + paella.events.bind(paella.events.play, function (event) { + _this182.changeIconClass(_this182.pauseIconClass); + + _this182.changeSubclass(_this182.pauseSubclass); + + _this182.setToolTip(paella.dictionary.translate("Pause")); + }); + paella.events.bind(paella.events.pause, function (event) { + _this182.changeIconClass(_this182.playIconClass); + + _this182.changeSubclass(_this182.playSubclass); + + _this182.setToolTip(paella.dictionary.translate("Play")); + }); + paella.events.bind(paella.events.ended, function (event) { + _this182.changeIconClass(_this182.playIconClass); + + _this182.changeSubclass(_this182.playSubclass); + + _this182.setToolTip(paella.dictionary.translate("Play")); + }); + } + }, { + key: "action", + value: function action(button) { + paella.player.videoContainer.paused().then(function (paused) { + if (paused) { + paella.player.play(); + } else { + paella.player.pause(); + } + }); + } + }]); + + return PlayPauseButtonPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl9) { + _inherits(PlayButtonOnScreen, _paella$EventDrivenPl9); + + function PlayButtonOnScreen() { + var _this183; + + _classCallCheck(this, PlayButtonOnScreen); + + _this183 = _possibleConstructorReturn(this, _getPrototypeOf(PlayButtonOnScreen).call(this)); + _this183.containerId = 'paella_plugin_PlayButtonOnScreen'; + _this183.container = null; + _this183.enabled = true; + _this183.isPlaying = false; + _this183.showIcon = true; + _this183.firstPlay = false; + return _this183; + } + + _createClass(PlayButtonOnScreen, [{ + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this184 = this; + + this.showOnEnd = true; + paella.data.read('relatedVideos', { + id: paella.player.videoIdentifier + }, function (data) { + _this184.showOnEnd = !Array.isArray(data) || data.length == 0; + }); + onSuccess(!paella.player.isLiveStream() || base.userAgent.system.Android || base.userAgent.system.iOS || !paella.player.videoContainer.supportAutoplay()); + } + }, { + key: "getIndex", + value: function getIndex() { + return 1010; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.playButtonOnScreenPlugin"; + } + }, { + key: "setup", + value: function setup() { + var _this185 = this; + + this.container = paella.LazyThumbnailContainer.GetIconElement(); + paella.player.videoContainer.domElement.appendChild(this.container); + $(this.container).click(function () { + return _this185.onPlayButtonClick(); + }); + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.endVideo, paella.events.play, paella.events.pause, paella.events.showEditor, paella.events.hideEditor]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + switch (eventType) { + case paella.events.endVideo: + this.endVideo(); + break; + + case paella.events.play: + this.play(); + break; + + case paella.events.pause: + this.pause(); + break; + + case paella.events.showEditor: + this.showEditor(); + break; + + case paella.events.hideEditor: + this.hideEditor(); + break; + } + } + }, { + key: "onPlayButtonClick", + value: function onPlayButtonClick() { + this.firstPlay = true; + this.checkStatus(); + } + }, { + key: "endVideo", + value: function endVideo() { + this.isPlaying = false; + this.showIcon = this.showOnEnd; + this.checkStatus(); + } + }, { + key: "play", + value: function play() { + this.isPlaying = true; + this.showIcon = false; + this.checkStatus(); + } + }, { + key: "pause", + value: function pause() { + this.isPlaying = false; + this.showIcon = true; + this.checkStatus(); + } + }, { + key: "showEditor", + value: function showEditor() { + this.enabled = false; + this.checkStatus(); + } + }, { + key: "hideEditor", + value: function hideEditor() { + this.enabled = true; + this.checkStatus(); + } + }, { + key: "checkStatus", + value: function checkStatus() { + if (this.enabled && this.isPlaying || !this.enabled || !this.showIcon) { + $(this.container).hide(); + } // Only show play button if none of the video players require mouse events + else if (!paella.player.videoContainer.streamProvider.videoPlayers.every(function (p) { + return p.canvasData.mouseEventsSupport; + })) { + $(this.container).show(); + } + } + }]); + + return PlayButtonOnScreen; + }(paella.EventDrivenPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin14) { + _inherits(PlaybackRate, _paella$ButtonPlugin14); + + function PlaybackRate() { + _classCallCheck(this, PlaybackRate); + + return _possibleConstructorReturn(this, _getPrototypeOf(PlaybackRate).apply(this, arguments)); + } + + _createClass(PlaybackRate, [{ + key: "getAlignment", + value: function getAlignment() { + return 'left'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showPlaybackRateButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-screen'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 140; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.playbackRatePlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Set playback rate"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this.buttonItems = null; + this.buttons = []; + this.selected_button = null; + this.defaultRate = null; + this._domElement = null; + this.available_rates = null; + var enabled = !base.userAgent.browser.IsMobileVersion && paella.player.videoContainer.masterVideo() instanceof paella.Html5Video; + onSuccess(enabled && !paella.player.videoContainer.streamProvider.isLiveStreaming); + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "setup", + value: function setup() { + this.defaultRate = 1.0; + this.available_rates = this.config.availableRates || [0.75, 1, 1.25, 1.5]; + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this186 = this; + + this._domElement = domElement; + this.buttonItems = {}; + this.available_rates.forEach(function (rate) { + domElement.appendChild(_this186.getItemButton(rate + "x", rate)); + }); + } + }, { + key: "getItemButton", + value: function getItemButton(label, rate) { + var elem = document.createElement('div'); + + if (rate == 1.0) { + elem.className = this.getButtonItemClass(label, true); + } else { + elem.className = this.getButtonItemClass(label, false); + } + + elem.id = label + '_button'; + elem.innerText = label; + elem.data = { + label: label, + rate: rate, + plugin: this + }; + $(elem).click(function (event) { + this.data.plugin.onItemClick(this, this.data.label, this.data.rate); + }); + return elem; + } + }, { + key: "onItemClick", + value: function onItemClick(button, label, rate) { + var self = this; + paella.player.videoContainer.setPlaybackRate(rate); + this.setText(label); + paella.player.controls.hidePopUp(this.getName()); + var arr = self._domElement.children; + + for (var i = 0; i < arr.length; i++) { + arr[i].className = self.getButtonItemClass(i, false); + } + + button.className = self.getButtonItemClass(i, true); + } + }, { + key: "getText", + value: function getText() { + return "1x"; + } + }, { + key: "getProfileItemButton", + value: function getProfileItemButton(profile, profileData) { + var elem = document.createElement('div'); + elem.className = this.getButtonItemClass(profile, false); + elem.id = profile + '_button'; + elem.data = { + profile: profile, + profileData: profileData, + plugin: this + }; + $(elem).click(function (event) { + this.data.plugin.onItemClick(this, this.data.profile, this.data.profileData); + }); + return elem; + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(profileName, selected) { + return 'playbackRateItem ' + profileName + (selected ? ' selected' : ''); + } + }]); + + return PlaybackRate; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin15) { + _inherits(RatePlugin, _paella$ButtonPlugin15); + + function RatePlugin() { + _classCallCheck(this, RatePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(RatePlugin).apply(this, arguments)); + } + + _createClass(RatePlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "rateButtonPlugin"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-star'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 540; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.ratePlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Rate this video"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this187 = this; + + this.buttonItems = null; + this.buttons = []; + this.selected_button = null; + this.score = 0; + this.count = 0; + this.myScore = 0; + this.canVote = false; + this.scoreContainer = { + header: null, + rateButtons: null + }; + paella.data.read('rate', { + id: paella.initDelegate.getId() + }, function (data, status) { + if (data && _typeof(data) == 'object') { + _this187.score = Number(data.mean).toFixed(1); + _this187.count = data.count; + _this187.myScore = data.myScore; + _this187.canVote = data.canVote; + } + + onSuccess(status); + }); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "setScore", + value: function setScore(s) { + this.score = s; + this.updateScore(); + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "updateHeader", + value: function updateHeader() { + var score = base.dictionary.translate("Not rated"); + + if (this.count > 0) { + score = '<i class="glyphicon glyphicon-star"></i>'; + score += " ".concat(this.score, " ").concat(this.count, " ").concat(base.dictionary.translate('votes')); + } + + this.scoreContainer.header.innerHTML = "\n\t\t\t<div>\n\t\t\t\t<h4>".concat(base.dictionary.translate('Video score'), ":</h4>\n\t\t\t\t<h5>\n\t\t\t\t\t").concat(score, "\n\t\t\t\t</h5>\n\t\t\t\t</h4>\n\t\t\t\t<h4>").concat(base.dictionary.translate('Vote:'), "</h4>\n\t\t\t</div>\n\t\t\t"); + } + }, { + key: "updateRateButtons", + value: function updateRateButtons() { + this.scoreContainer.rateButtons.className = "rateButtons"; + this.buttons = []; + + if (this.canVote) { + this.scoreContainer.rateButtons.innerText = ""; + + for (var i = 0; i < 5; ++i) { + var btn = this.getStarButton(i + 1); + this.buttons.push(btn); + this.scoreContainer.rateButtons.appendChild(btn); + } + } else { + this.scoreContainer.rateButtons.innerHTML = "<h5>".concat(base.dictionary.translate('Login to vote'), "</h5>"); + } + + this.updateVote(); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var This = this; + This._domElement = domElement; + var header = document.createElement('div'); + domElement.appendChild(header); + header.className = "rateContainerHeader"; + this.scoreContainer.header = header; + this.updateHeader(); + var rateButtons = document.createElement('div'); + this.scoreContainer.rateButtons = rateButtons; + domElement.appendChild(rateButtons); + this.updateRateButtons(); + } + }, { + key: "getStarButton", + value: function getStarButton(score) { + var This = this; + var elem = document.createElement('i'); + elem.data = { + score: score, + active: false + }; + elem.className = "starButton glyphicon glyphicon-star-empty"; + $(elem).click(function (event) { + This.vote(this.data.score); + }); + return elem; + } + }, { + key: "vote", + value: function vote(score) { + var _this188 = this; + + this.myScore = score; + var data = { + mean: this.score, + count: this.count, + myScore: score, + canVote: this.canVote + }; + paella.data.write('rate', { + id: paella.initDelegate.getId() + }, data, function (result) { + paella.data.read('rate', { + id: paella.initDelegate.getId() + }, function (data, status) { + if (data && _typeof(data) == 'object') { + _this188.score = Number(data.mean).toFixed(1); + _this188.count = data.count; + _this188.myScore = data.myScore; + _this188.canVote = data.canVote; + } + + _this188.updateHeader(); + + _this188.updateRateButtons(); + }); + }); + } + }, { + key: "updateVote", + value: function updateVote() { + var _this189 = this; + + this.buttons.forEach(function (item, index) { + item.className = index < _this189.myScore ? "starButton glyphicon glyphicon-star" : "starButton glyphicon glyphicon-star-empty"; + }); + } + }]); + + return RatePlugin; + }(paella.ButtonPlugin) + ); +}); // Change this data delegate to read the related videos form an external source +// Default behaviour is to get the related videos from the data.json file + +paella.addDataDelegate("relatedVideos", function () { + return ( + /*#__PURE__*/ + function (_paella$DataDelegate2) { + _inherits(RelatedVideoDataDelegate, _paella$DataDelegate2); + + function RelatedVideoDataDelegate() { + _classCallCheck(this, RelatedVideoDataDelegate); + + return _possibleConstructorReturn(this, _getPrototypeOf(RelatedVideoDataDelegate).apply(this, arguments)); + } + + _createClass(RelatedVideoDataDelegate, [{ + key: "read", + value: function read(context, params, onSuccess) { + var videoMetadata = paella.player.videoLoader.getMetadata(); + + if (videoMetadata.related) { + onSuccess(videoMetadata.related); + } + } + }]); + + return RelatedVideoDataDelegate; + }(paella.DataDelegate) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl10) { + _inherits(RelatedVideoPlugin, _paella$EventDrivenPl10); + + function RelatedVideoPlugin() { + _classCallCheck(this, RelatedVideoPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(RelatedVideoPlugin).apply(this, arguments)); + } + + _createClass(RelatedVideoPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.relatedVideosPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this190 = this; + + paella.data.read('relatedVideos', { + id: paella.player.videoIdentifier + }, function (data) { + _this190._relatedVideos = data; + onSuccess(Array.isArray(_this190._relatedVideos) && _this190._relatedVideos.length > 0); + }); + } + }, { + key: "setup", + value: function setup() {} + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.ended, paella.events.timeUpdate, paella.events.play, paella.events.seekTo, paella.events.seekToTime]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, params) { + if (eventType == paella.events.ended) { + this.showRelatedVideos(); + } else { + this.hideRelatedVideos(); + } + } + }, { + key: "showRelatedVideos", + value: function showRelatedVideos() { + this.hideRelatedVideos(); + var container = document.createElement('div'); + container.className = "related-video-container"; + + function getRelatedVideoLink(data, className) { + var linkContainer = document.createElement("a"); + linkContainer.className = "related-video-link " + className; + linkContainer.innerHTML = "\n <img src=\"".concat(data.thumb, "\" alt=\"\">\n <p>").concat(data.title, "</p>\n "); + linkContainer.href = data.url; + return linkContainer; + } + + this._messageContainer = paella.player.videoContainer.overlayContainer.addElement(container, { + left: 0, + right: 0, + width: 1280, + height: 720 + }); + + switch (this._relatedVideos.length) { + case 1: + container.appendChild(getRelatedVideoLink(this._relatedVideos[0], 'related-video-single')); + break; + + case 2: + default: + container.appendChild(getRelatedVideoLink(this._relatedVideos[0], 'related-video-dual-1')); + container.appendChild(getRelatedVideoLink(this._relatedVideos[1], 'related-video-dual-2')); + break; + } + + paella.player.videoContainer.attenuationEnabled = true; + } + }, { + key: "hideRelatedVideos", + value: function hideRelatedVideos() { + if (this._messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this._messageContainer); + this._messageContainer = null; + paella.player.videoContainer.attenuationEnabled = false; + } + } + }]); + + return RelatedVideoPlugin; + }(paella.EventDrivenPlugin) + ); +}); + +(function () { + var RTMPVideo = + /*#__PURE__*/ + function (_paella$VideoElementB5) { + _inherits(RTMPVideo, _paella$VideoElementB5); + + function RTMPVideo(id, stream, left, top, width, height) { + var _this191; + + _classCallCheck(this, RTMPVideo); + + _this191 = _possibleConstructorReturn(this, _getPrototypeOf(RTMPVideo).call(this, id, stream, 'div', left, top, width, height)); + _this191._posterFrame = null; + _this191._currentQuality = null; + _this191._duration = 0; + _this191._paused = true; + _this191._streamName = null; + _this191._flashId = null; + _this191._swfContainer = null; + _this191._flashVideo = null; + _this191._volume = 1; + _this191._flashId = id + 'Movie'; + _this191._streamName = 'rtmp'; + + var This = _assertThisInitialized(_this191); + + _this191._stream.sources.rtmp.sort(function (a, b) { + return a.res.h - b.res.h; + }); + + var processEvent = function processEvent(eventName, params) { + if (eventName != "loadedmetadata" && eventName != "pause" && !This._isReady) { + This._isReady = true; + This._duration = params.duration; + $(This.swfContainer).trigger("paella:flashvideoready"); + } + + if (eventName == "progress") { + try { + This.flashVideo.setVolume(This._volume); + } catch (e) {} + + base.log.debug("Flash video event: " + eventName + ", progress: " + This.flashVideo.currentProgress()); + } else if (eventName == "ended") { + base.log.debug("Flash video event: " + eventName); + paella.events.trigger(paella.events.pause); + paella.player.controls.showControls(); + } else { + base.log.debug("Flash video event: " + eventName); + } + }; + + var eventReceived = function eventReceived(eventName, params) { + params = params.split(","); + var processedParams = {}; + + for (var i = 0; i < params.length; ++i) { + var splitted = params[i].split(":"); + var key = splitted[0]; + var value = splitted[1]; + + if (value == "NaN") { + value = NaN; + } else if (/^true$/i.test(value)) { + value = true; + } else if (/^false$/i.test(value)) { + value = false; + } else if (!isNaN(parseFloat(value))) { + value = parseFloat(value); + } + + processedParams[key] = value; + } + + processEvent(eventName, processedParams); + }; + + paella.events.bind(paella.events.flashVideoEvent, function (event, params) { + if (This.flashId == params.source) { + eventReceived(params.eventName, params.values); + } + }); + return _this191; + } + + _createClass(RTMPVideo, [{ + key: "_createSwfObject", + value: function _createSwfObject(swfFile, flashVars) { + var id = this.identifier; + var parameters = { + wmode: 'transparent' + }; + var domElement = document.createElement('div'); + this.domElement.appendChild(domElement); + domElement.id = id + "Movie"; + this._swfContainer = domElement; + + if (swfobject.hasFlashPlayerVersion("9.0.0")) { + swfobject.embedSWF(swfFile, domElement.id, "100%", "100%", "9.0.0", "", flashVars, parameters, null, function callbackFn(e) { + if (e.success == false) { + var message = document.createElement('div'); + var header = document.createElement('h3'); + header.innerText = base.dictionary.translate("Flash player problem"); + var text = document.createElement('div'); + text.innerHTML = base.dictionary.translate("A problem occurred trying to load flash player.") + "<br>" + base.dictionary.translate("Please go to {0} and install it.").replace("{0}", "<a style='color: #800000; text-decoration: underline;' href='http://www.adobe.com/go/getflash'>http://www.adobe.com/go/getflash</a>") + '<br>' + base.dictionary.translate("If the problem presist, contact us."); + var link = document.createElement('a'); + link.setAttribute("href", "http://www.adobe.com/go/getflash"); + link.innerHTML = '<img style="margin:5px;" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" />'; + message.appendChild(header); + message.appendChild(text); + message.appendChild(link); + paella.messageBox.showError(message.innerHTML); + } + }); + } else { + var message = document.createElement('div'); + var header = document.createElement('h3'); + header.innerText = base.dictionary.translate("Flash player needed"); + var text = document.createElement('div'); + text.innerHTML = base.dictionary.translate("You need at least Flash player 9 installed.") + "<br>" + base.dictionary.translate("Please go to {0} and install it.").replace("{0}", "<a style='color: #800000; text-decoration: underline;' href='http://www.adobe.com/go/getflash'>http://www.adobe.com/go/getflash</a>"); + var link = document.createElement('a'); + link.setAttribute("href", "http://www.adobe.com/go/getflash"); + link.innerHTML = '<img style="margin:5px;" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" />'; + message.appendChild(header); + message.appendChild(text); + message.appendChild(link); + paella.messageBox.showError(message.innerHTML); + } + + var flashObj = $('#' + domElement.id)[0]; + return flashObj; + } + }, { + key: "_deferredAction", + value: function _deferredAction(action) { + var _this192 = this; + + return new Promise(function (resolve, reject) { + if (_this192.ready) { + resolve(action()); + } else { + $(_this192.swfContainer).bind('paella:flashvideoready', function () { + _this192._ready = true; + resolve(action()); + }); + } + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString: function toString() { + return this.res.w + "x" + this.res.h; + }, + shortLabel: function shortLabel() { + return this.res.h + "p"; + }, + compare: function compare(q2) { + return this.res.w * this.res.h - q2.res.w * q2.res.h; + } + }; + } // Initialization functions + + }, { + key: "getVideoData", + value: function getVideoData() { + var _this193 = this; + + var FlashVideoPlugin = this; + return new Promise(function (resolve, reject) { + _this193._deferredAction(function () { + var videoData = { + duration: FlashVideoPlugin.flashVideo.duration(), + currentTime: FlashVideoPlugin.flashVideo.getCurrentTime(), + volume: FlashVideoPlugin.flashVideo.getVolume(), + paused: FlashVideoPlugin._paused, + ended: FlashVideoPlugin._ended, + res: { + w: FlashVideoPlugin.flashVideo.getWidth(), + h: FlashVideoPlugin.flashVideo.getHeight() + } + }; + resolve(videoData); + }); + }); + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + if (this._posterFrame == null) { + this._posterFrame = url; + var posterFrame = document.createElement('img'); + posterFrame.src = url; + posterFrame.className = "videoPosterFrameImage"; + posterFrame.alt = "poster frame"; + this.domElement.appendChild(posterFrame); + this._posterFrameElement = posterFrame; + } // this.video.setAttribute("poster",url); + + } + }, { + key: "setAutoplay", + value: function setAutoplay(auto) { + this._autoplay = auto; + } + }, { + key: "load", + value: function load() { + var This = this; + var sources = this._stream.sources.rtmp; + + if (this._currentQuality === null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var isValid = function isValid(stream) { + return stream.src && _typeof(stream.src) == 'object' && stream.src.server && stream.src.stream; + }; + + var stream = this._currentQuality < sources.length ? sources[this._currentQuality] : null; + + if (stream) { + if (!isValid(stream)) { + return paella_DeferredRejected(new Error("Invalid video data")); + } else { + var subscription = false; + + if (stream.src.requiresSubscription === undefined && paella.player.config.player.rtmpSettings) { + subscription = paella.player.config.player.rtmpSettings.requiresSubscription || false; + } else if (stream.src.requiresSubscription) { + subscription = stream.src.requiresSubscription; + } + + var parameters = {}; + var swfName = 'resources/deps/player_streaming.swf'; + + if (this._autoplay) { + parameters.autoplay = this._autoplay; + } + + if (base.parameters.get('debug') == "true") { + parameters.debugMode = true; + } + + parameters.playerId = this.flashId; + parameters.isLiveStream = stream.isLiveStream !== undefined ? stream.isLiveStream : false; + parameters.server = stream.src.server; + parameters.stream = stream.src.stream; + parameters.subscribe = subscription; + + if (paella.player.config.player.rtmpSettings && paella.player.config.player.rtmpSettings.bufferTime !== undefined) { + parameters.bufferTime = paella.player.config.player.rtmpSettings.bufferTime; + } + + this._flashVideo = this._createSwfObject(swfName, parameters); + $(this.swfContainer).trigger("paella:flashvideoready"); + return this._deferredAction(function () { + return stream; + }); + } + } else { + return paella_DeferredRejected(new Error("Could not load video: invalid quality stream index")); + } + } + }, { + key: "getQualities", + value: function getQualities() { + var _this194 = this; + + return new Promise(function (resolve, reject) { + setTimeout(function () { + var result = []; + var sources = _this194._stream.sources.rtmp; + var index = -1; + sources.forEach(function (s) { + index++; + result.push(_this194._getQualityObject(index, s)); + }); + resolve(result); + }, 50); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this195 = this; + + index = index !== undefined && index !== null ? index : 0; + return new Promise(function (resolve, reject) { + var paused = _this195._paused; + var sources = _this195._stream.sources.rtmp; + _this195._currentQuality = index < sources.length ? index : 0; + var source = sources[index]; + _this195._ready = false; + _this195._isReady = false; + + _this195.load().then(function () { + resolve(); + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this196 = this; + + return new Promise(function (resolve, reject) { + resolve(_this196._getQualityObject(_this196._currentQuality, _this196._stream.sources.rtmp[_this196._currentQuality])); + }); + } + }, { + key: "play", + value: function play() { + var This = this; + return this._deferredAction(function () { + if (This._posterFrameElement) { + This._posterFrameElement.parentNode.removeChild(This._posterFrameElement); + + This._posterFrameElement = null; + } + + This._paused = false; + This.flashVideo.play(); + }); + } + }, { + key: "pause", + value: function pause() { + var This = this; + return this._deferredAction(function () { + This._paused = true; + This.flashVideo.pause(); + }); + } + }, { + key: "isPaused", + value: function isPaused() { + var This = this; + return this._deferredAction(function () { + return This._paused; + }); + } + }, { + key: "duration", + value: function duration() { + var This = this; + return this._deferredAction(function () { + return This.flashVideo.duration(); + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var This = this; + return this._deferredAction(function () { + var duration = This.flashVideo.duration(); + This.flashVideo.seekTo(time * 100 / duration); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var This = this; + return this._deferredAction(function () { + return This.flashVideo.getCurrentTime(); + }); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + var This = this; + this._volume = volume; + return this._deferredAction(function () { + This.flashVideo.setVolume(volume); + }); + } + }, { + key: "volume", + value: function volume() { + var This = this; + return this._deferredAction(function () { + return This.flashVideo.getVolume(); + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var This = this; + return this._deferredAction(function () { + This._playbackRate = rate; + }); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var This = this; + return this._deferredAction(function () { + return This._playbackRate; + }); + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + return paella_DeferredNotImplemented(); + } + }, { + key: "unFreeze", + value: function unFreeze() { + return this._deferredAction(function () {}); + } + }, { + key: "freeze", + value: function freeze() { + return this._deferredAction(function () {}); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); + } + }, { + key: "swfContainer", + get: function get() { + return this._swfContainer; + } + }, { + key: "flashId", + get: function get() { + return this._flashId; + } + }, { + key: "flashVideo", + get: function get() { + return this._flashVideo; + } + }]); + + return RTMPVideo; + }(paella.VideoElementBase); + + paella.RTMPVideo = RTMPVideo; + + var RTMPVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory5) { + _inherits(RTMPVideoFactory, _paella$VideoFactory5); + + function RTMPVideoFactory() { + _classCallCheck(this, RTMPVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(RTMPVideoFactory).apply(this, arguments)); + } + + _createClass(RTMPVideoFactory, [{ + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + if (base.userAgent.system.iOS || base.userAgent.system.Android) { + return false; + } + + for (var key in streamData.sources) { + if (key == 'rtmp') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + return new paella.RTMPVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return RTMPVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.RTMPVideoFactory = RTMPVideoFactory; +})(); ///////////////////////////////////////////////// +// Caption Search +///////////////////////////////////////////////// + + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$SearchService2) { + _inherits(CaptionsSearchPlugIn, _paella$SearchService2); + + function CaptionsSearchPlugIn() { + _classCallCheck(this, CaptionsSearchPlugIn); + + return _possibleConstructorReturn(this, _getPrototypeOf(CaptionsSearchPlugIn).apply(this, arguments)); + } + + _createClass(CaptionsSearchPlugIn, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.search.captionsSearchPlugin"; + } + }, { + key: "search", + value: function search(text, next) { + paella.captions.search(text, next); + } + }]); + + return CaptionsSearchPlugIn; + }(paella.SearchServicePlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin16) { + _inherits(SearchPlugin, _paella$ButtonPlugin16); + + function SearchPlugin() { + _classCallCheck(this, SearchPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(SearchPlugin).apply(this, arguments)); + } + + _createClass(SearchPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return 'searchButton'; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-binoculars'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.searchPlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Search"); + } + }, { + key: "getIndex", + value: function getIndex() { + return 510; + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._open = false; + this._sortDefault = 'time'; + this._colorSearch = false; + this._localImages = null; + this._searchTimer = null; + this._searchTimerTime = 1500; + this._searchBody = null; + this._trimming = null; + onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + var self = this; + $('.searchButton').click(function (event) { + if (self._open) { + self._open = false; + } else { + self._open = true; + setTimeout(function () { + $("#searchBarInput").focus(); + }, 0); + } + }); //GET THE FRAME LIST + + self._localImages = paella.initDelegate.initParams.videoLoader.frameList; //config + + self._colorSearch = self.config.colorSearch || false; + self._sortDefault = self.config.sortType || "time"; + paella.events.bind(paella.events.controlBarWillHide, function (evt) { + if (self._open) paella.player.controls.cancelHideBar(); + }); + paella.player.videoContainer.trimming().then(function (trimData) { + self._trimming = trimData; + }); + } + }, { + key: "prettyTime", + value: function prettyTime(seconds) { + // TIME FORMAT + var hou = Math.floor(seconds / 3600) % 24; + hou = ("00" + hou).slice(hou.toString().length); + var min = Math.floor(seconds / 60) % 60; + min = ("00" + min).slice(min.toString().length); + var sec = Math.floor(seconds % 60); + sec = ("00" + sec).slice(sec.toString().length); + var timestr = hou + ":" + min + ":" + sec; + return timestr; + } + }, { + key: "search", + value: function search(text, cb) { + paella.searchService.search(text, cb); + } + }, { + key: "getPreviewImage", + value: function getPreviewImage(time) { + var thisClass = this; + var keys = Object.keys(thisClass._localImages); + keys.push(time); + keys.sort(function (a, b) { + return parseInt(a) - parseInt(b); + }); + var n = keys.indexOf(time) - 1; + n = n > 0 ? n : 0; + var i = keys[n]; + i = parseInt(i); + return thisClass._localImages[i].url; + } + }, { + key: "createLoadingElement", + value: function createLoadingElement(parent) { + var loadingResults = document.createElement('div'); + loadingResults.className = "loader"; + var htmlLoader = "<svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"40px\" height=\"40px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">" + "<path fill=\"#000\" d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\">" + "<animateTransform attributeType=\"xml\"" + "attributeName=\"transform\"" + "type=\"rotate\"" + "from=\"0 25 25\"" + "to=\"360 25 25\"" + "dur=\"0.6s\"" + "repeatCount=\"indefinite\"/>" + "</path>" + "</svg>"; + loadingResults.innerHTML = htmlLoader; + parent.appendChild(loadingResults); + var sBodyText = document.createElement('p'); + sBodyText.className = 'sBodyText'; + sBodyText.innerText = base.dictionary.translate("Searching") + "..."; + parent.appendChild(sBodyText); + } + }, { + key: "createNotResultsFound", + value: function createNotResultsFound(parent) { + var noResults = document.createElement('div'); + noResults.className = "noResults"; + noResults.innerText = base.dictionary.translate("Sorry! No results found."); + parent.appendChild(noResults); + } + }, { + key: "doSearch", + value: function doSearch(txt, searchBody) { + var thisClass = this; + $(searchBody).empty(); //LOADING CONTAINER + + thisClass.createLoadingElement(searchBody); + thisClass.search(txt, function (err, results) { + $(searchBody).empty(); //BUILD SEARCH RESULTS + + if (!err) { + if (results.length == 0) { + // 0 RESULTS FOUND + thisClass.createNotResultsFound(searchBody); + } else { + for (var i = 0; i < results.length; i++) { + // FILL THE BODY CONTAINER WITH RESULTS + if (thisClass._trimming.enabled && results[i].time <= thisClass._trimming.start) { + continue; + } //SEARCH SORT TYPE (TIME oR SCoRE) + + + if (thisClass._sortDefault == 'score') { + results.sort(function (a, b) { + return b.score - a.score; + }); + } + + if (thisClass._sortDefault == 'time') { + results.sort(function (a, b) { + return a.time - b.time; + }); + } + + var sBodyInnerContainer = document.createElement('div'); + sBodyInnerContainer.className = 'sBodyInnerContainer'; //COLOR + + if (thisClass._colorSearch) { + if (results[i].score <= 0.3) { + $(sBodyInnerContainer).addClass('redScore'); + } + + if (results[i].score >= 0.7) { + $(sBodyInnerContainer).addClass('greenScore'); + } + } + + var TimePicContainer = document.createElement('div'); + TimePicContainer.className = 'TimePicContainer'; + var sBodyPicture = document.createElement('img'); + sBodyPicture.className = 'sBodyPicture'; + sBodyPicture.src = thisClass.getPreviewImage(results[i].time); + var sBodyText = document.createElement('p'); + sBodyText.className = 'sBodyText'; + var time = thisClass._trimming.enabled ? results[i].time - thisClass._trimming.start : results[i].time; + sBodyText.innerHTML = "<span class='timeSpan'>" + thisClass.prettyTime(time) + "</span>" + paella.AntiXSS.htmlEscape(results[i].content); + TimePicContainer.appendChild(sBodyPicture); + sBodyInnerContainer.appendChild(TimePicContainer); + sBodyInnerContainer.appendChild(sBodyText); + searchBody.appendChild(sBodyInnerContainer); //ADD SECS TO DOM FOR EASY HANDLE + + sBodyInnerContainer.setAttribute('sec', time); //jQuery Binds for the search + + $(sBodyInnerContainer).hover(function () { + $(this).css('background-color', '#faa166'); + }, function () { + $(this).removeAttr('style'); + }); + $(sBodyInnerContainer).click(function () { + var sec = $(this).attr("sec"); + paella.player.videoContainer.seekToTime(parseInt(sec)); + paella.player.play(); + }); + } + } + } + }); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var thisClass = this; + var myUrl = null; //SEARCH CONTAINER + + var searchPluginContainer = document.createElement('div'); + searchPluginContainer.className = 'searchPluginContainer'; //SEARCH BODY + + var searchBody = document.createElement('div'); + searchBody.className = 'searchBody'; + searchPluginContainer.appendChild(searchBody); + thisClass._searchBody = searchBody; //SEARCH BAR + + var searchBar = document.createElement('div'); + searchBar.className = 'searchBar'; + searchPluginContainer.appendChild(searchBar); //INPUT + + var input = document.createElement("input"); + input.className = "searchBarInput"; + input.type = "text"; + input.id = "searchBarInput"; + input.name = "searchString"; + input.placeholder = base.dictionary.translate("Search"); + searchBar.appendChild(input); + $(input).change(function () { + var text = $(input).val(); + + if (thisClass._searchTimer != null) { + thisClass._searchTimer.cancel(); + } + + if (text != "") { + thisClass.doSearch(text, searchBody); + } + }); + $(input).keyup(function (event) { + if (event.keyCode != 13) { + //IF no ENTER PRESSED SETUP THE TIMER + var text = $(input).val(); + + if (thisClass._searchTimer != null) { + thisClass._searchTimer.cancel(); + } + + if (text != "") { + thisClass._searchTimer = new base.Timer(function (timer) { + thisClass.doSearch(text, searchBody); + }, thisClass._searchTimerTime); + } else { + $(thisClass._searchBody).empty(); + } + } + }); + $(input).focus(function () { + paella.keyManager.enabled = false; + }); + $(input).focusout(function () { + paella.keyManager.enabled = true; + }); + domElement.appendChild(searchPluginContainer); + } + }]); + + return SearchPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$VideoOverlayB3) { + _inherits(ShowEditorPlugin, _paella$VideoOverlayB3); + + function ShowEditorPlugin() { + _classCallCheck(this, ShowEditorPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(ShowEditorPlugin).apply(this, arguments)); + } + + _createClass(ShowEditorPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.showEditorPlugin"; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showEditorButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-pencil'; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 10; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Enter editor mode"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + if (this.config.editorUrl) { + paella.initDelegate.initParams.accessControl.canWrite().then(function (canWrite) { + var enabled = canWrite; // && !base.userAgent.browser.IsMobileVersion && !paella.player.isLiveStream()); + + onSuccess(enabled); + }); + } else { + onSuccess(false); + } + } + }, { + key: "action", + value: function action(button) { + var editorUrl = this.config.editorUrl.replace("{id}", paella.player.videoIdentifier); + window.location.href = editorUrl; + } + }]); + + return ShowEditorPlugin; + }(paella.VideoOverlayButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin17) { + _inherits(SocialPlugin, _paella$ButtonPlugin17); + + function SocialPlugin() { + _classCallCheck(this, SocialPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(SocialPlugin).apply(this, arguments)); + } + + _createClass(SocialPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showSocialPluginButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-social'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 560; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.socialPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Share this video"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "setup", + value: function setup() { + this.buttonItems = null; + this.socialMedia = null; + this.buttons = []; + this.selected_button = null; + + if (base.dictionary.currentLanguage() == 'es') { + var esDict = { + 'Custom size:': 'Tamaño personalizado:', + 'Choose your embed size. Copy the text and paste it in your html page.': 'Elija el tamaño del video a embeber. Copie el texto y péguelo en su página html.', + 'Width:': 'Ancho:', + 'Height:': 'Alto:' + }; + base.dictionary.addDictionary(esDict); + } + + var thisClass = this; + var Keys = { + Tab: 9, + Return: 13, + Esc: 27, + End: 35, + Home: 36, + Left: 37, + Up: 38, + Right: 39, + Down: 40 + }; + $(this.button).keyup(function (event) { + if (thisClass.isPopUpOpen()) { + if (event.keyCode == Keys.Up) { + if (thisClass.selected_button > 0) { + if (thisClass.selected_button < thisClass.buttons.length) thisClass.buttons[thisClass.selected_button].className = 'socialItemButton ' + thisClass.buttons[thisClass.selected_button].data.mediaData; + thisClass.selected_button--; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className + ' selected'; + } + } else if (event.keyCode == Keys.Down) { + if (thisClass.selected_button < thisClass.buttons.length - 1) { + if (thisClass.selected_button >= 0) thisClass.buttons[thisClass.selected_button].className = 'socialItemButton ' + thisClass.buttons[thisClass.selected_button].data.mediaData; + thisClass.selected_button++; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className + ' selected'; + } + } else if (event.keyCode == Keys.Return) { + thisClass.onItemClick(thisClass.buttons[thisClass.selected_button].data.mediaData); + } + } + }); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this197 = this; + + this.buttonItems = {}; + this.socialMedia = ['facebook', 'twitter', 'embed']; + this.socialMedia.forEach(function (mediaData) { + var buttonItem = _this197.getSocialMediaItemButton(mediaData); + + _this197.buttonItems[_this197.socialMedia.indexOf(mediaData)] = buttonItem; + domElement.appendChild(buttonItem); + + _this197.buttons.push(buttonItem); + }); + this.selected_button = this.buttons.length; + } + }, { + key: "getSocialMediaItemButton", + value: function getSocialMediaItemButton(mediaData) { + var elem = document.createElement('div'); + elem.className = 'socialItemButton ' + mediaData; + elem.id = mediaData + '_button'; + elem.data = { + mediaData: mediaData, + plugin: this + }; + $(elem).click(function (event) { + this.data.plugin.onItemClick(this.data.mediaData); + }); + return elem; + } + }, { + key: "onItemClick", + value: function onItemClick(mediaData) { + var url = this.getVideoUrl(); + + switch (mediaData) { + case 'twitter': + window.open('http://twitter.com/home?status=' + url); + break; + + case 'facebook': + window.open('http://www.facebook.com/sharer.php?u=' + url); + break; + + case 'embed': + this.embedPress(); + break; + } + + paella.player.controls.hidePopUp(this.getName()); + } + }, { + key: "getVideoUrl", + value: function getVideoUrl() { + var url = document.location.href; + return url; + } + }, { + key: "embedPress", + value: function embedPress() { + var host = document.location.protocol + "//" + document.location.host; + var pathname = document.location.pathname; + var p = pathname.split("/"); + + if (p.length > 0) { + p[p.length - 1] = "embed.html"; + } + + var id = paella.initDelegate.getId(); + var url = host + p.join("/") + "?id=" + id; //var paused = paella.player.videoContainer.paused(); + //$(document).trigger(paella.events.pause); + + var divSelectSize = "<div style='display:inline-block;'> " + " <div class='embedSizeButton' style='width:110px; height:73px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 620x349 </span></div>" + " <div class='embedSizeButton' style='width:100px; height:65px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 540x304 </span></div>" + " <div class='embedSizeButton' style='width:90px; height:58px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 460x259 </span></div>" + " <div class='embedSizeButton' style='width:80px; height:50px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 380x214 </span></div>" + " <div class='embedSizeButton' style='width:70px; height:42px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 300x169 </span></div>" + "</div><div style='display:inline-block; vertical-align:bottom; margin-left:10px;'>" + " <div>" + base.dictionary.translate("Custom size:") + "</div>" + " <div>" + base.dictionary.translate("Width:") + " <input id='social_embed_width-input' class='embedSizeInput' maxlength='4' type='text' name='Costum width min 300px' alt='Costum width min 300px' title='Costum width min 300px' value=''></div>" + " <div>" + base.dictionary.translate("Height:") + " <input id='social_embed_height-input' class='embedSizeInput' maxlength='4' type='text' name='Costum width min 300px' alt='Costum width min 300px' title='Costum width min 300px' value=''></div>" + "</div>"; + var divEmbed = "<div id='embedContent' style='text-align:left; font-size:14px; color:black;'><div id=''>" + divSelectSize + "</div> <div id=''>" + base.dictionary.translate("Choose your embed size. Copy the text and paste it in your html page.") + "</div> <div id=''><textarea id='social_embed-textarea' class='social_embed-textarea' rows='4' cols='1' style='font-size:12px; width:95%; overflow:auto; margin-top:5px; color:black;'></textarea></div> </div>"; + paella.messageBox.showMessage(divEmbed, { + closeButton: true, + width: '750px', + height: '210px', + onClose: function onClose() {// if (paused == false) {$(document).trigger(paella.events.play);} + } + }); + var w_e = $('#social_embed_width-input')[0]; + var h_e = $('#social_embed_height-input')[0]; + + w_e.onkeyup = function (event) { + var width = parseInt(w_e.value); + var height = parseInt(h_e.value); + + if (isNaN(width)) { + w_e.value = ""; + } else { + if (width < 300) { + $("#social_embed-textarea")[0].value = "Embed width too low. The minimum value is a width of 300."; + } else { + if (isNaN(height)) { + height = (width / (16 / 9)).toFixed(); + h_e.value = height; + } + + $("#social_embed-textarea")[0].value = '<iframe allowfullscreen src="' + url + '" style="border:0px #FFFFFF none;" name="Paella Player" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" width="' + width + '" height="' + height + '"></iframe>'; + } + } + }; + + var embs = $(".embedSizeButton"); + + for (var i = 0; i < embs.length; i = i + 1) { + var e = embs[i]; + + e.onclick = function (event) { + var value = event.target ? event.target.textContent : event.toElement.textContent; + + if (value) { + var size = value.trim().split("x"); + w_e.value = size[0]; + h_e.value = size[1]; + $("#social_embed-textarea")[0].value = '<iframe allowfullscreen src="' + url + '" style="border:0px #FFFFFF none;" name="Paella Player" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" width="' + size[0] + '" height="' + size[1] + '"></iframe>'; + } + }; + } + } + }]); + + return SocialPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin18) { + _inherits(ThemeChooserPlugin, _paella$ButtonPlugin18); + + function ThemeChooserPlugin() { + _classCallCheck(this, ThemeChooserPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(ThemeChooserPlugin).apply(this, arguments)); + } + + _createClass(ThemeChooserPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "themeChooserPlugin"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-paintbrush'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2030; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.themeChooserPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Change theme"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this.currentUrl = null; + this.currentMaster = null; + this.currentSlave = null; + this.availableMasters = []; + this.availableSlaves = []; + + if (paella.player.config.skin && paella.player.config.skin.available && paella.player.config.skin.available instanceof Array && paella.player.config.skin.available.length > 0) { + onSuccess(true); + } else { + onSuccess(false); + } + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var This = this; + paella.player.config.skin.available.forEach(function (item) { + var elem = document.createElement('div'); + elem.className = "themebutton"; + elem.innerText = item.replace('-', ' ').replace('_', ' '); + $(elem).click(function (event) { + paella.utils.skin.set(item); + paella.player.controls.hidePopUp(This.getName()); + }); + domElement.appendChild(elem); + }); + } + }]); + + return ThemeChooserPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addDataDelegate("cameraTrack", function () { + return ( + /*#__PURE__*/ + function (_paella$DataDelegate3) { + _inherits(TrackCameraDataDelegate, _paella$DataDelegate3); + + function TrackCameraDataDelegate() { + _classCallCheck(this, TrackCameraDataDelegate); + + return _possibleConstructorReturn(this, _getPrototypeOf(TrackCameraDataDelegate).apply(this, arguments)); + } + + _createClass(TrackCameraDataDelegate, [{ + key: "read", + value: function read(context, params, onSuccess) { + var videoUrl = paella.player.videoLoader.getVideoUrl(); + + if (videoUrl) { + videoUrl += 'trackhd.json'; + paella.utils.ajax.get({ + url: videoUrl + }, function (data) { + if (typeof data === "string") { + try { + data = JSON.parse(data); + } catch (err) {} + } + + data.positions.sort(function (a, b) { + return a.time - b.time; + }); + onSuccess(data); + }, function () { + return onSuccess(null); + }); + } else { + onSuccess(null); + } + } + }, { + key: "write", + value: function write(context, params, value, onSuccess) {} + }, { + key: "remove", + value: function remove(context, params, onSuccess) {} + }]); + + return TrackCameraDataDelegate; + }(paella.DataDelegate) + ); +}); + +(function () { + // Used to connect the toolbar button with the track4k plugin + var g_track4kPlugin = null; + + function updatePosition(positionData, nextFrameData) { + var twinTime = nextFrameData ? (nextFrameData.time - positionData.time) * 1000 : 100; + if (twinTime > 2000) twinTime = 2000; + var rect = positionData && positionData.rect || [0, 0, 0, 0]; + var offset_x = Math.abs(rect[0]); + var offset_y = Math.abs(rect[1]); + var view_width = rect[2]; + var view_height = rect[3]; + var zoom = this._videoData.originalWidth / view_width; + var left = offset_x / this._videoData.originalWidth; + var top = offset_y / this._videoData.originalHeight; + paella.player.videoContainer.masterVideo().setZoom(zoom * 100, left * zoom * 100, top * zoom * 100, twinTime); + } + + function nextFrame(time) { + var index = -1; + time = Math.round(time); + + this._trackData.some(function (data, i) { + if (data.time >= time) { + index = i; + } + + return index !== -1; + }); // Index contains the current frame index + + + if (this._trackData.length > index + 1) { + return this._trackData[index + 1]; + } else { + return null; + } + } + + function prevFrame(time) { + var frame = this._trackData[0]; + time = Math.round(time); + + this._trackData.some(function (data, i, frames) { + if (frames[i + 1]) { + if (data.time <= time && frames[i + 1].time > time) { + return true; + } + } else { + return true; + } + + frame = data; + return false; + }); + + return frame; + } + + function curFrame(time) { + var frameRect = null; + time = Math.round(time); + + this._trackData.some(function (data, i, frames) { + if (data.time <= time) { + if (frames[i + 1]) { + if (frames[i + 1].time > time) { + frameRect = data; + } + } else { + frameRect = data; + } + } + + return frameRect !== null; + }); + + return frameRect; + } + + paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl11) { + _inherits(Track4KPlugin, _paella$EventDrivenPl11); + + function Track4KPlugin() { + var _this198; + + _classCallCheck(this, Track4KPlugin); + + _this198 = _possibleConstructorReturn(this, _getPrototypeOf(Track4KPlugin).call(this)); + g_track4kPlugin = _assertThisInitialized(_this198); + _this198._videoData = {}; + _this198._trackData = []; + _this198._enabled = true; + return _this198; + } + + _createClass(Track4KPlugin, [{ + key: "checkEnabled", + value: function checkEnabled(cb) { + var _this199 = this; + + paella.data.read('cameraTrack', { + id: paella.initDelegate.getId() + }, function (data) { + if (data) { + _this199._videoData.width = data.width; + _this199._videoData.height = data.height; + _this199._videoData.originalWidth = data.originalWidth; + _this199._videoData.originalHeight = data.originalHeight; + _this199._trackData = data.positions; + _this199._enabled = true; + } else { + _this199._enabled = false; + } + + cb(_this199._enabled); + }); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.track4kPlugin"; + } + }, { + key: "getEvents", + value: function getEvents() { + return [paella.events.timeupdate, paella.events.play, paella.events.seekToTime]; + } + }, { + key: "onEvent", + value: function onEvent(eventType, data) { + if (!this._trackData.length) return; + + if (eventType === paella.events.play) {} else if (eventType === paella.events.timeupdate) { + this.updateZoom(data.currentTime); + } else if (eventType === paella.events.seekToTime) { + this.seekTo(data.newPosition); + } + } + }, { + key: "updateZoom", + value: function updateZoom(currentTime) { + if (this._enabled) { + var data = curFrame.apply(this, [currentTime]); + var nextFrameData = nextFrame.apply(this, [currentTime]); + + if (data && this._lastPosition !== data) { + this._lastPosition = data; + updatePosition.apply(this, [data, nextFrameData]); + } + } + } + }, { + key: "seekTo", + value: function seekTo(time) { + var data = prevFrame.apply(this, [time]); + + if (data && this._enabled) { + this._lastPosition = data; + updatePosition.apply(this, [data]); + } + } + }, { + key: "enabled", + get: function get() { + return this._enabled; + }, + set: function set(e) { + this._enabled = e; + + if (this._enabled) { + var thisClass = this; + paella.player.videoContainer.currentTime().then(function (time) { + thisClass.updateZoom(time); + }); + } + } + }]); + + return Track4KPlugin; + }(paella.EventDrivenPlugin) + ); + }); + paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin19) { + _inherits(VideoZoomTrack4KPlugin, _paella$ButtonPlugin19); + + function VideoZoomTrack4KPlugin() { + _classCallCheck(this, VideoZoomTrack4KPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoZoomTrack4KPlugin).apply(this, arguments)); + } + + _createClass(VideoZoomTrack4KPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "videoZoomToolbar"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-screen'; + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2030; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.videoZoomTrack4kPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Set video zoom"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var players = paella.player.videoContainer.streamProvider.videoPlayers; + var pluginData = paella.player.config.plugins.list[this.getName()]; + var playerIndex = pluginData.targetStreamIndex; + var autoByDefault = pluginData.autoModeByDefault; + this.targetPlayer = players.length > playerIndex ? players[playerIndex] : null; + g_track4kPlugin.enabled = autoByDefault; + onSuccess(paella.player.config.player.videoZoom.enabled && this.targetPlayer && this.targetPlayer.allowZoom()); + } + }, { + key: "setup", + value: function setup() { + if (this.config.autoModeByDefault) { + this.zoomAuto(); + } else { + this.resetZoom(); + } + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this200 = this; + + this.changeIconClass("icon-mini-zoom-in"); + + g_track4kPlugin.updateTrackingStatus = function () { + if (g_track4kPlugin.enabled) { + $('.zoom-auto').addClass("autoTrackingActivated"); + $('.icon-mini-zoom-in').addClass("autoTrackingActivated"); + } else { + $('.zoom-auto').removeClass("autoTrackingActivated"); + $('.icon-mini-zoom-in').removeClass("autoTrackingActivated"); + } + }; + + paella.events.bind(paella.events.videoZoomChanged, function (evt, target) { + g_track4kPlugin.updateTrackingStatus; + }); + g_track4kPlugin.updateTrackingStatus; + + function getZoomButton(className, onClick, content) { + var btn = document.createElement('div'); + btn.className = "videoZoomToolbarItem ".concat(className); + + if (content) { + btn.innerText = content; + } else { + btn.innerHTML = "<i class=\"glyphicon glyphicon-".concat(className, "\"></i>"); + } + + $(btn).click(onClick); + return btn; + } + + domElement.appendChild(getZoomButton('zoom-in', function (evt) { + _this200.zoomIn(); + })); + domElement.appendChild(getZoomButton('zoom-out', function (evt) { + _this200.zoomOut(); + })); + domElement.appendChild(getZoomButton('picture', function (evt) { + _this200.resetZoom(); + })); + domElement.appendChild(getZoomButton('zoom-auto', function (evt) { + _this200.zoomAuto(); + + paella.player.controls.hidePopUp(_this200.getName()); + }, "auto")); + } + }, { + key: "zoomIn", + value: function zoomIn() { + g_track4kPlugin.enabled = false; + this.targetPlayer.zoomIn(); + } + }, { + key: "zoomOut", + value: function zoomOut() { + g_track4kPlugin.enabled = false; + this.targetPlayer.zoomOut(); + } + }, { + key: "resetZoom", + value: function resetZoom() { + g_track4kPlugin.enabled = false; + this.targetPlayer.setZoom(100, 0, 0, 500); + if (g_track4kPlugin.updateTrackingStatus) g_track4kPlugin.updateTrackingStatus(); + } + }, { + key: "zoomAuto", + value: function zoomAuto() { + g_track4kPlugin.enabled = !g_track4kPlugin.enabled; + if (g_track4kPlugin.updateTrackingStatus) g_track4kPlugin.updateTrackingStatus(); + } + }]); + + return VideoZoomTrack4KPlugin; + }(paella.ButtonPlugin) + ); + }); +})(); + +(function () { + paella.plugins.translectures = {}; + /* + Class ("paella.captions.translectures.Caption", paella.captions.Caption, { + initialize: function(id, format, url, lang, editURL, next) { + this.parent(id, format, url, lang, next); + this._captionsProvider = "translecturesCaptionsProvider"; + this._editURL = editURL; + }, + + canEdit: function(next) { + // next(err, canEdit) + next(false, ((this._editURL != undefined)&&(this._editURL != ""))); + }, + + goToEdit: function() { + var self = this; + paella.player.auth.userData().then(function(userData){ + if (userData.isAnonymous == true) { + self.askForAnonymousOrLoginEdit(); + } + else { + self.doEdit(); + } + }); + }, + + doEdit: function() { + window.location.href = this._editURL; + }, + doLoginAndEdit: function() { + paella.player.auth.login(this._editURL); + }, + + askForAnonymousOrLoginEdit: function() { + var self = this; + + var messageBoxElem = document.createElement('div'); + messageBoxElem.className = "translecturesCaptionsMessageBox"; + + var messageBoxTitle = document.createElement('div'); + messageBoxTitle.className = "title"; + messageBoxTitle.innerText = base.dictionary.translate("You are trying to modify the transcriptions, but you are not Logged in!"); + messageBoxElem.appendChild(messageBoxTitle); + + var messageBoxAuthContainer = document.createElement('div'); + messageBoxAuthContainer.className = "authMethodsContainer"; + messageBoxElem.appendChild(messageBoxAuthContainer); + + // Anonymous edit + var messageBoxAuth = document.createElement('div'); + messageBoxAuth.className = "authMethod"; + messageBoxAuthContainer.appendChild(messageBoxAuth); + + var messageBoxAuthLink = document.createElement('a'); + messageBoxAuthLink.href = "#"; + messageBoxAuthLink.style.color = "#004488"; + messageBoxAuth.appendChild(messageBoxAuthLink); + + var messageBoxAuthLinkImg = document.createElement('img'); + messageBoxAuthLinkImg.src = "resources/style/caption_mlangs_anonymous.png"; + messageBoxAuthLinkImg.alt = "Anonymous"; + messageBoxAuthLinkImg.style.height = "100px"; + messageBoxAuthLink.appendChild(messageBoxAuthLinkImg); + + var messageBoxAuthLinkText = document.createElement('p'); + messageBoxAuthLinkText.innerText = base.dictionary.translate("Continue editing the transcriptions anonymously"); + messageBoxAuthLink.appendChild(messageBoxAuthLinkText); + + $(messageBoxAuthLink).click(function() { + self.doEdit(); + }); + + // Auth edit + messageBoxAuth = document.createElement('div'); + messageBoxAuth.className = "authMethod"; + messageBoxAuthContainer.appendChild(messageBoxAuth); + + messageBoxAuthLink = document.createElement('a'); + messageBoxAuthLink.href = "#"; + messageBoxAuthLink.style.color = "#004488"; + messageBoxAuth.appendChild(messageBoxAuthLink); + + messageBoxAuthLinkImg = document.createElement('img'); + messageBoxAuthLinkImg.src = "resources/style/caption_mlangs_lock.png"; + messageBoxAuthLinkImg.alt = "Login"; + messageBoxAuthLinkImg.style.height = "100px"; + messageBoxAuthLink.appendChild(messageBoxAuthLinkImg); + + messageBoxAuthLinkText = document.createElement('p'); + messageBoxAuthLinkText.innerText = base.dictionary.translate("Log in and edit the transcriptions"); + messageBoxAuthLink.appendChild(messageBoxAuthLinkText); + + + $(messageBoxAuthLink).click(function() { + self.doLoginAndEdit(); + }); + + // Show UI + paella.messageBox.showElement(messageBoxElem); + } + }); + + paella.captions.translectures.Caption = Caption; + + Class ("paella.plugins.translectures.CaptionsPlugIn", paella.EventDrivenPlugin, { + + getName:function() { return "es.upv.paella.translecture.captionsPlugin"; }, + getEvents:function() { return []; }, + onEvent:function(eventType,params) {}, + + checkEnabled: function(onSuccess) { + var self = this; + var video_id = paella.player.videoIdentifier; + + if ((this.config.tLServer == undefined) || (this.config.tLdb == undefined)){ + base.log.warning(this.getName() + " plugin not configured!"); + onSuccess(false); + } + else { + var langs_url = (this.config.tLServer + "/langs?db=${tLdb}&id=${videoId}").replace(/\$\{videoId\}/ig, video_id).replace(/\$\{tLdb\}/ig, this.config.tLdb); + base.ajax.get({url: langs_url}, + function(data, contentType, returnCode, dataRaw) { + if (data.scode == 0) { + data.langs.forEach(function(l){ + var l_get_url = (self.config.tLServer + "/dfxp?format=1&pol=0&db=${tLdb}&id=${videoId}&lang=${tl.lang.code}") + .replace(/\$\{videoId\}/ig, video_id) + .replace(/\$\{tLdb\}/ig, self.config.tLdb) + .replace(/\$\{tl.lang.code\}/ig, l.code); + + var l_edit_url; + if (self.config.tLEdit) { + l_edit_url = self.config.tLEdit + .replace(/\$\{videoId\}/ig, video_id) + .replace(/\$\{tLdb\}/ig, self.config.tLdb) + .replace(/\$\{tl.lang.code\}/ig, l.code); + } + + var l_txt = l.value; + switch(l.type){ + case 0: + l_txt += " (" + paella.dictionary.translate("Auto") + ")"; + break; + case 1: + l_txt += " (" + paella.dictionary.translate("Under review") + ")"; + break; + } + + var c = new paella.captions.translectures.Caption(l.code , "dfxp", l_get_url, {code: l.code, txt: l_txt}, l_edit_url); + paella.captions.addCaptions(c); + }); + onSuccess(false); + } + else { + base.log.debug("Error getting available captions from translectures: " + langs_url); + onSuccess(false); + } + }, + function(data, contentType, returnCode) { + base.log.debug("Error getting available captions from translectures: " + langs_url); + onSuccess(false); + } + ); + } + } + }); + + //new paella.plugins.translectures.CaptionsPlugIn(); + */ +})(); + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$userTracking$2) { + _inherits(ElasticsearchSaverPlugin, _paella$userTracking$2); + + function ElasticsearchSaverPlugin() { + _classCallCheck(this, ElasticsearchSaverPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(ElasticsearchSaverPlugin).apply(this, arguments)); + } + + _createClass(ElasticsearchSaverPlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.usertracking.elasticsearchSaverPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this.type = 'userTrackingSaverPlugIn'; + this._url = this.config.url; + this._index = this.config.index || "paellaplayer"; + this._type = this.config.type || "usertracking"; + var enabled = true; + + if (this._url == undefined) { + enabled = false; + base.log.debug("No ElasticSearch URL found in config file. Disabling ElasticSearch PlugIn"); + } + + onSuccess(enabled); + } + }, { + key: "log", + value: function log(event, params) { + var _this201 = this; + + var p = params; + + if (_typeof(p) != "object") { + p = { + value: p + }; + } + + var currentTime = 0; + paella.player.videoContainer.currentTime().then(function (t) { + currentTime = t; + return paella.player.videoContainer.paused(); + }).then(function (paused) { + var log = { + date: new Date(), + video: paella.initDelegate.getId(), + playing: !paused, + time: parseInt(currentTime + paella.player.videoContainer.trimStart()), + event: event, + params: p + }; + paella.ajax.post({ + url: _this201._url + "/" + _this201._index + "/" + _this201._type + "/", + params: JSON.stringify(log) + }); + }); + } + }]); + + return ElasticsearchSaverPlugin; + }(paella.userTracking.SaverPlugIn) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$userTracking$3) { + _inherits(GoogleAnalyticsTracking, _paella$userTracking$3); + + function GoogleAnalyticsTracking() { + _classCallCheck(this, GoogleAnalyticsTracking); + + return _possibleConstructorReturn(this, _getPrototypeOf(GoogleAnalyticsTracking).apply(this, arguments)); + } + + _createClass(GoogleAnalyticsTracking, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.usertracking.GoogleAnalyticsSaverPlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var trackingID = this.config.trackingID; + var domain = this.config.domain || "auto"; + + if (trackingID) { + base.log.debug("Google Analitycs Enabled"); + /* jshint ignore:start */ + + (function (i, s, o, g, r, a, m) { + i['GoogleAnalyticsObject'] = r; + i[r] = i[r] || function () { + (i[r].q = i[r].q || []).push(arguments); + }, i[r].l = 1 * new Date(); + a = s.createElement(o), m = s.getElementsByTagName(o)[0]; + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m); + })(window, document, 'script', '//www.google-analytics.com/analytics.js', '__gaTracker'); + /* jshint ignore:end */ + + + __gaTracker('create', trackingID, domain); + + __gaTracker('send', 'pageview'); + + onSuccess(true); + } else { + base.log.debug("No Google Tracking ID found in config file. Disabling Google Analitycs PlugIn"); + onSuccess(false); + } + } + }, { + key: "log", + value: function log(event, params) { + if (this.config.category === undefined || this.config.category === true) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } catch (e) {} + + __gaTracker('send', 'event', category, action, label); + } + } + }]); + + return GoogleAnalyticsTracking; + }(paella.userTracking.SaverPlugIn) + ); +}); + +var _paq = _paq || []; + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$userTracking$4) { + _inherits(PiwikAnalyticsTracking, _paella$userTracking$4); + + function PiwikAnalyticsTracking() { + _classCallCheck(this, PiwikAnalyticsTracking); + + return _possibleConstructorReturn(this, _getPrototypeOf(PiwikAnalyticsTracking).apply(this, arguments)); + } + + _createClass(PiwikAnalyticsTracking, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.usertracking.piwikSaverPlugIn"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + if (this.config.tracker && this.config.siteId) { + _paq.push(['trackPageView']); + + _paq.push(['enableLinkTracking']); + + (function () { + var u = this.config.tracker; + + _paq.push(['setTrackerUrl', u + '/piwik.php']); + + _paq.push(['setSiteId', this.config.siteId]); + + var d = document, + g = d.createElement('script'), + s = d.getElementsByTagName('script')[0]; + g.type = 'text/javascript'; + g.async = true; + g.defer = true; + g.src = u + 'piwik.js'; + s.parentNode.insertBefore(g, s); + onSuccess(true); + })(); + } else { + onSuccess(false); + } + } + }, { + key: "log", + value: function log(event, params) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } catch (e) {} + + _paq.push(['trackEvent', category, action, label]); + } + }]); + + return PiwikAnalyticsTracking; + }(paella.userTracking.SaverPlugIn) + ); +}); + +(function () { + paella.addCanvasPlugin("video360", true, true, function () { + return ( + /*#__PURE__*/ + function (_paella$WebGLCanvas) { + _inherits(Video360Canvas, _paella$WebGLCanvas); + + function Video360Canvas(stream) { + _classCallCheck(this, Video360Canvas); + + return _possibleConstructorReturn(this, _getPrototypeOf(Video360Canvas).call(this, stream)); + } + + _createClass(Video360Canvas, [{ + key: "loadVideo", + value: function loadVideo(videoPlugin, stream) { + var _this202 = this; + + return new Promise(function (resolve, reject) { + var checkLoaded = function checkLoaded() { + if (_this202.video) { + resolve(_this202); + } else { + setTimeout(checkLoaded, 100); + } + }; + + checkLoaded(); + }); + } + }, { + key: "buildVideoSurface", + value: function buildVideoSurface(sceneRoot, videoTexture) { + var sphere = bg.scene.PrimitiveFactory.Sphere(this.gl, 1, 50); + var sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1, -1, 1))); + sceneRoot.addChild(sphereNode); + } + }, { + key: "buildCamera", + value: function buildCamera() { + var cameraNode = new bg.scene.Node(this.gl, "Camera"); + var camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + var projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + var oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + return cameraNode; + } + }]); + + return Video360Canvas; + }(paella.WebGLCanvas) + ); + }); +})(); + +(function () { + function cyln2world(a, e) { + return new bg.Vector3(Math.cos(e) * Math.cos(a), Math.cos(e) * Math.sin(a), Math.sin(e)); + } + + function world2fish(x, y, z) { + var nz = z; + if (z < -1.0) nz = -1.0;else if (z > 1.0) nz = 1.0; + return new bg.Vector2(Math.atan2(y, x), Math.acos(nz) / Math.PI); // 0.0 to 1.0 + } + + function calcTexUv(i, j, lens) { + var world = cyln2world(((i + 90) / 180.0 - 1.0) * Math.PI, // rotate 90 deg for polygon + (0.5 - j / 180.0) * Math.PI); + var ar = world2fish(Math.sin(-0.5 * Math.PI) * world.z + Math.cos(-0.5 * Math.PI) * world.x, world.y, Math.cos(-0.5 * Math.PI) * world.z - Math.sin(-0.5 * Math.PI) * world.x); + var fishRad = 0.883; + var fishRad2 = fishRad * 0.88888888888888; + var fishCenter = 1.0 - 0.44444444444444; + var x = lens === 0 ? fishRad * ar.y * Math.cos(ar.x) * 0.5 + 0.25 : fishRad * (1.0 - ar.y) * Math.cos(-1.0 * ar.x + Math.PI) * 0.5 + 0.75; + var y = lens === 0 ? fishRad2 * ar.y * Math.sin(ar.x) + fishCenter : fishRad2 * (1.0 - ar.y) * Math.sin(-1.0 * ar.x + Math.PI) + fishCenter; + return new bg.Vector2(x, y); + } + + function buildViewerNode(ctx) { + var radius = 1; + var node = new bg.scene.Node(ctx); + var drw = new bg.scene.Drawable(); + node.addComponent(drw); + var plist = new bg.base.PolyList(ctx); + var vertex = []; + var normals = []; + var uvs = []; + var index = []; + + for (var j = 0; j <= 180; j += 5) { + for (var i = 0; i <= 360; i += 5) { + vertex.push(new bg.Vector3(Math.sin(Math.PI * j / 180.0) * Math.sin(Math.PI * i / 180.0) * radius, Math.cos(Math.PI * j / 180.0) * radius, Math.sin(Math.PI * j / 180.0) * Math.cos(Math.PI * i / 180.0) * radius)); + normals.push(new bg.Vector3(0, 0, -1)); + } + /* devide texture */ + + + for (var k = 0; k <= 180; k += 5) { + uvs.push(calcTexUv(k, j, 0)); + } + + for (var l = 180; l <= 360; l += 5) { + uvs.push(calcTexUv(l, j, 1)); + } + } + + function addFace(v0, v1, v2, n0, n1, n2, uv0, uv1, uv2) { + plist.vertex.push(v0.x); + plist.vertex.push(v0.y); + plist.vertex.push(v0.z); + plist.vertex.push(v1.x); + plist.vertex.push(v1.y); + plist.vertex.push(v1.z); + plist.vertex.push(v2.x); + plist.vertex.push(v2.y); + plist.vertex.push(v2.z); + plist.normal.push(n0.x); + plist.normal.push(n0.y); + plist.normal.push(n0.z); + plist.normal.push(n1.x); + plist.normal.push(n1.y); + plist.normal.push(n1.z); + plist.normal.push(n2.x); + plist.normal.push(n2.z); + plist.normal.push(n2.z); + plist.texCoord0.push(uv0.x); + plist.texCoord0.push(1 - uv0.y); + plist.texCoord0.push(uv1.x); + plist.texCoord0.push(1 - uv1.y); + plist.texCoord0.push(uv2.x); + plist.texCoord0.push(1 - uv2.y); + plist.index.push(plist.index.length); + plist.index.push(plist.index.length); + plist.index.push(plist.index.length); + } + + for (var m = 0; m < 36; m++) { + for (var n = 0; n < 72; n++) { + var v = m * 73 + n; + var t = n < 36 ? m * 74 + n : m * 74 + n + 1; + [uvs[t + 0], uvs[t + 1], uvs[t + 74]], [uvs[t + 1], uvs[t + 75], uvs[t + 74]]; + var v0 = vertex[v + 0]; + var n0 = normals[v + 0]; + var uv0 = uvs[t + 0]; + var v1 = vertex[v + 1]; + var n1 = normals[v + 1]; + var uv1 = uvs[t + 1]; + var v2 = vertex[v + 73]; + var n2 = normals[v + 73]; + var uv2 = uvs[t + 74]; + var v3 = vertex[v + 74]; + var n3 = normals[v + 74]; + var uv3 = uvs[t + 75]; + addFace(v0, v1, v2, n0, n1, n2, uv0, uv1, uv2); + addFace(v1, v3, v2, n1, n3, n2, uv1, uv3, uv2); + } + } + + plist.build(); + drw.addPolyList(plist); + var trx = bg.Matrix4.Scale(-1, 1, 1); + node.addComponent(new bg.scene.Transform(trx)); + return node; + } + + paella.addCanvasPlugin("video360Theta", true, true, function () { + return ( + /*#__PURE__*/ + function (_paella$WebGLCanvas2) { + _inherits(Video360ThetaCanvas, _paella$WebGLCanvas2); + + function Video360ThetaCanvas(stream) { + _classCallCheck(this, Video360ThetaCanvas); + + return _possibleConstructorReturn(this, _getPrototypeOf(Video360ThetaCanvas).call(this, stream)); + } + + _createClass(Video360ThetaCanvas, [{ + key: "loadVideo", + value: function loadVideo(videoPlugin, stream) { + var _this203 = this; + + return new Promise(function (resolve, reject) { + var checkLoaded = function checkLoaded() { + if (_this203.video) { + resolve(_this203); + } else { + setTimeout(checkLoaded, 100); + } + }; + + checkLoaded(); + }); + } + }, { + key: "buildVideoSurface", + value: function buildVideoSurface(sceneRoot, videoTexture) { + var sphereNode = buildViewerNode(this.gl); + var sphere = sphereNode.drawable; + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sceneRoot.addChild(sphereNode); + } + }, { + key: "buildCamera", + value: function buildCamera() { + var cameraNode = new bg.scene.Node(this.gl, "Camera"); + var camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + var projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + var oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + return cameraNode; + } + }]); + + return Video360ThetaCanvas; + }(paella.WebGLCanvas) + ); + }); +})(); + +paella.addDataDelegate('metadata', function () { + return ( + /*#__PURE__*/ + function (_paella$DataDelegate4) { + _inherits(VideoManifestMetadataDataDelegate, _paella$DataDelegate4); + + function VideoManifestMetadataDataDelegate() { + _classCallCheck(this, VideoManifestMetadataDataDelegate); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoManifestMetadataDataDelegate).apply(this, arguments)); + } + + _createClass(VideoManifestMetadataDataDelegate, [{ + key: "read", + value: function read(context, params, onSuccess) { + var metadata = paella.player.videoLoader.getMetadata(); + onSuccess(metadata[params], true); + } + }, { + key: "write", + value: function write(context, params, value, onSuccess) { + onSuccess({}, true); + } + }, { + key: "remove", + value: function remove(context, params, onSuccess) { + onSuccess({}, true); + } + }]); + + return VideoManifestMetadataDataDelegate; + }(paella.DataDelegate) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$VideoOverlayB4) { + _inherits(VideoDataPlugin, _paella$VideoOverlayB4); + + function VideoDataPlugin() { + _classCallCheck(this, VideoDataPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoDataPlugin).apply(this, arguments)); + } + + _createClass(VideoDataPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 10; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "videoData"; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'left'; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return ""; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + // Check if enabled + var plugin = paella.player.config.plugins.list["es.upv.paella.videoDataPlugin"]; + var exclude = plugin && plugin.excludeLocations || []; + var excludeParent = plugin && plugin.excludeParentLocations || []; + var excluded = exclude.some(function (url) { + var re = RegExp(url, "i"); + return re.test(location.href); + }); + + if (window != window.parent) { + excluded = excluded || excludeParent.some(function (url) { + var re = RegExp(url, "i"); + + try { + return re.test(parent.location.href); + } catch (e) { + // Cross domain error + return false; + } + }); + } + + onSuccess(!excluded); + } + }, { + key: "setup", + value: function setup() { + var title = document.createElement("h1"); + title.innerText = ""; + title.className = "videoTitle"; + this.button.appendChild(title); + paella.data.read("metadata", "title", function (data) { + title.innerText = data; + }); + } + }, { + key: "action", + value: function action(button) {} + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.videoDataPlugin"; + } + }]); + + return VideoDataPlugin; + }(paella.VideoOverlayButtonPlugin) + ); +}); +paella.addPlugin(function () { + var g_canvasWidth = 320; + var g_canvasHeight = 180; + + function getThumbnailContainer(videoIndex) { + var container = document.createElement('canvas'); + container.width = g_canvasWidth; + container.height = g_canvasHeight; + container.className = "zoom-thumbnail"; + container.id = "zoomContainer" + videoIndex; + return container; + } + + function getZoomRect() { + var zoomRect = document.createElement('div'); + zoomRect.className = "zoom-rect"; + return zoomRect; + } + + function updateThumbnail(thumbElem) { + var player = thumbElem.player; + var canvas = thumbElem.canvas; + player.captureFrame().then(function (frameData) { + var ctx = canvas.getContext("2d"); + ctx.drawImage(frameData.source, 0, 0, g_canvasWidth, g_canvasHeight); + }); + } + + function setupButtons(videoPlayer) { + var wrapper = videoPlayer.parent; + var wrapperDom = wrapper.domElement; + var zoomButton = document.createElement('div'); + wrapperDom.appendChild(zoomButton); + zoomButton.className = "videoZoomButton btn zoomIn"; + zoomButton.innerHTML = '<i class="glyphicon glyphicon-zoom-in"></i>'; + $(zoomButton).on('mousedown', function () { + paella.player.videoContainer.disablePlayOnClick(); + videoPlayer.zoomIn(); + }); + $(zoomButton).on('mouseup', function () { + setTimeout(function () { + return paella.player.videoContainer.enablePlayOnClick(); + }, 10); + }); + zoomButton = document.createElement('div'); + wrapperDom.appendChild(zoomButton); + zoomButton.className = "videoZoomButton btn zoomOut"; + zoomButton.innerHTML = '<i class="glyphicon glyphicon-zoom-out"></i>'; + $(zoomButton).on('mousedown', function () { + paella.player.videoContainer.disablePlayOnClick(); + videoPlayer.zoomOut(); + }); + $(zoomButton).on('mouseup', function () { + setTimeout(function () { + return paella.player.videoContainer.enablePlayOnClick(); + }, 10); + }); + } + + return ( + /*#__PURE__*/ + function (_paella$VideoOverlayB5) { + _inherits(VideoZoomPlugin, _paella$VideoOverlayB5); + + function VideoZoomPlugin() { + _classCallCheck(this, VideoZoomPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoZoomPlugin).apply(this, arguments)); + } + + _createClass(VideoZoomPlugin, [{ + key: "getIndex", + value: function getIndex() { + return 10; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "videoZoom"; + } + }, { + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return ""; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + onSuccess(true); + } + }, { + key: "setup", + value: function setup() { + var _this204 = this; + + var thisClass = this; + this._thumbnails = []; + this._visible = false; + this._available = false; + + function checkVisibility() { + var buttons = $('.videoZoomButton'); + var thumbs = $('.videoZoom'); + + if (this._visible && this._available) { + buttons.show(); + thumbs.show(); + } else { + buttons.hide(); + thumbs.hide(); + } + } + + var players = paella.player.videoContainer.streamProvider.videoPlayers; + players.forEach(function (player, index) { + if (player.allowZoom()) { + _this204._available = player.zoomAvailable(); + _this204._visible = _this204._available; + setupButtons.apply(_this204, [player]); + player.supportsCaptureFrame().then(function (supports) { + if (supports) { + var thumbContainer = document.createElement('div'); + thumbContainer.className = "zoom-container"; + var thumb = getThumbnailContainer.apply(_this204, [index]); + var zoomRect = getZoomRect.apply(_this204); + + _this204.button.appendChild(thumbContainer); + + thumbContainer.appendChild(thumb); + thumbContainer.appendChild(zoomRect); + $(thumbContainer).hide(); + + _this204._thumbnails.push({ + player: player, + thumbContainer: thumbContainer, + zoomRect: zoomRect, + canvas: thumb + }); + + checkVisibility.apply(_this204); + } + }); + } + }); + var update = false; + paella.events.bind(paella.events.play, function (evt) { + var updateThumbs = function updateThumbs() { + _this204._thumbnails.forEach(function (item) { + updateThumbnail(item); + }); + + if (update) { + setTimeout(function () { + updateThumbs(); + }, 2000); + } + }; + + update = true; + updateThumbs(); + }); + paella.events.bind(paella.events.pause, function (evt) { + update = false; + }); + paella.events.bind(paella.events.videoZoomChanged, function (evt, target) { + _this204._thumbnails.some(function (thumb) { + if (thumb.player == target.video) { + if (thumb.player.zoom > 100) { + $(thumb.thumbContainer).show(); + var x = target.video.zoomOffset.x * 100 / target.video.zoom; + var y = target.video.zoomOffset.y * 100 / target.video.zoom; + var zoomRect = thumb.zoomRect; + $(zoomRect).css({ + left: x + '%', + top: y + '%', + width: 10000 / target.video.zoom + '%', + height: 10000 / target.video.zoom + '%' + }); + } else { + $(thumb.thumbContainer).hide(); + } + + return true; + } + }); + }); + paella.events.bind(paella.events.zoomAvailabilityChanged, function (evt, target) { + _this204._available = target.available; + _this204._visible = target.available; + checkVisibility.apply(_this204); + }); + paella.events.bind(paella.events.controlBarDidHide, function () { + _this204._visible = false; + checkVisibility.apply(_this204); + }); + paella.events.bind(paella.events.controlBarDidShow, function () { + _this204._visible = true; + checkVisibility.apply(_this204); + }); + } + }, { + key: "action", + value: function action(button) {//paella.messageBox.showMessage(base.dictionary.translate("Live streaming mode: This is a live video, so, some capabilities of the player are disabled")); + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.videoZoomPlugin"; + } + }]); + + return VideoZoomPlugin; + }(paella.VideoOverlayButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin20) { + _inherits(VideoZoomToolbarPlugin, _paella$ButtonPlugin20); + + function VideoZoomToolbarPlugin() { + _classCallCheck(this, VideoZoomToolbarPlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VideoZoomToolbarPlugin).apply(this, arguments)); + } + + _createClass(VideoZoomToolbarPlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "videoZoomToolbar"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-screen'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 2030; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.videoZoomToolbarPlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Set video zoom"); + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var players = paella.player.videoContainer.streamProvider.videoPlayers; + var pluginData = paella.player.config.plugins.list["es.upv.paella.videoZoomToolbarPlugin"]; + var playerIndex = pluginData.targetStreamIndex; + this.targetPlayer = players.length > playerIndex ? players[playerIndex] : null; + onSuccess(paella.player.config.player.videoZoom.enabled && this.targetPlayer && this.targetPlayer.allowZoom()); + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this205 = this; + + paella.events.bind(paella.events.videoZoomChanged, function (evt, target) { + _this205.setText(Math.round(target.video.zoom) + "%"); + }); + this.setText("100%"); + + function getZoomButton(className, onClick) { + var btn = document.createElement('div'); + btn.className = "videoZoomToolbarItem ".concat(className); + btn.innerHTML = "<i class=\"glyphicon glyphicon-".concat(className, "\"></i>"); + $(btn).click(onClick); + return btn; + } + + domElement.appendChild(getZoomButton('zoom-in', function (evt) { + _this205.targetPlayer.zoomIn(); + })); + domElement.appendChild(getZoomButton('zoom-out', function (evt) { + _this205.targetPlayer.zoomOut(); + })); + } + }]); + + return VideoZoomToolbarPlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin21) { + _inherits(ViewModePlugin, _paella$ButtonPlugin21); + + function ViewModePlugin() { + _classCallCheck(this, ViewModePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(ViewModePlugin).apply(this, arguments)); + } + + _createClass(ViewModePlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'right'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return "showViewModeButton"; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-presentation-mode'; + } + }, { + key: "getIndex", + value: function getIndex() { + return 540; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.viewModePlugin"; + } + }, { + key: "getButtonType", + value: function getButtonType() { + return paella.ButtonPlugin.type.popUpButton; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Change video layout"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this.buttonItems = null; + this.buttons = []; + this.selected_button = null; + this.active_profiles = null; + this.active_profiles = this.config.activeProfiles; + onSuccess(!paella.player.videoContainer.isMonostream); + } + }, { + key: "closeOnMouseOut", + value: function closeOnMouseOut() { + return true; + } + }, { + key: "setup", + value: function setup() { + var thisClass = this; + var Keys = { + Tab: 9, + Return: 13, + Esc: 27, + End: 35, + Home: 36, + Left: 37, + Up: 38, + Right: 39, + Down: 40 + }; + paella.events.bind(paella.events.setProfile, function (event, params) { + thisClass.onProfileChange(params.profileName); + }); + $(this.button).keyup(function (event) { + if (thisClass.isPopUpOpen()) { + if (event.keyCode == Keys.Up) { + if (thisClass.selected_button > 0) { + if (thisClass.selected_button < thisClass.buttons.length) thisClass.buttons[thisClass.selected_button].className = 'viewModeItemButton ' + thisClass.buttons[thisClass.selected_button].data.profile; + thisClass.selected_button--; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className + ' selected'; + } + } else if (event.keyCode == Keys.Down) { + if (thisClass.selected_button < thisClass.buttons.length - 1) { + if (thisClass.selected_button >= 0) thisClass.buttons[thisClass.selected_button].className = 'viewModeItemButton ' + thisClass.buttons[thisClass.selected_button].data.profile; + thisClass.selected_button++; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className + ' selected'; + } + } else if (event.keyCode == Keys.Return) { + thisClass.onItemClick(thisClass.buttons[thisClass.selected_button], thisClass.buttons[thisClass.selected_button].data.profile, thisClass.buttons[thisClass.selected_button].data.profile); + } + } + }); + } + }, { + key: "rebuildProfileList", + value: function rebuildProfileList() { + var _this206 = this; + + this.buttonItems = {}; + this.domElement.innerText = ""; + paella.profiles.profileList.forEach(function (profileData) { + if (profileData.hidden) return; + + if (_this206.active_profiles) { + var active = false; + + _this206.active_profiles.forEach(function (ap) { + if (ap == profile) { + active = true; + } + }); + + if (active == false) { + return; + } + } + + var buttonItem = _this206.getProfileItemButton(profileData.id, profileData); + + _this206.buttonItems[profileData.id] = buttonItem; + + _this206.domElement.appendChild(buttonItem); + + _this206.buttons.push(buttonItem); + + if (paella.player.selectedProfile == profileData.id) { + _this206.buttonItems[profileData.id].className = _this206.getButtonItemClass(profileData.id, true); + } + }); + this.selected_button = this.buttons.length; + } + }, { + key: "buildContent", + value: function buildContent(domElement) { + var _this207 = this; + + var thisClass = this; + this.domElement = domElement; + this.rebuildProfileList(); + paella.events.bind(paella.events.profileListChanged, function () { + _this207.rebuildProfileList(); + }); + } + }, { + key: "getProfileItemButton", + value: function getProfileItemButton(profile, profileData) { + var elem = document.createElement('div'); + elem.className = this.getButtonItemClass(profile, false); + var url = this.getButtonItemIcon(profileData); + url = url.replace(/\\/ig, '/'); + elem.style.backgroundImage = "url(".concat(url, ")"); + elem.id = profile + '_button'; + elem.data = { + profile: profile, + profileData: profileData, + plugin: this + }; + $(elem).click(function (event) { + this.data.plugin.onItemClick(this, this.data.profile, this.data.profileData); + }); + return elem; + } + }, { + key: "onProfileChange", + value: function onProfileChange(profileName) { + var thisClass = this; + var ButtonItem = this.buttonItems[profileName]; + var n = this.buttonItems; + var arr = Object.keys(n); + arr.forEach(function (i) { + thisClass.buttonItems[i].className = thisClass.getButtonItemClass(i, false); + }); + + if (ButtonItem) { + ButtonItem.className = thisClass.getButtonItemClass(profileName, true); + } + } + }, { + key: "onItemClick", + value: function onItemClick(button, profile, profileData) { + var ButtonItem = this.buttonItems[profile]; + + if (ButtonItem) { + paella.player.setProfile(profile); + } + + paella.player.controls.hidePopUp(this.getName()); + } + }, { + key: "getButtonItemClass", + value: function getButtonItemClass(profileName, selected) { + return 'viewModeItemButton ' + profileName + (selected ? ' selected' : ''); + } + }, { + key: "getButtonItemIcon", + value: function getButtonItemIcon(profileData) { + return "".concat(paella.baseUrl, "resources/style/").concat(profileData.icon); + } + }]); + + return ViewModePlugin; + }(paella.ButtonPlugin) + ); +}); +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$ButtonPlugin22) { + _inherits(VolumeRangePlugin, _paella$ButtonPlugin22); + + function VolumeRangePlugin() { + _classCallCheck(this, VolumeRangePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(VolumeRangePlugin).apply(this, arguments)); + } + + _createClass(VolumeRangePlugin, [{ + key: "getAlignment", + value: function getAlignment() { + return 'left'; + } + }, { + key: "getSubclass", + value: function getSubclass() { + return 'volumeRangeButton'; + } + }, { + key: "getIconClass", + value: function getIconClass() { + return 'icon-volume-high'; + } + }, { + key: "getName", + value: function getName() { + return "es.upv.paella.volumeRangePlugin"; + } + }, { + key: "getDefaultToolTip", + value: function getDefaultToolTip() { + return base.dictionary.translate("Volume"); + } + }, { + key: "getIndex", + value: function getIndex() { + return 9999; + } + }, { + key: "getAriaLabel", + value: function getAriaLabel() { + return base.dictionary.translate("Volume"); + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + this._tempMasterVolume = 0; + this._inputMaster = null; + this._control_NotMyselfEvent = true; + this._storedValue = false; + var enabled = !base.userAgent.browser.IsMobileVersion; + onSuccess(enabled); + } + }, { + key: "setup", + value: function setup() { + var self = this; //STORE VALUES + + paella.events.bind(paella.events.videoUnloaded, function (event, params) { + self.storeVolume(); + }); //RECOVER VALUES + + paella.events.bind(paella.events.singleVideoReady, function (event, params) { + self.loadStoredVolume(params); + }); + paella.events.bind(paella.events.setVolume, function (evt, par) { + self.updateVolumeOnEvent(par); + }); + } + }, { + key: "updateVolumeOnEvent", + value: function updateVolumeOnEvent(volume) { + var thisClass = this; + + if (thisClass._control_NotMyselfEvent) { + thisClass._inputMaster = volume.master; + } else { + thisClass._control_NotMyselfEvent = true; + } + } + }, { + key: "storeVolume", + value: function storeVolume() { + var This = this; + paella.player.videoContainer.streamProvider.mainAudioPlayer.volume().then(function (v) { + This._tempMasterVolume = v; + This._storedValue = true; + }); + } + }, { + key: "loadStoredVolume", + value: function loadStoredVolume(params) { + if (this._storedValue == false) { + this.storeVolume(); + } + + if (this._tempMasterVolume) { + paella.player.videoContainer.setVolume(this._tempMasterVolume); + } + + this._storedValue = false; + } + }, { + key: "action", + value: function action(button) { + if (paella.player.videoContainer.muted) { + paella.player.videoContainer.unmute(); + } else { + paella.player.videoContainer.mute(); + } + } + }, { + key: "getExpandableContent", + value: function getExpandableContent() { + var _this208 = this; + + var rangeInput = document.createElement('input'); + this._inputMaster = rangeInput; + rangeInput.type = "range"; + rangeInput.min = 0; + rangeInput.max = 1; + rangeInput.step = 0.01; + paella.player.videoContainer.audioPlayer.volume().then(function (vol) { + rangeInput.value = vol; + }); + + var updateMasterVolume = function updateMasterVolume() { + var masterVolume = $(rangeInput).val(); + var slaveVolume = 0; + _this208._control_NotMyselfEvent = false; + paella.player.videoContainer.setVolume(masterVolume); + }; + + $(rangeInput).bind('input', function (e) { + updateMasterVolume(); + }); + $(rangeInput).change(function () { + updateMasterVolume(); + }); + paella.events.bind(paella.events.setVolume, function (event, params) { + rangeInput.value = params.master; + + _this208.updateClass(); + }); + this.updateClass(); + return rangeInput; + } + }, { + key: "updateClass", + value: function updateClass() { + var _this209 = this; + + var selected = ''; + var self = this; + paella.player.videoContainer.volume().then(function (volume) { + if (volume === undefined) { + selected = 'icon-volume-mid'; + } else if (volume == 0) { + selected = 'icon-volume-mute'; + } else if (volume < 0.33) { + selected = 'icon-volume-low'; + } else if (volume < 0.66) { + selected = 'icon-volume-mid'; + } else { + selected = 'icon-volume-high'; + } + + _this209.changeIconClass(selected); + }); + } + }]); + + return VolumeRangePlugin; + }(paella.ButtonPlugin) + ); +}); + +(function () { + var WebmVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory6) { + _inherits(WebmVideoFactory, _paella$VideoFactory6); + + function WebmVideoFactory() { + _classCallCheck(this, WebmVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(WebmVideoFactory).apply(this, arguments)); + } + + _createClass(WebmVideoFactory, [{ + key: "webmCapable", + value: function webmCapable() { + var testEl = document.createElement("video"); + + if (testEl.canPlayType) { + return "" !== testEl.canPlayType('video/webm; codecs="vp8, vorbis"'); + } else { + return false; + } + } + }, { + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + if (!this.webmCapable()) return false; + + for (var key in streamData.sources) { + if (key == 'webm') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + return new paella.Html5Video(id, streamData, rect.x, rect.y, rect.w, rect.h, 'webm'); + } + }]); + + return WebmVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.WebmVideoFactory = WebmVideoFactory; +})(); + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$EventDrivenPl12) { + _inherits(WindowTitlePlugin, _paella$EventDrivenPl12); + + function WindowTitlePlugin() { + _classCallCheck(this, WindowTitlePlugin); + + return _possibleConstructorReturn(this, _getPrototypeOf(WindowTitlePlugin).apply(this, arguments)); + } + + _createClass(WindowTitlePlugin, [{ + key: "getName", + value: function getName() { + return "es.upv.paella.windowTitlePlugin"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var _this210 = this; + + this._initDone = false; + paella.player.videoContainer.masterVideo().duration().then(function (d) { + _this210.loadTitle(); + }); + onSuccess(true); + } + }, { + key: "loadTitle", + value: function loadTitle() { + var title = paella.player.videoLoader.getMetadata() && paella.player.videoLoader.getMetadata().title; + document.title = title || document.title; + this._initDone = true; + } + }]); + + return WindowTitlePlugin; + }(paella.EventDrivenPlugin) + ); +}); + +(function () { + var YoutubeVideo = + /*#__PURE__*/ + function (_paella$VideoElementB6) { + _inherits(YoutubeVideo, _paella$VideoElementB6); + + function YoutubeVideo(id, stream, left, top, width, height) { + var _this211; + + _classCallCheck(this, YoutubeVideo); + + _this211 = _possibleConstructorReturn(this, _getPrototypeOf(YoutubeVideo).call(this, id, stream, 'div', left, top, width, height)); + _this211._posterFrame = null; + _this211._currentQuality = null; + _this211._autoplay = false; + _this211._readyPromise = null; + _this211._readyPromise = $.Deferred(); + return _this211; + } + + _createClass(YoutubeVideo, [{ + key: "_deferredAction", + value: function _deferredAction(action) { + var _this212 = this; + + return new Promise(function (resolve, reject) { + _this212._readyPromise.then(function () { + resolve(action()); + }, function () { + reject(); + }); + }); + } + }, { + key: "_getQualityObject", + value: function _getQualityObject(index, s) { + var level = 0; + + switch (s) { + case 'small': + level = 1; + break; + + case 'medium': + level = 2; + break; + + case 'large': + level = 3; + break; + + case 'hd720': + level = 4; + break; + + case 'hd1080': + level = 5; + break; + + case 'highres': + level = 6; + break; + } + + return { + index: index, + res: { + w: null, + h: null + }, + src: null, + label: s, + level: level, + bitrate: level, + toString: function toString() { + return this.label; + }, + shortLabel: function shortLabel() { + return this.label; + }, + compare: function compare(q2) { + return this.level - q2.level; + } + }; + } + }, { + key: "_onStateChanged", + value: function _onStateChanged(e) { + console.log("On state changed"); + } // Initialization functions + + }, { + key: "getVideoData", + value: function getVideoData() { + var _this213 = this; + + var This = this; + return new Promise(function (resolve, reject) { + var stream = _this213._stream.sources.youtube[0]; + + _this213._deferredAction(function () { + var videoData = { + duration: This.video.getDuration(), + currentTime: This.video.getCurrentTime(), + volume: This.video.getVolume(), + paused: !This._playing, + ended: This.video.ended, + res: { + w: stream.res.w, + h: stream.res.h + } + }; + resolve(videoData); + }); + }); + } + }, { + key: "setPosterFrame", + value: function setPosterFrame(url) { + this._posterFrame = url; + } + }, { + key: "setAutoplay", + value: function setAutoplay(auto) { + this._autoplay = auto; + } + }, { + key: "setRect", + value: function setRect(rect, animate) { + this._rect = JSON.parse(JSON.stringify(rect)); + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(rect.top) + '%'; + var percentLeft = relativeSize.percentWSize(rect.left) + '%'; + var percentWidth = relativeSize.percentWSize(rect.width) + '%'; + var percentHeight = relativeSize.percentVSize(rect.height) + '%'; + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute' + }; + + if (animate) { + this.disableClassName(); + var thisClass = this; + $('#' + this.identifier).animate(style, 400, function () { + thisClass.enableClassName(); + paella.events.trigger(paella.events.setComposition, { + video: thisClass + }); + }); + this.enableClassNameAfter(400); + } else { + $('#' + this.identifier).css(style); + paella.events.trigger(paella.events.setComposition, { + video: this + }); + } + } + }, { + key: "setVisible", + value: function setVisible(visible, animate) { + if (visible == "true" && animate) { + $('#' + this.identifier).show(); + $('#' + this.identifier).animate({ + opacity: 1.0 + }, 300); + } else if (visible == "true" && !animate) { + $('#' + this.identifier).show(); + } else if (visible == "false" && animate) { + $('#' + this.identifier).animate({ + opacity: 0.0 + }, 300); + } else if (visible == "false" && !animate) { + $('#' + this.identifier).hide(); + } + } + }, { + key: "setLayer", + value: function setLayer(layer) { + $('#' + this.identifier).css({ + zIndex: layer + }); + } + }, { + key: "load", + value: function load() { + var _this214 = this; + + var This = this; + return new Promise(function (resolve, reject) { + _this214._qualityListReadyPromise = $.Deferred(); + paella.youtubePlayerVars.apiReadyPromise.then(function () { + var stream = _this214._stream.sources.youtube[0]; + + if (stream) { + // TODO: poster frame + _this214._youtubePlayer = new YT.Player(This.identifier, { + height: '390', + width: '640', + videoId: stream.id, + playerVars: { + controls: 0, + disablekb: 1 + }, + events: { + onReady: function onReady(e) { + This._readyPromise.resolve(); + }, + onStateChanged: function onStateChanged(e) { + console.log("state changed"); + }, + onPlayerStateChange: function onPlayerStateChange(e) { + console.log("state changed"); + } + } + }); + resolve(); + } else { + reject(new Error("Could not load video: invalid quality stream index")); + } + }); + }); + } + }, { + key: "getQualities", + value: function getQualities() { + var This = this; + return new Promise(function (resolve, reject) { + This._qualityListReadyPromise.then(function (q) { + var result = []; + var index = -1; + This._qualities = {}; + q.forEach(function (item) { + index++; + This._qualities[item] = This._getQualityObject(index, item); + result.push(This._qualities[item]); + }); + resolve(result); + }); + }); + } + }, { + key: "setQuality", + value: function setQuality(index) { + var _this215 = this; + + return new Promise(function (resolve, reject) { + _this215._qualityListReadyPromise.then(function (q) { + for (var key in _this215._qualities) { + var searchQ = _this215._qualities[key]; + + if (_typeof(searchQ) == "object" && searchQ.index == index) { + _this215.video.setPlaybackQuality(searchQ.label); + + break; + } + } + + resolve(); + }); + }); + } + }, { + key: "getCurrentQuality", + value: function getCurrentQuality() { + var _this216 = this; + + return new Promise(function (resolve, reject) { + _this216._qualityListReadyPromise.then(function (q) { + resolve(_this216._qualities[_this216.video.getPlaybackQuality()]); + }); + }); + } + }, { + key: "play", + value: function play() { + var _this217 = this; + + var This = this; + return new Promise(function (resolve, reject) { + This._playing = true; + This.video.playVideo(); + new base.Timer(function (timer) { + var q = _this217.video.getAvailableQualityLevels(); + + if (q.length) { + timer.repeat = false; + + _this217._qualityListReadyPromise.resolve(q); + + resolve(); + } else { + timer.repeat = true; + } + }, 500); + }); + } + }, { + key: "pause", + value: function pause() { + var _this218 = this; + + return this._deferredAction(function () { + _this218._playing = false; + + _this218.video.pauseVideo(); + }); + } + }, { + key: "isPaused", + value: function isPaused() { + var _this219 = this; + + return this._deferredAction(function () { + return !_this219._playing; + }); + } + }, { + key: "duration", + value: function duration() { + var _this220 = this; + + return this._deferredAction(function () { + return _this220.video.getDuration(); + }); + } + }, { + key: "setCurrentTime", + value: function setCurrentTime(time) { + var _this221 = this; + + return this._deferredAction(function () { + _this221.video.seekTo(time); + }); + } + }, { + key: "currentTime", + value: function currentTime() { + var _this222 = this; + + return this._deferredAction(function () { + return _this222.video.getCurrentTime(); + }); + } + }, { + key: "setVolume", + value: function setVolume(volume) { + var _this223 = this; + + return this._deferredAction(function () { + _this223.video.setVolume && _this223.video.setVolume(volume * 100); + }); + } + }, { + key: "volume", + value: function volume() { + var _this224 = this; + + return this._deferredAction(function () { + return _this224.video.getVolume() / 100; + }); + } + }, { + key: "setPlaybackRate", + value: function setPlaybackRate(rate) { + var _this225 = this; + + return this._deferredAction(function () { + _this225.video.playbackRate = rate; + }); + } + }, { + key: "playbackRate", + value: function playbackRate() { + var _this226 = this; + + return this._deferredAction(function () { + return _this226.video.playbackRate; + }); + } + }, { + key: "goFullScreen", + value: function goFullScreen() { + var _this227 = this; + + return this._deferredAction(function () { + var elem = _this227.video; + + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + }, { + key: "unFreeze", + value: function unFreeze() { + var _this228 = this; + + return this._deferredAction(function () { + var c = document.getElementById(_this228.video.className + "canvas"); + $(c).remove(); + }); + } + }, { + key: "freeze", + value: function freeze() { + var _this229 = this; + + return this._deferredAction(function () { + var canvas = document.createElement("canvas"); + canvas.id = _this229.video.className + "canvas"; + canvas.width = _this229.video.videoWidth; + canvas.height = _this229.video.videoHeight; + canvas.style.cssText = _this229.video.style.cssText; + canvas.style.zIndex = 2; + var ctx = canvas.getContext("2d"); + ctx.drawImage(_this229.video, 0, 0, Math.ceil(canvas.width / 16) * 16, Math.ceil(canvas.height / 16) * 16); //Draw image + + _this229.video.parentElement.appendChild(canvas); + }); + } + }, { + key: "unload", + value: function unload() { + this._callUnloadEvent(); + + return paella_DeferredNotImplemented(); + } + }, { + key: "getDimensions", + value: function getDimensions() { + return paella_DeferredNotImplemented(); + } + }, { + key: "video", + get: function get() { + return this._youtubePlayer; + } + }]); + + return YoutubeVideo; + }(paella.VideoElementBase); + + paella.YoutubeVideo = YoutubeVideo; + + var YoutubeVideoFactory = + /*#__PURE__*/ + function (_paella$VideoFactory7) { + _inherits(YoutubeVideoFactory, _paella$VideoFactory7); + + function YoutubeVideoFactory() { + _classCallCheck(this, YoutubeVideoFactory); + + return _possibleConstructorReturn(this, _getPrototypeOf(YoutubeVideoFactory).apply(this, arguments)); + } + + _createClass(YoutubeVideoFactory, [{ + key: "initYoutubeApi", + value: function initYoutubeApi() { + if (!this._initialized) { + var tag = document.createElement('script'); + tag.src = "https://www.youtube.com/iframe_api"; + var firstScriptTag = document.getElementsByTagName('script')[0]; + firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + paella.youtubePlayerVars = { + apiReadyPromise: new $.Deferred() + }; + this._initialized = true; + } + } + }, { + key: "isStreamCompatible", + value: function isStreamCompatible(streamData) { + try { + for (var key in streamData.sources) { + if (key == 'youtube') return true; + } + } catch (e) {} + + return false; + } + }, { + key: "getVideoObject", + value: function getVideoObject(id, streamData, rect) { + this.initYoutubeApi(); + return new paella.YoutubeVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + }]); + + return YoutubeVideoFactory; + }(paella.VideoFactory); + + paella.videoFactories.YoutubeVideoFactory = YoutubeVideoFactory; //paella.youtubePlayerVars = { + // apiReadyPromise: $.Promise() + //}; +})(); + +function onYouTubeIframeAPIReady() { + // console.log("Youtube iframe API ready"); + paella.youtubePlayerVars.apiReadyPromise.resolve(); +} + +paella.addPlugin(function () { + return ( + /*#__PURE__*/ + function (_paella$userTracking$5) { + _inherits(MatomoTracking, _paella$userTracking$5); + + function MatomoTracking() { + _classCallCheck(this, MatomoTracking); + + return _possibleConstructorReturn(this, _getPrototypeOf(MatomoTracking).apply(this, arguments)); + } + + _createClass(MatomoTracking, [{ + key: "getName", + value: function getName() { + return "org.opencast.usertracking.MatomoSaverPlugIn"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var site_id = this.config.site_id, + server = this.config.server, + heartbeat = this.config.heartbeat, + thisClass = this; + + if (server && site_id) { + if (server.substr(-1) != '/') server += '/'; + + require([server + "piwik.js"], function (matomo) { + base.log.debug("Matomo Analytics Enabled"); + paella.userTracking.matomotracker = Piwik.getAsyncTracker(server + "piwik.php", site_id); + paella.userTracking.matomotracker.client_id = thisClass.config.client_id; + if (heartbeat && heartbeat > 0) paella.userTracking.matomotracker.enableHeartBeatTimer(heartbeat); + + if (Piwik && Piwik.MediaAnalytics) { + paella.events.bind(paella.events.videoReady, function () { + Piwik.MediaAnalytics.scanForMedia(); + }); + } + + thisClass.registerVisit(); + }); + + onSuccess(true); + } else { + base.log.debug("No Matomo Site ID found in config file. Disabling Matomo Analytics PlugIn"); + onSuccess(false); + } + } + }, { + key: "registerVisit", + value: function registerVisit() { + var title, event_id, series_title, series_id, presenter, view_mode; + + if (paella.opencast && paella.opencast._episode) { + title = paella.opencast._episode.dcTitle; + event_id = paella.opencast._episode.id; + presenter = paella.opencast._episode.dcCreator; + paella.userTracking.matomotracker.setCustomVariable(5, "client", paella.userTracking.matomotracker.client_id || "Paella Opencast"); + } else { + paella.userTracking.matomotracker.setCustomVariable(5, "client", paella.userTracking.matomotracker.client_id || "Paella Standalone"); + } + + if (paella.opencast && paella.opencast._episode && paella.opencast._episode.mediapackage) { + series_id = paella.opencast._episode.mediapackage.series; + series_title = paella.opencast._episode.mediapackage.seriestitle; + } + + if (title) paella.userTracking.matomotracker.setCustomVariable(1, "event", title + " (" + event_id + ")", "page"); + if (series_title) paella.userTracking.matomotracker.setCustomVariable(2, "series", series_title + " (" + series_id + ")", "page"); + if (presenter) paella.userTracking.matomotracker.setCustomVariable(3, "presenter", presenter, "page"); + paella.userTracking.matomotracker.setCustomVariable(4, "view_mode", view_mode, "page"); + + if (title && presenter) { + paella.userTracking.matomotracker.setDocumentTitle(title + " - " + (presenter || "Unknown")); + paella.userTracking.matomotracker.trackPageView(title + " - " + (presenter || "Unknown")); + } else { + paella.userTracking.matomotracker.trackPageView(); + } + } + }, { + key: "log", + value: function log(event, params) { + if (paella.userTracking.matomotracker === undefined) { + base.log.debug("Matomo Tracker is missing"); + return; + } + + if (this.config.category === undefined || this.config.category === true) { + var value = ""; + + try { + value = JSON.stringify(params); + } catch (e) {} + + switch (event) { + case paella.events.play: + paella.userTracking.matomotracker.trackEvent("Player.Controls", "Play"); + break; + + case paella.events.pause: + paella.userTracking.matomotracker.trackEvent("Player.Controls", "Pause"); + break; + + case paella.events.endVideo: + paella.userTracking.matomotracker.trackEvent("Player.Status", "Ended"); + break; + + case paella.events.showEditor: + paella.userTracking.matomotracker.trackEvent("Player.Editor", "Show"); + break; + + case paella.events.hideEditor: + paella.userTracking.matomotracker.trackEvent("Player.Editor", "Hide"); + break; + + case paella.events.enterFullscreen: + paella.userTracking.matomotracker.trackEvent("Player.View", "Fullscreen"); + break; + + case paella.events.exitFullscreen: + paella.userTracking.matomotracker.trackEvent("Player.View", "ExitFullscreen"); + break; + + case paella.events.loadComplete: + paella.userTracking.matomotracker.trackEvent("Player.Status", "LoadComplete"); + break; + + case paella.events.showPopUp: + paella.userTracking.matomotracker.trackEvent("Player.PopUp", "Show", value); + break; + + case paella.events.hidePopUp: + paella.userTracking.matomotracker.trackEvent("Player.PopUp", "Hide", value); + break; + + case paella.events.captionsEnabled: + paella.userTracking.matomotracker.trackEvent("Player.Captions", "Enabled", value); + break; + + case paella.events.captionsDisabled: + paella.userTracking.matomotracker.trackEvent("Player.Captions", "Disabled", value); + break; + + case paella.events.setProfile: + paella.userTracking.matomotracker.trackEvent("Player.View", "Profile", value); + break; + + case paella.events.seekTo: + case paella.events.seekToTime: + paella.userTracking.matomotracker.trackEvent("Player.Controls", "Seek", value); + break; + + case paella.events.setVolume: + paella.userTracking.matomotracker.trackEvent("Player.Settings", "Volume", value); + break; + + case paella.events.resize: + paella.userTracking.matomotracker.trackEvent("Player.View", "resize", value); + break; + + case paella.events.setPlaybackRate: + paella.userTracking.matomotracker.trackEvent("Player.Controls", "PlaybackRate", value); + break; + } + } + } + }]); + + return MatomoTracking; + }(paella.userTracking.SaverPlugIn) + ); +}); +paella.addPlugin(function () { + var self = this; + return ( + /*#__PURE__*/ + function (_paella$userTracking$6) { + _inherits(X5gonTracking, _paella$userTracking$6); + + function X5gonTracking() { + _classCallCheck(this, X5gonTracking); + + return _possibleConstructorReturn(this, _getPrototypeOf(X5gonTracking).apply(this, arguments)); + } + + _createClass(X5gonTracking, [{ + key: "getName", + value: function getName() { + return "org.opencast.usertracking.x5gonSaverPlugIn"; + } + }, { + key: "checkEnabled", + value: function checkEnabled(onSuccess) { + var urlCookieconsentJS = "https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js", + token = this.config.token, + translations = [], + path, + testingEnvironment = this.config.testing_environment, + trackingPermission, + tracked; + + function trackX5gon() { + base.log.debug("X5GON: trackX5gon permission check [trackingPermission " + trackingPermission + "] [tracked " + tracked + "]"); + + if (isTrackingPermission() && !tracked) { + if (!token) { + base.log.debug("X5GON: token missing! Disabling X5gon PlugIn"); + onSuccess(false); + } else { + // load x5gon lib from remote server + base.log.debug("X5GON: trackX5gon loading x5gon-snippet, token: " + token); + + require(["https://platform.x5gon.org/api/v1/snippet/latest/x5gon-log.min.js"], function (x5gon) { + base.log.debug("X5GON: external x5gon snippet loaded"); + + if (typeof x5gonActivityTracker !== 'undefined') { + x5gonActivityTracker(token, testingEnvironment); + base.log.debug("X5GON: send data to X5gon servers"); + tracked = true; + } + }); + } + + onSuccess(true); + } else { + onSuccess(false); + } + } + + function initCookieNotification() { + // load cookieconsent lib from remote server + require([urlCookieconsentJS], function (cookieconsent) { + base.log.debug("X5GON: external cookie consent lib loaded"); + window.cookieconsent.initialise({ + "palette": { + "popup": { + "background": "#1d8a8a" + }, + "button": { + "background": "#62ffaa" + } + }, + "type": "opt-in", + "position": "top", + "content": { + "message": translate('x5_message', "On this site the X5gon service can be included, to provide personalized Open Educational Ressources."), + "allow": translate('x5_accept', "Accept"), + "deny": translate('x5_deny', "Deny"), + "link": translate('x5_more_info', "More information"), + "policy": translate('x5_policy', "Cookie Policy"), + // link to the X5GON platform privacy policy - describing what are we collecting + // through the platform + "href": "https://platform.x5gon.org/privacy-policy" + }, + onInitialise: function onInitialise(status) { + var type = this.options.type; + var didConsent = this.hasConsented(); // enable cookies - send user data to the platform + // only if the user enabled cookies + + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + }, + onStatusChange: function onStatusChange(status, chosenBefore) { + var type = this.options.type; + var didConsent = this.hasConsented(); // enable cookies - send user data to the platform + // only if the user enabled cookies + + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + }, + onRevokeChoice: function onRevokeChoice() { + var type = this.options.type; + var didConsent = this.hasConsented(); // disable cookies - set what to do when + // the user revokes cookie usage + + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + } + }); + }); + } + + function initTranslate(language, funcSuccess, funcError) { + base.log.debug('X5GON: selecting language ' + language.slice(0, 2)); + var jsonstr = window.location.origin + '/player/localization/paella_' + language.slice(0, 2) + '.json'; + $.ajax({ + url: jsonstr, + dataType: 'json', + success: function success(data) { + if (data) { + data.value_locale = language; + translations = data; + + if (funcSuccess) { + funcSuccess(translations); + } + } else if (funcError) { + funcError(); + } + }, + error: function error() { + if (funcError) { + funcError(); + } + } + }); + } + + function translate(str, strIfNotFound) { + return translations[str] != undefined ? translations[str] : strIfNotFound; + } + + function isTrackingPermission() { + if (checkDoNotTrackStatus() || !trackingPermission) { + return false; + } else { + return true; + } + } + + function checkDoNotTrackStatus() { + if (window.navigator.doNotTrack == 1 || window.navigator.msDoNotTrack == 1) { + base.log.debug("X5GON: Browser DoNotTrack: true"); + return true; + } + + base.log.debug("X5GON: Browser DoNotTrack: false"); + return false; + } + + function setTrackingPermission(permissionStatus) { + trackingPermission = permissionStatus; + base.log.debug("X5GON: trackingPermissions: " + permissionStatus); + trackX5gon(); + } + + ; + initTranslate(navigator.language, function () { + base.log.debug('X5GON: Successfully translated.'); + initCookieNotification(); + }, function () { + base.log.debug('X5gon: Error translating.'); + initCookieNotification(); + }); + trackX5gon(); + onSuccess(true); + } + }, { + key: "log", + value: function log(event, params) { + if (this.config.category === undefined || this.config.category === true) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } catch (e) {} + } + } + }]); + + return X5gonTracking; + }(paella.userTracking.SaverPlugIn) + ); +}); \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/javascript/paella_player_es2015.js b/src/main/webapp/static/js/paella/player/javascript/paella_player_es2015.js new file mode 100644 index 0000000000000000000000000000000000000000..73e8265e1aa2512d925d8d81ba055135e59bb524 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/paella_player_es2015.js @@ -0,0 +1,18012 @@ +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +var GlobalParams = { + video:{zIndex:1}, + background:{zIndex:0} +}; + + +window.paella = window.paella || {}; +paella.player = null; +paella.version = "6.3.1 - build: 6b43877"; + +(function buildBaseUrl() { + if (window.paella_debug_baseUrl) { + paella.baseUrl = window.paella_debug_baseUrl; + } + else { + var scripts = document.getElementsByTagName('script'); + var script = scripts[scripts.length-1].src.split("/"); + script.pop(); // Remove javascript file name + script.pop(); // Remove javascript/ folder name + paella.baseUrl = script.join("/") + '/'; + } +})(); + +paella.events = { + play:"paella:play", + pause:"paella:pause", + next:"paella:next", + previous:"paella:previous", + seeking:"paella:seeking", + seeked:"paella:seeked", + timeupdate:"paella:timeupdate", + timeUpdate:"paella:timeupdate", + seekTo:"paella:setseek", + endVideo:"paella:endvideo", // Triggered when a single video stream ends (once per video) + ended:"paella:ended", // Triggered when the video ends + seekToTime:"paella:seektotime", + setTrim:"paella:settrim", + setPlaybackRate:"paella:setplaybackrate", + setVolume:'paella:setVolume', + setComposition:'paella:setComposition', + loadStarted:'paella:loadStarted', + loadComplete:'paella:loadComplete', + loadPlugins:'paella:loadPlugins', + error:'paella:error', + documentChanged:'paella:documentChanged', + didSaveChanges:'paella:didsavechanges', + controlBarWillHide:'paella:controlbarwillhide', + controlBarDidHide:'paella:controlbardidhide', + controlBarDidShow:'paella:controlbardidshow', + hidePopUp:'paella:hidePopUp', + showPopUp:'paella:showPopUp', + enterFullscreen:'paella:enterFullscreen', + exitFullscreen:'paella:exitFullscreen', + resize:'paella:resize', // params: { width:paellaPlayerContainer width, height:paellaPlayerContainer height } + videoZoomChanged:'paella:videoZoomChanged', + audioTagChanged:'paella:audiotagchanged', + zoomAvailabilityChanged:'paella:zoomavailabilitychanged', + + qualityChanged:'paella:qualityChanged', + singleVideoReady:'paella:singleVideoReady', + singleVideoUnloaded:'paella:singleVideoUnloaded', + videoReady:'paella:videoReady', + videoUnloaded:'paella:videoUnloaded', + + controlBarLoaded:'paella:controlBarLoaded', + + flashVideoEvent:'paella:flashVideoEvent', + + captionAdded: 'paella:caption:add', // Event triggered when new caption is available. + captionsEnabled: 'paella:caption:enabled', // Event triguered when a caption es enabled. + captionsDisabled: 'paella:caption:disabled', // Event triguered when a caption es disabled. + + profileListChanged:'paella:profilelistchanged', + setProfile:'paella:setprofile', + + seekAvailabilityChanged:'paella:seekAvailabilityChanged', + + trigger:function(event,params) { + $(document).trigger(event,params); + }, + bind:function(event,callback) { $(document).bind(event,function(event,params) { callback(event,params);}); }, + + setupExternalListener:function() { + window.addEventListener("message", function(event) { + if (event.data && event.data.event) { + paella.events.trigger(event.data.event,event.data.params); + } + }, false); + } +}; + +paella.events.setupExternalListener(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +// Paella Mouse Manager +/////////////////////////////////////////////////////// +(() => { + class MouseManager { + get targetObject() { return this._targetObject; } + set targetObject(t) { this._targetObject = t; } + + constructor() { + paella.events.bind('mouseup',(event) => this.up(event)); + paella.events.bind('mousemove',(event) => this.move(event)); + paella.events.bind('mouseover',(event) => this.over(event)); + } + + down(targetObject,event) { + this.targetObject = targetObject; + if (this.targetObject && this.targetObject.down) { + this.targetObject.down(event,event.pageX,event.pageY); + event.cancelBubble = true; + } + return false; + } + + up(event) { + if (this.targetObject && this.targetObject.up) { + this.targetObject.up(event,event.pageX,event.pageY); + event.cancelBubble = true; + } + this.targetObject = null; + return false; + } + + out(event) { + if (this.targetObject && this.targetObject.out) { + this.targetObject.out(event,event.pageX,event.pageY); + event.cancelBubble = true; + } + return false; + } + + move(event) { + if (this.targetObject && this.targetObject.move) { + this.targetObject.move(event,event.pageX,event.pageY); + event.cancelBubble = true; + } + return false; + } + + over(event) { + if (this.targetObject && this.targetObject.over) { + this.targetObject.over(event,event.pageX,event.pageY); + event.cancelBubble = true; + } + return false; + } + } + + paella.MouseManager = MouseManager; +})(); + + +// paella.utils +/////////////////////////////////////////////////////// +(function initSkinDeps() { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = paella.baseUrl + 'resources/bootstrap/css/bootstrap.min.css'; + link.type = 'text/css'; + link.media = 'screen'; + link.charset = 'utf-8'; + document.head.appendChild(link); +})(); + +paella.utils = { + mouseManager: new paella.MouseManager(), + + folders: { + get: function(folder) { + if (paella.player && paella.player.config && paella.player.config.folders && paella.player.config.folders[folder]) { + return paella.player.config.folders[folder]; + } + return undefined; + }, + + profiles: function() { + return paella.baseUrl + (paella.utils.folders.get("profiles") || "config/profiles"); + }, + + resources: function() { + return paella.baseUrl + (paella.utils.folders.get("resources") || "resources"); + }, + + skins: function() { + return paella.baseUrl + (paella.utils.folders.get("skins") || paella.utils.folders.get("resources") + "/style"); + } + }, + + styleSheet: { + removeById:function(id) { + var outStyleSheet = $(document.head).find('#' + id)[0]; + if (outStyleSheet) { + document.head.removeChild(outStyleSheet); + } + }, + + remove:function(fileName) { + var links = document.head.getElementsByTagName('link'); + for (var i =0; i<links.length; ++i) { + if (links[i].href) { + document.head.removeChild(links[i]); + break; + } + } + }, + + add:function(fileName,id) { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = fileName; + link.type = 'text/css'; + link.media = 'screen'; + link.charset = 'utf-8'; + if (id) link.id = id; + document.head.appendChild(link); + }, + + swap:function(outFile,inFile) { + this.remove(outFile); + this.add(inFile); + } + }, + + skin: { + set:function(skinName) { + var skinId = 'paellaSkin'; + paella.utils.styleSheet.removeById(skinId); + paella.utils.styleSheet.add(paella.utils.folders.skins() + '/style_' + skinName + '.css'); + base.cookies.set("skin",skinName); + }, + + restore:function(defaultSkin) { + var storedSkin = base.cookies.get("skin"); + if (storedSkin && storedSkin!="") { + this.set(storedSkin); + } + else { + this.set(defaultSkin); + } + } + }, + + timeParse:{ + timeToSeconds:function(timeString) { + var hours = 0; + var minutes = 0; + var seconds =0; + if (/([0-9]+)h/i.test(timeString)) { + hours = parseInt(RegExp.$1) * 60 * 60; + } + if (/([0-9]+)m/i.test(timeString)) { + minutes = parseInt(RegExp.$1) * 60; + } + if (/([0-9]+)s/i.test(timeString)) { + seconds = parseInt(RegExp.$1); + } + return hours + minutes + seconds; + }, + + secondsToTime:function(seconds) { + var hrs = ~~ (seconds / 3600); + if (hrs<10) hrs = '0' + hrs; + var mins = ~~ ((seconds % 3600) / 60); + if (mins<10) mins = '0' + mins; + var secs = Math.floor(seconds % 60); + if (secs<10) secs = '0' + secs; + return hrs + ':' + mins + ':' + secs; + }, + secondsToText:function(secAgo) { + // Seconds + if (secAgo <= 1) { + return base.dictionary.translate("1 second ago"); + } + if (secAgo < 60) { + return base.dictionary.translate("{0} seconds ago").replace(/\{0\}/g, secAgo); + } + // Minutes + var minAgo = Math.round(secAgo/60); + if (minAgo <= 1) { + return base.dictionary.translate("1 minute ago"); + } + if (minAgo < 60) { + return base.dictionary.translate("{0} minutes ago").replace(/\{0\}/g, minAgo); + } + //Hours + var hourAgo = Math.round(secAgo/(60*60)); + if (hourAgo <= 1) { + return base.dictionary.translate("1 hour ago"); + } + if (hourAgo < 24) { + return base.dictionary.translate("{0} hours ago").replace(/\{0\}/g, hourAgo); + } + //Days + var daysAgo = Math.round(secAgo/(60*60*24)); + if (daysAgo <= 1) { + return base.dictionary.translate("1 day ago"); + } + if (daysAgo < 24) { + return base.dictionary.translate("{0} days ago").replace(/\{0\}/g, daysAgo); + } + //Months + var monthsAgo = Math.round(secAgo/(60*60*24*30)); + if (monthsAgo <= 1) { + return base.dictionary.translate("1 month ago"); + } + if (monthsAgo < 12) { + return base.dictionary.translate("{0} months ago").replace(/\{0\}/g, monthsAgo); + } + //Years + var yearsAgo = Math.round(secAgo/(60*60*24*365)); + if (yearsAgo <= 1) { + return base.dictionary.translate("1 year ago"); + } + return base.dictionary.translate("{0} years ago").replace(/\{0\}/g, yearsAgo); + }, + matterhornTextDateToDate: function(mhdate) { + var d = new Date(); + d.setFullYear(parseInt(mhdate.substring(0, 4), 10)); + d.setMonth(parseInt(mhdate.substring(5, 7), 10) - 1); + d.setDate(parseInt(mhdate.substring(8, 10), 10)); + d.setHours(parseInt(mhdate.substring(11, 13), 10)); + d.setMinutes(parseInt(mhdate.substring(14, 16), 10)); + d.setSeconds(parseInt(mhdate.substring(17, 19), 10)); + + return d; + } + }, + + objectFromString: function(str) { + var arr = str.split("."); + + var fn = (window || this); + for (var i = 0, len = arr.length; i < len; i++) { + fn = fn[arr[i]]; + } + + if (typeof fn !== "function") { + throw new Error("constructor not found"); + } + + return fn; + } +}; + +(function() { + let g_delegateCallbacks = {}; + let g_dataDelegates = []; + + class DataDelegate { + read(context,params,onSuccess) { + if (typeof(onSuccess)=='function') { + onSuccess({},true); + } + } + + write(context,params,value,onSuccess) { + if (typeof(onSuccess)=='function') { + onSuccess({},true); + } + } + + remove(context,params,onSuccess) { + if (typeof(onSuccess)=='function') { + onSuccess({},true); + } + } + } + + paella.DataDelegate = DataDelegate; + + paella.dataDelegates = {}; + + class Data { + get enabled() { return this._enabled; } + + get dataDelegates() { return g_dataDelegates; } + + constructor(config) { + this._enabled = config.data.enabled; + + // Delegate callbacks + let executedCallbacks = []; + for (let context in g_delegateCallbacks) { + let callback = g_delegateCallbacks[context]; + let DelegateClass = null; + let delegateName = null; + + if (!executedCallbacks.some((execCallbackData) => { + if (execCallbackData.callback==callback) { + delegateName = execCallbackData.delegateName; + return true; + } + })) { + DelegateClass = g_delegateCallbacks[context](); + delegateName = DelegateClass.name; + paella.dataDelegates[delegateName] = DelegateClass; + executedCallbacks.push({ callback:callback, delegateName:delegateName }); + } + + if (!config.data.dataDelegates[context]) { + config.data.dataDelegates[context] = delegateName; + } + + } + + for (var key in config.data.dataDelegates) { + try { + + var delegateName = config.data.dataDelegates[key]; + var DelegateClass = paella.dataDelegates[delegateName]; + var delegateInstance = new DelegateClass(); + g_dataDelegates[key] = delegateInstance; + + } + catch (e) { + console.warn("Warning: delegate not found - " + delegateName); + } + } + + + // Default data delegate + if (!this.dataDelegates["default"]) { + this.dataDelegates["default"] = new paella.dataDelegates.DefaultDataDelegate(); + } + } + + read(context,key,onSuccess) { + var del = this.getDelegate(context); + del.read(context,key,onSuccess); + } + + write(context,key,params,onSuccess) { + var del = this.getDelegate(context); + del.write(context,key,params,onSuccess); + } + + remove(context,key,onSuccess) { + var del = this.getDelegate(context); + del.remove(context,key,onSuccess); + } + + getDelegate(context) { + if (this.dataDelegates[context]) return this.dataDelegates[context]; + else return this.dataDelegates["default"]; + } + } + + paella.Data = Data; + + paella.addDataDelegate = function(context,callback) { + if (Array.isArray(context)) { + context.forEach((ctx) => { + g_delegateCallbacks[ctx] = callback; + }) + } + else if (typeof(context)=="string") { + g_delegateCallbacks[context] = callback; + } + } + +})(); + +paella.addDataDelegate(["default","trimming"], () => { + paella.dataDelegates.DefaultDataDelegate = class CookieDataDelegate extends paella.DataDelegate { + serializeKey(context,params) { + if (typeof(params)=='object') { + params = JSON.stringify(params); + } + return context + '|' + params; + } + + read(context,params,onSuccess) { + var key = this.serializeKey(context,params); + var value = base.cookies.get(key); + try { + value = unescape(value); + value = JSON.parse(value); + } + catch (e) {} + if (typeof(onSuccess)=='function') { + onSuccess(value,true); + } + } + + write(context,params,value,onSuccess) { + var key = this.serializeKey(context,params); + if (typeof(value)=='object') { + value = JSON.stringify(value); + } + value = escape(value); + base.cookies.set(key,value); + if(typeof(onSuccess)=='function') { + onSuccess({},true); + } + } + + remove(context,params,onSuccess) { + var key = this.serializeKey(context,params); + if (typeof(value)=='object') { + value = JSON.stringify(value); + } + base.cookies.set(key,''); + if(typeof(onSuccess)=='function') { + onSuccess({},true); + } + } + } + + return paella.dataDelegates.DefaultDataDelegate; +}) + +// Will be initialized inmediately after loading config.json, in PaellaPlayer.onLoadConfig() +paella.data = null; + + +(() => { + // Include scripts in header + let g_requiredScripts = {}; + + paella.require = function(path) { + if (!g_requiredScripts[path]) { + g_requiredScripts[path] = new Promise((resolve,reject) => { + let script = document.createElement("script"); + if (path.split(".").pop()=='js') { + script.src = path; + script.async = false; + document.head.appendChild(script); + setTimeout(() => resolve(), 100); + } + else { + reject(new Error("Unexpected file type")); + } + }); + } + return g_requiredScripts[path]; + }; + + class MessageBox { + get modalContainerClassName() { return 'modalMessageContainer'; } + get frameClassName() { return 'frameContainer'; } + get messageClassName() { return 'messageContainer'; } + get errorClassName() { return 'errorContainer'; } + + get currentMessageBox() { return this._currentMessageBox; } + set currentMessageBox(m) { this._currentMessageBox = m; } + get messageContainer() { return this._messageContainer; } + get onClose() { return this._onClose; } + set onClose(c) { this._onClose = c; } + + constructor() { + this._messageContainer = null; + $(window).resize((event) => this.adjustTop()); + } + + showFrame(src,params) { + var closeButton = true; + var onClose = null; + if (params) { + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowFrame(src,closeButton,onClose); + } + + doShowFrame(src,closeButton,onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + + var messageContainer = document.createElement('div'); + messageContainer.className = this.frameClassName; + modalContainer.appendChild(messageContainer); + + var iframeContainer = document.createElement('iframe'); + iframeContainer.src = src; + iframeContainer.setAttribute("frameborder", "0"); + iframeContainer.style.width = "100%"; + iframeContainer.style.height = "100%"; + messageContainer.appendChild(iframeContainer); + + if (paella.player && paella.player.isFullScreen()) { + paella.player.mainContainer.appendChild(modalContainer); + }else{ + $('body')[0].appendChild(modalContainer); + } + + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + + showElement(domElement,params) { + var closeButton = true; + var onClose = null; + var className = this.messageClassName; + if (params) { + className = params.className; + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowElement(domElement,closeButton,className,onClose); + } + + showMessage(message,params) { + var closeButton = true; + var onClose = null; + var className = this.messageClassName; + if (params) { + className = params.className; + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowMessage(message,closeButton,className,onClose); + } + + doShowElement(domElement,closeButton,className,onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + if (!className) className = this.messageClassName; + + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + + var messageContainer = document.createElement('div'); + messageContainer.className = className; + messageContainer.appendChild(domElement); + modalContainer.appendChild(messageContainer); + + $('body')[0].appendChild(modalContainer); + + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + + doShowMessage(message,closeButton,className,onClose) { + this.onClose = onClose; + $('#playerContainer').addClass("modalVisible"); + + if (this.currentMessageBox) { + this.close(); + } + if (!className) className = this.messageClassName; + + var modalContainer = document.createElement('div'); + modalContainer.className = this.modalContainerClassName; + modalContainer.style.position = 'fixed'; + modalContainer.style.top = '0px'; + modalContainer.style.left = '0px'; + modalContainer.style.right = '0px'; + modalContainer.style.bottom = '0px'; + modalContainer.style.zIndex = 999999; + + var messageContainer = document.createElement('div'); + messageContainer.className = className; + messageContainer.innerHTML = message; + modalContainer.appendChild(messageContainer); + + if (paella.player && paella.player.isFullScreen()) { + paella.player.mainContainer.appendChild(modalContainer); + }else{ + $('body')[0].appendChild(modalContainer); + } + + this.currentMessageBox = modalContainer; + this._messageContainer = messageContainer; + this.adjustTop(); + + if (closeButton) { + this.createCloseButton(); + } + } + + showError(message,params) { + var closeButton = false; + var onClose = null; + if (params) { + closeButton = params.closeButton; + onClose = params.onClose; + } + + this.doShowError(message,closeButton,onClose); + } + + doShowError(message,closeButton,onClose) { + this.doShowMessage(message,closeButton,this.errorClassName,onClose); + } + + createCloseButton() { + if (this._messageContainer) { + var closeButton = document.createElement('span'); + this._messageContainer.appendChild(closeButton); + closeButton.className = 'paella_messageContainer_closeButton icon-cancel-circle'; + $(closeButton).click((event) => this.onCloseButtonClick()); + $(window).keyup((evt) => { + if (evt.keyCode == 27) { + this.onCloseButtonClick(); + } + }); + + } + } + + adjustTop() { + if (this.currentMessageBox) { + + var msgHeight = $(this._messageContainer).outerHeight(); + var containerHeight = $(this.currentMessageBox).height(); + + var top = containerHeight/2 - msgHeight/2; + this._messageContainer.style.marginTop = top + 'px'; + } + } + + close() { + if (this.currentMessageBox && this.currentMessageBox.parentNode) { + var msgBox = this.currentMessageBox; + var parent = msgBox.parentNode; + $('#playerContainer').removeClass("modalVisible"); + $(msgBox).animate({opacity:0.0},300,function() { + parent.removeChild(msgBox); + }); + if (this.onClose) { + this.onClose(); + } + } + } + + onCloseButtonClick() { + this.close(); + } + } + + paella.MessageBox = MessageBox; + paella.messageBox = new paella.MessageBox(); + +})(); + +paella.AntiXSS = { + htmlEscape: function (str) { + return String(str) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(/</g, '<') + .replace(/>/g, '>'); + }, + + htmlUnescape: function (value){ + return String(value) + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/</g, '<') + .replace(/>/g, '>') + .replace(/&/g, '&'); + } +}; + +function paella_DeferredResolved(param) { + return new Promise((resolve) => { + resolve(param); + }); +} + +function paella_DeferredRejected(param) { + return new Promise((resolve,reject) => { + reject(param); + }); +} + +function paella_DeferredNotImplemented () { + return paella_DeferredRejected(new Error("not implemented")); +} + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(() => { + + class Node { + get identifier() { return this._identifier; } + set identifier(id) { this._identifier = id; } + get nodeList() { return this._nodeList; } + get parent() { return this._parent; } + set parent(p) { this._parent = p; } + + constructor(id) { + this._nodeList = {}; + this.identifier = id; + } + + addTo(parentNode) { + parentNode.addNode(this); + } + + addNode(childNode) { + childNode.parent = this; + this.nodeList[childNode.identifier] = childNode; + return childNode; + } + + getNode(id) { + return this.nodeList[id]; + } + + removeNode(childNode) { + if (this.nodeList[childNode.identifier]) { + delete this.nodeList[childNode.identifier]; + return true; + } + return false; + } + } + + paella.Node = Node; + + class DomNode extends paella.Node { + get domElement() { return this._domElement; } + + get domElementType() { return this._elementType; } + set domElementType(newType) { + this._elementType = newType; + let oldElement = this._domElement; + let parent = oldElement.parentNode; + let newElement = document.createElement(newType); + parent.removeChild(oldElement); + parent.appendChild(newElement); + this._domElement = newElement; + newElement.innerHTML = oldElement.innerHTML; + for (let i = 0; i<oldElement.attributes.length; ++i) { + let attr = oldElement.attributes[i]; + newElement.setAttribute(attr.name,attr.value); + } + } + + constructor(elementType,id,style) { + super(id); + this._elementType = elementType; + this._domElement = document.createElement(elementType); + this.domElement.id = id; + if (style) this.style = style; + } + + set style(s) { $(this.domElement).css(s); } + + addNode(childNode) { + let returnValue = super.addNode(childNode); + this.domElement.appendChild(childNode.domElement); + return returnValue; + } + + onresize() { + } + + removeNode(childNode) { + if (super.removeNode(childNode)) { + this.domElement.removeChild(childNode.domElement); + } + } + } + + paella.DomNode = DomNode; + + class Button extends paella.DomNode { + get isToggle() { return this._isToggle; } + set isToggle(t) { this._isToggle = t; } + + constructor(id,className,action,isToggle) { + var style = {}; + super('div',id,style); + this.isToggle = isToggle; + this.domElement.className = className; + if (isToggle) { + $(this.domElement).click((event) => { + this.toggleIcon(); + }); + } + $(this.domElement).click('click',action); + } + + isToggled() { + if (this.isToggle) { + var element = this.domElement; + return /([a-zA-Z0-9_]+)_active/.test(element.className); + } + else { + return false; + } + } + + toggle() { + this.toggleIcon(); + } + + toggleIcon() { + var element = this.domElement; + if (/([a-zA-Z0-9_]+)_active/.test(element.className)) { + element.className = RegExp.$1; + } + else { + element.className = element.className + '_active'; + } + } + + show() { + $(this.domElement).show(); + } + + hide() { + $(this.domElement).hide(); + } + + visible() { + return this.domElement.visible(); + } + } + + paella.Button = Button; + +})(); + +(function() { + let g_profiles = []; + + paella.addProfile = function(cb) { + cb().then((profileData) => { + if (profileData) { + g_profiles.push(profileData); + if (typeof(profileData.onApply)!="function") { + profileData.onApply = function() { } + } + if (typeof(profileData.onDeactivte)!="function") { + profileData.onDeactivate = function() {} + } + paella.events.trigger(paella.events.profileListChanged, { profileData:profileData }); + } + }); + } + + // Utility functions + function hideBackground() { + let bkgNode = this.container.getNode("videoContainerBackground"); + if (bkgNode) this.container.removeNode(bkgNode); + } + + function showBackground(bkgData) { + if (!bkgData) return; + hideBackground.apply(this); + this.backgroundData = bkgData; + let style = { + backgroundImage: `url(${paella.utils.folders.get("resources")}/style/${ bkgData.content })`, + backgroundSize: "100% 100%", + zIndex: bkgData.layer, + position: 'absolute', + left: bkgData.rect.left + "px", + right: bkgData.rect.right + "px", + width: "100%", + height: "100%", + } + this.container.addNode(new paella.DomNode('div',"videoContainerBackground",style)); + } + + function hideAllLogos() { + if (this.logos == undefined) return; + for (var i=0;i<this.logos.length;++i) { + var logoId = this.logos[i].content.replace(/\./ig,"-"); + var logo = this.container.getNode(logoId); + $(logo.domElement).hide(); + } + } + + function showLogos(logos) { + this.logos = logos; + var relativeSize = new paella.RelativeVideoSize(); + for (var i=0; i<logos.length;++i) { + var logo = logos[i]; + var logoId = logo.content.replace(/\./ig,"-"); + var logoNode = this.container.getNode(logoId); + var rect = logo.rect; + if (!logoNode) { + style = {}; + logoNode = this.container.addNode(new paella.DomNode('img',logoId,style)); + logoNode.domElement.setAttribute('src', `${paella.utils.folders.get("resources")}/style/${logo.content}`); + } + else { + $(logoNode.domElement).show(); + } + var percentTop = Number(relativeSize.percentVSize(rect.top)) + '%'; + var percentLeft = Number(relativeSize.percentWSize(rect.left)) + '%'; + var percentWidth = Number(relativeSize.percentWSize(rect.width)) + '%'; + var percentHeight = Number(relativeSize.percentVSize(rect.height)) + '%'; + var style = {top:percentTop,left:percentLeft,width:percentWidth,height:percentHeight,position:'absolute',zIndex:logo.zIndex}; + $(logoNode.domElement).css(style); + } + } + + function hideButtons() { + if (this.buttons) { + this.buttons.forEach((btn) => { + this.container.removeNode(this.container.getNode(btn.id)); + }); + this.buttons = null; + } + } + + function showButtons(buttons,profileData) { + hideButtons.apply(this); + if (buttons) { + let relativeSize = new paella.RelativeVideoSize(); + this.buttons = buttons; + buttons.forEach((btn,index) => { + btn.id = "button_" + index; + let rect = btn.rect; + let percentTop = relativeSize.percentVSize(rect.top) + '%'; + let percentLeft = relativeSize.percentWSize(rect.left) + '%'; + let percentWidth = relativeSize.percentWSize(rect.width) + '%'; + let percentHeight = relativeSize.percentVSize(rect.height) + '%'; + let url = paella.baseUrl; + url = url.replace(/\\/ig,'/'); + let style = { + top:percentTop, + left:percentLeft, + width:percentWidth, + height:percentHeight, + position:'absolute', + zIndex:btn.layer, + backgroundImage: `url(${paella.utils.folders.get("resources")}/style/${ btn.icon })`, + backgroundSize: '100% 100%', + display: 'block' + }; + let logoNode = this.container.addNode(new paella.DomNode('div',btn.id,style)); + logoNode.domElement.className = "paella-profile-button"; + logoNode.domElement.data = { + action: btn.onClick, + profileData: profileData + } + $(logoNode.domElement).click(function(evt) { + this.data.action.apply(this.data.profileData,[evt]); + evt.stopPropagation(); + return false; + }) + }) + } + } + + function getClosestRect(profileData,videoDimensions) { + var minDiff = 10; + var re = /([0-9\.]+)\/([0-9\.]+)/; + var result = profileData.rect[0]; + var videoAspectRatio = videoDimensions.h==0 ? 1.777777:videoDimensions.w / videoDimensions.h; + var profileAspectRatio = 1; + var reResult = false; + profileData.rect.forEach(function(rect) { + if ((reResult = re.exec(rect.aspectRatio))) { + profileAspectRatio = Number(reResult[1]) / Number(reResult[2]); + } + var diff = Math.abs(profileAspectRatio - videoAspectRatio); + if (minDiff>diff) { + minDiff = diff; + result = rect; + } + }); + return result; + } + + function applyProfileWithJson(profileData,animate) { + if (animate==undefined) animate = true; + if (!profileData) return; + let getProfile = (content) => { + let result = null; + + profileData && profileData.videos.some((videoProfile) => { + if (videoProfile.content==content) { + result = videoProfile; + } + return result!=null; + }); + return result; + + }; + + let applyVideoRect = (profile,videoData,videoWrapper,player) => { + let frameStrategy = this.profileFrameStrategy; + if (frameStrategy) { + let rect = getClosestRect(profile,videoData.res); + let videoSize = videoData.res; + let containerSize = { width:$(this.domElement).width(), height:$(this.domElement).height() }; + let scaleFactor = rect.width / containerSize.width; + let scaledVideoSize = { width:videoSize.w * scaleFactor, height:videoSize.h * scaleFactor }; + rect.left = Number(rect.left); + rect.top = Number(rect.top); + rect.width = Number(rect.width); + rect.height = Number(rect.height); + rect = frameStrategy.adaptFrame(scaledVideoSize,rect); + + let visible = /true/i.test(profile.visible); + rect.visible = visible; + let layer = parseInt(profile.layer); + videoWrapper.domElement.style.zIndex = layer; + + videoWrapper.setRect(rect,animate); + videoWrapper.setVisible(visible,animate); + + // The disable/enable functions may not be called on main audio player + let isMainAudioPlayer = paella.player.videoContainer.streamProvider.mainAudioPlayer==player; + visible ? player.enable(isMainAudioPlayer) : player.disable(isMainAudioPlayer); + } + }; + + profileData && profileData.onApply(); + hideAllLogos.apply(this); + profileData && showLogos.apply(this,[profileData.logos]); + hideBackground.apply(this); + profileData && showBackground.apply(this,[profileData.background]); + hideButtons.apply(this); + profileData && showButtons.apply(this,[profileData.buttons, profileData]); + + this.streamProvider.videoStreams.forEach((streamData,index) => { + let profile = getProfile(streamData.content); + let player = this.streamProvider.videoPlayers[index]; + let videoWrapper = this.videoWrappers[index]; + if (profile) { + player.getVideoData() + .then((data) => { + applyVideoRect(profile,data,videoWrapper,player); + }); + } + else if (videoWrapper) { + videoWrapper.setVisible(false,animate); + if (paella.player.videoContainer.streamProvider.mainAudioPlayer!=player) { + player.disable(); + } + } + }); + } + + class Profiles { + constructor() { + paella.events.bind(paella.events.controlBarDidHide, () => this.hideButtons()); + paella.events.bind(paella.events.controlBarDidShow, () => this.showButtons()); + + paella.events.bind(paella.events.profileListChanged, () => { + if (paella.player && paella.player.videoContainer && + (!this.currentProfile || this.currentProfileName!=this.currentProfile.id)) + { + this.setProfile(this.currentProfileName,false); + } + }) + } + + get profileList() { return g_profiles; } + + getDefaultProfile() { + if (paella.player.videoContainer.masterVideo() && paella.player.videoContainer.masterVideo().defaultProfile()) { + return paella.player.videoContainer.masterVideo().defaultProfile(); + } + if (paella.player && paella.player.config && paella.player.config.defaultProfile) { + return paella.player.config.defaultProfile; + } + return undefined; + } + + loadProfile(profileId) { + let result = null; + g_profiles.some((profile) => { + if (profile.id==profileId) { + result = profile; + } + return result; + }); + return result; + } + + get currentProfile() { return this.getProfile(this._currentProfileName); } + + get currentProfileName() { return this._currentProfileName; } + + setProfile(profileName,animate) { + if (!profileName) { + return false; + } + + animate = base.userAgent.browser.Explorer ? false:animate; + if (this.currentProfile) { + this.currentProfile.onDeactivate(); + } + + if (!paella.player.videoContainer.ready) { + return false; // Nothing to do, the video is not loaded + } + else { + let profileData = this.loadProfile(profileName) || (g_profiles.length>0 && g_profiles[0]); + if (!profileData && g_profiles.length==0) { + // Try to load the profile again later, maybe the profiles are not loaded yet + setTimeout(() => { + this.setProfile(profileName,animate); + },100); + return false; + } + else { + this._currentProfileName = profileName; + applyProfileWithJson.apply(paella.player.videoContainer,[profileData,animate]); + return true; + } + } + } + + getProfile(profileName) { + let result = null; + this.profileList.some((p) => { + if (p.id==profileName) { + result = p; + return true; + } + }) + return result; + } + + placeVideos() { + this.setProfile(this._currentProfileName,false); + } + + hideButtons() { + $('.paella-profile-button').hide(); + } + + showButtons() { + $('.paella-profile-button').show(); + } + } + + paella.profiles = new Profiles(); + + +})(); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function() { + class VideoQualityStrategy { + static Factory() { + var config = paella.player.config; + + try { + var strategyClass = config.player.videoQualityStrategy; + var ClassObject = paella.utils.objectFromString(strategyClass); + var strategy = new ClassObject(); + if (strategy instanceof paella.VideoQualityStrategy) { + return strategy; + } + } + catch (e) { + } + + return null; + } + + getParams() { + return paella.player.config.player.videoQualityStrategyParams || {}; + } + + getQualityIndex(source) { + if (source.length>0) { + return source[source.length-1]; + } + else { + return source; + } + } + } + + paella.VideoQualityStrategy = VideoQualityStrategy; + + class BestFitVideoQualityStrategy extends paella.VideoQualityStrategy { + getQualityIndex(source) { + var index = source.length - 1; + + if (source.length>0) { + var selected = source[0]; + var win_w = $(window).width(); + var win_h = $(window).height(); + var win_res = (win_w * win_h); + + if (selected.res && selected.res.w && selected.res.h) { + var selected_res = parseInt(selected.res.w) * parseInt(selected.res.h); + var selected_diff = Math.abs(win_res - selected_res); + + for (var i=0; i<source.length; ++i) { + var res = source[i].res; + if (res) { + var m_res = parseInt(source[i].res.w) * parseInt(source[i].res.h); + var m_diff = Math.abs(win_res - m_res); + + if (m_diff <= selected_diff){ + selected_diff = m_diff; + index = i; + } + } + } + } + } + + return index; + } + } + + paella.BestFitVideoQualityStrategy = BestFitVideoQualityStrategy; + + class LimitedBestFitVideoQualityStrategy extends paella.VideoQualityStrategy { + getQualityIndex(source) { + var index = source.length - 1; + var params = this.getParams(); + + if (source.length>0) { + //var selected = source[0]; + var selected = null; + var win_h = $(window).height(); + var maxRes = params.maxAutoQualityRes || 720; + var diff = Number.MAX_VALUE; + + source.forEach(function(item,i) { + if (item.res && item.res.h<=maxRes ) { + var itemDiff = Math.abs(win_h - item.res.h); + if (itemDiff<diff) { + selected = item; + index = i; + } + } + }); + } + return index; + } + } + + paella.LimitedBestFitVideoQualityStrategy = LimitedBestFitVideoQualityStrategy; + + class VideoFactory { + isStreamCompatible(streamData) { + return false; + } + + getVideoObject(id, streamData, rect) { + return null; + } + } + + paella.VideoFactory = VideoFactory; + paella.videoFactories = paella.videoFactories || {}; + + paella.videoFactory = { + _factoryList:[], + + initFactories:function() { + if (paella.videoFactories) { + var This = this; + paella.player.config.player.methods.forEach(function(method) { + if (method.enabled && paella.videoFactories[method.factory]) { + This.registerFactory(new paella.videoFactories[method.factory]()); + } + }); + this.registerFactory(new paella.videoFactories.EmptyVideoFactory()); + } + }, + + getVideoObject:function(id, streamData, rect) { + if (this._factoryList.length==0) { + this.initFactories(); + } + var selectedFactory = null; + if (this._factoryList.some(function(factory) { + if (factory.isStreamCompatible(streamData)) { + selectedFactory = factory; + return true; + } + })) { + return selectedFactory.getVideoObject(id, streamData, rect); + } + return null; + }, + + registerFactory:function(factory) { + this._factoryList.push(factory); + } + }; + + +})(); + + +(function() { + class AudioElementBase extends paella.DomNode { + constructor(id,stream) { + super('div',id); + this._stream = stream; + this._ready = false; + } + + get ready() { return this._ready; } + + get currentTimeSync() { return null; } + get volumeSync() { return null; } + get pausedSync() { return null; } + get durationSync() { return null; } + + get stream() { return this._stream; } + setAutoplay() {return Promise.reject(new Error("no such compatible video player"));} + load() {return Promise.reject(new Error("no such compatible video player")); } + play() { return Promise.reject(new Error("no such compatible video player")); } + pause() { return Promise.reject(new Error("no such compatible video player")); } + isPaused() { return Promise.reject(new Error("no such compatible video player")); } + duration() { return Promise.reject(new Error("no such compatible video player")); } + setCurrentTime(time) { return Promise.reject(new Error("no such compatible video player")); } + currentTime() { return Promise.reject(new Error("no such compatible video player")); } + setVolume(volume) { return Promise.reject(new Error("no such compatible video player")); } + volume() { return Promise.reject(new Error("no such compatible video player")); } + setPlaybackRate(rate) { return Promise.reject(new Error("no such compatible video player")); } + playbackRate() { return Promise.reject(new Error("no such compatible video player")); } + unload() { return Promise.reject(new Error("no such compatible video player")); } + + getQualities() { + return Promise.resolve([ + { + index: 0, + res: { w: 0, h: 1 }, + src: "", + toString: function() { return ""; }, + shortLabel: function() { return ""; }, + compare: function() { return 0; } + } + ]); + } + + getCurrentQuality() { return Promise.resolve(0); } + defaultProfile() { return null; } + + supportAutoplay() { return false;} + }; + + paella.AudioElementBase = AudioElementBase; + paella.audioFactories = {}; + + class AudioFactory { + isStreamCompatible(streamData) { + return false; + } + + getAudioObject(id,streamData) { + return null; + } + } + + paella.AudioFactory = AudioFactory; + + paella.audioFactory = { + _factoryList:[], + + initFactories:function() { + if (paella.audioFactories) { + var This = this; + paella.player.config.player.audioMethods = paella.player.config.player.audioMethods || { + + }; + paella.player.config.player.audioMethods.forEach(function(method) { + if (method.enabled) { + This.registerFactory(new paella.audioFactories[method.factory]()); + } + }); + } + }, + + getAudioObject:function(id, streamData) { + if (this._factoryList.length==0) { + this.initFactories(); + } + var selectedFactory = null; + if (this._factoryList.some(function(factory) { + if (factory.isStreamCompatible(streamData)) { + selectedFactory = factory; + return true; + } + })) { + return selectedFactory.getAudioObject(id, streamData); + } + return null; + }, + + registerFactory:function(factory) { + this._factoryList.push(factory); + } + }; + +})(); + +(function() { + +function checkReady(cb) { + let This = this; + return new Promise((resolve,reject) => { + if (This._ready) { + resolve(typeof(cb)=='function' ? cb():true); + } + else { + function doCheck() { + if (This.audio.readyState>=This.audio.HAVE_CURRENT_DATA) { + This._ready = true; + resolve(typeof(cb)=='function' ? cb():true); + } + else { + setTimeout(doCheck,50); + } + } + doCheck(); + } + }); +} + +class MultiformatAudioElement extends paella.AudioElementBase { + constructor(id,stream) { + super(id,stream); + this._streamName = "audio"; + + this._audio = document.createElement('audio'); + this.domElement.appendChild(this._audio); + } + + get audio() { return this._audio; } + + get currentTimeSync() { + return this.ready ? this.audio.currentTimeSync : null; + } + + get volumeSync() { + return this.ready ? this.audio.volumeSync : null; + } + + get pausedSync() { + return this.ready ? this.audio.pausedSync : null; + } + + get durationSync() { + return this.ready ? this.audio.durationSync : null; + } + + setAutoplay(ap) { + this.audio.autoplay = ap; + } + + load() { + var This = this; + var sources = this._stream.sources[this._streamName]; + var stream = sources.length>0 ? sources[0]:null; + this.audio.innerText = ""; + if (stream) { + var sourceElem = this.audio.querySelector('source'); + if (!sourceElem) { + sourceElem = document.createElement('source'); + this.audio.appendChild(sourceElem); + } + + sourceElem.src = stream.src; + if (stream.type) sourceElem.type = stream.type; + this.audio.load(); + + return checkReady.apply(this, [function() { + return stream; + }]); + } + else { + return Promise.reject(new Error("Could not load video: invalid quality stream index")); + } + } + + play() { + return checkReady.apply(this, [() => { + this.audio.play(); + }]); + } + + pause() { + return checkReady.apply(this, [() => { + this.audio.pause(); + }]); + } + + isPaused() { + return checkReady.apply(this,[() => { + return this.audio.paused; + }]); + } + + duration() { + return checkReady.apply(this,[() => { + return this.audio.duration; + }]); + } + + setCurrentTime(time) { + return checkReady.apply(this,[() => { + this.audio.currentTime = time; + }]); + } + + currentTime() { + return checkReady.apply(this,[() => { + return this.audio.currentTime; + }]); + } + + setVolume(volume) { + return checkReady.apply(this,[() => { + return this.audio.volume = volume; + }]); + } + + volume() { + return checkReady.apply(this,[() => { + return this.audio.volume; + }]); + } + + setPlaybackRate(rate) { + return checkReady.apply(this,[() => { + this.audio.playbackRate = rate; + }]); + } + playbackRate() { + return checkReady.apply(this,[() => { + return this.audio.playbackRate; + }]); + } + + unload() { return Promise.resolve(); } +}; + +paella.MultiformatAudioElement = MultiformatAudioElement; + +class MultiformatAudioFactory { + isStreamCompatible(streamData) { + return true; + } + + getAudioObject(id,streamData) { + return new paella.MultiformatAudioElement(id,streamData); + } +} + +paella.audioFactories.MultiformatAudioFactory = MultiformatAudioFactory; + +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + +paella.Profiles = { + profileList: null, + + getDefaultProfile: function() { + if (paella.player.videoContainer.masterVideo() && paella.player.videoContainer.masterVideo().defaultProfile()) { + return paella.player.videoContainer.masterVideo().defaultProfile(); + } + if (paella.player && paella.player.config && paella.player.config.defaultProfile) { + return paella.player.config.defaultProfile; + } + return undefined; + }, + + loadProfile:function(profileName,onSuccessFunction) { + + var defaultProfile = this.getDefaultProfile(); + this.loadProfileList(function(data){ + var profileData; + if(data[profileName] ){ + // Successful mapping + profileData = data[profileName]; + } else if (data[defaultProfile]) { + // Fallback to default profile + profileData = data[defaultProfile]; + } else { + // Unable to find or map defaultProfile in profiles.json + base.log.debug("Error loading the default profile. Check your Paella Player configuration"); + return false; + } + onSuccessFunction(profileData); + }); + }, + + loadProfileList:function(onSuccessFunction) { + var thisClass = this; + if (this.profileList == null) { + var params = { url: paella.utils.folders.profiles() + "/profiles.json" }; + + base.ajax.get(params,function(data,mimetype,code) { + if (typeof(data)=="string") { + data = JSON.parse(data); + } + thisClass.profileList = data; + onSuccessFunction(thisClass.profileList); + }, + function(data,mimetype,code) { + base.log.debug("Error loading video profiles. Check your Paella Player configuration"); + } + ); + } + else { + onSuccessFunction(thisClass.profileList); + } + } +}; + +class RelativeVideoSize { + get w() { return this._w || 1280; } + set w(v) { this._w = v; } + get h() { return this._h || 720; } + set h(v) { this._h = v; } + + proportionalHeight(newWidth) { + return Math.floor(this.h * newWidth / this.w); + } + + proportionalWidth(newHeight) { + return Math.floor(this.w * newHeight / this.h); + } + + percentVSize(pxSize) { + return pxSize * 100 / this.h; + } + + percentWSize(pxSize) { + return pxSize * 100 / this.w; + } + + aspectRatio() { + return this.w/this.h; + } +} + +paella.RelativeVideoSize = RelativeVideoSize; + + + +class VideoRect extends paella.DomNode { + + constructor(id, domType, left, top, width, height) { + super(domType,id,{}); + + let zoomSettings = paella.player.config.player.videoZoom || {}; + let zoomEnabled = (zoomSettings.enabled!==undefined ? zoomSettings.enabled : true) && this.allowZoom(); + this.style = zoomEnabled ? {width:this._zoom + '%',height:"100%",position:'absolute'} : { width:"100%", height:"100%" }; + this._rect = null; + + let eventCapture = document.createElement('div'); + setTimeout(() => this.domElement.parentElement.appendChild(eventCapture), 10); + + eventCapture.id = id + "EventCapture"; + eventCapture.style.position = "absolute"; + eventCapture.style.top = "0px"; + eventCapture.style.left = "0px"; + eventCapture.style.right = "0px"; + eventCapture.style.bottom = "0px"; + this.eventCapture = eventCapture; + + if (zoomEnabled) { + this._zoomAvailable = true; + function checkZoomAvailable() { + let minWindowSize = (paella.player.config.player && + paella.player.config.player.videoZoom && + paella.player.config.player.videoZoom.minWindowSize) || 500; + + let available = $(window).width()>=minWindowSize; + if (this._zoomAvailable!=available) { + this._zoomAvailable = available; + paella.events.trigger(paella.events.zoomAvailabilityChanged, { available:available }); + } + } + checkZoomAvailable.apply(this); + + $(window).resize(() => { + checkZoomAvailable.apply(this); + }); + + this._zoom = 100; + this._mouseCenter = { x:0, y:0 }; + this._mouseDown = { x:0, y:0 }; + this._zoomOffset = { x:0, y: 0 }; + this._maxZoom = zoomSettings.max || 400; + $(this.domElement).css({ + width: "100%", + height: "100%", + left:"0%", + top: "0%" + }); + + Object.defineProperty(this,'zoom', { + get: function() { return this._zoom; } + }); + + Object.defineProperty(this,'zoomOffset',{ + get: function() { return this._zoomOffset; } + }); + + function mousePos(evt) { + return { + x:evt.originalEvent.offsetX, + y:evt.originalEvent.offsetY + }; + } + + function wheelDelta(evt) { + let wheel = evt.originalEvent.deltaY * (paella.utils.userAgent.Firefox ? 2:1); + let maxWheel = 6; + return -Math.abs(wheel) < maxWheel ? wheel : maxWheel * Math.sign(wheel); + } + + function touchesLength(p0,p1) { + return Math.sqrt( + (p1.x - p0.x) * (p1.x - p0.x) + + (p1.y - p0.y) * (p1.y - p0.y) + ); + } + + function centerPoint(p0,p1) { + return { + x:(p1.x - p0.x) / 2 + p0.x, + y:(p1.y - p0.y) / 2 + p0.y + } + } + + function panImage(o) { + let center = { + x: this._mouseCenter.x - o.x * 1.1, + y: this._mouseCenter.y - o.y * 1.1 + }; + let videoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + let maxOffset = this._zoom - 100; + let offset = { + x: (center.x * maxOffset / videoSize.w) * (maxOffset / 100), + y: (center.y * maxOffset / videoSize.h) * (maxOffset / 100) + }; + + if (offset.x>maxOffset) { + offset.x = maxOffset; + } + else if (offset.x<0) { + offset.x = 0; + } + else { + this._mouseCenter.x = center.x; + } + if (offset.y>maxOffset) { + offset.y = maxOffset; + } + else if (offset.y<0) { + offset.y = 0; + } + else { + this._mouseCenter.y = center.y; + } + $(this.domElement).css({ + left:"-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + } + + let touches = []; + $(eventCapture).on('touchstart', (evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + touches = []; + let videoOffset = $(this.domElement).offset(); + for (let i=0; i<evt.originalEvent.targetTouches.length; ++i) { + let touch = evt.originalEvent.targetTouches[i]; + touches.push({ + x: touch.screenX - videoOffset.left, + y: touch.screenY - videoOffset.top + }); + } + if (touches.length>1) evt.preventDefault(); + }); + + $(eventCapture).on('touchmove', (evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + let curTouches = []; + let videoOffset = $(this.domElement).offset(); + for (let i=0; i<evt.originalEvent.targetTouches.length; ++i) { + let touch = evt.originalEvent.targetTouches[i]; + curTouches.push({ + x: touch.screenX - videoOffset.left, + y: touch.screenY - videoOffset.top + }); + } + if (curTouches.length>1 && touches.length>1) { + let l0 = touchesLength(touches[0],touches[1]); + let l1 = touchesLength(curTouches[0],curTouches[1]); + let delta = l1 - l0; + let center = centerPoint(touches[0],touches[1]); + this._mouseCenter = center; + + this._zoom += delta; + this._zoom = this._zoom < 100 ? 100 : this._zoom; + this._zoom = this._zoom > this._maxZoom ? this._maxZoom : this._zoom; + let newVideoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + let mouse = this._mouseCenter; + $(this.domElement).css({ + width:this._zoom + '%', + height:this._zoom + '%' + }); + + let maxOffset = this._zoom - 100; + let offset = { + x: (mouse.x * maxOffset / newVideoSize.w), + y: (mouse.y * maxOffset / newVideoSize.h) + }; + + offset.x = offset.x<maxOffset ? offset.x : maxOffset; + offset.y = offset.y<maxOffset ? offset.y : maxOffset; + + $(this.domElement).css({ + left:"-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + touches = curTouches; + evt.preventDefault(); + } + else if (curTouches.length>0) { + let desp = { + x: curTouches[0].x - touches[0].x, + y: curTouches[0].y - touches[0].y, + } + + panImage.apply(this,[desp]); + touches = curTouches; + + evt.preventDefault(); + } + }); + + $(eventCapture).on('touchend', (evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + if (touches.length>1) evt.preventDefault(); + }); + + this.zoomIn = () => { + if (this._zoom>=this._maxZoom || !this._zoomAvailable) return; + if (!this._mouseCenter) { + this._mouseCenter = { + x: $(this.domElement).width() / 2, + y: $(this.domElement).height() / 2 + } + } + this._zoom += 25; + this._zoom = this._zoom < 100 ? 100 : this._zoom; + this._zoom = this._zoom > this._maxZoom ? this._maxZoom : this._zoom; + let newVideoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + let mouse = this._mouseCenter; + $(this.domElement).css({ + width:this._zoom + '%', + height:this._zoom + '%' + }); + + let maxOffset = this._zoom - 100; + let offset = { + x: (mouse.x * maxOffset / newVideoSize.w) * (maxOffset / 100), + y: (mouse.y * maxOffset / newVideoSize.h) * (maxOffset / 100) + }; + + offset.x = offset.x<maxOffset ? offset.x : maxOffset; + offset.y = offset.y<maxOffset ? offset.y : maxOffset; + + $(this.domElement).css({ + left:"-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + } + + this.zoomOut = () => { + if (this._zoom<=100 || !this._zoomAvailable) return; + if (!this._mouseCenter) { + this._mouseCenter = { + x: $(this.domElement).width() / 2, + y: $(this.domElement).height() / 2 + } + } + this._zoom -= 25; + this._zoom = this._zoom < 100 ? 100 : this._zoom; + this._zoom = this._zoom > this._maxZoom ? this._maxZoom : this._zoom; + let newVideoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + let mouse = this._mouseCenter; + $(this.domElement).css({ + width:this._zoom + '%', + height:this._zoom + '%' + }); + + let maxOffset = this._zoom - 100; + let offset = { + x: (mouse.x * maxOffset / newVideoSize.w) * (maxOffset / 100), + y: (mouse.y * maxOffset / newVideoSize.h) * (maxOffset / 100) + }; + + offset.x = offset.x<maxOffset ? offset.x : maxOffset; + offset.y = offset.y<maxOffset ? offset.y : maxOffset; + + $(this.domElement).css({ + left:"-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + } + + let altScrollMessageContainer = document.createElement('div'); + altScrollMessageContainer.className = "alt-scroll-message-container"; + altScrollMessageContainer.innerHTML = "<p>" + paella.dictionary.translate("Use Alt+Scroll to zoom the video") + "</p>"; + eventCapture.appendChild(altScrollMessageContainer); + $(altScrollMessageContainer).css({ opacity: 0.0 }); + let altScrollMessageTimer = null; + function clearAltScrollMessage(animate = true) { + animate ? + $(altScrollMessageContainer).animate({ opacity: 0.0 }) : + $(altScrollMessageContainer).css({ opacity: 0.0 }); + } + function showAltScrollMessage() { + if (altScrollMessageTimer) { + clearTimeout(altScrollMessageTimer); + altScrollMessageTimer = null; + } + else { + $(altScrollMessageContainer).css({ opacity: 1.0 }); + } + altScrollMessageTimer = setTimeout(() => { + clearAltScrollMessage(); + altScrollMessageTimer = null; + }, 500); + } + + $(eventCapture).on('mousewheel wheel',(evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + if (!evt.altKey) { + showAltScrollMessage(); + return; + } + else { + clearAltScrollMessage(false); + if (altScrollMessageTimer) { + clearTimeout(altScrollMessageTimer); + altScrollMessageTimer = null; + } + } + let mouse = mousePos(evt); + let wheel = wheelDelta(evt); + if (this._zoom>=this._maxZoom && wheel>0) return; + this._zoom += wheel; + this._zoom = this._zoom < 100 ? 100 : this._zoom; + this._zoom = this._zoom > this._maxZoom ? this._maxZoom : this._zoom; + let newVideoSize = { + w: $(this.domElement).width(), + h: $(this.domElement).height() + }; + $(this.domElement).css({ + width:this._zoom + '%', + height:this._zoom + '%' + }); + + let maxOffset = this._zoom - 100; + let offset = { + x: (mouse.x * maxOffset / newVideoSize.w) * (maxOffset / 100), + y: (mouse.y * maxOffset / newVideoSize.h) * (maxOffset / 100) + }; + + offset.x = offset.x<maxOffset ? offset.x : maxOffset; + offset.y = offset.y<maxOffset ? offset.y : maxOffset; + + $(this.domElement).css({ + left:"-" + offset.x + "%", + top: "-" + offset.y + "%" + }); + + this._zoomOffset = { + x: offset.x, + y: offset.y + }; + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + + this._mouseCenter = mouse; + evt.stopPropagation(); + return false; + }); + + $(eventCapture).on('mousedown',(evt) => { + this._mouseDown = mousePos(evt); + this.drag = true; + }); + + $(eventCapture).on('mousemove',(evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + //this.drag = evt.buttons>0; + if (this.drag) { + paella.player.videoContainer.disablePlayOnClick(); + + let mouse = mousePos(evt); + panImage.apply(this,[{ + x: mouse.x - this._mouseDown.x, + y: mouse.y - this._mouseDown.y + }]); + this._mouseDown = mouse; + } + }); + + $(eventCapture).on('mouseup',(evt) => { + if (!this.allowZoom() || !this._zoomAvailable) return; + this.drag = false; + setTimeout(() => paella.player.videoContainer.enablePlayOnClick(), 10); + }); + + $(eventCapture).on('mouseleave',(evt) => { + this.drag = false; + }); + } + } + + get canvasData() { + let canvasType = this._stream && Array.isArray(this._stream.canvas) && this._stream.canvas[0]; + let canvasData = canvasType && paella.getVideoCanvasData(this._stream.canvas[0]) || { mouseEventsSupport: false, webglSupport: false }; + return canvasData; + } + + allowZoom() { + return !this.canvasData.mouseEventsSupport; + } + + setZoom(zoom,left,top,tween=0) { + if (this.zoomAvailable()) { + this._zoomOffset.x = left; + this._zoomOffset.y = top; + this._zoom = zoom; + + if (tween==0) { + $(this.domElement).css({ + width:this._zoom + '%', + height:this._zoom + '%', + left:"-" + this._zoomOffset.x + "%", + top: "-" + this._zoomOffset.y + "%" + }); + } + else { + $(this.domElement).stop(true,false).animate({ + width:this._zoom + '%', + height:this._zoom + '%', + left:"-" + this._zoomOffset.x + "%", + top: "-" + this._zoomOffset.y + "%" + },tween,"linear"); + } + + paella.events.trigger(paella.events.videoZoomChanged,{ video:this }); + } + } + + captureFrame() { + return Promise.resolve(null); + } + + supportsCaptureFrame() { + return Promise.resolve(false); + } + + // zoomAvailable will only return true if the zoom is enabled, the + // video plugin supports zoom and the current video resolution is higher than + // the current video size + zoomAvailable() { + return this.allowZoom() && this._zoomAvailable; + } + + disableEventCapture() { + this.eventCapture.style.pointerEvents = 'none'; + } + + enableEventCapture() { + this.eventCapture.style.pointerEvents = ''; + } +} + +paella.VideoRect = VideoRect; + +class VideoElementBase extends paella.VideoRect { + + constructor(id,stream,containerType,left,top,width,height) { + super(id, containerType, left, top, width, height); + + this._stream = stream; + + this._ready = false; + this._autoplay = false; + this._videoQualityStrategy = null; + + if (this._stream.preview) this.setPosterFrame(this._stream.preview); + + if (this.canvasData.mouseEventsSupport) { + this.disableEventCapture(); + } + } + + get ready() { return this._ready; } + get stream() { return this._stream; } + + defaultProfile() { + return null; + } + + // Synchronous functions: returns null if the resource is not loaded. Use only if + // the resource is loaded. + get currentTimeSync() { return null; } + get volumeSync() { return null; } + get pausedSync() { return null; } + get durationSync() { return null; } + + // Initialization functions + setVideoQualityStrategy(strategy) { + this._videoQualityStrategy = strategy; + } + + setPosterFrame(url) { + base.log.debug("TODO: implement setPosterFrame() function"); + } + + setAutoplay(autoplay) { + this._autoplay = autoplay; + } + + setMetadata(data) { + this._metadata = data; + } + + load() { + return paella_DeferredNotImplemented(); + } + + supportAutoplay() { + return true; + } + + // Video canvas functions + videoCanvas() { + return Promise.reject(new Error("VideoElementBase::videoCanvas(): Not implemented in child class.")); + } + + // Playback functions + getVideoData() { + return paella_DeferredNotImplemented(); + } + + play() { + base.log.debug("TODO: implement play() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + pause() { + base.log.debug("TODO: implement pause() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + isPaused() { + base.log.debug("TODO: implement isPaused() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + duration() { + base.log.debug("TODO: implement duration() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + setCurrentTime(time) { + base.log.debug("TODO: implement setCurrentTime() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + currentTime() { + base.log.debug("TODO: implement currentTime() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + setVolume(volume) { + base.log.debug("TODO: implement setVolume() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + volume() { + base.log.debug("TODO: implement volume() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + setPlaybackRate(rate) { + base.log.debug("TODO: implement setPlaybackRate() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + playbackRate() { + base.log.debug("TODO: implement playbackRate() function in your VideoElementBase subclass"); + return paella_DeferredNotImplemented(); + } + + getQualities() { + return paella_DeferredNotImplemented(); + } + + setQuality(index) { + return paella_DeferredNotImplemented(); + } + + getCurrentQuality() { + return paella_DeferredNotImplemented(); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); // { width:X, height:Y } + } + + goFullScreen() { + return paella_DeferredNotImplemented(); + } + + freeze(){ + return paella_DeferredNotImplemented(); + } + + unFreeze(){ + return paella_DeferredNotImplemented(); + } + + disable(isMainAudioPlayer) { + console.log("Disable video requested"); + } + + enable(isMainAudioPlayer) { + console.log("Enable video requested"); + } + + // Utility functions + setClassName(className) { + this.domElement.className = className; + } + + _callReadyEvent() { + paella.events.trigger(paella.events.singleVideoReady, { sender:this }); + } + + _callUnloadEvent() { + paella.events.trigger(paella.events.singleVideoUnloaded, { sender:this }); + } +} + +paella.VideoElementBase = VideoElementBase; + +class EmptyVideo extends paella.VideoElementBase { + constructor(id,stream,left,top,width,height) { + super(id,stream,'div',left,top,width,height); + } + + // Initialization functions + setPosterFrame(url) {} + setAutoplay(auto) {} + load() {return paella_DeferredRejected(new Error("no such compatible video player")); } + play() { return paella_DeferredRejected(new Error("no such compatible video player")); } + pause() { return paella_DeferredRejected(new Error("no such compatible video player")); } + isPaused() { return paella_DeferredRejected(new Error("no such compatible video player")); } + duration() { return paella_DeferredRejected(new Error("no such compatible video player")); } + setCurrentTime(time) { return paella_DeferredRejected(new Error("no such compatible video player")); } + currentTime() { return paella_DeferredRejected(new Error("no such compatible video player")); } + setVolume(volume) { return paella_DeferredRejected(new Error("no such compatible video player")); } + volume() { return paella_DeferredRejected(new Error("no such compatible video player")); } + setPlaybackRate(rate) { return paella_DeferredRejected(new Error("no such compatible video player")); } + playbackRate() { return paella_DeferredRejected(new Error("no such compatible video player")); } + unFreeze() { return paella_DeferredRejected(new Error("no such compatible video player")); } + freeze() { return paella_DeferredRejected(new Error("no such compatible video player")); } + unload() { return paella_DeferredRejected(new Error("no such compatible video player")); } + getDimensions() { return paella_DeferredRejected(new Error("no such compatible video player")); } +} + +paella.EmptyVideo = EmptyVideo; + +class EmptyVideoFactory extends paella.VideoFactory { + isStreamCompatible(streamData) { + return true; + } + + getVideoObject(id, streamData, rect) { + return new paella.EmptyVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.EmptyVideoFactory = EmptyVideoFactory; + +class Html5Video extends paella.VideoElementBase { + constructor(id,stream,left,top,width,height,streamName) { + super(id,stream,'video',left,top,width,height); + + this._posterFrame = null; + this._currentQuality = null; + this._autoplay = false; + + this._streamName = streamName || 'mp4'; + this._playbackRate = 1; + + if (this._stream.sources[this._streamName]) { + this._stream.sources[this._streamName].sort(function (a, b) { + return a.res.h - b.res.h; + }); + } + + this.video.preload = "auto"; + this.video.setAttribute("playsinline",""); + this.video.setAttribute("tabindex","-1"); + + this._configureVideoEvents(this.video); + } + + _configureVideoEvents(videoElement) { + function onProgress(event) { + if (!this._ready && this.video.readyState==4) { + this._ready = true; + if (this._initialCurrentTipe!==undefined) { + this.video.currentTime = this._initialCurrentTime; + delete this._initialCurrentTime; + } + this._callReadyEvent(); + } + } + + + let evtCallback = (event) => { onProgress.apply(this,[event]); } + + $(this.video).bind('progress', evtCallback); + $(this.video).bind('loadstart',evtCallback); + $(this.video).bind('loadedmetadata',evtCallback); + $(this.video).bind('canplay',evtCallback); + $(this.video).bind('oncanplay',evtCallback); + + // Save current time to resume video + $(this.video).bind('timeupdate', (evt) => { + this._resumeCurrentTime = this.video.currentTime; + }); + + $(this.video).bind('ended',(evt) => { + paella.events.trigger(paella.events.endVideo); + }); + + $(this.video).bind('emptied', (evt) => { + if (this._resumeCurrentTime && !isNaN(this._resumeCurrentTime)) { + this.video.currentTime = this._resumeCurrentTime; + } + }); + + // Fix safari setQuelity bug + if (paella.utils.userAgent.browser.Safari) { + $(this.video).bind('canplay canplaythrough', (evt) => { + this._resumeCurrentTime && (this.video.currentTime = this._resumeCurrentTime); + }); + } + } + + get video() { + if (this.domElementType=='video') { + return this.domElement; + } + else { + this._video = this._video || document.createElement('video'); + return this._video; + } + } + + get ready() { + // Fix Firefox specific issue when video reaches the end + if (paella.utils.userAgent.browser.Firefox && + this.video.currentTime==this.video.duration && + this.video.readyState==2) + { + this.video.currentTime = 0; + } + + return this.video.readyState>=3; + } + + // Synchronous functions: returns null if the resource is not loaded. Use only if + // the resource is loaded. + get currentTimeSync() { + return this.ready ? this.video.currentTime : null; + } + + get volumeSync() { + return this.ready ? this.video.volume : null; + } + + get pausedSync() { + return this.ready ? this.video.paused : null; + } + + get durationSync() { + return this.ready ? this.video.duration : null; + } + + _deferredAction(action) { + return new Promise((resolve,reject) => { + function processResult(actionResult) { + if (actionResult instanceof Promise) { + actionResult.then((p) => resolve(p)) + .catch((err) => reject(err)); + } + else { + resolve(actionResult); + } + } + + if (this.ready) { + processResult(action()); + } + else { + $(this.video).bind('canplay',() => { + processResult(action()); + $(this.video).unbind('canplay'); + }); + } + }); + } + + _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString:function() { return this.res.w==0 ? "auto" : this.res.w + "x" + this.res.h; }, + shortLabel:function() { return this.res.w==0 ? "auto" : this.res.h + "p"; }, + compare:function(q2) { return this.res.w*this.res.h - q2.res.w*q2.res.h; } + }; + } + + captureFrame() { + return new Promise((resolve) => { + resolve({ + source:this.video, + width:this.video.videoWidth, + height:this.video.videoHeight + }); + }); + } + + supportsCaptureFrame() { + return Promise.resolve(true); + } + + // Initialization functions + getVideoData() { + var This = this; + return new Promise((resolve,reject) => { + this._deferredAction(() => { + resolve({ + duration: This.video.duration, + currentTime: This.video.currentTime, + volume: This.video.volume, + paused: This.video.paused, + ended: This.video.ended, + res: { + w: This.video.videoWidth, + h: This.video.videoHeight + } + }); + }); + }); + } + + setPosterFrame(url) { + this._posterFrame = url; + } + + setAutoplay(auto) { + this._autoplay = auto; + if (auto && this.video) { + this.video.setAttribute("autoplay",auto); + } + } + + videoCanvas() { + let canvasType = this._stream.canvas || ["video"]; + return paella.getVideoCanvas(canvasType); + } + + webGlDidLoad() { + return Promise.resolve(); + } + + load() { + return new Promise((resolve,reject) => { + var sources = this._stream.sources[this._streamName]; + if (this._currentQuality===null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = this._currentQuality<sources.length ? sources[this._currentQuality]:null; + this.video.innerText = ""; + this.videoCanvas() + .then((CanvasClass) => { + let canvasInstance = new CanvasClass(stream); + this._zoomAvailable = canvasInstance.allowZoom(); + + if (window.$paella_bg && bg.app && canvasInstance instanceof bg.app.WindowController) { + // WebGL canvas + this.domElementType = 'canvas'; + if (stream) { + + // WebGL engine load callback + return new Promise((webglResolve,webglReject) => { + this.webGlDidLoad() + .then(() => { + this.canvasController = null; + let mainLoop = bg.app.MainLoop.singleton; + + mainLoop.updateMode = bg.app.FrameUpdate.AUTO; + mainLoop.canvas = this.domElement; + mainLoop.run(canvasInstance); + return this.loadVideoStream(canvasInstance,stream); + }) + + .then((canvas) => { + webglResolve(canvas); + }) + .catch((err) => webglReject(err)); + }); + } + else { + Promise.reject(new Error("Invalid stream data.")); + } + } + else { + return this.loadVideoStream(canvasInstance,stream); + } + }) + + .then((canvas) => { + if (canvas && paella.WebGLCanvas && canvas instanceof paella.WebGLCanvas) { + this._video = canvas.video; + this._video.pause(); + this._configureVideoEvents(this.video); + } + resolve(stream); + }) + + .catch((err) => { + reject(err); + }); + }); + } + + loadVideoStream(canvasInstance,stream) { + return canvasInstance.loadVideo(this,stream); + } + + disable(isMainAudioPlayer) { + //if (isMainAudioPlayer) return; + //this._isDisabled = true; + //this._playState = !this.video.paused; + //this.video.pause(); + } + + enable(isMainAudioPlayer) { + //if (isMainAudioPlayer) return; + //this._isDisabled = false; + //if (this._playState) { + // this.video.play(); + //} + } + + getQualities() { + return new Promise((resolve,reject) => { + setTimeout(() => { + var result = []; + var sources = this._stream.sources[this._streamName]; + var index = -1; + sources.forEach((s) => { + index++; + result.push(this._getQualityObject(index,s)); + }); + resolve(result); + },10); + }); + } + + setQuality(index) { + return new Promise((resolve) => { + var paused = this.video.paused; + var sources = this._stream.sources[this._streamName]; + this._currentQuality = index<sources.length ? index:0; + var currentTime = this.video.currentTime; + + let This = this; + let onSeek = function() { + This.unFreeze().then(() => { + resolve(); + This.video.removeEventListener('seeked',onSeek,false); + }); + }; + + this.freeze() + .then(() => { + return this.load(); + }) + + .then(() => { + if (!paused) { + this.play(); + } + this.video.addEventListener('seeked',onSeek); + this.video.currentTime = currentTime; + }); + }); + } + + getCurrentQuality() { + return new Promise((resolve) => { + resolve(this._getQualityObject(this._currentQuality,this._stream.sources[this._streamName][this._currentQuality])); + }); + } + + play() { + return this._deferredAction(() => { + if (!this._isDisabled) { + return this.video.play(); + } + else { + return Promise.resolve(); + } + }); + } + + pause() { + return this._deferredAction(() => { + if (!this._isDisabled) { + return this.video.pause(); + } + else { + return Promise.resolve(); + } + }); + } + + isPaused() { + return this._deferredAction(() => { + return this.video.paused; + }); + } + + duration() { + return this._deferredAction(() => { + return this.video.duration; + }); + } + + setCurrentTime(time) { + return this._deferredAction(() => { + (time == 0 || time) && !isNaN(time) && (this.video.currentTime = time); + }); + } + + currentTime() { + return this._deferredAction(() => { + return this.video.currentTime; + }); + } + + setVolume(volume) { + return this._deferredAction(() => { + this.video.volume = volume; + if (volume==0) { + this.video.setAttribute("muted","muted"); + this.video.muted = true; + } + else { + this.video.removeAttribute("muted"); + this.video.muted = false; + } + }); + } + + volume() { + return this._deferredAction(() => { + return this.video.volume; + }); + } + + setPlaybackRate(rate) { + return this._deferredAction(() => { + this._playbackRate = rate; + this.video.playbackRate = rate; + }); + } + + playbackRate() { + return this._deferredAction(() => { + return this.video.playbackRate; + }); + } + + supportAutoplay() { + let macOS10_12_safari = paella.utils.userAgent.system.MacOS && + paella.utils.userAgent.system.Version.minor>=12 && + paella.utils.userAgent.browser.Safari; + let iOS = paella.utils.userAgent.system.iOS; + // Autoplay does not work from Chrome version 64 + let chrome_v64 = paella.utils.userAgent.browser.Chrome && + paella.utils.userAgent.browser.Version.major==64; + if (macOS10_12_safari || iOS || chrome_v64) + { + return false; + } + else { + return true; + } + } + + goFullScreen() { + return this._deferredAction(() => { + var elem = this.video; + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } + else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } + else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } + else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + + unFreeze(){ + return this._deferredAction(() => { + var c = document.getElementById(this.video.id + "canvas"); + if (c) { + $(c).remove(); + } + }); + } + + freeze(){ + var This = this; + return this._deferredAction(function() { + var canvas = document.createElement("canvas"); + canvas.id = This.video.id + "canvas"; + canvas.className = "freezeFrame"; + canvas.width = This.video.videoWidth; + canvas.height = This.video.videoHeight; + canvas.style.cssText = This.video.style.cssText; + canvas.style.zIndex = 2; + + var ctx = canvas.getContext("2d"); + ctx.drawImage(This.video, 0, 0, Math.ceil(canvas.width/16)*16, Math.ceil(canvas.height/16)*16);//Draw image + This.video.parentElement.appendChild(canvas); + }); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); + } +} + +paella.Html5Video = Html5Video; + +paella.Html5Video.IsAutoplaySupported = function(debug = false) { + return new Promise((resolve) => { + // Create video element to test autoplay + var video = document.createElement('video'); + video.src = 'data:video/mp4;base64,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'; + video.load(); + //video.style.display = 'none'; + if (debug) { + video.style = "position: fixed; top: 0px; right: 0px; z-index: 1000000;"; + document.body.appendChild(video); + } + else { + video.style.display = 'none'; + } + video.playing = false; + video.play().then((status) => { + resolve(true); + }) + .catch((err) => { + resolve(false) + }) + }) +} + +class Html5VideoFactory { + isStreamCompatible(streamData) { + try { + if (paella.videoFactories.Html5VideoFactory.s_instances>0 && + base.userAgent.system.iOS && + (paella.utils.userAgent.system.Version.major<=10 && paella.utils.userAgent.system.Version.minor<3)) + { + return false; + } + + for (var key in streamData.sources) { + if (key=='mp4' || key=='mp3') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.Html5Video(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.Html5VideoFactory = Html5VideoFactory; +paella.videoFactories.Html5VideoFactory.s_instances = 0; + + +class ImageVideo extends paella.VideoElementBase { + + constructor(id,stream,left,top,width,height) { + super(id,stream,'img',left,top,width,height); + + this._posterFrame = null; + this._currentQuality = null; + this._currentTime = 0; + this._duration = 0; + this._ended = false; + this._playTimer = null; + this._playbackRate = 1; + + this._frameArray = null; + + this._stream.sources.image.sort(function(a,b) { + return a.res.h - b.res.h; + }); + } + + get img() { return this.domElement; } + + get imgStream() { this._stream.sources.image[this._currentQuality]; } + + get _paused() { return this._playTimer==null; } + + _deferredAction(action) { + return new Promise((resolve) => { + if (this.ready) { + resolve(action()); + } + else { + var resolve = () => { + this._ready = true; + resolve(action()); + }; + $(this.video).bind('paella:imagevideoready', resolve); + } + }); + } + + _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString:function() { return Number(this.res.w) + "x" + Number(this.res.h); }, + shortLabel:function() { return this.res.h + "p"; }, + compare:function(q2) { return Number(this.res.w)*Number(this.res.h) - Number(q2.res.w)*Number(q2.res.h); } + }; + } + + _loadCurrentFrame() { + var This = this; + if (this._frameArray) { + var frame = this._frameArray[0]; + this._frameArray.some(function(f) { + if (This._currentTime<f.time) { + return true; + } + else { + frame = f.src; + } + }); + this.img.src = frame; + } + } + + // Initialization functions + + /*allowZoom:function() { + return false; + },*/ + + getVideoData() { + return new Promise((resolve) => { + this._deferredAction(() => { + let imgStream = this._stream.sources.image[this._currentQuality]; + var videoData = { + duration: this._duration, + currentTime: this._currentTime, + volume: 0, + paused: this._paused, + ended: this._ended, + res: { + w: imgStream.res.w, + h: imgStream.res.h + } + }; + resolve(videoData); + }); + }); + } + + setPosterFrame(url) { + this._posterFrame = url; + } + + setAutoplay(auto) { + this._autoplay = auto; + if (auto && this.video) { + this.video.setAttribute("autoplay",auto); + } + } + + load() { + var This = this; + var sources = this._stream.sources.image; + if (this._currentQuality===null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = this._currentQuality<sources.length ? sources[this._currentQuality]:null; + if (stream) { + this._frameArray = []; + for (var key in stream.frames) { + var time = Math.floor(Number(key.replace("frame_",""))); + this._frameArray.push({ src:stream.frames[key], time:time }); + } + this._frameArray.sort(function(a,b) { + return a.time - b.time; + }); + this._ready = true; + this._currentTime = 0; + this._duration = stream.duration; + this._loadCurrentFrame(); + paella.events.trigger("paella:imagevideoready"); + return this._deferredAction(function() { + return stream; + }); + } + else { + return paella_DeferredRejected(new Error("Could not load video: invalid quality stream index")); + } + } + + supportAutoplay() { + return true; + } + + getQualities() { + return new Promise((resolve) => { + setTimeout(() => { + var result = []; + var sources = this._stream.sources[this._streamName]; + var index = -1; + sources.forEach((s) => { + index++; + result.push(this._getQualityObject(index,s)); + }); + resolve(result); + },10); + }); + } + + setQuality(index) { + return new Promise((resolve) => { + let paused = this._paused; + let sources = this._stream.sources.image; + this._currentQuality = index<sources.length ? index:0; + var currentTime = this._currentTime; + this.load() + .then(function() { + this._loadCurrentFrame(); + resolve(); + }); + }); + } + + getCurrentQuality() { + return new Promise((resolve) => { + resolve(this._getQualityObject(this._currentQuality,this._stream.sources.image[this._currentQuality])); + }); + } + + play() { + let This = this; + return this._deferredAction(() => { + This._playTimer = new base.Timer(function() { + This._currentTime += 0.25 * This._playbackRate; + This._loadCurrentFrame(); + }, 250); + This._playTimer.repeat = true; + }); + } + + pause() { + let This = this; + return this._deferredAction(() => { + This._playTimer.repeat = false; + This._playTimer = null; + }); + } + + isPaused() { + return this._deferredAction(() => { + return this._paused; + }); + } + + duration() { + return this._deferredAction(() => { + return this._duration; + }); + } + + setCurrentTime(time) { + return this._deferredAction(() => { + this._currentTime = time; + this._loadCurrentFrame(); + }); + } + + currentTime() { + return this._deferredAction(() => { + return this._currentTime; + }); + } + + setVolume(volume) { + return this._deferredAction(function() { + // No audo sources in image video + }); + } + + volume() { + return this._deferredAction(function() { + // No audo sources in image video + return 0; + }); + } + + setPlaybackRate(rate) { + return this._deferredAction(() => { + this._playbackRate = rate; + }); + } + + playbackRate() { + return this._deferredAction(() => { + return this._playbackRate; + }); + } + + goFullScreen() { + return this._deferredAction(() => { + var elem = this.img; + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } + else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } + else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } + else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + + unFreeze(){ + return this._deferredAction(function() {}); + } + + freeze(){ + return this._deferredAction(function() {}); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); + } +} + +paella.ImageVideo = ImageVideo; + + +class ImageVideoFactory { + isStreamCompatible(streamData) { + try { + for (var key in streamData.sources) { + if (key=='image') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + return new paella.ImageVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.ImageVideoFactory = ImageVideoFactory; + +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + +class BackgroundContainer extends paella.DomNode { + constructor(id,image) { + super('img',id,{position:'relative',top:'0px',left:'0px',right:'0px',bottom:'0px',zIndex:GlobalParams.background.zIndex}); + this.domElement.setAttribute('src',image); + this.domElement.setAttribute('alt',''); + this.domElement.setAttribute('width','100%'); + this.domElement.setAttribute('height','100%'); + } + + setImage(image) { + this.domElement.setAttribute('src',image); + } +} + +paella.BackgroundContainer = BackgroundContainer; + +class VideoOverlay extends paella.DomNode { + get size() { + if (!this._size) { + this._size = {w:1280,h:720}; + } + return this._size; + } + + constructor() { + var style = {position:'absolute',left:'0px',right:'0px',top:'0px',bottom:'0px',overflow:'hidden',zIndex:10}; + super('div','overlayContainer',style); + this.domElement.setAttribute("role", "main"); + } + + _generateId() { + return Math.ceil(Date.now() * Math.random()); + } + + enableBackgroundMode() { + this.domElement.className = 'overlayContainer background'; + } + + disableBackgroundMode() { + this.domElement.className = 'overlayContainer'; + } + + clear() { + this.domElement.innerText = ""; + } + + getVideoRect(index) { + return paella.player.videoContainer.getVideoRect(index); + } + + addText(text,rect,isDebug) { + var textElem = document.createElement('div'); + textElem.innerText = text; + textElem.className = "videoOverlayText"; + if (isDebug) textElem.style.backgroundColor = "red"; + return this.addElement(textElem,rect); + } + + addElement(element,rect) { + this.domElement.appendChild(element); + element.style.position = 'absolute'; + element.style.left = this.getHSize(rect.left) + '%'; + element.style.top = this.getVSize(rect.top) + '%'; + element.style.width = this.getHSize(rect.width) + '%'; + element.style.height = this.getVSize(rect.height) + '%'; + return element; + } + + getLayer(id,zindex) { + id = id || this._generateId(); + return $(this.domElement).find("#" + id)[0] || this.addLayer(id,zindex); + } + + addLayer(id,zindex) { + zindex = zindex || 10; + var element = document.createElement('div'); + element.className = "row"; + element.id = id || this._generateId(); + return this.addElement(element,{ left:0, top: 0, width:1280, height:720 }); + } + + removeLayer(id) { + var elem = $(this.domElement).find("#" + id)[0]; + if (elem) { + this.domElement.removeChild(elem); + } + } + + removeElement(element) { + if (element) { + try { + this.domElement.removeChild(element); + } + catch (e) { + + } + } + } + + getVSize(px) { + return px*100/this.size.h; + } + + getHSize(px) { + return px*100/this.size.w; + } +} + +paella.VideoOverlay = VideoOverlay; + +class VideoWrapper extends paella.DomNode { + constructor(id, left, top, width, height) { + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(top) + '%'; + var percentLeft = relativeSize.percentWSize(left) + '%'; + var percentWidth = relativeSize.percentWSize(width) + '%'; + var percentHeight = relativeSize.percentVSize(height) + '%'; + var style = { + top: percentTop, + left: percentLeft, + width: percentWidth, + height: percentHeight, + position: 'absolute', + zIndex: GlobalParams.video.zIndex, + overflow: 'hidden' + }; + super('div',id,style); + this._rect = { left:left, top:top, width:width, height:height }; + this.domElement.className = "videoWrapper"; + } + + setRect(rect,animate) { + this._rect = JSON.parse(JSON.stringify(rect)); + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(rect.top) + '%'; + var percentLeft = relativeSize.percentWSize(rect.left) + '%'; + var percentWidth = relativeSize.percentWSize(rect.width) + '%'; + var percentHeight = relativeSize.percentVSize(rect.height) + '%'; + var style = {top:percentTop,left:percentLeft,width:percentWidth,height:percentHeight,position:'absolute'}; + if (animate) { + this.disableClassName(); + var thisClass = this; + + $(this.domElement).animate(style,400,function(){ + thisClass.enableClassName(); + paella.events.trigger(paella.events.setComposition, { video:thisClass }); + }); + this.enableClassNameAfter(400); + } + else { + $(this.domElement).css(style); + paella.events.trigger(paella.events.setComposition, { video:this }); + } + } + + getRect() { + return this._rect; + } + + disableClassName() { + this.classNameBackup = this.domElement.className; + this.domElement.className = ""; + } + + enableClassName() { + this.domElement.className = this.classNameBackup; + } + + enableClassNameAfter(millis) { + setTimeout("$('#" + this.domElement.id + "')[0].className = '" + this.classNameBackup + "'",millis); + } + + setVisible(visible,animate) { + if (typeof(visible=="string")) { + visible = /true/i.test(visible) ? true : false; + } + if (visible && animate) { + $(this.domElement).show(); + $(this.domElement).animate({opacity:1.0},300); + } + else if (visible && !animate) { + $(this.domElement).show(); + } + else if (!visible && animate) { + $(this.domElement).animate({opacity:0.0},300); + } + else if (!visible && !animate) { + $(this.domElement).hide(); + } + } + + setLayer(layer) { + this.domElement.style.zIndex = layer; + } +} + +paella.VideoWrapper = VideoWrapper; + +paella.SeekType = { + FULL: 1, + BACKWARDS_ONLY: 2, + FORWARD_ONLY: 3, + DISABLED: 4 +}; + +class VideoContainerBase extends paella.DomNode { + + constructor(id) { + var style = {position:'absolute',left:'0px',right:'0px',top:'0px',bottom:'0px',overflow:'hidden'}; + super('div',id,style); + + this._trimming = {enabled:false,start:0,end:0}; + this.timeupdateEventTimer = null; + this.timeupdateInterval = 250; + this.masterVideoData = null; + this.slaveVideoData = null; + this.currentMasterVideoData = null; + this.currentSlaveVideoData = null; + this._force = false; + this._playOnClickEnabled = true; + this._seekDisabled = false; + this._seekType = paella.SeekType.FULL; + this._seekTimeLimit = 0; + this._attenuationEnabled = false; + + $(this.domElement).click((evt) => { + if (this.firstClick && base.userAgent.browser.IsMobileVersion) return; + if (this.firstClick && !this._playOnClickEnabled) return; + paella.player.videoContainer.paused() + .then((paused) => { + // If some player needs mouse events support, the click is ignored + if (this.firstClick && this.streamProvider.videoPlayers.some((p) => p.canvasData.mouseEventsSupport)) { + return; + } + + this.firstClick = true; + if (paused) { + paella.player.play(); + } + else { + paella.player.pause(); + } + }); + }); + + this.domElement.addEventListener("touchstart",(event) => { + if (paella.player.controls) { + paella.player.controls.restartHideTimer(); + } + }); + + let endedTimer = null; + paella.events.bind(paella.events.endVideo,(event) => { + if (endedTimer) { + clearTimeout(endedTimer); + endedTimer = null; + } + endedTimer = setTimeout(() => { + paella.events.trigger(paella.events.ended); + }, 1000); + }); + } + + set attenuationEnabled(att) { + this._attenuationEnabled = att; + + Array.from(paella.player.videoContainer.container.domElement.children).forEach((ch) => { + if (ch.id == "overlayContainer") { + return; + } + if (att) { + $(ch).addClass("dimmed-element"); + } + else { + $(ch).removeClass("dimmed-element"); + } + }); + } + + get attenuationEnabled() { + return this._attenuationEnabled; + } + + set seekType(type) { + switch (type) { + case paella.SeekType.FULL: + case paella.SeekType.BACKWARDS_ONLY: + case paella.SeekType.FORWARD_ONLY: + case paella.SeekType.DISABLED: + this._seekType = type; + paella.events.trigger(paella.events.seekAvailabilityChanged, { + type: type, + enabled: type==paella.SeekType.FULL, + disabled: type!=paella.SeekType.FULL + }); + break; + default: + throw new Error(`Invalid seekType. Allowed seek types: + paella.SeekType.FULL + paella.SeekType.BACKWARDS_ONLY + paella.SeekType.FORWARD_ONLY + paella.SeekType.DISABLED`); + } + } + + get seekType() { return this._seekType; } + + triggerTimeupdate() { + var paused = 0; + var duration = 0; + this.paused() + .then((p) => { + paused = p; + return this.duration(); + }) + + .then((d) => { + duration = d; + return this.currentTime(); + }) + + .then((currentTime) => { + if (!paused || this._force) { + this._seekTimeLimit = currentTime>this._seekTimeLimit ? currentTime:this._seekTimeLimit; + this._force = false; + paella.events.trigger(paella.events.timeupdate, { + videoContainer: this, + currentTime: currentTime, + duration: duration + }); + } + }); + } + + startTimeupdate() { + this.timeupdateEventTimer = new Timer((timer) => { + this.triggerTimeupdate(); + }, this.timeupdateInterval); + this.timeupdateEventTimer.repeat = true; + } + + stopTimeupdate() { + if (this.timeupdateEventTimer) { + this.timeupdateEventTimer.repeat = false; + } + this.timeupdateEventTimer = null; + } + + enablePlayOnClick() { + this._playOnClickEnabled = true; + } + + disablePlayOnClick() { + this._playOnClickEnabled = false; + } + + isPlayOnClickEnabled() { + return this._playOnClickEnabled; + } + + play() { + this.streamProvider.startVideoSync(this.audioPlayer); + this.startTimeupdate(); + setTimeout(() => paella.events.trigger(paella.events.play), 50) + } + + pause() { + paella.events.trigger(paella.events.pause); + this.stopTimeupdate(); + this.streamProvider.stopVideoSync(); + } + + seekTo(newPositionPercent) { + return new Promise((resolve, reject) => { + let time = 0; + paella.player.videoContainer.currentTime() + .then((t) => { + time = t; + return paella.player.videoContainer.duration() + }) + + .then((duration) => { + if (this._seekTimeLimit>0 && this._seekType==paella.SeekType.BACKWARDS_ONLY) { + time = this._seekTimeLimit; + } + let currentPercent = time / duration * 100; + switch (this._seekType) { + case paella.SeekType.FULL: + break; + case paella.SeekType.BACKWARDS_ONLY: + if (newPositionPercent>currentPercent) { + reject(new Error("Warning: Seek is disabled")); + return; + } + break; + case paella.SeekType.FORWARD_ONLY: + if (newPositionPercent<currentPercent) { + reject(new Error("Warning: Seek is disabled")); + return; + } + break; + case paella.SeekType.DISABLED: + reject(new Error("Warning: Seek is disabled")); + return; + } + + this.setCurrentPercent(newPositionPercent) + .then((timeData) => { + this._force = true; + this.triggerTimeupdate(); + paella.events.trigger(paella.events.seekToTime,{ newPosition:timeData.time }); + paella.events.trigger(paella.events.seekTo,{ newPositionPercent:newPositionPercent }); + resolve(); + }); + }) + }); + } + + seekToTime(time) { + return new Promise((resolve, reject) => { + paella.player.videoContainer.currentTime() + .then((currentTime) => { + if (this._seekTimeLimit && this._seekType==paella.SeekType.BACKWARDS_ONLY) { + currentTime = this._seekTimeLimit; + } + switch (this._seekType) { + case paella.SeekType.FULL: + break; + case paella.SeekType.BACKWARDS_ONLY: + if (time>currentTime) { + reject(new Error("Warning: Seek is disabled")); + return; + } + break; + case paella.SeekType.FORWARD_ONLY: + if (time<currentTime) { + reject(new Error("Warning: Seek is disabled")); + return; + } + break; + case paella.SeekType.DISABLED: + reject(new Error("Warning: Seek is disabled")); + return; + } + + this.setCurrentTime(time) + .then((timeData) => { + this._force = true; + this.triggerTimeupdate(); + let percent = timeData.time * 100 / timeData.duration; + paella.events.trigger(paella.events.seekToTime,{ newPosition:timeData.time }); + paella.events.trigger(paella.events.seekTo,{ newPositionPercent:percent }); + }); + }); + }); + } + + setPlaybackRate(params) { + paella.events.trigger(paella.events.setPlaybackRate, { rate: params }); + } + + mute() { + + } + + unmute() { + + } + + setVolume(params) { + } + + volume() { + return 1; + } + + trimStart() { + return new Promise((resolve) => { + resolve(this._trimming.start); + }); + } + + trimEnd() { + return new Promise((resolve) => { + resolve(this._trimming.end); + }); + } + + trimEnabled() { + return new Promise((resolve) => { + resolve(this._trimming.enabled); + }); + } + + trimming() { + return new Promise((resolve) => { + resolve(this._trimming); + }); + } + + enableTrimming() { + this._trimming.enabled = true; + let cap=paella.captions.getActiveCaptions() + if(cap!==undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions,"list"); + paella.events.trigger(paella.events.setTrim,{trimEnabled:this._trimming.enabled,trimStart:this._trimming.start,trimEnd:this._trimming.end}); + } + + disableTrimming() { + this._trimming.enabled = false; + let cap=paella.captions.getActiveCaptions() + if(cap!==undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions,"list"); + paella.events.trigger(paella.events.setTrim,{trimEnabled:this._trimming.enabled,trimStart:this._trimming.start,trimEnd:this._trimming.end}); + } + + setTrimming(start,end) { + return new Promise((resolve) => { + let currentTime = 0; + + this.currentTime(true) + .then((c) => { + currentTime = c; + return this.duration(); + }) + + .then((duration) => { + this._trimming.start = Math.floor(start); + this._trimming.end = Math.floor(end); + if(this._trimming.enabled){ + if (currentTime<this._trimming.start) { + this.setCurrentTime(0); + } + if (currentTime>this._trimming.end) { + this.setCurrentTime(duration); + } + + let cap=paella.captions.getActiveCaptions(); + if(cap!==undefined) paella.plugins.captionsPlugin.buildBodyContent(cap._captions,"list"); + } + paella.events.trigger(paella.events.setTrim,{trimEnabled:this._trimming.enabled,trimStart:this._trimming.start,trimEnd:this._trimming.end}); + resolve(); + }); + }); + } + + setTrimmingStart(start) { + return this.setTrimming(start,this._trimming.end); + } + + setTrimmingEnd(end) { + return this.setTrimming(this._trimming.start,end); + } + + setCurrentPercent(percent) { + var duration = 0; + return new Promise((resolve) => { + this.duration() + .then((d) => { + duration = d; + return this.trimming(); + }) + .then((trimming) => { + var position = 0; + if (trimming.enabled) { + var start = trimming.start; + var end = trimming.end; + duration = end - start; + var trimedPosition = percent * duration / 100; + position = parseFloat(trimedPosition); + } + else { + position = percent * duration / 100; + } + return this.setCurrentTime(position); + }) + .then(function(timeData) { + resolve(timeData); + }); + }); + } + + setCurrentTime(time) { + base.log.debug("VideoContainerBase.setCurrentTime(" + time + ")"); + } + + currentTime() { + base.log.debug("VideoContainerBase.currentTime()"); + return 0; + } + + duration() { + base.log.debug("VideoContainerBase.duration()"); + return 0; + } + + paused() { + base.log.debug("VideoContainerBase.paused()"); + return true; + } + + setupVideo(onSuccess) { + base.log.debug("VideoContainerBase.setupVide()"); + } + + isReady() { + base.log.debug("VideoContainerBase.isReady()"); + return true; + } + + onresize() { super.onresize(onresize); + } +} + +paella.VideoContainerBase = VideoContainerBase; + +// Profile frame strategies + +class ProfileFrameStrategy { + static Factory() { + var config = paella.player.config; + + try { + var strategyClass = config.player.profileFrameStrategy; + var ClassObject = paella.utils.objectFromString(strategyClass); + var strategy = new ClassObject(); + if (strategy instanceof paella.ProfileFrameStrategy) { + return strategy; + } + } + catch (e) { + } + + return null; + } + + valid() { return true; } + + adaptFrame(videoDimensions,frameRect) { + return frameRect; + } +} + +paella.ProfileFrameStrategy = ProfileFrameStrategy; + +class LimitedSizeProfileFrameStrategy extends ProfileFrameStrategy { + adaptFrame(videoDimensions,frameRect) { + if (videoDimensions.width<frameRect.width|| videoDimensions.height<frameRect.height) { + var frameRectCopy = JSON.parse(JSON.stringify(frameRect)); + frameRectCopy.width = videoDimensions.width; + frameRectCopy.height = videoDimensions.height; + var diff = { w:frameRect.width - videoDimensions.width, + h:frameRect.height - videoDimensions.height }; + frameRectCopy.top = frameRectCopy.top + diff.h/2; + frameRectCopy.left = frameRectCopy.left + diff.w/2; + return frameRectCopy; + } + return frameRect; + } +} + +paella.LimitedSizeProfileFrameStrategy = LimitedSizeProfileFrameStrategy; + +class StreamProvider { + constructor(videoData) { + this._mainStream = null; + this._videoStreams = []; + this._audioStreams = []; + + this._mainPlayer = null; + this._audioPlayer = null; + this._videoPlayers = []; + this._audioPlayers = []; + this._players = []; + + this._autoplay = base.parameters.get('autoplay')=='true' || this.isLiveStreaming; + this._startTime = 0; + } + + init(videoData) { + if (videoData.length==0) throw Error("Empty video data."); + this._videoData = videoData; + + if (!this._videoData.some((stream) => { return stream.role=="master"; })) { + this._videoData[0].role = "master"; + } + + this._videoData.forEach((stream, index) => { + stream.type = stream.type || 'video'; + if (stream.role=='master') { + this._mainStream = stream; + } + + if (stream.type=='video') { + this._videoStreams.push(stream); + } + else if (stream.type=='audio') { + this._audioStreams.push(stream); + } + }); + + if (this._videoStreams.length==0) { + throw new Error("No video streams found. Paella Player requires at least one video stream."); + } + + // Create video players + let autoplay = this.autoplay; + this._videoStreams.forEach((videoStream,index) => { + let rect = {x:0,y:0,w:1280,h:720}; + let player = paella.videoFactory.getVideoObject(`video_${ index }`, videoStream, rect); + player.setVideoQualityStrategy(this._qualityStrategy); + player.setAutoplay(autoplay); + + if (videoStream==this._mainStream) { + this._mainPlayer = player; + this._audioPlayer = player; + } + else { + player.setVolume(0); + } + + this._videoPlayers.push(player); + this._players.push(player); + }); + + // Create audio player + this._audioStreams.forEach((audioStream,index) => { + let player = paella.audioFactory.getAudioObject(`audio_${ index }`,audioStream); + player.setAutoplay(autoplay); + if (player) { + this._audioPlayers.push(player); + this._players.push(player); + } + }); + } + + startVideoSync(syncProviderPlayer) { + this._syncProviderPlayer = syncProviderPlayer; + this._audioPlayer = syncProviderPlayer; // The player that provides the synchronization is also used as main audio player. + this.stopVideoSync(); + + console.debug("Start sync to player:"); + console.debug(this._syncProviderPlayer); + let maxDiff = 0.3; + let sync = () => { + this._syncProviderPlayer.currentTime() + .then((t) => { + this.players.forEach((player) => { + if (player!=syncProviderPlayer && + player.currentTimeSync!=null && + Math.abs(player.currentTimeSync-t)>maxDiff) + { + console.debug(`Sync player current time: ${ player.currentTimeSync } to time ${ t }`); + console.debug(player); + player.setCurrentTime(t); + } + }); + + }); + this._syncTimer = setTimeout(() => sync(), 1000); + }; + + this._syncTimer = setTimeout(() => sync(), 1000); + } + + stopVideoSync() { + if (this._syncTimer) { + console.debug("Stop video sync"); + clearTimeout(this._syncTimer); + this._syncTimer = null; + } + } + + loadVideos() { + let promises = []; + + this._players.forEach((player) => { + promises.push(player.load()); + }); + + return Promise.all(promises); + } + + get startTime() { + return this._startTime; + } + + set startTime(s) { + this._startTime = s; + } + + get isMonostream() { + return this._videoStreams.length==1; + } + + get mainStream() { + return this._mainStream; + } + + get videoStreams() { + //return this._videoData; + return this._videoStreams; + } + + + get audioStreams() { + return this._audioStreams; + } + + get streams() { + return this._videoStreams.concat(this._audioStreams); + } + + get videoPlayers() { + return this._videoPlayers; + } + + get audioPlayers() { + return this._audioPlayers; + } + + get players() { + return this._videoPlayers.concat(this._audioPlayers); + } + + callPlayerFunction(fnName) { + let promises = []; + let functionArguments = []; + for (let i=1; i<arguments.length; ++i) { + functionArguments.push(arguments[i]); + } + + this.players.forEach((player) => { + promises.push(player[fnName](...functionArguments)); + }); + + return new Promise((resolve,reject) => { + Promise.all(promises) + .then(() => { + if (fnName=='play' && !this._firstPlay) { + this._firstPlay = true; + if (this._startTime) { + this.players.forEach((p) => p.setCurrentTime(this._startTime)); + } + } + resolve(); + }) + .catch((err) => { + reject(err); + }); + }); + } + + get mainVideoPlayer() { + return this._mainPlayer; + } + + get mainAudioPlayer() { + return this._audioPlayer; + } + + get isLiveStreaming() { + return paella.player.isLiveStream(); + } + + set qualityStrategy(strategy) { + this._qualityStrategy = strategy; + this._videoPlayers.forEach((player) => { + player.setVideoQualityStrategy(strategy); + }) + } + + get qualityStrategy() { return this._qualityStrategy || null; } + + get autoplay() { + return this.supportAutoplay && this._autoplay; + } + + set autoplay(ap) { + if (!this.supportAutoplay || this.isLiveStreaming) return; + this._autoplay = ap; + if (this.videoPlayers) { + this.videoPlayers.forEach((player) => player.setAutoplay(ap)); + this.audioPlayers.forEach((player) => player.setAutoplay(ap)); + } + } + + get supportAutoplay() { + return this.videoPlayers.every((player) => player.supportAutoplay()); + } +} + +paella.StreamProvider = StreamProvider; + +function addVideoWrapper(id,videoPlayer) { + let wrapper = new paella.VideoWrapper(id); + wrapper.addNode(videoPlayer); + this.videoWrappers.push(wrapper); + this.container.addNode(wrapper); + return wrapper; +} + +class VideoContainer extends paella.VideoContainerBase { + + get streamProvider() { return this._streamProvider; } + get ready() { return this._ready; } + get isMonostream() { return this._streamProvider.isMonostream; } + get trimmingHandler() { return this._trimmingHandler; } + get videoWrappers() { return this._videoWrappers; } + get container() { return this._container; } + get profileFrameStrategy() { return this._profileFrameStrategy; } + get sourceData() { return this._sourceData; } + + constructor(id) { + super(id); + + this._streamProvider = new paella.StreamProvider(); + this._ready = false; + this._videoWrappers = []; + + this._container = new paella.DomNode('div','playerContainer_videoContainer_container',{position:'relative',display:'block',marginLeft:'auto',marginRight:'auto',width:'1024px',height:'567px'}); + this._container.domElement.setAttribute('role','main'); + this.addNode(this._container); + + this.overlayContainer = new paella.VideoOverlay(this.domElement); + this.container.addNode(this.overlayContainer); + + this.setProfileFrameStrategy(paella.ProfileFrameStrategy.Factory()); + this.setVideoQualityStrategy(paella.VideoQualityStrategy.Factory()); + + this._audioTag = paella.player.config.player.defaultAudioTag || + paella.dictionary.currentLanguage(); + this._audioPlayer = null; + + // Initial volume level + this._volume = paella.utils.cookies.get("volume") ? Number(paella.utils.cookies.get("volume")) : 1; + this._muted = false; + } + + // Playback and status functions + play() { + return new Promise((resolve,reject) => { + this.streamProvider.startTime = this._startTime; + this.streamProvider.callPlayerFunction('play') + .then(() => { + super.play(); + resolve(); + }) + .catch((err) => { + reject(err); + }); + }); + } + + pause() { + return new Promise((resolve,reject) => { + this.streamProvider.callPlayerFunction('pause') + .then(() => { + super.pause(); + resolve(); + }) + .catch((err) => { + reject(err); + }) + }); + } + + setCurrentTime(time) { + return new Promise((resolve,reject) => { + this.trimming() + .then((trimmingData) => { + if (trimmingData.enabled) { + time += trimmingData.start; + if (time<trimmingData.start) { + time = trimmingData.start; + } + if (time>trimmingData.end) { + time = trimmingData.end; + } + } + return this.streamProvider.callPlayerFunction('setCurrentTime',time); + }) + + .then(() => { + return this.duration(false); + }) + + .then((duration) => { + resolve({ time:time, duration:duration }); + }) + + .catch((err) => { + reject(err); + }) + }) + } + + currentTime(ignoreTrimming = false) { + return new Promise((resolve) => { + let trimmingData = null; + let p = ignoreTrimming ? Promise.resolve({ enabled:false }) : this.trimming(); + + p.then((t) => { + trimmingData = t; + return this.masterVideo().currentTime(); + }) + + .then((time) => { + if (trimmingData.enabled) { + time = time - trimmingData.start; + } + resolve(time) + }); + }); + } + + setPlaybackRate(rate) { + this.streamProvider.callPlayerFunction('setPlaybackRate',rate); + super.setPlaybackRate(rate); + } + + mute() { + return new Promise((resolve) => { + this._muted = true; + this._audioPlayer.setVolume(0) + .then(() => { + paella.events.trigger(paella.events.setVolume, { master: 0 }); + resolve(); + }); + }); + } + + unmute() { + return new Promise((resolve) => { + this._muted = false; + this._audioPlayer.setVolume(this._volume) + .then(() => { + paella.events.trigger(paella.events.setVolume, { master: this._volume }); + resolve(); + }); + }); + } + + get muted() { + return this._muted; + } + + setVolume(params) { + if (typeof(params)=='object') { + console.warn("videoContainer.setVolume(): set parameter as object is deprecated"); + return Promise.resolve(); + } + else if (params==0) { + return this.mute(); + } + else { + return new Promise((resolve,reject) => { + paella.utils.cookies.set("volume",params); + this._volume = params; + this._audioPlayer.setVolume(params) + .then(() => { + paella.events.trigger(paella.events.setVolume, { master:params }); + resolve(params); + }) + .catch((err) => { + reject(err); + }); + }); + } + } + + volume() { + return this._audioPlayer.volume(); + } + + duration(ignoreTrimming = false) { + return new Promise((resolve) => { + let trimmingData = null; + let p = ignoreTrimming ? Promise.resolve({ enabled:false }) : this.trimming(); + + p.then((t) => { + trimmingData = t; + return this.masterVideo().duration(); + }) + + .then((duration) => { + if (trimmingData.enabled) { + duration = trimmingData.end - trimmingData.start; + } + resolve(duration); + }); + }) + } + + paused() { + return this.masterVideo().isPaused(); + } + + // Video quality functions + getQualities() { + return this.masterVideo().getQualities(); + } + + setQuality(index) { + let qualities = []; + let promises = []; + this.streamProvider.videoPlayers.forEach((player) => { + let playerData = { + player:player, + promise:player.getQualities() + }; + qualities.push(playerData); + promises.push(playerData.promise); + }); + + return new Promise((resolve) => { + let resultPromises = []; + Promise.all(promises) + .then(() => { + qualities.forEach((data) => { + data.promise.then((videoQualities) => { + let videoQuality = videoQualities.length>index ? index:videoQualities.length - 1; + resultPromises.push(data.player.setQuality(videoQuality)); + }); + }); + + return Promise.all(resultPromises); + }) + + .then(() => { + //setTimeout(() => { + paella.events.trigger(paella.events.qualityChanged); + resolve(); + //},10); + }); + }); + } + getCurrentQuality() { + return this.masterVideo().getCurrentQuality(); + } + + // Current audio functions + get audioTag() { + return this._audioTag; + } + + get audioPlayer() { + return this._audioPlayer; + } + + getAudioTags() { + return new Promise((resolve) => { + let lang = []; + let p = this.streamProvider.players; + p.forEach((player) => { + if (player.stream.audioTag) { + lang.push(player.stream.audioTag); + } + }) + resolve(lang); + }) + } + + setAudioTag(lang) { + this.streamProvider.stopVideoSync(); + return new Promise((resolve) => { + let audioSet = false; + let firstAudioPlayer = null; + let promises = []; + this.streamProvider.players.forEach((player) => { + if (!firstAudioPlayer) { + firstAudioPlayer = player; + } + + if (!audioSet && player.stream.audioTag==lang) { + audioSet = true; + this._audioPlayer = player; + } + promises.push(player.setVolume(0)); + }); + + // NOTE: The audio only streams must define a valid audio tag + if (!audioSet && this.streamProvider.mainVideoPlayer) { + this._audioPlayer = this.streamProvider.mainVideoPlayer; + } + else if (!audioSet && firstAudioPlayer) { + this._audioPlayer = firstAudioPlayer; + } + + Promise.all(promises).then(() => { + return this._audioPlayer.setVolume(this._volume); + }) + + .then(() => { + this._audioTag = this._audioPlayer.stream.audioTag; + paella.events.trigger(paella.events.audioTagChanged); + this.streamProvider.startVideoSync(this.audioPlayer); + resolve(); + }); + }) + } + + setProfileFrameStrategy(strategy) { + this._profileFrameStrategy = strategy; + } + + setVideoQualityStrategy(strategy) { + this.streamProvider.qualityStrategy = strategy; + } + + autoplay() { return this.streamProvider.autoplay; } + supportAutoplay() { return this.streamProvider.supportAutoplay; } + setAutoplay(ap=true) { + this.streamProvider.autoplay = ap; + return this.streamProvider.supportAutoplay; + } + + masterVideo() { + return this.streamProvider.mainVideoPlayer || this.audioPlayer; + } + + getVideoRect(videoIndex) { + if (this.videoWrappers.length>videoIndex) { + return this.videoWrappers[videoIndex].getRect(); + } + else { + throw new Error(`Video wrapper with index ${ videoIndex } not found`); + } + } + + setStreamData(videoData) { + var urlParamTime = base.parameters.get("time"); + var hashParamTime = base.hashParams.get("time"); + var timeString = hashParamTime ? hashParamTime:urlParamTime ? urlParamTime:"0s"; + var startTime = paella.utils.timeParse.timeToSeconds(timeString); + if (startTime) { + this._startTime = startTime; + } + + videoData.forEach((stream) => { + for (var type in stream.sources) { + let source = stream.sources[type]; + source.forEach((item) => { + if (item.res) { + item.res.w = Number(item.res.w); + item.res.h = Number(item.res.h); + } + }); + } + }); + this._sourceData = videoData; + return new Promise((resolve,reject) => { + this.streamProvider.init(videoData); + + let streamDataAudioTag = null; + videoData.forEach((video) => { + if (video.audioTag && streamDataAudioTag==null) { + streamDataAudioTag = video.audioTag; + } + + if (video.audioTag==this._audioTag) { + streamDataAudioTag = this._audioTag; + } + }); + + if (streamDataAudioTag!=this._audioTag && streamDataAudioTag!=null) { + this._audioTag = streamDataAudioTag; + } + + this.streamProvider.videoPlayers.forEach((player,index) => { + addVideoWrapper.apply(this,['videoPlayerWrapper_' + index,player]); + player.setAutoplay(this.autoplay()); + }); + + this.streamProvider.loadVideos() + .catch((err) => { + reject(err) + }) + + .then(() => { + return this.setAudioTag(this.audioTag); + }) + + .then(() => { + let endedTimer = null; + let eventBindingObject = this.masterVideo().video || this.masterVideo().audio; + $(eventBindingObject).bind('timeupdate', (evt) => { + this.trimming().then((trimmingData) => { + let current = evt.currentTarget.currentTime; + let duration = evt.currentTarget.duration; + if (trimmingData.enabled) { + current -= trimmingData.start; + duration = trimmingData.end - trimmingData.start; + } + paella.events.trigger(paella.events.timeupdate, { videoContainer:this, currentTime:current, duration:duration }); + if (current>=duration) { + this.streamProvider.callPlayerFunction('pause'); + if (endedTimer) { + clearTimeout(endedTimer); + endedTimer = null; + } + endedTimer = setTimeout(() => { + paella.events.trigger(paella.events.ended); + }, 1000); + } + }) + }); + + this._ready = true; + paella.events.trigger(paella.events.videoReady); + let profileToUse = base.parameters.get('profile') || + base.cookies.get('profile') || + paella.profiles.getDefaultProfile(); + + if (paella.profiles.setProfile(profileToUse, false)) { + resolve(); + } + else if (!paella.profiles.setProfile(paella.profiles.getDefaultProfile(), false)) { + resolve(); + } + }); + }); + } + + resizePortrait() { + var width = (paella.player.isFullScreen() == true) ? $(window).width() : $(this.domElement).width(); + var relativeSize = new paella.RelativeVideoSize(); + var height = relativeSize.proportionalHeight(width); + this.container.domElement.style.width = width + 'px'; + this.container.domElement.style.height = height + 'px'; + + var containerHeight = (paella.player.isFullScreen() == true) ? $(window).height() : $(this.domElement).height(); + var newTop = containerHeight / 2 - height / 2; + this.container.domElement.style.top = newTop + "px"; + } + + resizeLandscape() { + var height = (paella.player.isFullScreen() == true) ? $(window).height() : $(this.domElement).height(); + var relativeSize = new paella.RelativeVideoSize(); + var width = relativeSize.proportionalWidth(height); + this.container.domElement.style.width = width + 'px'; + this.container.domElement.style.height = height + 'px'; + this.container.domElement.style.top = '0px'; + } + + onresize() { + super.onresize(); + var relativeSize = new paella.RelativeVideoSize(); + var aspectRatio = relativeSize.aspectRatio(); + var width = (paella.player.isFullScreen() == true) ? $(window).width() : $(this.domElement).width(); + var height = (paella.player.isFullScreen() == true) ? $(window).height() : $(this.domElement).height(); + var containerAspectRatio = width/height; + + if (containerAspectRatio>aspectRatio) { + this.resizeLandscape(); + } + else { + this.resizePortrait(); + } + //paella.profiles.setProfile(paella.player.selectedProfile,false) + } +} + +paella.VideoContainer = VideoContainer; + +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function() { + +class PluginManager { + + setupPlugin(plugin) { + plugin.setup(); + this.enabledPlugins.push(plugin); + if (eval("plugin instanceof paella.UIPlugin")) { + plugin.checkVisibility(); + } + } + + checkPluginsVisibility() { + this.enabledPlugins.forEach(function(plugin) { + if (eval("plugin instanceof paella.UIPlugin")) { + plugin.checkVisibility(); + } + }); + } + + constructor() { + this.targets = null; + this.pluginList = []; + this.eventDrivenPlugins = []; + this.enabledPlugins = []; + this.doResize = true; + + this.targets = {}; + paella.events.bind(paella.events.loadPlugins,(event) => { + this.loadPlugins("paella.DeferredLoadPlugin"); + }); + + var timer = new base.Timer(() => { + if (paella.player && paella.player.controls && this.doResize) paella.player.controls.onresize(); + }, 1000); + timer.repeat = true; + } + + setTarget(pluginType,target) { + if (target.addPlugin) { + this.targets[pluginType] = target; + } + } + + getTarget(pluginType) { + // PluginManager can handle event-driven events: + if (pluginType=="eventDriven") { + return this; + } + else { + var target = this.targets[pluginType]; + return target; + } + } + + registerPlugin(plugin) { + // Registra los plugins en una lista y los ordena + this.importLibraries(plugin); + this.pluginList.push(plugin); + this.pluginList.sort(function(a,b) { + return a.getIndex() - b.getIndex(); + }); + } + + importLibraries(plugin) { + plugin.getDependencies().forEach(function(lib) { + var script = document.createElement('script'); + script.type = "text/javascript"; + script.src = 'javascript/' + lib + '.js'; + document.head.appendChild(script); + }); + } + + // callback => function(plugin,pluginConfig) + loadPlugins(pluginBaseClass) { + if (pluginBaseClass != undefined) { + var This = this; + this.foreach(function(plugin,config) { + // Prevent load a plugin twice + if (plugin.isLoaded()) return; + if (eval("plugin instanceof " + pluginBaseClass)) { + if (config.enabled) { + base.log.debug("Load plugin (" + pluginBaseClass + "): " + plugin.getName()); + plugin.config = config; + plugin.load(This); + } + } + }); + } + } + + foreach(callback) { + var enablePluginsByDefault = false; + var pluginsConfig = {}; + try { + enablePluginsByDefault = paella.player.config.plugins.enablePluginsByDefault; + } + catch(e){} + try { + pluginsConfig = paella.player.config.plugins.list; + } + catch(e){} + + this.pluginList.forEach(function(plugin){ + var name = plugin.getName(); + var config = pluginsConfig[name]; + if (!config) { + config = {enabled: enablePluginsByDefault}; + } + callback(plugin, config); + }); + } + + addPlugin(plugin) { + // Prevent add a plugin twice + if (plugin.__added__) return; + plugin.__added__ = true; + plugin.checkEnabled((isEnabled) => { + if (plugin.type=="eventDriven" && isEnabled) { + paella.pluginManager.setupPlugin(plugin); + this.eventDrivenPlugins.push(plugin); + var events = plugin.getEvents(); + var eventBind = function(event,params) { + plugin.onEvent(event.type,params); + }; + + for (var i=0; i<events.length;++i) { + var eventName = events[i]; + paella.events.bind(eventName, eventBind); + } + } + }); + } + + getPlugin(name) { + for (var i=0;i<this.pluginList.length;++i) { + if (this.pluginList[i].getName()==name) return this.pluginList[i]; + } + return null; + } + + registerPlugins() { + g_pluginCallbackList.forEach((pluginCallback) => { + let PluginClass = pluginCallback(); + let pluginInstance = new PluginClass(); + if (pluginInstance.getInstanceName()) { + paella.plugins = paella.plugins || {}; + paella.plugins[pluginInstance.getInstanceName()] = pluginInstance; + } + paella.pluginManager.registerPlugin(pluginInstance); + }); + } +} + +paella.PluginManager = PluginManager; + +paella.pluginManager = new paella.PluginManager(); + +let g_pluginCallbackList = []; +paella.addPlugin = function(cb) { + g_pluginCallbackList.push(cb); +}; + + +class Plugin { + get type() { return ""; } + + isLoaded() { return this.__loaded__; } + + getDependencies() { + return []; + } + + load(pluginManager) { + if (this.__loaded__) return; + this.__loaded__ = true; + var target = pluginManager.getTarget(this.type); + if (target && target.addPlugin) { + target.addPlugin(this); + } + } + + getInstanceName() { return null; } + + getRootNode(id) { + return null; + } + + checkEnabled(onSuccess) { + onSuccess(true); + } + + setup() { + + } + + getIndex() { + return 0; + } + + getName() { + return ""; + } +} + +paella.Plugin = Plugin; + +class FastLoadPlugin extends paella.Plugin {} +class EarlyLoadPlugin extends paella.Plugin {} +class DeferredLoadPlugin extends paella.Plugin {} + +paella.FastLoadPlugin = FastLoadPlugin; +paella.EarlyLoadPlugin = EarlyLoadPlugin; +paella.DeferredLoadPlugin = DeferredLoadPlugin; + +class PopUpContainer extends paella.DomNode { + + constructor(id,className) { + var style = {}; + super('div',id,style); + + this.containers = null; + this.currentContainerId = -1; + + this.domElement.className = className; + + this.containers = {}; + } + + hideContainer(identifier,button) { + var container = this.containers[identifier]; + if (container && this.currentContainerId==identifier) { + container.identifier = identifier; + paella.events.trigger(paella.events.hidePopUp,{container:container}); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected',''); + $(this.domElement).css({width:'0px'}); + this.currentContainerId = -1; + container.plugin.didHideContent(); + } + } + + showContainer(identifier, button) { + var thisClass = this; + var width = 0; + + function hideContainer(container) { + paella.events.trigger(paella.events.hidePopUp,{container:container}); + container.plugin.willHideContent(); + $(container.element).hide(); + $(thisClass.domElement).css({width:'0px'}); + container.button.className = container.button.className.replace(' selected',''); + thisClass.currentContainerId = -1; + container.plugin.didHideContent(); + } + function showContainer(container) { + paella.events.trigger(paella.events.showPopUp,{container:container}); + container.plugin.willShowContent(); + container.button.className = container.button.className + ' selected'; + $(container.element).show(); + width = $(container.element).width(); + if (container.plugin.getAlignment() == 'right') { + var right = $(button.parentElement).width() - $(button).position().left - $(button).width(); + $(thisClass.domElement).css({width:width + 'px', right:right + 'px', left:''}); + } + else { + var left = $(button).position().left; + $(thisClass.domElement).css({width:width + 'px', left:left + 'px', right:''}); + } + thisClass.currentContainerId = identifier; + container.plugin.didShowContent(); + } + + var container = this.containers[identifier]; + if (container && this.currentContainerId!=identifier && this.currentContainerId!=-1) { + var prevContainer = this.containers[this.currentContainerId]; + hideContainer(prevContainer); + showContainer(container); + } + else if (container && this.currentContainerId==identifier) { + hideContainer(container); + } + else if (container) { + showContainer(container); + } + } + + registerContainer(identifier,domElement,button,plugin) { + var containerInfo = { + identifier:identifier, + button:button, + element:domElement, + plugin:plugin + }; + this.containers[identifier] = containerInfo; + if (plugin.closeOnMouseOut && plugin.closeOnMouseOut()) { + let popUpId = identifier; + let btn = button; + $(domElement).mouseleave(function(evt) { + paella.player.controls.playbackControl().hidePopUp(popUpId,btn); + }); + } + + + // this.domElement.appendChild(domElement); + $(domElement).hide(); + button.popUpIdentifier = identifier; + button.sourcePlugin = plugin; + $(button).click(function(event) { + if (!this.plugin.isPopUpOpen()) { + paella.player.controls.playbackControl().showPopUp(this.popUpIdentifier,this); + } + else { + paella.player.controls.playbackControl().hidePopUp(this.popUpIdentifier,this); + } + }); + $(button).keyup(function(event) { + if ( (event.keyCode == 13) && (!this.plugin.isPopUpOpen()) ){ + paella.player.controls.playbackControl().showPopUp(this.popUpIdentifier,this); + } + else if ( (event.keyCode == 27)){ + paella.player.controls.playbackControl().hidePopUp(this.popUpIdentifier,this); + } + }); + plugin.containerManager = this; + } +} + +paella.PopUpContainer = PopUpContainer; + +class TimelineContainer extends paella.PopUpContainer { + hideContainer(identifier,button) { + var container = this.containers[identifier]; + if (container && this.currentContainerId==identifier) { + paella.events.trigger(paella.events.hidePopUp,{container:container}); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected',''); + this.currentContainerId = -1; + $(this.domElement).css({height:'0px'}); + container.plugin.didHideContent(); + } + } + + showContainer(identifier,button) { + var height =0; + var container = this.containers[identifier]; + if (container && this.currentContainerId!=identifier && this.currentContainerId!=-1) { + var prevContainer = this.containers[this.currentContainerId]; + prevContainer.button.className = prevContainer.button.className.replace(' selected',''); + container.button.className = container.button.className + ' selected'; + paella.events.trigger(paella.events.hidePopUp,{container:prevContainer}); + prevContainer.plugin.willHideContent(); + $(prevContainer.element).hide(); + prevContainer.plugin.didHideContent(); + paella.events.trigger(paella.events.showPopUp,{container:container}); + container.plugin.willShowContent(); + $(container.element).show(); + this.currentContainerId = identifier; + height = $(container.element).height(); + $(this.domElement).css({height:height + 'px'}); + container.plugin.didShowContent(); + } + else if (container && this.currentContainerId==identifier) { + paella.events.trigger(paella.events.hidePopUp,{container:container}); + container.plugin.willHideContent(); + $(container.element).hide(); + container.button.className = container.button.className.replace(' selected',''); + $(this.domElement).css({height:'0px'}); + this.currentContainerId = -1; + container.plugin.didHideContent(); + } + else if (container) { + paella.events.trigger(paella.events.showPopUp,{container:container}); + container.plugin.willShowContent(); + container.button.className = container.button.className + ' selected'; + $(container.element).show(); + this.currentContainerId = identifier; + height = $(container.element).height(); + $(this.domElement).css({height:height + 'px'}); + container.plugin.didShowContent(); + } + } +} + +paella.TimelineContainer = TimelineContainer; + +class UIPlugin extends paella.DeferredLoadPlugin { + get ui() { return this._ui; } + set ui(val) { this._ui = val; } + + checkVisibility() { + var modes = this.config.visibleOn || [ paella.PaellaPlayer.mode.standard, + paella.PaellaPlayer.mode.fullscreen, + paella.PaellaPlayer.mode.embed ]; + + var visible = false; + modes.forEach(function(m){ + if (m == paella.player.getPlayerMode()) { + visible = true; + } + }); + + if (visible){ + this.showUI(); + } + else { + this.hideUI(); + } + } + + hideUI() { + this.ui.setAttribute('aria-hidden', 'true'); + $(this.ui).hide(); + } + + showUI() { + var thisClass = this; + paella.pluginManager.enabledPlugins.forEach(function(p) { + if (p == thisClass) { + thisClass.ui.setAttribute('aria-hidden', 'false'); + $(thisClass.ui).show(); + } + }); + } +} + +paella.UIPlugin = UIPlugin; + +class ButtonPlugin extends paella.UIPlugin { + get type() { return 'button'; } + + constructor() { + super(); + this.subclass = ''; + this.container = null; + this.containerManager = null; + } + + getAlignment() { + return 'left'; // or right + } + + // Returns the button subclass. + getSubclass() { + return "myButtonPlugin"; + } + + getIconClass() { + return ""; + } + + addSubclass($subclass) { + $(this.container).addClass($subclass); + } + + removeSubclass($subclass) { + $(this.container).removeClass($subclass); + } + + action(button) { + // Implement this if you want to do something when the user push the plugin button + } + + getName() { + return "ButtonPlugin"; + } + + getMinWindowSize() { + return this.config.minWindowSize || 0; + } + + buildContent(domElement) { + // Override if your plugin + } + + willShowContent() { + base.log.debug(this.getName() + " willDisplayContent"); + } + + didShowContent() { + base.log.debug(this.getName() + " didDisplayContent"); + } + + willHideContent() { + base.log.debug(this.getName() + " willHideContent"); + } + + didHideContent() { + base.log.debug(this.getName() + " didHideContent"); + } + + getButtonType() { + //return paella.ButtonPlugin.type.popUpButton; + //return paella.ButtonPlugin.type.timeLineButton; + return paella.ButtonPlugin.type.actionButton; + + } + + getText() { + return ""; + } + + getAriaLabel() { + return ""; + } + + setText(text) { + this.container.innerHTML = '<span class="button-text">' + paella.AntiXSS.htmlEscape(text) + '</span>'; + if (this._i) { + this.container.appendChild(this._i); + } + } + + hideButton() { + this.hideUI(); + } + + showButton() { + this.showUI(); + } + + // Utility functions: do not override + changeSubclass(newSubclass) { + this.subclass = newSubclass; + this.container.className = this.getClassName(); + } + + changeIconClass(newClass) { + this._i.className = 'button-icon ' + newClass; + } + + getClassName() { + return paella.ButtonPlugin.kClassName + ' ' + this.getAlignment() + ' ' + this.subclass; + } + + getContainerClassName() { + if (this.getButtonType()==paella.ButtonPlugin.type.timeLineButton) { + return paella.ButtonPlugin.kTimeLineClassName + ' ' + this.getSubclass(); + } + else if (this.getButtonType()==paella.ButtonPlugin.type.popUpButton) { + return paella.ButtonPlugin.kPopUpClassName + ' ' + this.getSubclass(); + } + } + + setToolTip(message) { + this.button.setAttribute("title", message); + this.button.setAttribute("aria-label", message); + } + + getDefaultToolTip() { + return ""; + } + + isPopUpOpen() { + return (this.button.popUpIdentifier == this.containerManager.currentContainerId); + } + + getExpandableContent() { + return null; + } + + expand() { + if (this._expand) { + $(this._expand).show(); + } + } + + contract() { + if (this._expand) { + $(this._expand).hide(); + } + } + + static BuildPluginButton(plugin,id) { + plugin.subclass = plugin.getSubclass(); + var elem = document.createElement('div'); + let ariaLabel = plugin.getAriaLabel(); + if (ariaLabel!="") { + elem = document.createElement('button'); + } + elem.className = plugin.getClassName(); + elem.id = id; + + let buttonText = document.createElement('span'); + buttonText.className = "button-text"; + buttonText.innerHTML = paella.AntiXSS.htmlEscape(plugin.getText()); + buttonText.plugin = plugin; + elem.appendChild(buttonText); + if (ariaLabel) { + elem.setAttribute("tabindex", 1000 + plugin.getIndex()); + elem.setAttribute("aria-label",ariaLabel); + } + elem.setAttribute("alt", ""); + + elem.plugin = plugin; + plugin.button = elem; + plugin.container = elem; + plugin.ui = elem; + plugin.setToolTip(plugin.getDefaultToolTip()); + + let icon = document.createElement('i'); + icon.className = 'button-icon ' + plugin.getIconClass(); + icon.plugin = plugin; + elem.appendChild(icon); + plugin._i = icon; + + function onAction(self) { + paella.userTracking.log("paella:button:action", self.plugin.getName()); + self.plugin.action(self); + } + + $(elem).click(function(event) { + onAction(this); + }); + $(elem).keyup(function(event) { + + event.preventDefault(); + }); + $(elem).focus(function(event) { + plugin.expand(); + }); + + return elem; + } + + static BuildPluginExpand(plugin,id) { + let expandContent = plugin.getExpandableContent(); + if (expandContent) { + let expand = document.createElement('span'); + expand.plugin = plugin; + expand.className = 'expandable-content ' + plugin.getClassName(); + plugin._expand = expand; + expand.appendChild(expandContent); + $(plugin._expand).hide(); + return expand; + } + return null; + } + + static BuildPluginPopUp(parent,plugin,id) { + plugin.subclass = plugin.getSubclass(); + var elem = document.createElement('div'); + parent.appendChild(elem); + elem.className = plugin.getContainerClassName(); + elem.id = id; + elem.plugin = plugin; + plugin.buildContent(elem); + return elem; + } +} + +paella.ButtonPlugin = ButtonPlugin; + +paella.ButtonPlugin.alignment = { + left:'left', + right:'right' +}; +paella.ButtonPlugin.kClassName = 'buttonPlugin'; +paella.ButtonPlugin.kPopUpClassName = 'buttonPluginPopUp'; +paella.ButtonPlugin.kTimeLineClassName = 'buttonTimeLine'; +paella.ButtonPlugin.type = { + actionButton:1, + popUpButton:2, + timeLineButton:3 +}; + +class VideoOverlayButtonPlugin extends paella.ButtonPlugin { + get type() { return 'videoOverlayButton'; } + + // Returns the button subclass. + getSubclass() { + return "myVideoOverlayButtonPlugin" + " " + this.getAlignment(); + } + + action(button) { + // Implement this if you want to do something when the user push the plugin button + } + + getName() { + return "VideoOverlayButtonPlugin"; + } + + get tabIndex() { + return -1; + } +} + +paella.VideoOverlayButtonPlugin = VideoOverlayButtonPlugin; + + +class EventDrivenPlugin extends paella.EarlyLoadPlugin { + get type() { return 'eventDriven'; } + + constructor() { + super(); + var events = this.getEvents(); + for (var i = 0; i<events.length;++i) { + var event = events[i]; + if (event==paella.events.loadStarted) { + this.onEvent(paella.events.loadStarted); + } + } + } + + getEvents() { + return []; + } + + onEvent(eventType,params) { + } + + getName() { + return "EventDrivenPlugin"; + } +} + +paella.EventDrivenPlugin = EventDrivenPlugin; + +})(); + +(function() { + + class VideoCanvas { + constructor(stream) { + this._stream = stream; + } + + loadVideo(videoPlugin,stream) { + return Promise.reject(new Error("Not implemented")); + } + + allowZoom() { + return true; + } + } + + paella.VideoCanvas = VideoCanvas; + + function initWebGLCanvas() { + if (!paella.WebGLCanvas) { + + class WebGLCanvas extends bg.app.WindowController { + constructor(stream) { + super(); + this._stream = stream; + } + + get stream() { return this._stream; } + + get video() { return this.texture ? this.texture.video : null; } + + get camera() { return this._camera; } + + get texture() { return this._texture; } + + loaded() { + return new Promise((resolve) => { + let checkLoaded = () => { + if (this.video) { + resolve(this); + } + else { + setTimeout(checkLoaded,100); + } + } + checkLoaded(); + }); + } + + loadVideo(videoPlugin,stream) { + return Promise.reject(new Error("Not implemented")); + } + + allowZoom() { + return false; + } + + // WebGL engine functions + registerPlugins() { + bg.base.Loader.RegisterPlugin(new bg.base.TextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VWGLBLoaderPlugin()); + } + + loadVideoTexture() { + return bg.base.Loader.Load(this.gl, this.stream.src); + } + + buildVideoSurface(sceneRoot,videoTexture) { + let sphere = bg.scene.PrimitiveFactory.Sphere(this.gl,1,50); + let sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1,-1,1))); + sceneRoot.addChild(sphereNode); + } + + buildCamera() { + let cameraNode = new bg.scene.Node(this.gl,"Camera"); + let camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + let projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + + let oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + + return cameraNode; + } + + buildScene() { + this._root = new bg.scene.Node(this.gl, "Root node"); + + this.registerPlugins(); + + this.loadVideoTexture() + .then((texture) => { + this._texture = texture; + this.buildVideoSurface(this._root,texture); + }); + + let lightNode = new bg.scene.Node(this.gl,"Light"); + let light = new bg.base.Light(); + light.ambient = bg.Color.White(); + light.diffuse = bg.Color.Black(); + light.specular = bg.Color.Black(); + lightNode.addComponent(new bg.scene.Light(light)); + this._root.addChild(lightNode); + + let cameraNode = this.buildCamera(); + this._camera = cameraNode.component("bg.scene.Camera"); + this._root.addChild(cameraNode); + } + + init() { + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + + this.buildScene(); + + this._renderer = bg.render.Renderer.Create(this.gl,bg.render.RenderPath.FORWARD); + + this._inputVisitor = new bg.scene.InputVisitor(); + } + + frame(delta) { + if (this.texture) { + this.texture.update(); + } + this._renderer.frame(this._root,delta); + this.postReshape(); + } + + display() { + this._renderer.display(this._root, this._camera); + } + + reshape(width,height) { + this._camera.viewport = new bg.Viewport(0,0,width,height); + if (!this._camera.projectionStrategy) { + this._camera.projection.perspective(60,this._camera.viewport.aspectRatio,0.1,100); + } + } + + mouseDrag(evt) { + this._inputVisitor.mouseDrag(this._root,evt); + this.postRedisplay(); + } + + mouseWheel(evt) { + this._inputVisitor.mouseWheel(this._root,evt); + this.postRedisplay(); + } + + touchMove(evt) { + this._inputVisitor.touchMove(this._root,evt); + this.postRedisplay(); + } + + mouseDown(evt) { this._inputVisitor.mouseDown(this._root,evt); } + touchStar(evt) { this._inputVisitor.touchStar(this._root,evt); } + mouseUp(evt) { this._inputVisitor.mouseUp(this._root,evt); } + mouseMove(evt) { this._inputVisitor.mouseMove(this._root,evt); } + mouseOut(evt) { this._inputVisitor.mouseOut(this._root,evt); } + touchEnd(evt) { this._inputVisitor.touchEnd(this._root,evt); } + } + + paella.WebGLCanvas = WebGLCanvas; + } + } + + function buildVideoCanvas(stream) { + if (!paella.WebGLCanvas) { + class WebGLCanvas extends bg.app.WindowController { + constructor(stream) { + super(); + this._stream = stream; + } + + get stream() { return this._stream; } + + get video() { return this.texture ? this.texture.video : null; } + + get camera() { return this._camera; } + + get texture() { return this._texture; } + + allowZoom() { + return false; + } + + loaded() { + return new Promise((resolve) => { + let checkLoaded = () => { + if (this.video) { + resolve(this); + } + else { + setTimeout(checkLoaded,100); + } + } + checkLoaded(); + }); + } + + registerPlugins() { + bg.base.Loader.RegisterPlugin(new bg.base.TextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + bg.base.Loader.RegisterPlugin(new bg.base.VWGLBLoaderPlugin()); + } + + loadVideoTexture() { + return bg.base.Loader.Load(this.gl, this.stream.src); + } + + buildVideoSurface(sceneRoot,videoTexture) { + let sphere = bg.scene.PrimitiveFactory.Sphere(this.gl,1,50); + let sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1,-1,1))); + sceneRoot.addChild(sphereNode); + } + + buildCamera() { + let cameraNode = new bg.scene.Node(this.gl,"Camera"); + let camera = new bg.scene.Camera(); + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + let projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + + let oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + + return cameraNode; + } + + buildScene() { + this._root = new bg.scene.Node(this.gl, "Root node"); + + this.registerPlugins(); + + this.loadVideoTexture() + .then((texture) => { + this._texture = texture; + this.buildVideoSurface(this._root,texture); + }); + + let lightNode = new bg.scene.Node(this.gl,"Light"); + let light = new bg.base.Light(); + light.ambient = bg.Color.White(); + light.diffuse = bg.Color.Black(); + light.specular = bg.Color.Black(); + lightNode.addComponent(new bg.scene.Light(light)); + this._root.addChild(lightNode); + + let cameraNode = this.buildCamera(); + this._camera = cameraNode.component("bg.scene.Camera"); + this._root.addChild(cameraNode); + } + + init() { + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + + this.buildScene(); + + this._renderer = bg.render.Renderer.Create(this.gl,bg.render.RenderPath.FORWARD); + + this._inputVisitor = new bg.scene.InputVisitor(); + } + + frame(delta) { + if (this.texture) { + this.texture.update(); + } + this._renderer.frame(this._root,delta); + this.postReshape(); + } + + display() { + this._renderer.display(this._root, this._camera); + } + + reshape(width,height) { + this._camera.viewport = new bg.Viewport(0,0,width,height); + if (!this._camera.projectionStrategy) { + this._camera.projection.perspective(60,this._camera.viewport.aspectRatio,0.1,100); + } + } + + mouseDrag(evt) { + this._inputVisitor.mouseDrag(this._root,evt); + this.postRedisplay(); + } + + mouseWheel(evt) { + this._inputVisitor.mouseWheel(this._root,evt); + this.postRedisplay(); + } + + touchMove(evt) { + this._inputVisitor.touchMove(this._root,evt); + this.postRedisplay(); + } + + mouseDown(evt) { this._inputVisitor.mouseDown(this._root,evt); } + touchStar(evt) { this._inputVisitor.touchStar(this._root,evt); } + mouseUp(evt) { this._inputVisitor.mouseUp(this._root,evt); } + mouseMove(evt) { this._inputVisitor.mouseMove(this._root,evt); } + mouseOut(evt) { this._inputVisitor.mouseOut(this._root,evt); } + touchEnd(evt) { this._inputVisitor.touchEnd(this._root,evt); } + } + + paella.WebGLCanvas = WebGLCanvas; + } + + return paella.WebGLCanvas; + } + + let g_canvasCallbacks = {}; + + paella.addCanvasPlugin = function(canvasType, webglSupport, mouseEventsSupport, canvasPluginCallback) { + g_canvasCallbacks[canvasType] = { + callback: canvasPluginCallback, + webglSupport: webglSupport, + mouseEventsSupport: mouseEventsSupport + }; + } + + function loadWebGLDeps() { + return new Promise((resolve) => { + if (!window.$paella_bg) { + paella.require(`${ paella.baseUrl }javascript/bg2e-es2015.js`) + .then(() => { + window.$paella_bg = bg; + buildVideoCanvas(); + // loadWebGLDeps(); + resolve(window.$paella_bg); + }) + } + else { + resolve(window.$paella_bg); + } + }); + } + + function loadCanvasPlugin(canvasType) { + return new Promise((resolve,reject) => { + let callbackData = g_canvasCallbacks[canvasType]; + if (callbackData) { + (callbackData.webglSupport ? loadWebGLDeps() : Promise.resolve()) + .then(() => { + resolve(callbackData.callback()); + }) + + .catch((err) => { + reject(err); + }); + } + else { + reject(new Error(`No such canvas type: "${canvasType}"`)); + } + }); + } + + paella.getVideoCanvas = function(type) { + return new Promise((resolve,reject) => { + let canvasData = g_canvasCallbacks[type]; + if (!canvasData) { + reject(new Error("No such canvas type: " + type)); + } + else { + if (canvasData.webglSupport) { + loadWebGLDeps() + .then(() => { + resolve(canvasData.callback()); + }); + } + else { + resolve(canvasData.callback()); + } + } + }) + } + + paella.getVideoCanvasData = function(type) { + return g_canvasCallbacks[type]; + } + + // Standard <video> canvas + paella.addCanvasPlugin("video", false, false, () => { + return class VideoCanvas extends paella.VideoCanvas { + constructor(stream) { + super(stream); + } + + loadVideo(videoPlugin,stream,doLoadCallback = null) { + return new Promise((resolve,reject) => { + doLoadCallback = doLoadCallback || function(video) { + return new Promise((cbResolve,cbReject) => { + var sourceElem = video.querySelector('source'); + if (!sourceElem) { + sourceElem = document.createElement('source'); + video.appendChild(sourceElem); + } + if (video._posterFrame) { + video.setAttribute("poster",video._posterFrame); + } + + sourceElem.src = stream.src; + sourceElem.type = stream.type; + video.load(); + video.playbackRate = video._playbackRate || 1; + cbResolve(); + }) + }; + + doLoadCallback(videoPlugin.video).then(() => { + resolve(stream); + }); + }); + } + } + }); + + /* + + paella.getVideoCanvas = function(type, stream) { + console.log("TODO: Remove paella.getVideoCanvas() function"); + return new Promise((resolve,reject) => { + if (!window.$paella_bg) { + paella.require(`${ paella.baseUrl }javascript/bg2e-es2015.js`) + .then(() => { + window.$paella_bg = bg; + loadCanvasPlugins(); + resolve(buildVideoCanvas(stream)); + }) + .catch((err) => { + console.error(err); + reject(err); + }); + } + else { + resolve(buildVideoCanvas(stream)); + } + }); + } + */ + +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + + +(function(){ + +class CaptionParserManager { + addPlugin(plugin) { + var self = this; + var ext = plugin.ext; + + if ( ((Array.isArray && Array.isArray(ext)) || (ext instanceof Array)) == false) { + ext = [ext]; + } + if (ext.length == 0) { + base.log.debug("No extension provided by the plugin " + plugin.getName()); + } + else { + base.log.debug("New captionParser added: " + plugin.getName()); + ext.forEach(function(f){ + self._formats[f] = plugin; + }); + } + } + + constructor() { + this._formats = {}; + paella.pluginManager.setTarget('captionParser', this); + } +} + +let captionParserManager = new CaptionParserManager(); + +class SearchCallback extends base.AsyncLoaderCallback { + constructor(caption, text) { + super(); + this.name = "captionSearchCallback"; + this.caption = caption; + this.text = text; + } + + load(onSuccess, onError) { + this.caption.search(this.text, (err, result) => { + if (err) { + onError(); + } + else { + this.result = result; + onSuccess(); + } + }); + } +} + +paella.captions = { + parsers: {}, + _captions: {}, + _activeCaption: undefined, + + addCaptions: function(captions) { + var cid = captions._captionsProvider + ':' + captions._id; + this._captions[cid] = captions; + paella.events.trigger(paella.events.captionAdded, cid); + }, + + getAvailableLangs: function() { + var ret = []; + var self = this; + Object.keys(this._captions).forEach(function(k){ + var c = self._captions[k]; + ret.push({ + id: k, + lang: c._lang + }); + }); + return ret; + }, + + getCaptions: function(cid) { + if (cid && this._captions[cid]) { + return this._captions[cid]; + } + return undefined; + }, + + getActiveCaptions: function(cid) { + return this._activeCaption; + }, + + setActiveCaptions: function(cid) { + this._activeCaption = this.getCaptions(cid); + + if (this._activeCaption != undefined) { + paella.events.trigger(paella.events.captionsEnabled, cid); + } + else { + paella.events.trigger(paella.events.captionsDisabled); + } + + return this._activeCaption; + }, + + getCaptionAtTime: function(cid, time) { + var c = this.getCaptions(cid); + if (c != undefined) { + return c.getCaptionAtTime(time); + } + return undefined; + }, + + search: function(text, next) { + var self = this; + var asyncLoader = new base.AsyncLoader(); + + this.getAvailableLangs().forEach(function(l) { + asyncLoader.addCallback(new SearchCallback(self.getCaptions(l.id), text)); + }); + + asyncLoader.load(function() { + var res = []; + Object.keys(asyncLoader.callbackArray).forEach(function(k) { + res = res.concat(asyncLoader.getCallback(k).result); + }); + if (next) next(false, res); + }, + function() { + if (next) next(true); + } + ); + } +}; + + +class Caption { + constructor(id, format, url, lang, next) { + this._id = id; + this._format = format; + this._url = url; + this._captions = undefined; + this._index = undefined; + + if (typeof(lang) == "string") { lang = {code: lang, txt: lang}; } + this._lang = lang; + this._captionsProvider = "downloadCaptionsProvider"; + + this.reloadCaptions(next); + } + + canEdit(next) { + // next(err, canEdit) + next(false, false); + } + + goToEdit() { + + } + + reloadCaptions(next) { + var self = this; + + + jQuery.ajax({ + url: self._url, + cache:false, + type: 'get', + dataType: "text" + }) + .then(function(dataRaw){ + var parser = captionParserManager._formats[self._format]; + if (parser == undefined) { + base.log.debug("Error adding captions: Format not supported!"); + paella.player.videoContainer.duration(true) + .then((duration)=>{ + self._captions = [{ + id: 0, + begin: 0, + end: duration, + content: base.dictionary.translate("Error! Captions format not supported.") + }]; + if (next) { next(true); } + }); + } + else { + parser.parse(dataRaw, self._lang.code, function(err, c) { + if (!err) { + self._captions = c; + self._index = lunr(function () { + var thisLunr = this; + thisLunr.ref('id'); + thisLunr.field('content', {boost: 10}); + self._captions.forEach(function(cap){ + thisLunr.add({ + id: cap.id, + content: cap.content, + }); + }); + }); + } + if (next) { next(err); } + }); + } + }) + .fail(function(error){ + base.log.debug("Error loading captions: " + self._url); + if (next) { next(true); } + }); + } + + getCaptions() { + return this._captions; + } + + getCaptionAtTime(time) { + if (this._captions != undefined) { + for (var i=0; i<this._captions.length; ++i) { + var l_cap = this._captions[i]; + if ((l_cap.begin <= time) && (l_cap.end >= time)) { + return l_cap; + } + } + } + return undefined; + } + + getCaptionById(id) { + if (this._captions != undefined) { + for (var i=0; i<this._captions.length; ++i) { + let l_cap = this._captions[i]; + if (l_cap.id == id) { + return l_cap; + } + } + } + return undefined; + } + + search(txt, next) { + var self = this; + if (this._index == undefined) { + if (next) { + next(true, "Error. No captions found."); + } + } + else { + var results = []; + paella.player.videoContainer.trimming() + .then((trimming)=>{ + this._index.search(txt).forEach(function(s){ + var c = self.getCaptionById(s.ref); + if(trimming.enabled && (c.end<trimming.start || c.begin>trimming.end)){ + return; + } + results.push({time: c.begin, content: c.content, score: s.score}); + }); + if (next) { + next(false, results); + } + }); + } + } +} + +paella.captions.Caption = Caption; + +class CaptionParserPlugIn extends paella.FastLoadPlugin { + get type() { return 'captionParser'; } + getIndex() {return -1;} + + get ext() { + if (!this._ext) { + this._ext = []; + } + return this._ext; + } + + parse(content, lang, next) { + throw new Error('paella.CaptionParserPlugIn#parse must be overridden by subclass'); + } +} + +paella.CaptionParserPlugIn = CaptionParserPlugIn; + + +}()); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + + +(function(){ + + +var searchServiceManager = { + _plugins: [], + + addPlugin: function(plugin) { + this._plugins.push(plugin); + }, + + initialize: function() { + paella.pluginManager.setTarget('SearchServicePlugIn', this); + } +}; + + +class SearchCallback extends base.AsyncLoaderCallback { + constructor(plugin, text) { + super(); + this.name = "searchCallback"; + this.plugin = plugin; + this.text = text; + } + + load(onSuccess, onError) { + this.plugin.search(this.text, (err, result) => { + if (err) { + onError(); + } + else { + this.result = result; + onSuccess(); + } + }); + } +} + + +paella.searchService = { + + search: function(text, next) { + let asyncLoader = new base.AsyncLoader(); + + paella.userTracking.log("paella:searchService:search", text); + + searchServiceManager._plugins.forEach(function(p) { + asyncLoader.addCallback(new SearchCallback(p, text)); + }); + + asyncLoader.load(function() { + var res = []; + Object.keys(asyncLoader.callbackArray).forEach(function(k) { + res = res.concat(asyncLoader.getCallback(k).result); + }); + if (next) next(false, res); + }, + function() { + if (next) next(true); + } + ); + } +}; + + +class SearchServicePlugIn extends paella.FastLoadPlugin { + get type() { return 'SearchServicePlugIn'; } + getIndex() {return -1;} + + search(text, next) { + throw new Error('paella.SearchServicePlugIn#search must be overridden by subclass'); + } +} + +paella.SearchServicePlugIn = SearchServicePlugIn; +searchServiceManager.initialize(); + +}()); +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(function(){ + + +var userTrackingManager = { + _plugins: [], + + addPlugin: function(plugin) { + plugin.checkEnabled((isEnabled) => { + if (isEnabled) { + plugin.setup(); + this._plugins.push(plugin); + } + }); + }, + initialize: function() { + paella.pluginManager.setTarget('userTrackingSaverPlugIn', this); + } +}; + +paella.userTracking = {}; +userTrackingManager.initialize(); + +class SaverPlugIn extends paella.FastLoadPlugin { + get type() { return 'userTrackingSaverPlugIn'; } + getIndex() { return -1; } + checkEnabled(onSuccess) { onSuccess(true); } + + log(event, params) { + throw new Error('paella.userTracking.SaverPlugIn#log must be overridden by subclass'); + } +} + +paella.userTracking.SaverPlugIn = SaverPlugIn; + + +var evsentsToLog = {}; + +paella.userTracking.log = function(event, params) { + if (evsentsToLog[event] != undefined) { + evsentsToLog[event].cancel(); + } + evsentsToLog[event] = new base.Timer(function(timer) { + userTrackingManager._plugins.forEach(function(p) { + p.log(event, params); + }); + delete evsentsToLog[event]; + }, 500); +}; + + + +////////////////////////////////////////////////////////// +// Log automatic events +////////////////////////////////////////////////////////// +// Log simple events +[ + paella.events.play, + paella.events.pause, + paella.events.endVideo, + paella.events.showEditor, + paella.events.hideEditor, + paella.events.enterFullscreen, + paella.events.exitFullscreen, + paella.events.loadComplete +].forEach(function(event){ + paella.events.bind(event, function(ev, params) { + paella.userTracking.log(event); + }); +}); + +// Log show/hide PopUp +[ + paella.events.showPopUp, + paella.events.hidePopUp] +.forEach(function(event){ + paella.events.bind(event, function(ev, params) { + paella.userTracking.log(event, params.identifier); + }); +}); + +// Log captions Events +[ + // paella.events.captionAdded, + paella.events.captionsEnabled, + paella.events.captionsDisabled +].forEach(function(event){ + paella.events.bind(event, function(ev, params) { + var log; + if (params != undefined) { + var c = paella.captions.getCaptions(params); + log = {id: params, lang: c._lang, url: c._url}; + } + paella.userTracking.log(event, log); + }); +}); + +// Log setProfile +[ + paella.events.setProfile +].forEach(function(event){ + paella.events.bind(event, function(ev, params) { + paella.userTracking.log(event, params.profileName); + }); +}); + + +// Log seek events +[ + paella.events.seekTo, + paella.events.seekToTime +].forEach(function(event){ + paella.events.bind(event, function(ev, params) { + var log; + try { + JSON.stringify(params); + log = params; + } + catch(e) {} + + paella.userTracking.log(event, log); + }); +}); + + +// Log param events +[ + paella.events.setVolume, + paella.events.resize, + paella.events.setPlaybackRate, + paella.events.qualityChanged +].forEach(function(event){ + paella.events.bind(event, function(ev, params) { + var log; + try { + JSON.stringify(params); + log = params; + } + catch(e) {} + + paella.userTracking.log(event, log); + }); +}); + + +}()); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + + +(() => { + +class TimeControl extends paella.DomNode { + constructor(id) { + super('div',id,{left:"0%"}); + this.domElement.className = 'timeControlOld'; + this.domElement.className = 'timeControl'; + //this.domElement.innerText = "0:00:00"; + var thisClass = this; + paella.events.bind(paella.events.timeupdate,function(event,params) { thisClass.onTimeUpdate(params); }); + } + + onTimeUpdate(memo) { + this.domElement.innerText = this.secondsToHours(parseInt(memo.currentTime)); + } + + secondsToHours(sec_numb) { + var hours = Math.floor(sec_numb / 3600); + var minutes = Math.floor((sec_numb - (hours * 3600)) / 60); + var seconds = sec_numb - (hours * 3600) - (minutes * 60); + + if (hours < 10) {hours = "0"+hours;} + if (minutes < 10) {minutes = "0"+minutes;} + if (seconds < 10) {seconds = "0"+seconds;} + return hours + ':' + minutes + ':' + seconds; + } +} + +paella.TimeControl = TimeControl; + +class PlaybackBar extends paella.DomNode { + + constructor(id) { + var style = {}; + super('div',id,style); + + this.playbackFullId = ''; + this.updatePlayBar = true; + this.timeControlId = ''; + this._images = null; + this._keys = null; + this._prev = null; + this._next = null; + this._videoLength = null; + this._lastSrc = null; + this._aspectRatio = 1.777777778; + this._hasSlides = null; + this._imgNode = null; + this._canvas = null; + + this.domElement.className = "playbackBar"; + this.domElement.setAttribute("alt", ""); + //this.domElement.setAttribute("title", "Timeline Slider"); + this.domElement.setAttribute("aria-label", "Timeline Slider"); + this.domElement.setAttribute("role", "slider"); + this.domElement.setAttribute("aria-valuemin", "0"); + this.domElement.setAttribute("aria-valuemax", "100"); + this.domElement.setAttribute("aria-valuenow", "0"); + this.domElement.setAttribute("tabindex", "1100"); + $(this.domElement).keyup((event) => { + var currentTime = 0; + var duration = 0; + paella.player.videoContainer.currentTime() + .then((t) => { + currentTime = t; + return paella.player.videoContainer.duration(); + }) + + .then((d) => { + duration = d; + var curr, selectedPosition; + switch(event.keyCode) { + case 37: //Left + curr = 100*currentTime/duration; + selectedPosition = curr - 5; + paella.player.videoContainer.seekTo(selectedPosition); + break; + case 39: //Right + curr = 100*currentTime/duration; + selectedPosition = curr + 5; + paella.player.videoContainer.seekTo(selectedPosition); + break; + } + }); + }); + + this.playbackFullId = id + "_full"; + this.timeControlId = id + "_timeControl"; + var playbackFull = new paella.DomNode('div',this.playbackFullId,{width:'0%'}); + playbackFull.domElement.className = "playbackBarFull"; + this.addNode(playbackFull); + this.addNode(new paella.TimeControl(this.timeControlId)); + var thisClass = this; + paella.events.bind(paella.events.timeupdate,function(event,params) { thisClass.onTimeUpdate(params); }); + $(this.domElement).bind('mousedown',function(event) { + paella.utils.mouseManager.down(thisClass,event); event.stopPropagation(); + }); + $(playbackFull.domElement).bind('mousedown',function(event) { + paella.utils.mouseManager.down(thisClass,event); event.stopPropagation(); + }); + if (!base.userAgent.browser.IsMobileVersion) { + $(this.domElement).bind('mousemove',function(event) { + thisClass.movePassive(event); paella.utils.mouseManager.move(event); + }); + $(playbackFull.domElement).bind('mousemove',function(event) { + paella.utils.mouseManager.move(event); + }); + $(this.domElement).bind("mouseout",function(event) { + thisClass.mouseOut(event); + }); + } + + this.domElement.addEventListener('touchstart',(event) => { + paella.utils.mouseManager.down(thisClass,event); event.stopPropagation(); + }, false); + this.domElement.addEventListener('touchmove',(event) => { + thisClass.movePassive(event); + paella.utils.mouseManager.move(event); + }, false); + this.domElement.addEventListener('touchend',(event) => { + paella.utils.mouseManager.up(event); + }, false); + + $(this.domElement).bind('mouseup',function(event) { + paella.utils.mouseManager.up(event); + }); + $(playbackFull.domElement).bind('mouseup',function(event) { + paella.utils.mouseManager.up(event); + }); + + if (paella.player.isLiveStream()) { + $(this.domElement).hide(); + } + + paella.events.bind(paella.events.seekAvailabilityChanged, (e,data) => { + if (data.type!=paella.SeekType.DISABLED) { + $(playbackFull.domElement).removeClass("disabled"); + } + else { + $(playbackFull.domElement).addClass("disabled"); + } + }); + } + + mouseOut(event){ + if(this._hasSlides) { + $("#divTimeImageOverlay").remove(); + } + else { + $("#divTimeOverlay").remove(); + } + } + + drawTimeMarks(){ + let trimming = {}; + paella.player.videoContainer.trimming() + .then((t) => { + trimming = t; + return this.imageSetup(); + }) + + .then(() => { + // Updated duration value. The duration may change during playback, because it's + // possible to set the trimming during playback (for instance, using a plugin) + let duration = trimming.enabled ? trimming.end - trimming.start : this._videoLength; + let parent = $("#playerContainer_controls_playback_playbackBar"); + this.clearCanvas(); + if (this._keys && paella.player.config.player.slidesMarks.enabled) { + this._keys.forEach((l) => { + let timeInstant = parseInt(l) - trimming.start; + if (timeInstant>0) { + var aux = (timeInstant * parent.width()) / this._videoLength; // conversion to canvas + this.drawTimeMark(aux); + } + }); + } + }); + } + + drawTimeMark(sec){ + var ht = 12; //default height value + var ctx = this.getCanvasContext(); + ctx.fillStyle = paella.player.config.player.slidesMarks.color; + ctx.fillRect(sec,0,1,ht); + } + + clearCanvas() { + if (this._canvas) { + var ctx = this.getCanvasContext(); + ctx.clearRect(0, 0, this._canvas.width, this._canvas.height); + } + } + + getCanvas(){ + if (!this._canvas) { + var parent = $("#playerContainer_controls_playback_playbackBar"); + var canvas = document.createElement("canvas"); + canvas.className = "playerContainer_controls_playback_playbackBar_canvas"; + canvas.id = ("playerContainer_controls_playback_playbackBar_canvas"); + canvas.width = parent.width(); + var ht = canvas.height = parent.height(); + parent.prepend(canvas); + this._canvas = document.getElementById("playerContainer_controls_playback_playbackBar_canvas"); + } + return this._canvas; + } + + getCanvasContext(){ + return this.getCanvas().getContext("2d"); + } + + movePassive(event){ + var This = this; + + function updateTimePreview(duration,trimming) { + // CONTROLS_BAR POSITON + var p = $(This.domElement); + var pos = p.offset(); + + var width = p.width(); + var left = (event.clientX-pos.left); + left = (left < 0) ? 0 : left; + var position = left * 100 / width; // GET % OF THE STREAM + + var time = position * duration / 100; + if (trimming.enabled) { + time += trimming.start; + } + + var hou = Math.floor((time - trimming.start) / 3600)%24; + hou = ("00"+hou).slice(hou.toString().length); + + var min = Math.floor((time - trimming.start) / 60)%60; + min = ("00"+min).slice(min.toString().length); + + var sec = Math.floor((time - trimming.start)%60); + sec = ("00"+sec).slice(sec.toString().length); + + var timestr = (hou+":"+min+":"+sec); + + // CREATING THE OVERLAY + if(This._hasSlides) { + if($("#divTimeImageOverlay").length == 0) + This.setupTimeImageOverlay(timestr,pos.top,width); + else { + $("#divTimeOverlay")[0].innerText = timestr; //IF CREATED, UPDATE TIME AND IMAGE + } + + // CALL IMAGEUPDATE + This.imageUpdate(time); + } + else { + if($("#divTimeOverlay").length == 0) { + This.setupTimeOnly(timestr,pos.top,width); + } + else { + $("#divTimeOverlay")[0].innerText = timestr; + } + } + + // UPDATE POSITION IMAGE OVERLAY + if (This._hasSlides) { + var ancho = $("#divTimeImageOverlay").width(); + var posx = event.clientX-(ancho/2); + if(event.clientX > (ancho/2 + pos.left) && event.clientX < (pos.left+width - ancho/2) ) { // LEFT + $("#divTimeImageOverlay").css("left",posx); // CENTER THE DIV HOVER THE MOUSE + } + else if(event.clientX < width / 2) + $("#divTimeImageOverlay").css("left",pos.left); + else + $("#divTimeImageOverlay").css("left",pos.left + width - ancho); + } + + // UPDATE POSITION TIME OVERLAY + var ancho2 = $("#divTimeOverlay").width(); + var posx2 = event.clientX-(ancho2/2); + if(event.clientX > ancho2/2 + pos.left && event.clientX < (pos.left+width - ancho2/2) ){ + $("#divTimeOverlay").css("left",posx2); // CENTER THE DIV HOVER THE MOUSE + } + else if(event.clientX < width / 2) + $("#divTimeOverlay").css("left",pos.left); + else + $("#divTimeOverlay").css("left",pos.left + width - ancho2-2); + + if(This._hasSlides) { + $("#divTimeImageOverlay").css("bottom",$('.playbackControls').height()); + } + } + + paella.player.videoContainer.duration() + let duration = 0; + paella.player.videoContainer.duration() + .then(function(d) { + duration = d; + return paella.player.videoContainer.trimming(); + }) + .then(function(trimming) { + updateTimePreview(duration,trimming); + }); + } + + imageSetup(){ + return new Promise((resolve) => { + paella.player.videoContainer.duration() + .then((duration) => { + // BRING THE IMAGE ARRAY TO LOCAL + this._images = {}; + var n = paella.initDelegate.initParams.videoLoader.frameList; + + if( !n || Object.keys(n).length === 0) { + this._hasSlides = false; + return; + } + else { + this._hasSlides = true; + } + + + this._images = n; // COPY TO LOCAL + this._videoLength = duration; + + // SORT KEYS FOR SEARCH CLOSEST + this._keys = Object.keys(this._images); + this._keys = this._keys.sort(function(a, b){return parseInt(a)-parseInt(b);}); // SORT FRAME NUMBERS STRINGS + + //NEXT + this._next = 0; + this._prev = 0; + + resolve(); + }); + }); + } + + imageUpdate(sec){ + var src = $("#imgOverlay").attr('src'); + $(this._imgNode).show(); + if(sec > this._next || sec < this._prev) { + src = this.getPreviewImageSrc(sec); + if (src) { + this._lastSrc = src; + $( "#imgOverlay" ).attr('src', src); // UPDATING IMAGE + } + else { + this.hideImg(); + } + } // RELOAD IF OUT OF INTERVAL + else { + if(src!=undefined) { + return; + } + else { + $( "#imgOverlay" ).attr('src', this._lastSrc); + }// KEEP LAST IMAGE + } + } + + hideImg() { + $(this._imgNode).hide(); + } + + getPreviewImageSrc(sec){ + var keys = Object.keys(this._images); + + keys.push(sec); + + keys.sort(function(a,b){ + return parseInt(a)-parseInt(b); + }); + + var n = keys.indexOf(sec)-1; + n = (n > 0) ? n : 0; + + var i = keys[n]; + + var next = keys[n+2]; + var prev = keys[n]; + + next = (next==undefined) ? keys.length-1 : parseInt(next); + this._next = next; + + prev = (prev==undefined) ? 0 : parseInt(prev); + this._prev = prev; + + i=parseInt(i); + if(this._images[i]){ + return this._images[i].url || this._images[i].url; + } + else return false; + } + + setupTimeImageOverlay(time_str,top,width){ + var div = document.createElement("div"); + div.className = "divTimeImageOverlay"; + div.id = ("divTimeImageOverlay"); + + var aux = Math.round(width/10); + div.style.width = Math.round(aux*self._aspectRatio)+"px"; //KEEP ASPECT RATIO 4:3 + //div.style.height = Math.round(aux)+"px"; + + if (this._hasSlides) { + var img = document.createElement("img"); + img.className = "imgOverlay"; + img.id = "imgOverlay"; + this._imgNode = img; + + div.appendChild(img); + } + + + var div2 = document.createElement("div"); + div2.className = "divTimeOverlay"; + div2.style.top = (top-20)+"px"; + div2.id = ("divTimeOverlay"); + div2.innerText = time_str; + + div.appendChild(div2); + + //CHILD OF CONTROLS_BAR + $(this.domElement).parent().append(div); + } + + setupTimeOnly(time_str,top,width){ + var div2 = document.createElement("div"); + div2.className = "divTimeOverlay"; + div2.style.top = (top-20)+"px"; + div2.id = ("divTimeOverlay"); + div2.innerText = time_str; + + //CHILD OF CONTROLS_BAR + $(this.domElement).parent().append(div2); + } + + playbackFull() { + return this.getNode(this.playbackFullId); + } + + timeControl() { + return this.getNode(this.timeControlId); + } + + setPlaybackPosition(percent) { + this.playbackFull().domElement.style.width = percent + '%'; + } + + isSeeking() { + return !this.updatePlayBar; + } + + onTimeUpdate(memo) { + if (this.updatePlayBar) { + var currentTime = memo.currentTime; + var duration = memo.duration; + this.setPlaybackPosition(currentTime * 100 / duration); + } + } + + down(event,x,y) { + this.updatePlayBar = false; + this.move(event,x,y); + } + + move(event,x,y) { + var width = $(this.domElement).width(); + var selectedPosition = x - $(this.domElement).offset().left; // pixels + if (selectedPosition<0) { + selectedPosition = 0; + } + else if (selectedPosition>width) { + selectedPosition = 100; + } + else { + selectedPosition = selectedPosition * 100 / width; // percent + } + this.setPlaybackPosition(selectedPosition); + } + + up(event,x,y) { + var width = $(this.domElement).width(); + var selectedPosition = x - $(this.domElement).offset().left; // pixels + if (selectedPosition<0) { + selectedPosition = 0; + } + else if (selectedPosition>width) { + selectedPosition = 100; + } + else { + selectedPosition = selectedPosition * 100 / width; // percent + } + paella.player.videoContainer.seekTo(selectedPosition); + this.updatePlayBar = true; + } + + onresize() { + let playbackBar = $("#playerContainer_controls_playback_playbackBar"); + this.getCanvas().width = playbackBar.width(); + this.drawTimeMarks(); + } +} + +paella.PlaybackBar = PlaybackBar; + +class PlaybackControl extends paella.DomNode { + + addPlugin(plugin) { + var id = 'buttonPlugin' + this.buttonPlugins.length; + this.buttonPlugins.push(plugin); + var button = paella.ButtonPlugin.BuildPluginButton(plugin,id); + button.plugin = plugin; + let expand = paella.ButtonPlugin.BuildPluginExpand(plugin,id); + plugin.button = button; + plugin._expandElement = expand; + this.pluginsContainer.domElement.appendChild(button); + if (expand) { + let This = this; + $(button).mouseover(function(evt) { + evt.target.plugin.expand(); + This._expandedPlugin = evt.target.plugin; + }); + this.pluginsContainer.domElement.appendChild(expand); + } + $(button).hide(); + plugin.checkEnabled((isEnabled) => { + var parent; + if (isEnabled) { + $(plugin.button).show(); + paella.pluginManager.setupPlugin(plugin); + + var id = 'buttonPlugin' + this.buttonPlugins.length; + if (plugin.getButtonType()==paella.ButtonPlugin.type.popUpButton) { + parent = this.popUpPluginContainer.domElement; + var popUpContent = paella.ButtonPlugin.BuildPluginPopUp(parent,plugin,id + '_container'); + this.popUpPluginContainer.registerContainer(plugin.getName(),popUpContent,button,plugin); + } + else if (plugin.getButtonType()==paella.ButtonPlugin.type.timeLineButton) { + parent = this.timeLinePluginContainer.domElement; + var timeLineContent = paella.ButtonPlugin.BuildPluginPopUp(parent, plugin,id + '_timeline'); + this.timeLinePluginContainer.registerContainer(plugin.getName(),timeLineContent,button,plugin); + } + } + else { + this.pluginsContainer.domElement.removeChild(plugin.button); + } + }); + } + + constructor(id) { + var style = {}; + super('div',id,style); + + this.playbackBarId = ''; + this.pluginsContainer = null; + this._popUpPluginContainer = null; + this._timeLinePluginContainer = null; + this.playbackPluginsWidth = 0; + this.popupPluginsWidth = 0; + this.minPlaybackBarSize = 120; + this.playbackBarInstance = null; + this.buttonPlugins = []; + + + this.domElement.className = 'playbackControls'; + this.playbackBarId = id + '_playbackBar'; + + var thisClass = this; + this.pluginsContainer = new paella.DomNode('div',id + '_playbackBarPlugins'); + this.pluginsContainer.domElement.className = 'playbackBarPlugins'; + this.pluginsContainer.domElement.setAttribute("role", "toolbar"); + this.addNode(this.pluginsContainer); + + this.addNode(new paella.PlaybackBar(this.playbackBarId)); + + paella.pluginManager.setTarget('button',this); + + $(window).mousemove((evt) => { + if (this._expandedPlugin && ($(window).height() - evt.clientY)> 50) { + this._expandedPlugin.contract(); + this._expandPlugin = null; + } + }); + } + + get popUpPluginContainer() { + if (!this._popUpPluginContainer) { + this._popUpPluginContainer = new paella.PopUpContainer(this.identifier + '_popUpPluginContainer','popUpPluginContainer'); + this.addNode(this._popUpPluginContainer); + } + return this._popUpPluginContainer; + } + + get timeLinePluginContainer() { + if (!this._timeLinePluginContainer) { + this._timeLinePluginContainer = new paella.TimelineContainer(this.identifier + '_timelinePluginContainer','timelinePluginContainer'); + this.addNode(this._timeLinePluginContainer); + } + return this._timeLinePluginContainer; + } + + showPopUp(identifier,button) { + this.popUpPluginContainer.showContainer(identifier,button); + this.timeLinePluginContainer.showContainer(identifier,button); + } + + hidePopUp(identifier,button) { + this.popUpPluginContainer.hideContainer(identifier,button); + this.timeLinePluginContainer.hideContainer(identifier,button); + } + + playbackBar() { + if (this.playbackBarInstance==null) { + this.playbackBarInstance = this.getNode(this.playbackBarId); + } + return this.playbackBarInstance; + } + + onresize() { + var windowSize = $(this.domElement).width(); + base.log.debug("resize playback bar (width=" + windowSize + ")"); + + for (var i=0;i<this.buttonPlugins.length;++i) { + var plugin = this.buttonPlugins[i]; + var minSize = plugin.getMinWindowSize(); + if (minSize > 0 && windowSize < minSize) { + plugin.hideUI(); + } + else { + plugin.checkVisibility(); + } + } + + this.getNode(this.playbackBarId).onresize(); + } +} + +paella.PlaybackControl = PlaybackControl; + +class ControlsContainer extends paella.DomNode { + addPlugin(plugin) { + var id = 'videoOverlayButtonPlugin' + this.buttonPlugins.length; + this.buttonPlugins.push(plugin); + var button = paella.ButtonPlugin.BuildPluginButton(plugin,id); + this.videoOverlayButtons.domElement.appendChild(button); + plugin.button = button; + $(button).hide(); + plugin.checkEnabled(function(isEnabled) { + if (isEnabled) { + $(plugin.button).show(); + paella.pluginManager.setupPlugin(plugin); + } + }); + } + + constructor(id) { + super('div',id); + + this.playbackControlId = ''; + this.editControlId = ''; + this.isEnabled = true; + this.autohideTimer = null; + this.hideControlsTimeMillis = 3000; + this.playbackControlInstance = null; + this.videoOverlayButtons = null; + this.buttonPlugins = []; + this._hidden = false; + this._over = false; + + this.viewControlId = id + '_view'; + this.playbackControlId = id + '_playback'; + this.editControlId = id + '_editor'; + this.addNode(new paella.PlaybackControl(this.playbackControlId)); + var thisClass = this; + paella.events.bind(paella.events.showEditor,function(event) { thisClass.onShowEditor(); }); + paella.events.bind(paella.events.hideEditor,function(event) { thisClass.onHideEditor(); }); + + paella.events.bind(paella.events.play,function(event) { thisClass.onPlayEvent(); }); + paella.events.bind(paella.events.pause,function(event) { thisClass.onPauseEvent(); }); + $(document).mousemove(function(event) { + paella.player.controls.restartHideTimer(); + }); + + $(this.domElement).bind("mousemove",function(event) { thisClass._over = true; }); + $(this.domElement).bind("mouseout",function(event) { thisClass._over = false; }); + + paella.events.bind(paella.events.endVideo,function(event) { thisClass.onEndVideoEvent(); }); + paella.events.bind('keydown',function(event) { thisClass.onKeyEvent(); }); + + this.videoOverlayButtons = new paella.DomNode('div',id + '_videoOverlayButtonPlugins'); + this.videoOverlayButtons.domElement.className = 'videoOverlayButtonPlugins'; + this.videoOverlayButtons.domElement.setAttribute("role", "toolbar"); + this.addNode(this.videoOverlayButtons); + + paella.pluginManager.setTarget('videoOverlayButton',this); + } + + onShowEditor() { + var editControl = this.editControl(); + if (editControl) $(editControl.domElement).hide(); + } + + onHideEditor() { + var editControl = this.editControl(); + if (editControl) $(editControl.domElement).show(); + } + + enterEditMode() { + var playbackControl = this.playbackControl(); + var editControl = this.editControl(); + if (playbackControl && editControl) { + $(playbackControl.domElement).hide(); + } + } + + exitEditMode() { + var playbackControl = this.playbackControl(); + var editControl = this.editControl(); + if (playbackControl && editControl) { + $(playbackControl.domElement).show(); + } + } + + playbackControl() { + if (this.playbackControlInstance==null) { + this.playbackControlInstance = this.getNode(this.playbackControlId); + } + return this.playbackControlInstance; + } + + editControl() { + return this.getNode(this.editControlId); + } + + disable() { + this.isEnabled = false; + this.hide(); + } + + enable() { + this.isEnabled = true; + this.show(); + } + + isHidden() { + return this._hidden; + } + + hide() { + var This = this; + this._doHide = true; + + function hideIfNotCanceled() { + if (This._doHide) { + $(This.domElement).css({opacity:0.0}); + $(This.domElement).hide(); + This.domElement.setAttribute('aria-hidden', 'true'); + This._hidden = true; + paella.events.trigger(paella.events.controlBarDidHide); + } + } + + paella.events.trigger(paella.events.controlBarWillHide); + if (this._doHide) { + if (!base.userAgent.browser.IsMobileVersion && !base.userAgent.browser.Explorer) { + $(this.domElement).animate({opacity:0.0},{duration:300, complete: hideIfNotCanceled}); + } + else { + hideIfNotCanceled(); + } + } + } + + showPopUp(identifier) { + this.playbackControl().showPopUp(identifier); + } + + hidePopUp(identifier) { + this.playbackControl().hidePopUp(identifier); + } + + show() { + if (this.isEnabled) { + $(this.domElement).stop(); + this._doHide = false; + this.domElement.style.opacity = 1.0; + this.domElement.setAttribute('aria-hidden', 'false'); + this._hidden = false; + $(this.domElement).show(); + paella.events.trigger(paella.events.controlBarDidShow); + } + } + + autohideTimeout() { + var playbackBar = this.playbackControl().playbackBar(); + if (playbackBar.isSeeking() || this._over) { + paella.player.controls.restartHideTimer(); + } + else { + paella.player.controls.hideControls(); + } + } + + hideControls() { + paella.player.videoContainer.paused() + .then((paused) => { + if (!paused) { + this.hide(); + } + else { + this.show(); + } + }); + } + + showControls() { + this.show(); + } + + onPlayEvent() { + this.restartHideTimer(); + } + + onPauseEvent() { + this.clearAutohideTimer(); + } + + onEndVideoEvent() { + this.show(); + this.clearAutohideTimer(); + } + + onKeyEvent() { + this.restartHideTimer(); + paella.player.videoContainer.paused() + .then(function(paused) { + if (!paused) { + paella.player.controls.restartHideTimer(); + } + }); + } + + cancelHideBar() { + this.restartTimerEvent(); + } + + restartTimerEvent() { + if (this.isHidden()){ + this.showControls(); + } + this._doHide = false; + paella.player.videoContainer.paused((paused) => { + if (!paused) { + this.restartHideTimer(); + } + }); + } + + clearAutohideTimer() { + if (this.autohideTimer!=null) { + this.autohideTimer.cancel(); + this.autohideTimer = null; + } + } + + restartHideTimer() { + this.showControls(); + this.clearAutohideTimer(); + var thisClass = this; + this.autohideTimer = new base.Timer(function(timer) { + thisClass.autohideTimeout(); + },this.hideControlsTimeMillis); + } + + onresize() { + this.playbackControl().onresize(); + } +} + +paella.ControlsContainer = ControlsContainer; + + +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(function() { + + class LoaderContainer extends paella.DomNode { + + constructor(id) { + super('div',id,{position:'fixed',backgroundColor:'white',opacity:'0.7',top:'0px',left:'0px',right:'0px',bottom:'0px',zIndex:10000}); + this.timer = null; + this.loader = null; + this.loaderPosition = 0; + + this.loader = this.addNode(new paella.DomNode('i','',{ + width: "100px", + height: "100px", + color: "black", + display: "block", + marginLeft: "auto", + marginRight: "auto", + marginTop: "32%", + fontSize: "100px", + })); + this.loader.domElement.className = "icon-spinner"; + + paella.events.bind(paella.events.loadComplete,(event,params) => { this.loadComplete(params); }); + this.timer = new base.Timer((timer) => { + //thisClass.loaderPosition -= 128; + + //thisClass.loader.domElement.style.backgroundPosition = thisClass.loaderPosition + 'px'; + this.loader.domElement.style.transform = `rotate(${ this.loaderPosition }deg`; + this.loaderPosition+=45; + },250); + this.timer.repeat = true; + } + + loadComplete(params) { + $(this.domElement).hide(); + this.timer.repeat = false; + } + } + + paella.LoaderContainer = LoaderContainer; + + paella.Keys = { + Space:32, + Left:37, + Up:38, + Right:39, + Down:40, + A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90 + }; + + class KeyPlugin extends paella.FastLoadPlugin { + get type() { return 'keyboard'; } + + onKeyPress(key) { + console.log(key); + return false; + } + } + + paella.KeyPlugin = KeyPlugin; + + let g_keyboardEventSet = false; + class KeyManager { + get isPlaying() { return this._isPlaying; } + set isPlaying(p) { this._isPlaying = p; } + + get enabled() { return this._enabled!==undefined ? this._enabled : true; } + set enabled(e) { this._enabled = e; } + + constructor() { + this._isPlaying = false; + var thisClass = this; + paella.events.bind(paella.events.loadComplete,function(event,params) { thisClass.loadComplete(event,params); }); + paella.events.bind(paella.events.play,function(event) { thisClass.onPlay(); }); + paella.events.bind(paella.events.pause,function(event) { thisClass.onPause(); }); + + paella.pluginManager.setTarget('keyboard',this); + + this._pluginList = []; + + } + + addPlugin(plugin) { + if (plugin.checkEnabled((e) => { + this._pluginList.push(plugin); + plugin.setup(); + })); + } + + loadComplete(event,params) { + if (g_keyboardEventSet) { + return; + } + paella.events.bind("keyup",(event) => { + this.keyUp(event); + }); + g_keyboardEventSet = true; + } + + onPlay() { + this.isPlaying = true; + } + + onPause() { + this.isPlaying = false; + } + + keyUp(event) { + if (!this.enabled) return; + + this._pluginList.some((plugin) => { + return plugin.onKeyPress(event); + }); + } + } + + paella.keyManager = new KeyManager(); + +})(); + + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + + class VideoLoader { + constructor() { + this.metadata = { // Video metadata + title:"", + duration:0 + }; + this.streams = []; // {sources:{mp4:{src:"videourl.mp4",type:"video/mp4"}, + // ogg:{src:"videourl.ogv",type:"video/ogg"}, + // webm:{src:"videourl.webm",type:"video/webm"}, + // flv:{src:"videourl.flv",type:"video/x-flv"}, + // rtmp:{src:"rtmp://server.com/endpoint/url.loquesea",type="video/mp4 | video/x-flv"}, + // image:{frames:{frame_1:'frame_1.jpg',...frame_n:'frame_n.jpg'},duration:183}, + // preview:'video_preview.jpg'} + this.frameList = []; // frameList[timeInstant] = { id:"frame_id", mimetype:"image/jpg", time:timeInstant, url:"image_url"} + + this.loadStatus = false; + this.codecStatus = false; + } + + getMetadata() { + return this.metadata; + } + + getVideoId() { + return paella.initDelegate.getId(); + } + + getVideoUrl() { + // This function must to return the base video URL + return ""; + } + + getDataUrl() { + // This function must to return the location of the video data file + } + + loadVideo(onSuccess) { + // This function must to: + // - load this.streams and this.frameList + // - Check streams compatibility using this.isStreamCompatible(streamIndex) + // - Set this.loadStatus = true if load is Ok, or false if something gone wrong + // - Set this.codecStatus = true if the browser can reproduce all streams + // - Call onSuccess() + onSuccess(); + } + } + + paella.VideoLoader = VideoLoader; + + class AccessControl { + canRead() { + return paella_DeferredResolved(true); + } + + canWrite() { + return paella_DeferredResolved(false); + } + + userData() { + return paella_DeferredResolved({ + username: 'anonymous', + name: 'Anonymous', + avatar: paella.utils.folders.resources() + '/images/default_avatar.png', + isAnonymous: true + }); + } + + getAuthenticationUrl(callbackParams) { + var authCallback = this._authParams.authCallbackName && window[this._authParams.authCallbackName]; + if (!authCallback && paella.player.config.auth) { + authCallback = paella.player.config.auth.authCallbackName && window[paella.player.config.auth.authCallbackName]; + } + + if (typeof(authCallback)=="function") { + return authCallback(callbackParams); + } + return ""; + } + } + + paella.AccessControl = AccessControl; + + class PlayerBase { + + checkCompatibility() { + let message = ""; + if (base.parameters.get('ignoreBrowserCheck')) { + return true; + } + if (base.userAgent.browser.IsMobileVersion) return true; + let isCompatible = base.userAgent.browser.Chrome || + base.userAgent.browser.Safari || + base.userAgent.browser.Firefox || + base.userAgent.browser.Opera || + base.userAgent.browser.Edge || + (base.userAgent.browser.Explorer && base.userAgent.browser.Version.major>=9); + if (isCompatible) { + return true; + } + else { + var errorMessage = base.dictionary.translate("It seems that your browser is not HTML 5 compatible"); + paella.events.trigger(paella.events.error,{error:errorMessage}); + message = errorMessage + '<div style="display:block;width:470px;height:140px;margin-left:auto;margin-right:auto;font-family:Verdana,sans-sherif;font-size:12px;"><a href="http://www.google.es/chrome" style="color:#004488;float:left;margin-right:20px;"><img src="'+paella.utils.folders.resources()+'images/chrome.png" style="width:80px;height:80px" alt="Google Chrome"></img><p>Google Chrome</p></a><a href="http://windows.microsoft.com/en-US/internet-explorer/products/ie/home" style="color:#004488;float:left;margin-right:20px;"><img src="'+paella.utils.folders.resources()+'images/explorer.png" style="width:80px;height:80px" alt="Internet Explorer 9"></img><p>Internet Explorer 9</p></a><a href="http://www.apple.com/safari/" style="float:left;margin-right:20px;color:#004488"><img src="'+paella.utils.folders.resources()+'images/safari.png" style="width:80px;height:80px" alt="Safari"></img><p>Safari 5</p></a><a href="http://www.mozilla.org/firefox/" style="float:left;color:#004488"><img src="'+paella.utils.folders.resources()+'images/firefox.png" style="width:80px;height:80px" alt="Firefox"></img><p>Firefox 12</p></a></div>'; + message += '<div style="margin-top:30px;"><a id="ignoreBrowserCheckLink" href="#" onclick="window.location = window.location + \'&ignoreBrowserCheck=true\'">' + base.dictionary.translate("Continue anyway") + '</a></div>'; + paella.messageBox.showError(message,{height:'40%'}); + } + return false; + } + + constructor(playerId) { + this.config = null; + this.playerId = ''; + this.mainContainer = null; + this.videoContainer = null; + this.controls = null; + this.accessControl = null; + + if (base.parameters.get('log') != undefined) { + var log = 0; + switch(base.parameters.get('log')) { + case "error": + log = base.Log.kLevelError; + break; + case "warn": + log = base.Log.kLevelWarning; + break; + case "debug": + log = base.Log.kLevelDebug; + break; + case "log": + case "true": + log = base.Log.kLevelLog; + break; + } + base.log.setLevel(log); + } + + if (!this.checkCompatibility()) { + base.log.debug('It seems that your browser is not HTML 5 compatible'); + } + else { + paella.player = this; + this.playerId = playerId; + this.mainContainer = $('#' + this.playerId)[0]; + var thisClass = this; + paella.events.bind(paella.events.loadComplete,function(event,params) { thisClass.loadComplete(event,params); }); + } + } + + get repoUrl() { return paella.player.videoLoader._url || paella.player.config.standalone && paella.player.config.standalone.repository; } + get videoUrl() { return paella.player.videoLoader.getVideoUrl(); } + get dataUrl() { return paella.player.videoLoader.getDataUrl(); } + get videoId() { return paella.initDelegate.getId(); } + + loadComplete(event,params) { + + } + + get auth() { + return { + login: function(redirect) { + redirect = redirect || window.location.href; + var url = paella.initDelegate.initParams.accessControl.getAuthenticationUrl(redirect); + if (url) { + window.location.href = url; + } + }, + + // The following functions returns promises + canRead:function() { + return paella.initDelegate.initParams.accessControl.canRead(); + }, + + canWrite:function() { + return paella.initDelegate.initParams.accessControl.canWrite(); + }, + + userData:function() { + return paella.initDelegate.initParams.accessControl.userData(); + } + } + } + } + + paella.PlayerBase = PlayerBase; + + class InitDelegate { + get initParams() { + if (!this._initParams) { + this._initParams = { + configUrl:paella.baseUrl + 'config/config.json', + dictionaryUrl:paella.baseUrl + 'localization/paella', + accessControl:null, + videoLoader:null, + + // Other parameters set externally: + // config: json containing the configuration file + // loadConfig: function(defaultConfigUrl). Returns a promise with the config.json data + // url: attribute. Contains the repository base URL + // videoUrl: function. Returns the base URL of the video (example: baseUrl + videoID) + // dataUrl: function. Returns the full URL to get the data.json file + // loadVideo: Function. Returns a promise with the data.json file content + }; + } + return this._initParams; + } + + constructor(params) { + if (arguments.length==2) { + this._config = arguments[0]; + } + + if (params) { + for (var key in params) { + this.initParams[key] = params[key]; + } + } + + if (!this.initParams.getId) { + this.initParams.getId = function() { + return base.parameters.get('id') || "noid"; + } + } + } + + getId() { + return this.initParams.getId(); + } + + loadDictionary() { + return new Promise((resolve) => { + base.ajax.get({ url:this.initParams.dictionaryUrl + "_" + base.dictionary.currentLanguage() + '.json' }, function(data,type,returnCode) { + base.dictionary.addDictionary(data); + resolve(data); + }, + function(data,type,returnCode) { + resolve(); + }); + }); + } + + loadConfig() { + let loadAccessControl = (data) => { + var AccessControlClass = Class.fromString(data.player.accessControlClass || "paella.AccessControl"); + this.initParams.accessControl = new AccessControlClass(); + }; + + if (this.initParams.config) { + return new Promise((resolve) => { + loadAccessControl(this.initParams.config); + resolve(this.initParams.config); + }) + } + else if (this.initParams.loadConfig) { + return new Promise((resolve,reject) => { + this.initParams.loadConfig(this.initParams.configUrl) + .then((data) => { + loadAccessControl(data); + resolve(data); + }) + .catch((err) => { + reject(err); + }); + }) + } + else { + return new Promise((resolve,reject) => { + var configUrl = this.initParams.configUrl; + var params = {}; + params.url = configUrl; + base.ajax.get(params,(data,type,returnCode) => { + try { + data = JSON.parse(data); + } + catch(e) {} + loadAccessControl(data); + resolve(data); + }, + function(data,type,returnCode) { + paella.messageBox.showError(base.dictionary.translate("Error! Config file not found. Please configure paella!")); + //onSuccess({}); + }); + }); + } + } + } + + paella.InitDelegate = InitDelegate; + + window.paellaPlayer = null; + paella.plugins = {}; + paella.plugins.events = {}; + paella.initDelegate = null; + +})(); + + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + class PaellaPlayer extends paella.PlayerBase { + + getPlayerMode() { + if (paella.player.isFullScreen()) { + return paella.PaellaPlayer.mode.fullscreen; + } + else if (window.self !== window.top) { + return paella.PaellaPlayer.mode.embed + } + + return paella.PaellaPlayer.mode.standard; + } + + + checkFullScreenCapability() { + var fs = document.getElementById(paella.player.mainContainer.id); + if ((fs.webkitRequestFullScreen) || (fs.mozRequestFullScreen) || (fs.msRequestFullscreen) || (fs.requestFullScreen)) { + return true; + } + if (base.userAgent.browser.IsMobileVersion && paella.player.videoContainer.isMonostream) { + return true; + } + return false; + } + + addFullScreenListeners() { + var thisClass = this; + + var onFullScreenChangeEvent = function() { + setTimeout(function() { + paella.pluginManager.checkPluginsVisibility(); + }, 1000); + + var fs = document.getElementById(paella.player.mainContainer.id); + + if (paella.player.isFullScreen()) { + fs.style.width = '100%'; + fs.style.height = '100%'; + } + else { + fs.style.width = ''; + fs.style.height = ''; + } + + if (thisClass.isFullScreen()) { + paella.events.trigger(paella.events.enterFullscreen); + } + else{ + paella.events.trigger(paella.events.exitFullscreen); + } + }; + + if (!this.eventFullScreenListenerAdded) { + this.eventFullScreenListenerAdded = true; + document.addEventListener("fullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("webkitfullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("mozfullscreenchange", onFullScreenChangeEvent, false); + document.addEventListener("MSFullscreenChange", onFullScreenChangeEvent, false); + document.addEventListener("webkitendfullscreen", onFullScreenChangeEvent, false); + } + } + + isFullScreen() { + var webKitIsFullScreen = (document.webkitIsFullScreen === true); + var msIsFullScreen = (document.msFullscreenElement !== undefined && document.msFullscreenElement !== null); + var mozIsFullScreen = (document.mozFullScreen === true); + var stdIsFullScreen = (document.fullScreenElement !== undefined && document.fullScreenElement !== null); + + return (webKitIsFullScreen || msIsFullScreen || mozIsFullScreen || stdIsFullScreen); + } + + goFullScreen() { + if (!this.isFullScreen()) { + if (base.userAgent.system.iOS && + (paella.utils.userAgent.browser.Version.major<12 || + !paella.utils.userAgent.system.iPad)) + { + paella.player.videoContainer.masterVideo().goFullScreen(); + } + else { + var fs = document.getElementById(paella.player.mainContainer.id); + if (fs.webkitRequestFullScreen) { + fs.webkitRequestFullScreen(); + } + else if (fs.mozRequestFullScreen){ + fs.mozRequestFullScreen(); + } + else if (fs.msRequestFullscreen) { + fs.msRequestFullscreen(); + } + else if (fs.requestFullScreen) { + fs.requestFullScreen(); + } + } + } + } + + exitFullScreen() { + if (this.isFullScreen()) { + if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen(); + } + else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } + else if (document.msExitFullscreen()) { + document.msExitFullscreen(); + } + else if (document.cancelFullScreen) { + document.cancelFullScreen(); + } + } + } + + setProfile(profileName,animate) { + if (paella.profiles.setProfile(profileName,animate)) { + let profileData = paella.player.getProfile(profileName); + if (profileData && !paella.player.videoContainer.isMonostream) { + base.cookies.set('lastProfile', profileName); + } + paella.events.trigger(paella.events.setProfile,{profileName:profileName}); + } + } + + getProfile(profileName) { + return paella.profiles.getProfile(profileName); + } + + constructor(playerId) { + super(playerId); + + this.player = null; + + this.videoIdentifier = ''; + this.loader = null; + + // Video data: + this.videoData = null; + + // if initialization ok + if (this.playerId==playerId) { + this.loadPaellaPlayer(); + var thisClass = this; + } + } + + get selectedProfile(){ return paella.profiles.currentProfileName; } + + loadPaellaPlayer() { + var This = this; + this.loader = new paella.LoaderContainer('paellaPlayer_loader'); + $('body')[0].appendChild(this.loader.domElement); + paella.events.trigger(paella.events.loadStarted); + + paella.initDelegate.loadDictionary() + .then(function() { + return paella.initDelegate.loadConfig(); + }) + + .then(function(config) { + This.accessControl = paella.initDelegate.initParams.accessControl; + This.videoLoader = paella.initDelegate.initParams.videoLoader; + This.onLoadConfig(config); + if (config.skin) { + var skin = config.skin.default || 'dark'; + paella.utils.skin.restore(skin); + } + }); + } + + onLoadConfig(configData) { + paella.data = new paella.Data(configData); + paella.pluginManager.registerPlugins(); + + this.config = configData; + this.videoIdentifier = paella.initDelegate.getId(); + + if (this.videoIdentifier) { + if (this.mainContainer) { + this.videoContainer = new paella.VideoContainer(this.playerId + "_videoContainer"); + var videoQualityStrategy = new paella.BestFitVideoQualityStrategy(); + try { + var StrategyClass = this.config.player.videoQualityStrategy; + var ClassObject = Class.fromString(StrategyClass); + videoQualityStrategy = new ClassObject(); + } + catch(e) { + base.log.warning("Error selecting video quality strategy: strategy not found"); + } + this.videoContainer.setVideoQualityStrategy(videoQualityStrategy); + + this.mainContainer.appendChild(this.videoContainer.domElement); + } + $(window).resize(function(event) { paella.player.onresize(); }); + this.onload(); + } + + paella.pluginManager.loadPlugins("paella.FastLoadPlugin"); + } + + onload() { + var thisClass = this; + var ac = this.accessControl; + var canRead = false; + var userData = {}; + this.accessControl.canRead() + .then(function(c) { + canRead = c; + return thisClass.accessControl.userData(); + }) + + .then(function(d) { + userData = d; + if (canRead) { + thisClass.loadVideo(); + } + else if (userData.isAnonymous) { + var redirectUrl = paella.initDelegate.initParams.accessControl.getAuthenticationUrl("player/?id=" + paella.player.videoIdentifier); + var message = '<div>' + base.dictionary.translate("You are not authorized to view this resource") + '</div>'; + if (redirectUrl) { + message += '<div class="login-link"><a href="' + redirectUrl + '">' + base.dictionary.translate("Login") + '</a></div>'; + } + thisClass.unloadAll(message); + } + else { + let errorMessage = base.dictionary.translate("You are not authorized to view this resource"); + thisClass.unloadAll(errorMessage); + paella.events.trigger(paella.events.error,{error:errorMessage}); + } + }) + + .catch((error) => { + let errorMessage = base.dictionary.translate(error); + thisClass.unloadAll(errorMessage); + paella.events.trigger(paella.events.error,{error:errorMessage}); + }); + } + + onresize() { + this.videoContainer.onresize(); + if (this.controls) this.controls.onresize(); + + // Resize the layout profile + if (this.videoContainer.ready) { + var cookieProfile = paella.utils.cookies.get('lastProfile'); + if (cookieProfile) { + this.setProfile(cookieProfile,false); + } + else { + this.setProfile(paella.player.selectedProfile, false); + } + } + + paella.events.trigger(paella.events.resize,{width:$(this.videoContainer.domElement).width(), height:$(this.videoContainer.domElement).height()}); + } + + unloadAll(message) { + var loaderContainer = $('#paellaPlayer_loader')[0]; + this.mainContainer.innerText = ""; + paella.messageBox.showError(message); + } + + reloadVideos(masterQuality,slaveQuality) { + if (this.videoContainer) { + this.videoContainer.reloadVideos(masterQuality,slaveQuality); + this.onresize(); + } + } + + loadVideo() { + if (this.videoIdentifier) { + var This = this; + var loader = paella.player.videoLoader; + this.onresize(); + loader.loadVideo(() => { + var playOnLoad = false; + This.videoContainer.setStreamData(loader.streams) + .then(function() { + paella.events.trigger(paella.events.loadComplete); + This.addFullScreenListeners(); + This.onresize(); + // If the player has been loaded using lazyLoad, the video should be + // played as soon as it loads + if (This.videoContainer.autoplay() || g_lazyLoadInstance!=null) { + This.play(); + } + else if (loader.metadata.preview) { + This.lazyLoadContainer = new LazyThumbnailContainer(loader.metadata.preview); + document.body.appendChild(This.lazyLoadContainer.domElement); + } + }) + .catch((error) => { + console.log(error); + paella.messageBox.showError(base.dictionary.translate("Could not load the video")); + }); + }); + } + } + + showPlaybackBar() { + if (!this.controls) { + this.controls = new paella.ControlsContainer(this.playerId + '_controls'); + this.mainContainer.appendChild(this.controls.domElement); + this.controls.onresize(); + paella.events.trigger(paella.events.loadPlugins,{pluginManager:paella.pluginManager}); + + } + } + + isLiveStream() { + var loader = paella.initDelegate.initParams.videoLoader; + var checkSource = function(sources,index) { + if (sources.length>index) { + var source = sources[index]; + for (var key in source.sources) { + if (typeof(source.sources[key])=="object") { + for (var i=0; i<source.sources[key].length; ++i) { + var stream = source.sources[key][i]; + if (stream.isLiveStream) return true; + } + } + } + } + return false; + }; + return checkSource(loader.streams,0) || checkSource(loader.streams,1); + } + + loadPreviews() { + var streams = paella.initDelegate.initParams.videoLoader.streams; + var slavePreviewImg = null; + + var masterPreviewImg = streams[0].preview; + if (streams.length >=2) { + slavePreviewImg = streams[1].preview; + } + if (masterPreviewImg) { + var masterRect = paella.player.videoContainer.overlayContainer.getVideoRect(0); + this.masterPreviewElem = document.createElement('img'); + this.masterPreviewElem.src = masterPreviewImg; + paella.player.videoContainer.overlayContainer.addElement(this.masterPreviewElem,masterRect); + } + if (slavePreviewImg) { + var slaveRect = paella.player.videoContainer.overlayContainer.getVideoRect(1); + this.slavePreviewElem = document.createElement('img'); + this.slavePreviewElem.src = slavePreviewImg; + paella.player.videoContainer.overlayContainer.addElement(this.slavePreviewElem,slaveRect); + } + paella.events.bind(paella.events.timeUpdate,function(event) { + paella.player.unloadPreviews(); + }); + } + + unloadPreviews() { + if (this.masterPreviewElem) { + paella.player.videoContainer.overlayContainer.removeElement(this.masterPreviewElem); + this.masterPreviewElem = null; + } + if (this.slavePreviewElem) { + paella.player.videoContainer.overlayContainer.removeElement(this.slavePreviewElem); + this.slavePreviewElem = null; + } + } + + loadComplete(event,params) { + var thisClass = this; + + //var master = paella.player.videoContainer.masterVideo(); + + paella.pluginManager.loadPlugins("paella.EarlyLoadPlugin"); + if (paella.player.videoContainer._autoplay){ + this.play(); + } + } + + play() { + if (this.lazyLoadContainer) { + document.body.removeChild(this.lazyLoadContainer.domElement); + this.lazyLoadContainer = null; + } + return new Promise((resolve,reject) => { + this.videoContainer.play() + .then(() => { + if (!this.controls) { + this.showPlaybackBar(); + paella.events.trigger(paella.events.controlBarLoaded); + this.controls.onresize(); + } + resolve(); + }) + .catch((err) => { + reject(err); + }); + }); + } + + pause() { + return this.videoContainer.pause(); + } + + playing() { + return new Promise((resolve) => { + this.paused() + .then((p) => { + resolve(!p); + }); + }); + } + + paused() { + return this.videoContainer.paused(); + } + } + + paella.PaellaPlayer = PaellaPlayer; + window.PaellaPlayer = PaellaPlayer; + + paella.PaellaPlayer.mode = { + standard: 'standard', + fullscreen: 'fullscreen', + embed: 'embed' + }; + + class LazyThumbnailContainer extends paella.DomNode { + + static GetIconElement() { + let container = document.createElement('div'); + container.className = "play-button-on-screen"; + container.style.width = "100%"; + container.style.height = "100%"; + container.style.pointerEvents = "none"; + + let icon = document.createElement('div'); + icon['className'] = 'play-icon'; + container.appendChild(icon); + + return container; + } + + + constructor(src) { + super('img','lazyLoadThumbnailContainer',{}); + this.domElement.src = src; + this.domElement.alt = ""; + + this.container = LazyThumbnailContainer.GetIconElement(); + if (!paella.player.videoContainer) { + document.body.appendChild(this.container); + } + } + + setImage(url) { + this.domElement.src = url; + } + + onClick(closure) { + this.domElement.onclick = closure; + } + + destroyElements() { + document.body.removeChild(this.domElement); + document.body.removeChild(this.container); + } + } + + paella.LazyThumbnailContainer = LazyThumbnailContainer; + + + let g_lazyLoadInstance = null; + class PaellaPlayerLazy extends PaellaPlayer { + constructor(playerId,initDelegate) { + super(playerId,initDelegate); + g_lazyLoadInstance = this; + } + + set onPlay(closure) { + this._onPlayClosure = closure; + + } + + loadComplete(event,params) { + } + + onLoadConfig(configData) { + //paella.data = new paella.Data(configData); + + this.config = configData; + this.videoIdentifier = paella.initDelegate.getId(); + + if (this.videoIdentifier) { + $(window).resize(function(event) { paella.player.onresize(); }); + this.onload(); + } + } + + loadVideo() { + if (this.videoIdentifier) { + var This = this; + var loader = paella.player.videoLoader; + this.onresize(); + loader.loadVideo(() => { + if (!loader.metadata.preview) { + paella.load(this.playerId,paella.loaderFunctionParams); + g_lazyLoadInstance = null; // Lazy load is disabled when the video has no preview + } + else { + this.lazyLoadContainer = new LazyThumbnailContainer(loader.metadata.preview); + document.body.appendChild(this.lazyLoadContainer.domElement); + this.lazyLoadContainer.onClick(() => { + this.lazyLoadContainer.destroyElements(); + this.lazyLoadContainer = null; + this._onPlayClosure && this._onPlayClosure(); + }); + paella.events.trigger(paella.events.loadComplete); + } + }); + } + } + + onresize() {} + } + + paella.PaellaPlayerLazy = PaellaPlayerLazy; + + /* Initializer function */ + window.initPaellaEngage = function(playerId,initDelegate) { + if (!initDelegate) { + initDelegate = new paella.InitDelegate(); + } + paella.initDelegate = initDelegate; + paellaPlayer = new PaellaPlayer(playerId,paella.initDelegate); + } +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + +// Default Video Loader +// +class DefaultVideoLoader extends paella.VideoLoader { + + constructor(data) { + super(data); + this._url = null; + if (typeof(data)=="object") { + this._data = data; + } + else { + try { + this._data = JSON.parse(data); + } + catch (e) { + this._url = data; + } + } + } + + getVideoUrl() { + if (paella.initDelegate.initParams.videoUrl) { + return typeof(paella.initDelegate.initParams.videoUrl)=="function" ? + paella.initDelegate.initParams.videoUrl() : + paella.initDelegate.initParams.videoUrl; + } + else { + let url = this._url || (paella.player.config.standalone && paella.player.config.standalone.repository) || ''; + return (/\/$/.test(url) ? url:url + '/') + paella.initDelegate.getId() + '/'; + } + } + + getDataUrl() { + if (paella.initDelegate.initParams.dataUrl) { + return typeof(paella.initDelegate.initParams.dataUrl)=='function' ? + paella.initDelegate.initParams.dataUrl() : + paella.initDelegate.initParams.dataUrl; + } + else { + return this.getVideoUrl() + 'data.json'; + } + } + + loadVideo(onSuccess) { + let loadVideoDelegate = paella.initDelegate.initParams.loadVideo; + let url = this._url || this.getDataUrl(); + + if (this._data) { + this.loadVideoData(this._data, onSuccess); + } + else if (loadVideoDelegate) { + loadVideoDelegate().then((data) => { + this._data = data; + this.loadVideoData(this._data, onSuccess); + }); + } + else if (url) { + var This = this; + base.ajax.get({ url:this.getDataUrl() }, + function(data,type,err) { + if (typeof(data)=="string") { + try { + data = JSON.parse(data); + } + catch(e) {} + } + This._data = data; + This.loadVideoData(This._data,onSuccess); + }, + function(data,type,err) { + switch (err) { + case 401: + paella.messageBox.showError(base.dictionary.translate("You are not logged in")); + break; + case 403: + paella.messageBox.showError(base.dictionary.translate("You are not authorized to view this resource")); + break; + case 404: + paella.messageBox.showError(base.dictionary.translate("The specified video identifier does not exist")); + break; + default: + paella.messageBox.showError(base.dictionary.translate("Could not load the video")); + } + }); + } + } + + loadVideoData(data,onSuccess) { + var This = this; + if (data.metadata) { + this.metadata = data.metadata; + } + + if (data.streams) { + data.streams.forEach(function(stream) { + This.loadStream(stream); + }); + } + if (data.frameList) { + this.loadFrameData(data); + } + if (data.captions) { + this.loadCaptions(data.captions); + } + if (data.blackboard) { + this.loadBlackboard(data.streams[0],data.blackboard); + } + this.streams = data.streams; + this.frameList = data.frameList; + this.loadStatus = this.streams.length>0; + onSuccess(); + } + + loadFrameData(data) { + var This = this; + if (data.frameList && data.frameList.forEach) { + var newFrames = {}; + data.frameList.forEach(function(frame) { + if (! /^[a-zA-Z]+:\/\//.test(frame.url) && !/^data:/.test(frame.url)) { + frame.url = This.getVideoUrl() + frame.url; + } + if (frame.thumb && ! /^[a-zA-Z]+:\/\//.test(frame.thumb) && !/^data:/.test(frame.thumb)) { + frame.thumb = This.getVideoUrl() + frame.thumb; + } + var id = frame.time; + newFrames[id] = frame; + + }); + data.frameList = newFrames; + } + } + + loadStream(stream) { + var This=this; + if (stream.preview && ! /^[a-zA-Z]+:\/\//.test(stream.preview) && !/^data:/.test(stream.preview)) { + stream.preview = This.getVideoUrl() + stream.preview; + } + + if (!stream.sources) { + return; + } + + if (stream.sources.image) { + stream.sources.image.forEach(function(image) { + if (image.frames.forEach) { + var newFrames = {}; + image.frames.forEach(function(frame) { + if (frame.src && ! /^[a-zA-Z]+:\/\//.test(frame.src) && !/^data:/.test(frame.src)) { + frame.src = This.getVideoUrl() + frame.src; + } + if (frame.thumb && ! /^[a-zA-Z]+:\/\//.test(frame.thumb) && !/^data:/.test(frame.thumb)) { + frame.thumb = This.getVideoUrl() + frame.thumb; + } + var id = "frame_" + frame.time; + newFrames[id] = frame.src; + }); + image.frames = newFrames; + } + }); + } + for (var type in stream.sources) { + if (stream.sources[type]) { + if (type != 'image') { + var source = stream.sources[type]; + source.forEach(function (sourceItem) { + var pattern = /^[a-zA-Z\:]+\:\/\//gi; + if (typeof(sourceItem.src)=="string") { + if(sourceItem.src.match(pattern) == null){ + sourceItem.src = This.getVideoUrl() + sourceItem.src; + } + } + sourceItem.type = sourceItem.mimetype; + }); + } + } + else { + delete stream.sources[type]; + } + } + } + + loadCaptions(captions) { + if (captions) { + for (var i=0; i<captions.length; ++i) { + var url = captions[i].url; + + if (! /^[a-zA-Z]+:\/\//.test(url)) { + url = this.getVideoUrl() + url; + } + var c = new paella.captions.Caption(i, captions[i].format, url, {code: captions[i].lang, txt: captions[i].text}); + paella.captions.addCaptions(c); + } + } + } + + loadBlackboard(stream, blackboard) { + var This = this; + if (!stream.sources.image) { + stream.sources.image = []; + } + var imageObject = { + count: blackboard.frames.length, + duration: blackboard.duration, + mimetype: blackboard.mimetype, + res: blackboard.res, + frames: {} + }; + + blackboard.frames.forEach(function(frame) { + var id = "frame_" + Math.round(frame.time); + if (!/^[a-zA-Z]+:\/\//.test(frame.src)) { + frame.src = This.getVideoUrl() + frame.src; + } + imageObject.frames[id] = frame.src; + }); + + stream.sources.image.push(imageObject); + } +} + +paella.DefaultVideoLoader = DefaultVideoLoader; + +class DefaultInitDelegate extends paella.InitDelegate { +} + +paella.DefaultInitDelegate = DefaultInitDelegate; + +function getManifestFromParameters(params) { + let master = null; + if (master = paella.utils.parameters.get('video')) { + let slave = paella.utils.parameters.get('videoSlave'); + slave = slave && decodeURIComponent(slave); + let masterPreview = paella.utils.parameters.get('preview'); + masterPreview = masterPreview && decodeURIComponent(masterPreview); + let slavePreview = paella.utils.parameters.get('previewSlave'); + slavePreview = slavePreview && decodeURIComponent(slavePreview); + let title = paella.utils.parameters.get('preview') || "Untitled Video"; + + let data = { + metadata: { + title: title + }, + streams: [ + { + sources: { + mp4: [ + { + src:decodeURIComponent(master), + mimetype:"video/mp4", + res:{ w:0, h:0 } + } + ] + }, + preview:masterPreview + } + ] + } + + if (slave) { + data.streams.push({ + sources: { + mp4: [ + { + src:slave, + mimetype:"video/mp4", + res:{ w:0, h:0 } + } + ] + }, + preview:slavePreview + }); + } + + return data; + } + return null; +} + +/* + * playerContainer Player DOM container id + * params.configUrl Url to the config json file + * params.config Use this configuration file + * params.data Paella video data schema + * params.url Repository URL + */ +paella.load = function(playerContainer, params) { + paella.loaderFunctionParams = params; + var auth = (params && params.auth) || {}; + + // Build custom init data using url parameters + let data = getManifestFromParameters(params); + if (data) { + params.data = data; + } + + var initObjects = params; + initObjects.videoLoader = new paella.DefaultVideoLoader(params.data || params.url); + + paella.initDelegate = new paella.DefaultInitDelegate(initObjects); + new PaellaPlayer(playerContainer,paella.initDelegate); +}; + +/* + * playerContainer Player DOM container id + * params.configUrl Url to the config json file + * params.config Use this configuration file + * params.data Paella video data schema + * params.url Repository URL + * forceLazyLoad Use lazyLoad even if your browser does not allow automatic playback of the video + */ +paella.lazyLoad = function(playerContainer, params, forceLazyLoad = true) { + paella.loaderFunctionParams = params; + var auth = (params && params.auth) || {}; + + // Check autoplay. If autoplay is enabled, this function must call paella.load() + paella.Html5Video.IsAutoplaySupported() + .then((supported) => { + if (supported || forceLazyLoad) { + // Build custom init data using url parameters + let data = getManifestFromParameters(params); + if (data) { + params.data = data; + } + + var initObjects = params; + initObjects.videoLoader = new paella.DefaultVideoLoader(params.data || params.url); + + paella.initDelegate = new paella.DefaultInitDelegate(initObjects); + let lazyLoad = new paella.PaellaPlayerLazy(playerContainer,paella.initDelegate); + lazyLoad.onPlay = () => { + $('#' + playerContainer).innerHTML = ""; + paella.load(playerContainer,params); + }; + } + else { + paella.load(playerContainer,params); + } + }); +} + +})(); + + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +(() => { + + class RightBarPlugin extends paella.DeferredLoadPlugin { + get type() { return 'rightBarPlugin'; } + getName() { return "es.upv.paella.RightBarPlugin"; } + + buildContent(domElement) {} + } + + paella.RightBarPlugin = RightBarPlugin; + + class TabBarPlugin extends paella.DeferredLoadPlugin { + get type() { return 'tabBarPlugin'; } + getName() { return "es.upv.paella.TabBarPlugin"; } + + getTabName() { + return "New Tab"; + } + + action(tab) { + } + + buildContent(domElement) { + } + + setToolTip(message) { + this.button.setAttribute("title", message); + this.button.setAttribute("aria-label", message); + } + + getDefaultToolTip() { + return ""; + } + } + + paella.TabBarPlugin = TabBarPlugin; + + + class ExtendedAdapter { + + constructor() { + this.rightContainer = null; + this.bottomContainer = null; + this.rightBarPlugins = []; + this.tabBarPlugins = []; + this.currentTabIndex = 0; + this.bottomContainerTabs = null; + this.bottomContainerContent = null; + + this.rightContainer = document.createElement('div'); + //this.rightContainer.id = this.settings.rightContainerId; + this.rightContainer.className = "rightPluginContainer"; + + this.bottomContainer = document.createElement('div'); + //this.bottomContainer.id = this.settings.bottomContainerId; + this.bottomContainer.className = "tabsPluginContainer"; + + var tabs = document.createElement('div'); + //tabs.id = 'bottomContainer_tabs'; + tabs.className = 'tabsLabelContainer'; + this.bottomContainerTabs = tabs; + this.bottomContainer.appendChild(tabs); + + var bottomContent = document.createElement('div'); + //bottomContent.id = 'bottomContainer_content'; + bottomContent.className = 'tabsContentContainer'; + this.bottomContainerContent = bottomContent; + this.bottomContainer.appendChild(bottomContent); + + + this.initPlugins(); + } + + initPlugins() { + paella.pluginManager.setTarget('rightBarPlugin', this); + paella.pluginManager.setTarget('tabBarPlugin', this); + } + + addPlugin(plugin) { + var thisClass = this; + plugin.checkEnabled(function(isEnabled) { + if (isEnabled) { + paella.pluginManager.setupPlugin(plugin); + if (plugin.type=='rightBarPlugin') { + thisClass.rightBarPlugins.push(plugin); + thisClass.addRightBarPlugin(plugin); + } + if (plugin.type=='tabBarPlugin') { + thisClass.tabBarPlugins.push(plugin); + thisClass.addTabPlugin(plugin); + } + } + }); + } + + showTab(tabIndex) { + var i =0; + var labels = this.bottomContainer.getElementsByClassName("tabLabel"); + var contents = this.bottomContainer.getElementsByClassName("tabContent"); + + for (i=0; i < labels.length; ++i) { + if (labels[i].getAttribute("tab") == tabIndex) { + labels[i].className = "tabLabel enabled"; + } + else { + labels[i].className = "tabLabel disabled"; + } + } + + for (i=0; i < contents.length; ++i) { + if (contents[i].getAttribute("tab") == tabIndex) { + contents[i].className = "tabContent enabled"; + } + else { + contents[i].className = "tabContent disabled"; + } + } + } + + addTabPlugin(plugin) { + var thisClass = this; + var tabIndex = this.currentTabIndex; + + // Add tab + var tabItem = document.createElement('div'); + tabItem.setAttribute("tab", tabIndex); + tabItem.className = "tabLabel disabled"; + tabItem.innerText = plugin.getTabName(); + tabItem.plugin = plugin; + $(tabItem).click(function(event) { if (/disabled/.test(this.className)) { thisClass.showTab(tabIndex); this.plugin.action(this); } }); + $(tabItem).keyup(function(event) { + if (event.keyCode == 13) { + if (/disabledTabItem/.test(this.className)) { thisClass.showTab(tabIndex); this.plugin.action(this); } + } + }); + this.bottomContainerTabs.appendChild(tabItem); + + // Add tab content + var tabContent = document.createElement('div'); + tabContent.setAttribute("tab", tabIndex); + tabContent.className = "tabContent disabled " + plugin.getSubclass(); + this.bottomContainerContent.appendChild(tabContent); + plugin.buildContent(tabContent); + + plugin.button = tabItem; + plugin.container = tabContent; + + plugin.button.setAttribute("tabindex", 3000+plugin.getIndex()); + plugin.button.setAttribute("alt", ""); + plugin.setToolTip(plugin.getDefaultToolTip()); + + + // Show tab + if (this.firstTabShown===undefined) { + this.showTab(tabIndex); + this.firstTabShown = true; + } + ++this.currentTabIndex; + } + + addRightBarPlugin(plugin) { + var container = document.createElement('div'); + container.className = "rightBarPluginContainer " + plugin.getSubclass(); + this.rightContainer.appendChild(container); + plugin.buildContent(container); + } + } + + paella.ExtendedAdapter = ExtendedAdapter; + + + paella.extendedAdapter = new paella.ExtendedAdapter(); +})(); + +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +/* +Class ("paella.editor.EmbedPlayer", base.AsyncLoaderCallback,{ + editar:null, + + initialize:function() { + this.editor = paella.editor.instance; + }, + + load:function(onSuccess,onError) { + var barHeight = this.editor.bottomBar.getHeight() + 20; + var rightBarWidth = this.editor.rightBar.getWidth() + 20; + $(paella.player.mainContainer).css({ + 'position':'fixed', + "width":"", + "bottom":barHeight + "px", + "right":rightBarWidth + "px", + "left":"20px", + "top":"20px" + }); + paella.player.mainContainer.className = "paellaMainContainerEditorMode"; + new Timer(function(timer) { + paella.player.controls.disable(); + paella.player.onresize(); + if (onSuccess) { + onSuccess(); + } + },500); + }, + + restorePlayer:function() { + $('body')[0].appendChild(paella.player.mainContainer); + paella.player.controls.enable(); + paella.player.mainContainer.className = ""; + $(paella.player.mainContainer).css({ + 'position':'', + "width":"", + "bottom":"", + "left":"", + "right":"", + "top":"" + }); + paella.player.onresize(); + }, + + onresize:function() { + var barHeight = this.editor.bottomBar.getHeight() + 20; + var rightBarWidth = this.editor.rightBar.getWidth() + 20; + $(paella.player.mainContainer).css({ + 'position':'fixed', + "width":"", + "bottom":barHeight + "px", + "right":rightBarWidth + "px", + "left":"20px", + "top":"20px" + }); + + } +}); + +*/ +/* + Paella HTML 5 Multistream Player + Copyright (C) 2017 Universitat Politècnica de València Licensed under the + Educational Community License, Version 2.0 (the "License"); you may + not use this file except in compliance with the License. You may + obtain a copy of the License at + + http://www.osedu.org/licenses/ECL-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an "AS IS" + BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + or implied. See the License for the specific language governing + permissions and limitations under the License. +*/ + +/////////////////////////////////////////////////////// +// Deprecated functions/objects +// +// Will be removed in next paella version. +/////////////////////////////////////////////////////// + + +function DeprecatedClass(name, replacedBy, p) { + Class (name, p, { + initialize: function() { + base.log.warning(name + " is deprecated, use " + replacedBy + " instead."); + this.parent.apply(this, arguments); + } + }); +} + +function DeprecatedFunc(name, replacedBy, func) { + function ret(){ + base.log.warning(name + " is deprecated, use " + replacedBy + " instead."); + func.apply(this, arguments); + } + + return ret; +} + +// Pella Dictionary +/////////////////////////////////////////////////////// +DeprecatedClass("paella.Dictionary", "base.Dictionary", base.Dictionary); +paella.dictionary = base.dictionary; + +// Paella AsyncLoader +/////////////////////////////////////////////////////// +DeprecatedClass("paella.AsyncLoaderCallback", "base.AsyncLoaderCallback", base.AsyncLoaderCallback); +DeprecatedClass("paella.AjaxCallback", "base.AjaxCallback", base.AjaxCallback); +DeprecatedClass("paella.JSONCallback", "base.JSONCallback", base.JSONCallback); +DeprecatedClass("paella.DictionaryCallback", "base.DictionaryCallback", base.DictionaryCallback); +DeprecatedClass("paella.AsyncLoader", "base.AsyncLoader", base.AsyncLoader); + +// Paella Timer +/////////////////////////////////////////////////////// +DeprecatedClass("paella.Timer", "base.Timer", base.Timer); +DeprecatedClass("paella.utils.Timer", "base.Timer", base.Timer); + + +// Paella Ajax +/////////////////////////////////////////////////////// +paella.ajax = {}; +paella.ajax['send'] = DeprecatedFunc("paella.ajax.send", "base.ajax.send", base.ajax.send); +paella.ajax['get'] = DeprecatedFunc("paella.ajax.get", "base.ajax.get", base.ajax.get); +paella.ajax['put'] = DeprecatedFunc("paella.ajax.put", "base.ajax.put", base.ajax.put); +paella.ajax['post'] = DeprecatedFunc("paella.ajax.post", "base.ajax.post", base.ajax.post); +paella.ajax['delete'] = DeprecatedFunc("paella.ajax.delete", "base.ajax.delete", base.ajax.send); + + + +// Paella UI +/////////////////////////////////////////////////////// +paella.ui = {}; + +paella.ui.Container = function(params) { + var elem = document.createElement('div'); + if (params.id) elem.id = params.id; + if (params.className) elem.className = params.className; + if (params.style) $(elem).css(params.style); + return elem; +}; + + + + +// paella.utils +/////////////////////////////////////////////////////// +paella.utils.ajax = base.ajax; +paella.utils.cookies = base.cookies; +paella.utils.parameters = base.parameters; +paella.utils.require = base.require; +paella.utils.importStylesheet = base.importStylesheet; +paella.utils.language = base.dictionary.currentLanguage; +paella.utils.uuid = base.uuid; +paella.utils.userAgent = base.userAgent; + + + + +// paella.debug +/////////////////////////////////////////////////////// +paella.debug = { + log:function(msg) { + base.log.warning("paella.debug.log is deprecated, use base.debug.[error/warning/debug/log] instead."); + base.log.log(msg); + } +}; + +paella.debugReady = true; +paella.addPlugin(function() { + class FlexSkipPlugin extends paella.ButtonPlugin { + getAlignment() { return 'left'; } + getName() { return "edu.harvard.dce.paella.flexSkipPlugin"; } + getIndex() { return 121; } + getSubclass() { return 'flexSkip_Rewind_10'; } + getIconClass() { return 'icon-back-10-s'; } + formatMessage() { return 'Rewind 10 seconds'; } + getDefaultToolTip() { return base.dictionary.translate(this.formatMessage()); } + + checkEnabled(onSuccess) { + onSuccess(!paella.player.isLiveStream()); + } + + action(button) { + paella.player.videoContainer.currentTime() + .then(function(currentTime) { + paella.player.videoContainer.seekToTime(currentTime - 10); + }); + } + } + + paella.plugins.FlexSkipPlugin = FlexSkipPlugin; + + return FlexSkipPlugin; +}); + +paella.addPlugin(function() { + + return class FlexSkipForwardPlugin extends paella.plugins.FlexSkipPlugin { + getIndex() { return 122; } + getName() { return "edu.harvard.dce.paella.flexSkipForwardPlugin"; } + getSubclass() { return 'flexSkip_Forward_30'; } + getIconClass() { return 'icon-forward-30-s'; } + formatMessage() { return 'Forward 30 seconds'; } + + action(button) { + paella.player.videoContainer.currentTime() + .then(function(currentTime) { + paella.player.videoContainer.seekToTime(currentTime + 30); + }); + } + } +}); + +paella.addPlugin(function () { + ///////////////////////////////////////////////// + // WebVTT Parser + ///////////////////////////////////////////////// + return class WebVTTParserPlugin extends paella.CaptionParserPlugIn { + get ext() { return ["vtt"] } + getName() { return "es.teltek.paella.captions.WebVTTParserPlugin"; } + + parse(content, lang, next) { + var captions = []; + var self = this; + var lls = content.split("\n"); + var c; + var id = 0; + var skip = false; + for (var idx = 0; idx < lls.length; ++idx) { + var ll = lls[idx].trim(); + if ((/^WEBVTT/.test(ll) && c === undefined) || ll.length === 0) { + continue; + } + if ((/^[0-9]+$/.test(ll) || /^[0-9]+ -/.test(ll)) && lls[idx - 1].trim().length === 0) { + continue; + } + if (/^NOTE/.test(ll) || /^STYLE/.test(ll)) { + skip = true; + continue; + } + if (/^(([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3} --> ([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3})/.test(ll)) { + skip = false; + if (c != undefined) { + captions.push(c); + id++; + } + c = { + id: id, + begin: self.parseTimeTextToSeg(ll.split("-->")[0]), + end: self.parseTimeTextToSeg(ll.split("-->")[1]), + } + continue; + } + if (c !== undefined && !skip) { + ll = ll.replace(/^- /, ""); + ll = ll.replace(/<[^>]*>/g, ""); + if (c.content === undefined) { + c.content = ll; + } else { + c.content += "\n" + ll; + } + } + } + captions.push(c); + if (captions.length > 0) { + next(false, captions); + } else { + next(true); + } + } + + parseTimeTextToSeg(ttime) { + var nseg = 0; + var factor = 1; + ttime = /(([0-9]+:)?[0-9]{2}:[0-9]{2}.[0-9]{3})/.exec(ttime); + var split = ttime[0].split(":"); + for (var i = split.length - 1; i >= 0; i--) { + factor = Math.pow(60, (split.length - 1 - i)); + nseg += split[i] * factor; + } + return nseg; + } + } +}) + +paella.addPlugin(function() { + return class xAPISaverPlugin extends paella.userTracking.SaverPlugIn { + getName() {return "es.teltek.paella.usertracking.xAPISaverPlugin";} + + setup(){ + this.endpoint = this.config.endpoint; + this.auth = this.config.auth; + this.user_info = {} + this.paused = true + this.played_segments = "" + this.played_segments_segment_start = null + this.played_segments_segment_end = null + this.progress = 0 + this.duration = 0 + this.current_time = [] + this.completed = false + this.volume = null + this.speed = null + this.language = "us-US" + this.quality = null + this.fullscreen = false + this.title = "No title available" + this.description = "" + this.user_agent = "" + this.total_time = 0 + this.total_time_start = 0 + this.total_time_end = 0 + this.session_id = "" + + let self = this + this._loadDeps().then(function (){ + let conf = { + "endpoint" : self.endpoint, + "auth" : "Basic " + toBase64(self.auth) + }; + ADL.XAPIWrapper.changeConfig(conf); + }) + paella.events.bind(paella.events.timeUpdate, function(event,params){ + self.current_time.push(params.currentTime) + if (self.current_time.length >=10){ + self.current_time = self.current_time.slice(-10) + } + + var a = Math.round(self.current_time[0]) + var b = Math.round(self.current_time[9]) + + if ((params.currentTime !== 0) && (a + 1 >= b) && (b - 1 >= a)){ + self.progress = self.get_progress(params.currentTime, params.duration) + if (self.progress >= 0.95 && self.completed === false){ + self.completed = true + self.end_played_segment(params.currentTime) + self.start_played_segment(params.currentTime) + self.send_completed(params.currentTime, self.progress) + } + } + }) + } + + get_session_data(){ + var myparams = ADL.XAPIWrapper.searchParams(); + var agent = JSON.stringify({"mbox" : this.user_info.email}) + var timestamp = new Date() + timestamp.setDate(timestamp.getDate() - 1); + timestamp = timestamp.toISOString() + myparams['activity'] = window.location.href; + myparams['verb'] = 'http://adlnet.gov/expapi/verbs/terminated'; + myparams['since'] = timestamp + myparams['limit'] = 1; + myparams['agent'] = agent + var ret = ADL.XAPIWrapper.getStatements(myparams); + if (ret.statements.length === 1){ + this.played_segments = ret.statements[0].result.extensions['https://w3id.org/xapi/video/extensions/played-segments'] + this.progress = ret.statements[0].result.extensions['https://w3id.org/xapi/video/extensions/progress'] + ADL.XAPIWrapper.lrs.registration = ret.statements[0].context.registration + } + else{ + ADL.XAPIWrapper.lrs.registration = ADL.ruuid() + } + } + + getCookie(cname) { + var name = cname + "="; + var decodedCookie = decodeURIComponent(document.cookie); + var ca = decodedCookie.split(';'); + for(var i = 0; i <ca.length; i++) { + var c = ca[i]; + while (c.charAt(0) == ' ') { + c = c.substring(1); + } + if (c.indexOf(name) == 0) { + return c.substring(name.length, c.length); + } + } + return ""; + } + + setCookie(cname, cvalue, exdays) { + var d = new Date(); + d.setTime(d.getTime() + (exdays*24*60*60*1000)); + var expires = "expires="+ d.toUTCString(); + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; + } + + checkCookie(){ + var user_info = this.getCookie("user_info"); + if (user_info === "") { + user_info = JSON.stringify(generateName()) + } + this.setCookie("user_info", user_info); + return JSON.parse(user_info) + } + + checkEnabled(onSuccess) { + this._url = this.config.url; + this._index = this.config.index || "paellaplayer"; + this._type = this.config.type || "usertracking"; + + onSuccess(true); + } + + _loadDeps() { + return new Promise((resolve,reject) => { + if (!window.$paella_mpd) { + require(['resources/deps/xapiwrapper.min.js'],function() { + require(['resources/deps/random_name_generator.js'],function() { + window.$paella_bg2e = true; + resolve(window.$paella_bg2e); + }); + }); + } + else { + defer.resolve(window.$paella_mpd); + } + }); + } + + log(event, params) { + var p = params; + let self = this + // console.log(event) + // console.log(params) + switch (event) { + //Retrieve initial parameters from player + case "paella:loadComplete": + this.user_agent = navigator.userAgent.toString(); + this.get_title() + this.get_description() + paella.player.videoContainer.duration().then(function(duration) { + return paella.player.videoContainer.streamProvider.mainAudioPlayer.volume() + .then(function(volume) { + return paella.player.videoContainer.getCurrentQuality().then(function(quality) { + return paella.player.auth.userData().then(function (user_info){ + self.duration = duration + self.volume = volume + self.speed = 1 + if (paella.player.videoContainer.streamProvider.mainAudioPlayer.stream.language){ + self.language = paella.player.videoContainer.streamProvider.mainAudioPlayer.stream.language.replace("_","-") + } + self.quality = quality.shortLabel() + + if (user_info.email && user_info.name){ + self.user_info = user_info + } + else{ + self.user_info = self.checkCookie() + } + + self.get_session_data() + + self.send_initialized() + }); + }); + }); + }); + window.onbeforeunload = function(e) { + if (!self.paused){ + self.send_pause(self) + } + //TODO Algunas veces se envia terminated antes que paused + self.send_terminated(self) + // var dialogText = 'Dialog text here'; + // e.returnValue = dialogText; + // window.onbeforeunload = null; + // return dialogText; + }; + break; + case "paella:play": + this.send_play(self) + break; + case "paella:pause": + this.send_pause(self) + break; + case "paella:seektotime": + this.send_seek(self, params) + break; + //Player options + case "paella:setVolume": + paella.player.videoContainer.currentTime() + .then(function(currentTime) { + var current_time = self.format_float(currentTime) + self.volume = params.master + //self.send_interacted(current_time, {"https://w3id.org/xapi/video/extensions/volume": params.master}) + var interacted = {"https://w3id.org/xapi/video/extensions/volume": self.format_float(params.master)} + self.send_interacted(current_time, interacted) + + }); + break; + case "paella:setplaybackrate": + paella.player.videoContainer.currentTime() + .then(function(currentTime) { + var current_time = self.format_float(currentTime) + self.speed = params.rate + var interacted = {"https://w3id.org/xapi/video/extensions/speed": params.rate + "x"} + self.send_interacted(current_time, interacted) + }) + break; + case "paella:qualityChanged": + paella.player.videoContainer.currentTime().then(function(currentTime) { + return paella.player.videoContainer.getCurrentQuality().then(function(quality) { + self.quality = quality.shortLabel() + var current_time = self.format_float(currentTime) + var interacted = {"https://w3id.org/xapi/video/extensions/quality": quality.shortLabel()} + self.send_interacted(current_time, interacted) + }) + }) + break; + case "paella:enterFullscreen": + case "paella:exitFullscreen": + paella.player.videoContainer.currentTime().then(function(currentTime) { + var current_time = self.format_float(currentTime) + self.fullscreen ? self.fullscreen = false : self.fullscreen = true + var interacted = {"https://w3id.org/xapi/video/extensions/full-screen": self.fullscreen} + self.send_interacted(current_time, interacted) + }) + break; + default: + break; + } + } + + send(params){ + var agent = new ADL.XAPIStatement.Agent(this.user_info.email, this.user_info.name) + var verb = new ADL.XAPIStatement.Verb(params.verb.id, params.verb.description) + var activity = new ADL.XAPIStatement.Activity(window.location.href, this.title, this.description) + activity.definition.type = "https://w3id.org/xapi/video/activity-type/video" + paella.player.videoContainer.streamProvider.mainAudioPlayer.volume().then(function(volume){}) + var statement = new ADL.XAPIStatement(agent, verb, activity) + statement.result = params.result + if (params.verb.id === "http://adlnet.gov/expapi/verbs/initialized"){ + statement.generateId() + this.session_id = statement.id + } + + + var ce_base = { + "https://w3id.org/xapi/video/extensions/session-id": this.session_id, + "https://w3id.org/xapi/video/extensions/length": Math.floor(this.duration), + "https://w3id.org/xapi/video/extensions/user-agent": this.user_agent + } + var ce_interactions = { + "https://w3id.org/xapi/video/extensions/volume": this.format_float(this.volume), + "https://w3id.org/xapi/video/extensions/speed": this.speed + "x", + "https://w3id.org/xapi/video/extensions/quality": this.quality, + "https://w3id.org/xapi/video/extensions/full-screen": this.fullscreen + } + var context_extensions = {} + if (params.interacted){ + context_extensions = $.extend({}, ce_base, params.interacted) + } + else{ + context_extensions = $.extend({}, ce_base, ce_interactions) + } + + statement.context = { + "language": this.language, + "extensions": context_extensions, + "contextActivities":{ + "category":[{ + "objectType":"Activity", + "id":"https://w3id.org/xapi/video" + }] + } + } + + // Dispatch the statement to the LRS + var result = ADL.XAPIWrapper.sendStatement(statement); + } + + send_initialized() { + var statement = { + "verb":{ + "id":"http://adlnet.gov/expapi/verbs/initialized", + "description":"initalized" + }, + } + this.send(statement) + } + + send_terminated(self) { + paella.player.videoContainer.currentTime() + .then(function(end_time) { + var statement = { + "verb":{ + "id":"http://adlnet.gov/expapi/verbs/terminated", + "description":"terminated" + }, + "result" : { + "extensions":{ + "https://w3id.org/xapi/video/extensions/time" : end_time, + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + } + self.send(statement) + }) + } + + send_play(self){ + this.paused = false + this.total_time_start = new Date().getTime() / 1000; + paella.player.videoContainer.currentTime() + .then(function(currentTime) { + var start_time = self.format_float(currentTime) + //When the video starts we force start_time to 0 + if (start_time <= 1){ + start_time = 0 + } + self.start_played_segment(start_time) + var statement = { + "verb":{ + "id":"https://w3id.org/xapi/video/verbs/played", + "description":"played" + }, + "result" : { + "extensions":{ + "https://w3id.org/xapi/video/extensions/time" : start_time + } + } + } + self.send(statement) + }); + } + + send_pause(self){ + this.paused = true + this.total_time_end = new Date().getTime() / 1000; + this.total_time += (this.total_time_end - this.total_time_start) + paella.player.videoContainer.currentTime().then(function(currentTime) { + //return paella.player.videoContainer.duration().then(function(duration) { + var end_time = self.format_float(currentTime) + //self.progress = self.get_progress(end_time, duration) + //If a video end, the player go to the video start and raise a pause event with currentTime = 0 + if (end_time === 0){ + end_time = self.duration + } + self.end_played_segment(end_time) + var statement = { + "verb":{ + "id":"https://w3id.org/xapi/video/verbs/paused", + "description":"paused" + }, + "result" : { + "extensions":{ + "https://w3id.org/xapi/video/extensions/time" : end_time, + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + } + self.send(statement) + }); + //}); + } + + send_seek(self, params){ + var seekedto = this.format_float(params.newPosition) + //FIXME Metodo para obtener el instante desde donde empieza el seek + var a = this.current_time.filter(function(value){ + return value <= seekedto -1 + }) + if (a.length === 0){ + a = this.current_time.filter(function(value){ + return value >= seekedto + 1 + }) + } + //In some cases, when you seek to the end of the video the array contains zeros at the end + var seekedfrom = a.filter(Number).pop() + this.current_time = [] + this.current_time.push(seekedto) + // Fin de FIXME + //If the video is paused it's not neccesary create a new segment, because the pause event already close a segment + self.progress = self.get_progress(seekedfrom, self.duration) + if (!this.paused){ + this.end_played_segment(seekedfrom) + this.start_played_segment(seekedto) + } + //paella.player.videoContainer.duration().then(function(duration) { + //var progress = self.get_progress(seekedfrom, duration) + + var statement = { + "verb":{ + "id":"https://w3id.org/xapi/video/verbs/seeked", + "description":"seeked" + }, + "result" : { + "extensions":{ + "https://w3id.org/xapi/video/extensions/time-from" : seekedfrom, + "https://w3id.org/xapi/video/extensions/time-to": seekedto, + // Aqui tambien deberiamos de enviar los segmentos reproducidos y el porcentaje + "https://w3id.org/xapi/video/extensions/progress": self.progress, + "https://w3id.org/xapi/video/extensions/played-segments": self.played_segments + } + } + } + self.send(statement) + //}) + } + + send_completed(time, progress){ + var statement = { + "verb":{ + "id":"http://adlnet.gov/xapi/verbs/completed", + "description":"completed" + }, + "result" : { + "completion": true, + "success": true, + "duration": "PT" + this.total_time +"S", + "extensions":{ + "https://w3id.org/xapi/video/extensions/time" : time, + "https://w3id.org/xapi/video/extensions/progress" : progress, + "https://w3id.org/xapi/video/extensions/played-segments": this.played_segments + } + } + } + this.send(statement) + } + + send_interacted(current_time, interacted){ + var statement = { + "verb":{ + "id":"http://adlnet.gov/expapi/verbs/interacted", + "description":"interacted" + }, + "result" : { + "extensions":{ + "https://w3id.org/xapi/video/extensions/time" : current_time + } + }, + "interacted" : interacted + } + this.send(statement) + } + + start_played_segment(start_time){ + this.played_segments_segment_start = start_time; + } + + end_played_segment(end_time){ + var arr; + arr = (this.played_segments === "")? []:this.played_segments.split("[,]"); + arr.push(this.played_segments_segment_start + "[.]" + end_time); + this.played_segments = arr.join("[,]"); + this.played_segments_segment_end = end_time; + //this.played_segments_segment_start = null; + } + + format_float(number){ + number = parseFloat(number) //Ensure that number is a float + return parseFloat(number.toFixed(3)) + } + + get_title(){ + if (paella.player.videoLoader.getMetadata().i18nTitle){ + this.title = paella.player.videoLoader.getMetadata().i18nTitle + } + else if (paella.player.videoLoader.getMetadata().title){ + this.title = paella.player.videoLoader.getMetadata().title + } + } + + get_description(){ + if (paella.player.videoLoader.getMetadata().i18nTitle){ + this.description = paella.player.videoLoader.getMetadata().i18nDescription + } + else { + this.description = paella.player.videoLoader.getMetadata().description + } + } + + get_progress(currentTime, duration){ + var arr, arr2; + + //get played segments array + arr = (this.played_segments === "")? []:this.played_segments.split("[,]"); + if(this.played_segments_segment_start != null){ + arr.push(this.played_segments_segment_start + "[.]" + currentTime); + } + + arr2 = []; + arr.forEach(function(v,i) { + arr2[i] = v.split("[.]"); + arr2[i][0] *= 1; + arr2[i][1] *= 1; + }); + + //sort the array + arr2.sort(function(a,b) { return a[0] - b[0];}); + + //normalize the segments + arr2.forEach(function(v,i) { + if(i > 0) { + if(arr2[i][0] < arr2[i-1][1]) { //overlapping segments: this segment's starting point is less than last segment's end point. + //console.log(arr2[i][0] + " < " + arr2[i-1][1] + " : " + arr2[i][0] +" = " +arr2[i-1][1] ); + arr2[i][0] = arr2[i-1][1]; + if(arr2[i][0] > arr2[i][1]) + arr2[i][1] = arr2[i][0]; + } + } + }); + + //calculate progress_length + var progress_length = 0; + arr2.forEach(function(v,i) { + if(v[1] > v[0]) + progress_length += v[1] - v[0]; + }); + + var progress = 1 * (progress_length / duration).toFixed(2); + return progress; + } +}}); + + +paella.addPlugin(function() { + return class SingleStreamProfilePlugin extends paella.EventDrivenPlugin { + getName() { + return "es.upv.paella.singleStreamProfilePlugin"; + } + + checkEnabled(onSuccess) { + let config = this.config; + config.videoSets.forEach((videoSet,index) => { + let validContent = videoSet.content + if (validContent.length==1) { + let streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach((v) => { + if (validContent.indexOf(v.content)!=-1) { + streamCount++ + } + }) + if (streamCount>=1) { + onSuccess(true); + paella.addProfile(() => { + return new Promise((resolve,reject) => { + resolve({ + id:videoSet.id, + name:{es:"Un stream"}, + hidden:false, + icon:videoSet.icon, + videos: [ + { + content:validContent[0], + rect:[ + { aspectRatio:"1/1",left:280,top:0,width:720,height:720 }, + { aspectRatio:"6/5",left:208,top:0,width:864,height:720 }, + { aspectRatio:"5/4",left:190,top:0,width:900,height:720 }, + { aspectRatio:"4/3",left:160,top:0,width:960,height:720 }, + { aspectRatio:"11/8",left:145,top:0,width:990,height:720 }, + { aspectRatio:"1.41/1",left:132,top:0,width:1015,height:720 }, + { aspectRatio:"1.43/1",left:125,top:0,width:1029,height:720 }, + { aspectRatio:"3/2",left:100,top:0,width:1080,height:720 }, + { aspectRatio:"16/10",left:64,top:0,width:1152,height:720 }, + { aspectRatio:"5/3",left:40,top:0,width:1200,height:720 }, + { aspectRatio:"16/9",left:0,top:0,width:1280,height:720 }, + { aspectRatio:"1.85/1",left:0,top:14,width:1280,height:692 }, + { aspectRatio:"2.35/1",left:0,top:87,width:1280,height:544 }, + { aspectRatio:"2.41/1",left:0,top:94,width:1280,height:531 }, + { aspectRatio:"2.76/1",left:0,top:128,width:1280,height:463 } + ], + visible:true, + layer:1 + } + ], + background:{content:"slide_professor_paella.jpg",zIndex:5,rect:{left:0,top:0,width:1280,height:720},visible:true,layer:0}, + logos:[{content:"paella_logo.png",zIndex:5,rect:{top:10,left:10,width:49,height:42}}], + buttons: [], + onApply: function() { + } + }) + }) + }); + } + else { + onSuccess(false) + } + } + }) + } + } +}) + +paella.addPlugin(function() { + return class DualStreamProfilePlugin extends paella.EventDrivenPlugin { + + getName() { + return "es.upv.paella.dualStreamProfilePlugin"; + } + + checkEnabled(onSuccess) { + let config = this.config; + config.videoSets.forEach((videoSet,index) => { + let validContent = videoSet.content + if (validContent.length==2) { + let streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach((v) => { + if (validContent.indexOf(v.content)!=-1) { + streamCount++ + } + }) + if (streamCount>=2) { + onSuccess(true) + paella.addProfile(() => { + return new Promise((resolve,reject) => { + resolve({ + id:videoSet.id, + name:{es:"Dos streams con posición dinámica"}, + hidden:false, + icon:videoSet.icon, + videos: [ + { + content:validContent[0], + rect:[ + {aspectRatio:"16/9",left:712,top:302,width:560,height:315}, + {aspectRatio:"16/10",left:712,top:267,width:560,height:350}, + {aspectRatio:"4/3",left:712,top:198,width:560,height:420}, + {aspectRatio:"5/3",left:712,top:281,width:560,height:336}, + {aspectRatio:"5/4",left:712,top:169,width:560,height:448} + ], + visible:true, + layer:1 + }, + { + content:validContent[1], + rect:[ + {aspectRatio:"16/9",left:10,top:225,width:695,height:390}, + {aspectRatio:"16/10",left:10,top:183,width:695,height:434}, + {aspectRatio:"4/3",left:10,top:96,width:695,height:521}, + {aspectRatio:"5/3",left:10,top:200,width:695,height:417}, + {aspectRatio:"5/4",left:10,top:62,width:695,height:556} + ], + visible:true, + layer:"1" + } + ], + background:{content:"slide_professor_paella.jpg",zIndex:5,rect:{left:0,top:0,width:1280,height:720},visible:true,layer:0}, + logos:[{content:"paella_logo.png",zIndex:5,rect:{top:10,left:10,width:49,height:42}}], + buttons: [ + { + rect: { left: 682, top: 565, width: 45, height: 45 }, + onClick: function(event) { this.switch(); }, + label:"Switch", + icon:"icon_rotate.svg", + layer: 2 + }, + { + rect: { left: 682, top: 515, width: 45, height: 45 }, + onClick: function(event) { this.switchMinimize(); }, + label:"Minimize", + icon:"minimize.svg", + layer: 2 + } + ], + onApply: function() { + }, + switch: function() { + let v0 = this.videos[0].content; + let v1 = this.videos[1].content; + this.videos[0].content = v1; + this.videos[1].content = v0; + paella.profiles.placeVideos(); + }, + switchMinimize: function() { + if (this.minimized) { + this.minimized = false; + this.videos = [ + { + content:validContent[0], + rect:[ + {aspectRatio:"16/9",left:712,top:302,width:560,height:315}, + {aspectRatio:"16/10",left:712,top:267,width:560,height:350}, + {aspectRatio:"4/3",left:712,top:198,width:560,height:420}, + {aspectRatio:"5/3",left:712,top:281,width:560,height:336}, + {aspectRatio:"5/4",left:712,top:169,width:560,height:448} + ], + visible:true, + layer:1 + }, + { + content:validContent[1], + rect:[ + {aspectRatio:"16/9",left:10,top:225,width:695,height:390}, + {aspectRatio:"16/10",left:10,top:183,width:695,height:434}, + {aspectRatio:"4/3",left:10,top:96,width:695,height:521}, + {aspectRatio:"5/3",left:10,top:200,width:695,height:417}, + {aspectRatio:"5/4",left:10,top:62,width:695,height:556} + ], + visible:true, + layer:2 + } + ]; + this.buttons = [ + { + rect: { left: 682, top: 565, width: 45, height: 45 }, + onClick: function(event) { this.switch(); }, + label:"Switch", + icon:"icon_rotate.svg", + layer: 2 + }, + { + rect: { left: 682, top: 515, width: 45, height: 45 }, + onClick: function(event) { this.switchMinimize(); }, + label:"Minimize", + icon:"minimize.svg", + layer: 2 + } + ]; + } + else { + this.minimized = true; + this.videos = [ + { + content:validContent[0],rect:[ + {aspectRatio:"16/9",left:0,top:0,width:1280,height:720}, + {aspectRatio:"16/10",left:64,top:0,width:1152,height:720}, + {aspectRatio:"5/3",left:40,top:0,width:1200,height:720}, + {aspectRatio:"5/4",left:190,top:0,width:900,height:720}, + {aspectRatio:"4/3",left:160,top:0,width:960,height:720} + ], + visible:true, + layer:1 + }, + { + content:validContent[1],rect:[ + {aspectRatio:"16/9",left:50,top:470,width:350,height:197}, + {aspectRatio:"16/10",left:50,top:448,width:350,height:219}, + {aspectRatio:"5/3",left:50,top:457,width:350,height:210}, + {aspectRatio:"5/4",left:50,top:387,width:350,height:280}, + {aspectRatio:"4/3",left:50,top:404,width:350,height:262} + ], + visible:true, + layer:2 + } + ]; + this.buttons = [ + { + rect: { left: 388, top: 465, width: 45, height: 45 }, + onClick: function(event) { this.switch(); }, + label:"Switch", + icon:"icon_rotate.svg", + layer: 2 + }, + { + rect: { left: 388, top: 415, width: 45, height: 45 }, + onClick: function(event) { this.switchMinimize(); }, + label:"Switch", + icon:"minimize.svg", + layer: 2 + } + ]; + } + paella.profiles.placeVideos(); + } + }) + }) + }); + } + else { + onSuccess(false); + } + } + }) + } + }; +}); + +paella.addPlugin(function() { + return class TripleStreamProfilePlugin extends paella.EventDrivenPlugin { + + getName() { + return "es.upv.paella.tripleStreamProfilePlugin"; + } + + checkEnabled(onSuccess) { + let config = this.config; + config.videoSets.forEach((videoSet,index) => { + let validContent = videoSet.content + if (validContent.length==3) { + let streamCount = 0; + paella.player.videoContainer.streamProvider.videoStreams.forEach((v) => { + if (validContent.indexOf(v.content)!=-1) { + streamCount++ + } + }) + if (streamCount>=3) { + onSuccess(true); + paella.addProfile(() => { + return new Promise((resolve,reject) => { + resolve({ + id:videoSet.id, + name:{es:"Tres streams posición dinámica"}, + hidden:false, + icon:videoSet.icon, + videos: [ + { + content: validContent[0], + rect:[ + { aspectRatio:"16/9",left:239, top:17, width:803, height:451 } + ], + visible:true, + layer:1 + }, + { + content: validContent[1], + rect:[ + { aspectRatio:"16/9",left:44, top:482, width:389, height:218 } + ], + visible:true, + layer:1 + }, + { + content: validContent[2], + rect:[ + { aspectRatio:"16/9",left:847, top:482, width:389, height:218 } + ], + visible:true, + layer:1 + } + ], + background: {content:"slide_professor_paella.jpg",zIndex:5,rect: { left:0,top:0,width:1280,height:720},visible: true,layer:0}, + logos: [{content:"paella_logo.png",zIndex:5,rect: { top:10,left:10,width:49,height:42}}], + buttons: [ + { + rect: { left: 618, top: 495, width: 45, height: 45 }, + onClick: function(event) { this.rotate(); }, + label:"Rotate", + icon:"icon_rotate.svg", + layer: 2 + } + ], + onApply: function() { + }, + rotate: function() { + let v0 = this.videos[0].content; + let v1 = this.videos[1].content; + let v2 = this.videos[2].content; + this.videos[0].content = v2; + this.videos[1].content = v0; + this.videos[2].content = v1; + paella.profiles.placeVideos(); + } + }) + }) + }); + } + else { + onSuccess(false); + } + } + }) + } + }; +}); + +paella.addProfile(() => { + return new Promise((resolve,reject) => { + paella.events.bind(paella.events.videoReady,() => { + let available = paella.player.videoContainer.streamProvider.videoStreams.some((v) => v.content=="blackboard") + if(!available) { + resolve(null); + } + else { + resolve({ + id:"blackboard_video_stream", + name:{es:"Pizarra"}, + hidden:false, + icon:"s_p_blackboard.svg", + videos: [ + { + content: "presentation", + rect:[ + {aspectRatio:"16/9",left:10,top:70,width:432,height:243}], + visible:true, + layer:1 + }, + { + content:"blackboard", + rect:[{aspectRatio:"16/9",left:450,top:135,width:816,height:459}], + visible:true, + layer:1 + }, + { + content:"presenter", + rect:[{aspectRatio:"16/9",left:10,top:325,width:432,height:324}], + visible:true, + layer:1 + + } + ], + //blackBoardImages: {left:10,top:325,width:432,height:324}, + background: {content:"slide_professor_paella.jpg",zIndex:5,rect: { left:0,top:0,width:1280,height:720},visible: true,layer:0}, + logos: [{content:"paella_logo.png",zIndex:5,rect: { top:10,left:10,width:49,height:42}}], + buttons: [ + { + rect: { left: 422, top: 295, width: 45, height: 45 }, + onClick: function(event) { this.rotate(); }, + label:"Rotate", + icon:"icon_rotate.svg", + layer: 2 + } + ], + rotate: function() { + let v0 = this.videos[0].content; + let v1 = this.videos[1].content; + let v2 = this.videos[2].content; + this.videos[0].content = v2; + this.videos[1].content = v0; + this.videos[2].content = v1; + paella.profiles.placeVideos(); + } + }); + } + }); + }) +}); + +paella.addProfile(() => { + return new Promise((resolve,reject) => { + paella.events.bind(paella.events.videoReady, () => { + // TODO: videoContainer.sourceData is deprecated. Update this code + var n = paella.player.videoContainer.sourceData[0].sources; + if (!n.chroma) { + resolve(null); + } + else { + resolve({ + id:"chroma", + name:{es:"Polimedia"}, + hidden:false, + icon:"chroma.svg", + videos: [ + { + content:"presenter",rect:[ + {aspectRatio:"16/9",left:0,top:0,width:1280,height:720}, + {aspectRatio:"16/10",left:64,top:0,width:1152,height:720}, + {aspectRatio:"5/3",left:40,top:0,width:1200,height:720}, + {aspectRatio:"5/4",left:190,top:0,width:900,height:720}, + {aspectRatio:"4/3",left:160,top:0,width:960,height:720} + ],visible:"true",layer:"1" + }, + { + content:"presentation",rect:[ + {aspectRatio:"16/9",left:0,top:0,width:1280,height:720}, + {aspectRatio:"16/10",left:64,top:0,width:1152,height:720}, + {aspectRatio:"5/3",left:40,top:0,width:1200,height:720}, + {aspectRatio:"5/4",left:190,top:0,width:900,height:720}, + {aspectRatio:"4/3",left:160,top:0,width:960,height:720} + ],visible:"true",layer:"0" + } + ], + background:{content:"default_background_paella.jpg",zIndex:5,rect:{left:0,top:0,width:1280,height:720},visible:"true",layer:"0"}, + logos:[{content:"paella_logo.png",zIndex:5,rect:{top:10,left:10,width:49,height:42}}] + }) + } + }) + }) +}); + + +/* +paella.plugins.TrimmingTrackPlugin = Class.create(paella.editor.MainTrackPlugin,{ + trimmingTrack:null, + trimmingData:{s:0,e:0}, + + getTrackItems:function() { + if (this.trimmingTrack==null) { + this.trimmingTrack = {id:1,s:0,e:0}; + this.trimmingTrack.s = paella.player.videoContainer.trimStart(); + this.trimmingTrack.e = paella.player.videoContainer.trimEnd(); + this.trimmingData.s = this.trimmingTrack.s; + this.trimmingData.e = this.trimmingTrack.e; + } + var tracks = []; + tracks.push(this.trimmingTrack); + return tracks; + }, + + getName:function() { return "es.upv.paella.editor.trimmingTrackPlugin"; }, + + getTools:function() { + if(this.config.enableResetButton) { + return [ + {name:'reset', label:base.dictionary.translate('Reset'), hint:base.dictionary.translate('Resets the trimming bar to the default length of the video.')} + ]; + } + }, + + onToolSelected:function(toolName) { + if(this.config.enableResetButton) { + if(toolName=='reset') { + this.trimmingTrack = {id:1,s:0,e:0}; + this.trimmingTrack.s = 0; + this.trimmingTrack.e = paella.player.videoContainer.duration(true); + return true; + } + } + }, + + getTrackName:function() { + return base.dictionary.translate("Trimming"); + }, + + getColor:function() { + return 'rgb(0, 51, 107)'; + }, + + //checkEnabled:function(isEnabled) { + // isEnabled(paella.plugins.trimmingLoaderPlugin.config.enabled); + //isEnabled(paella.player.config.trimming && paella.player.config.trimming.enabled); + //}, + + onSave:function(onDone) { + paella.player.videoContainer.enableTrimming(); + paella.player.videoContainer.setTrimmingStart(this.trimmingTrack.s); + paella.player.videoContainer.setTrimmingEnd(this.trimmingTrack.e); + + this.trimmingData.s = this.trimmingTrack.s; + this.trimmingData.e = this.trimmingTrack.e; + + paella.data.write('trimming',{id:paella.initDelegate.getId()},{start:this.trimmingTrack.s,end:this.trimmingTrack.e},function(data,status) { + onDone(status); + }); + }, + + onDiscard:function(onDone) { + this.trimmingTrack.s = this.trimmingData.s; + this.trimmingTrack.e = this.trimmingData.e; + onDone(true); + }, + + allowDrag:function() { + return false; + }, + + onTrackChanged:function(id,start,end) { + //Checks if the trimming is valid (start >= 0 and end <= duration_of_the_video) + playerEnd = paella.player.videoContainer.duration(true); + start = (start < 0)? 0 : start; + end = (end > playerEnd)? playerEnd : end; + this.trimmingTrack.s = start; + this.trimmingTrack.e = end; + this.parent(id,start,end); + }, + + contextHelpString:function() { + // TODO: Implement this using the standard base.dictionary class + if (base.dictionary.currentLanguage()=="es") { + return "Utiliza la herramienta de recorte para definir el instante inicial y el instante final de la clase. Para cambiar la duración solo hay que arrastrar el inicio o el final de la pista \"Recorte\", en la linea de tiempo."; + } + else { + return "Use this tool to define the start and finish time."; + } + } +}); + +paella.plugins.trimmingTrackPlugin = new paella.plugins.TrimmingTrackPlugin(); + +*/ +paella.addPlugin(function() { + + + + return class TrimmingLoaderPlugin extends paella.EventDrivenPlugin { + + getName() { return "es.upv.paella.trimmingPlayerPlugin"; } + + getEvents() { return [paella.events.controlBarLoaded, paella.events.showEditor, paella.events.hideEditor]; } + + onEvent(eventType,params) { + switch (eventType) { + case paella.events.controlBarLoaded: + this.loadTrimming(); + break; + case paella.events.showEditor: + paella.player.videoContainer.disableTrimming(); + break; + case paella.events.hideEditor: + if (paella.player.config.trimming && paella.player.config.trimming.enabled) { + paella.player.videoContainer.enableTrimming(); + } + break; + } + } + + loadTrimming() { + var videoId = paella.initDelegate.getId(); + paella.data.read('trimming',{id:videoId},function(data,status) { + if (data && status && data.end>0) { + paella.player.videoContainer.enableTrimming(); + paella.player.videoContainer.setTrimming(data.start, data.end) + .then(() => {}) + + } + else { + // Check for optional trim 'start' and 'end', in seconds, in location args + var startTime = base.parameters.get('start'); + var endTime = base.parameters.get('end'); + if (startTime && endTime) { + paella.player.videoContainer.setTrimming(startTime, endTime).then(function() { + return paella.player.videoContainer.enableTrimming(); + }); + } + } + }); + } + } +}); + +paella.addPlugin(function() { + + return class AirPlayPlugin extends paella.ButtonPlugin { + getIndex() { return 552; } + getAlignment() { return 'right'; } + getSubclass() { return "AirPlayButton"; } + getIconClass() { return 'icon-airplay'; } + getName() { return "es.upv.paella.airPlayPlugin"; } + checkEnabled(onSuccess) { + this._visible = false; + // PIP is only available with single stream videos + if (paella.player.videoContainer.streamProvider.videoStreams.length!=1) { + onSuccess(false); + } + else { + onSuccess(window.WebKitPlaybackTargetAvailabilityEvent); + } + } + getDefaultToolTip() { return base.dictionary.translate("Emit to AirPlay."); } + + setup() { + let video = paella.player.videoContainer.masterVideo().video; + if (window.WebKitPlaybackTargetAvailabilityEvent) { + video.addEventListener('webkitplaybacktargetavailabilitychanged', (event) => { + switch (event.availability) { + case "available": + this._visible = true; + break; + case "not-available": + this._visible = false; + break; + } + this.updateClassName(); + }); + } + } + + action(button) { + let video = paella.player.videoContainer.masterVideo().video; + video.webkitShowPlaybackTargetPicker(); + } + + updateClassName() { + this.button.className = this.getButtonItemClass(true); + } + + getButtonItemClass(selected) { + return 'buttonPlugin ' + this.getSubclass() + " " + this.getAlignment() + " " + (this._visible ? "available":"not-available"); + } + } +}); + + +paella.addPlugin(function() { + + return class ArrowSlidesNavigator extends paella.EventDrivenPlugin { + getName() { return "es.upv.paella.arrowSlidesNavigatorPlugin"; } + + checkEnabled(onSuccess) { + if (!paella.initDelegate.initParams.videoLoader.frameList || + Object.keys(paella.initDelegate.initParams.videoLoader.frameList).length==0 || + paella.player.videoContainer.isMonostream) + { + onSuccess(false); + } + else { + onSuccess(true); + } + } + + setup() { + var self = this; + this._showArrowsIn = this.config.showArrowsIn || 'slave'; + this.createOverlay(); + + self._frames = []; + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var numFrames; + if (frames) { + var framesKeys = Object.keys(frames); + numFrames = framesKeys.length; + + framesKeys.map(function(i){return Number(i, 10);}) + .sort(function(a, b){return a-b;}) + .forEach(function(key){ + self._frames.push(frames[key]); + }); + } + } + + createOverlay(){ + var self = this; + + let overlayContainer = paella.player.videoContainer.overlayContainer; + + if (!this.arrows) { + this.arrows = document.createElement('div'); + this.arrows.id = "arrows"; + this.arrows.style.marginTop = "25%"; + + let arrowNext = document.createElement('div'); + arrowNext.className = "buttonPlugin arrowSlideNavidator nextButton right icon-next2" + this.arrows.appendChild(arrowNext); + + let arrowPrev = document.createElement('div'); + arrowPrev.className = "buttonPlugin arrowSlideNavidator prevButton left icon-previous2" + this.arrows.appendChild(arrowPrev); + + + $(arrowNext).click(function(e) { + self.goNextSlide(); + e.stopPropagation(); + }); + $(arrowPrev).click(function(e) { + self.goPrevSlide(); + e.stopPropagation(); + }); + } + + if (this.container) { + overlayContainer.removeElement(this.container); + } + + let rect = null; + let element = null; + + if (!paella.profiles.currentProfile) { + return null; + } + + this.config.content = this.config.content || ["presentation"]; + let profilesContent = []; + paella.profiles.currentProfile.videos.forEach((profileData) => { + profilesContent.push(profileData.content); + }); + + // Default content, if the "content" setting is not set in the configuration file + let selectedContent = profilesContent.length==1 ? profilesContent[0] : (profilesContent.length>1 ? profilesContent[1] : ""); + + this.config.content.some((preferredContent) => { + if (profilesContent.indexOf(preferredContent)!=-1) { + selectedContent = preferredContent; + return true; + } + }) + + + if (!selectedContent) { + this.container = overlayContainer.addLayer(); + this.container.style.marginRight = "0"; + this.container.style.marginLeft = "0"; + this.arrows.style.marginTop = "25%"; + } + else { + let videoIndex = 0; + paella.player.videoContainer.streamProvider.streams.forEach((stream,index) => { + if (stream.type=="video" && selectedContent==stream.content) { + videoIndex = index; + } + }); + element = document.createElement('div'); + rect = overlayContainer.getVideoRect(videoIndex); // content + this.container = overlayContainer.addElement(element,rect); + this.visible = rect.visible; + this.arrows.style.marginTop = "33%"; + } + + this.container.appendChild(this.arrows); + this.hideArrows(); + } + + getCurrentRange() { + return new Promise((resolve) => { + if (this._frames.length<1) { + resolve(null); + } + else { + let trimming = null; + let duration = 0; + paella.player.videoContainer.duration() + .then((d) => { + duration = d; + return paella.player.videoContainer.trimming(); + }) + + .then((t) => { + trimming = t; + return paella.player.videoContainer.currentTime(); + }) + + .then((currentTime) => { + if (!this._frames.some((f1,i,array) => { + if (i+1==array.length) { return; } + let f0 = i==0 ? f1 : this._frames[i-1]; + let f2 = this._frames[i+1]; + let t0 = trimming.enabled ? f0.time - trimming.start : f0.time; + let t1 = trimming.enabled ? f1.time - trimming.start : f1.time; + let t2 = trimming.enabled ? f2.time - trimming.start : f2.time; + if ((t1<currentTime && t2>currentTime) || t1==currentTime) { + let range = { + prev: t0, + next: t2 + }; + if (t0<0) { + range.prev = t1>0 ? t1 : 0; + } + resolve(range); + return true; + } + })) { + let t0 = this._frames[this._frames.length-2].time; + let t1 = this._frames[this._frames.length-1].time; + resolve({ + prev: trimming.enabled ? t0 - trimming.start : t0, + next: trimming.enabled ? t1 - trimming.start : t1 + }); + } + }); + } + }) + } + + goNextSlide() { + var self = this; + let trimming; + this.getCurrentRange() + .then((range) => { + return paella.player.videoContainer.seekToTime(range.next); + }) + + .then(() => { + paella.player.videoContainer.play(); + }); + } + + goPrevSlide() { + var self = this; + let trimming = null; + this.getCurrentRange() + .then((range) => { + return paella.player.videoContainer.seekToTime(range.prev); + }) + + .then(() => { + paella.player.videoContainer.play(); + }); + } + + showArrows(){ if (this.visible) $(this.arrows).show(); } + hideArrows(){ $(this.arrows).hide(); } + + getEvents() { return [paella.events.controlBarDidShow, paella.events.controlBarDidHide, paella.events.setComposition]; } + + onEvent(eventType,params) { + var self = this; + switch(eventType) { + case paella.events.controlBarDidShow: + this.showArrows(); + break; + case paella.events.controlBarDidHide: + this.hideArrows(); + break; + case paella.events.setComposition: + this.createOverlay(); + break; + } + } + } +}); + +paella.addPlugin(function() { + return class AudioSelector extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return "audioSelector"; } + getIconClass() { return 'icon-headphone'; } + getIndex() { return 2040; } + getName() { return "es.upv.paella.audioSelector"; } + getDefaultToolTip() { return base.dictionary.translate("Set audio stream"); } + + closeOnMouseOut() { return true; } + + checkEnabled(onSuccess) { + paella.player.videoContainer.getAudioTags() + .then((tags) => { + this._tags = tags; + onSuccess(tags.length>1); + }); + } + + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + buildContent(domElement) { + this._tags.forEach((tag) => { + domElement.appendChild(this.getItemButton(tag)); + }); + } + + getItemButton(lang) { + var elem = document.createElement('div'); + let currentTag = paella.player.videoContainer.audioTag; + let label = lang.replace(/[-\_]/g," "); + elem.className = this.getButtonItemClass(label,lang==currentTag); + elem.id = "audioTagSelectorItem_" + lang; + elem.innerText = label; + elem.data = lang; + $(elem).click(function(event) { + $('.videoAudioTrackItem').removeClass('selected'); + $('.videoAudioTrackItem.' + this.data).addClass('selected'); + paella.player.videoContainer.setAudioTag(this.data); + }); + + return elem; + } + + setQualityLabel() { + var This = this; + paella.player.videoContainer.getCurrentQuality() + .then(function(q) { + This.setText(q.shortLabel()); + }); + } + + getButtonItemClass(tag,selected) { + return 'videoAudioTrackItem ' + tag + ((selected) ? ' selected':''); + } + } +}); +paella.addPlugin(function() { + return class BlackBoard2 extends paella.EventDrivenPlugin { + getName() { return "es.upv.paella.blackBoardPlugin"; } + getIndex() {return 10; } + getAlignment() { return 'right'; } + getSubclass() { return "blackBoardButton2"; } + getDefaultToolTip() { return base.dictionary.translate("BlackBoard"); } + + checkEnabled(onSuccess) { + this._blackBoardProfile = "s_p_blackboard2"; + this._blackBoardDIV = null; + this._hasImages = null; + this._active = false; + this._creationTimer = 500; + this._zImages = null; + this._videoLength = null; + this._keys = null; + this._currentImage = null; + this._next = null; + this._prev = null; + this._lensDIV = null; + this._lensContainer = null; + this._lensWidth = null; + this._lensHeight = null; + this._conImg = null; + this._zoom = 250; + this._currentZoom = null; + this._maxZoom = 500; + this._mousePos = null; + this._containerRect = null; + onSuccess(true); + } + + getEvents() { + return[ + paella.events.setProfile, + paella.events.timeUpdate + ]; + } + + onEvent(event, params) { + var self = this; + switch(event){ + case paella.events.setProfile: + if(params.profileName!=self._blackBoardProfile){ + if(self._active){ + self.destroyOverlay(); + self._active = false; + } + break; + } + else{ + + if(!self._hasImages){ + paella.player.setProfile("slide_professor"); + } + if(self._hasImages && !self._active){ + self.createOverlay(); + self._active = true; + } + } + break; + case paella.events.timeUpdate: + if(self._active && self._hasImages) { + paella.player.videoContainer.trimming() + .then((trimmingData) => { + if (trimmingData.enabled) { + params.currentTime += trimmingData.start; + } + + self.imageUpdate(event,params); + }) + } + break; + } + } + + setup() { + var self = this; + + var n = paella.player.videoContainer.sourceData[0].sources; + if(n.hasOwnProperty("image")){ + self._hasImages = true; + // BRING THE IMAGE ARRAY TO LOCAL + self._zImages = {}; + self._zImages = paella.player.videoContainer.sourceData[0].sources.image[0].frames; // COPY TO LOCAL + self._videoLength = paella.player.videoContainer.sourceData[0].sources.image[0].duration; // video duration in frames + + // SORT KEYS FOR SEARCH CLOSEST + self._keys = Object.keys(self._zImages); + self._keys = self._keys.sort(function(a, b){ + a = a.slice(6); + b = b.slice(6); + return parseInt(a)-parseInt(b); + }); + } + else{ + self._hasImages = false; + + if (paella.player.selectedProfile == self._blackBoardProfile) { + let defaultprofile = paella.player.config.defaultProfile; + paella.player.setProfile(defaultprofile); + } + } + + + //NEXT + this._next = 0; + this._prev = 0; + + if(paella.player.selectedProfile == self._blackBoardProfile){ + self.createOverlay(); + self._active = true; + } + + self._mousePos = {}; + + + paella.Profiles.loadProfile(self._blackBoardProfile,function(profileData) { + self._containerRect = profileData.blackBoardImages; + }); + } + + createLens() { + var self = this; + if(self._currentZoom == null) { self._currentZoom = self._zoom; } + var lens = document.createElement("div"); + lens.className = "lensClass"; + + self._lensDIV = lens; + + var p = $('.conImg').offset(); + var width = $('.conImg').width(); + var height = $('.conImg').height(); + lens.style.width = (width/(self._currentZoom/100))+"px"; + lens.style.height = (height/(self._currentZoom/100))+"px"; + self._lensWidth = parseInt(lens.style.width); + self._lensHeight = parseInt(lens.style.height); + $(self._lensContainer).append(lens); + + $(self._lensContainer).mousemove(function(event) { + let mouseX = (event.pageX-p.left); + let mouseY = (event.pageY-p.top); + + self._mousePos.x = mouseX; + self._mousePos.y = mouseY; + + let lensTop = (mouseY - self._lensHeight/2); + lensTop = (lensTop < 0) ? 0 : lensTop; + lensTop = (lensTop > (height-self._lensHeight)) ? (height-self._lensHeight) : lensTop; + + let lensLeft = (mouseX - self._lensWidth/2); + lensLeft = (lensLeft < 0) ? 0 : lensLeft; + lensLeft = (lensLeft > (width-self._lensWidth)) ? (width-self._lensWidth) : lensLeft; + + self._lensDIV.style.left = lensLeft + "px"; + self._lensDIV.style.top = lensTop + "px"; + if(self._currentZoom != 100){ + let x = (lensLeft) * 100 / (width-self._lensWidth); + let y = (lensTop) * 100 / (height-self._lensHeight); + self._blackBoardDIV.style.backgroundPosition = x.toString() + '% ' + y.toString() + '%'; + } + + else if(self._currentZoom == 100){ + var xRelative = mouseX * 100 / width; + var yRelative = mouseY * 100 / height; + self._blackBoardDIV.style.backgroundPosition = xRelative.toString() + '% ' + yRelative.toString() + '%'; + } + + self._blackBoardDIV.style.backgroundSize = self._currentZoom+'%'; + }); + + $(self._lensContainer).bind('wheel mousewheel', function(e){ + let delta; + + if (e.originalEvent.wheelDelta !== undefined) { + delta = e.originalEvent.wheelDelta; + } + else { + delta = e.originalEvent.deltaY * -1; + } + + if(delta > 0 && self._currentZoom<self._maxZoom) { + self.reBuildLens(10); + } + else if(self._currentZoom>100){ + self.reBuildLens(-10); + } + else if(self._currentZoom==100){ + self._lensDIV.style.left = 0+"px"; + self._lensDIV.style.top = 0+"px"; + } + self._blackBoardDIV.style.backgroundSize = (self._currentZoom)+"%"; + + }); + } + + reBuildLens(zoomValue) { + var self = this; + self._currentZoom += zoomValue; + var p = $('.conImg').offset(); + var width = $('.conImg').width(); + var height = $('.conImg').height(); + self._lensDIV.style.width = (width/(self._currentZoom/100))+"px"; + self._lensDIV.style.height = (height/(self._currentZoom/100))+"px"; + self._lensWidth = parseInt(self._lensDIV.style.width); + self._lensHeight = parseInt(self._lensDIV.style.height); + + if(self._currentZoom != 100){ + let mouseX = self._mousePos.x; + let mouseY = self._mousePos.y; + + let lensTop = (mouseY - self._lensHeight/2); + lensTop = (lensTop < 0) ? 0 : lensTop; + lensTop = (lensTop > (height-self._lensHeight)) ? (height-self._lensHeight) : lensTop; + + let lensLeft = (mouseX - self._lensWidth/2); + lensLeft = (lensLeft < 0) ? 0 : lensLeft; + lensLeft = (lensLeft > (width-self._lensWidth)) ? (width-self._lensWidth) : lensLeft; + + self._lensDIV.style.left = lensLeft + "px"; + self._lensDIV.style.top = lensTop + "px"; + + let x = (lensLeft) * 100 / (width-self._lensWidth); + let y = (lensTop) * 100 / (height-self._lensHeight); + self._blackBoardDIV.style.backgroundPosition = x.toString() + '% ' + y.toString() + '%'; + } + } + + destroyLens() { + var self=this; + if(self._lensDIV){ + $(self._lensDIV).remove(); + self._blackBoardDIV.style.backgroundSize = 100+'%'; + self._blackBoardDIV.style.opacity = 0; + } + //self._currentZoom = self._zoom; + } + + createOverlay() { + var self = this; + + var blackBoardDiv = document.createElement("div"); + blackBoardDiv.className = "blackBoardDiv"; + self._blackBoardDIV = blackBoardDiv; + self._blackBoardDIV.style.opacity = 0; + + var lensContainer = document.createElement("div"); + lensContainer.className = "lensContainer"; + self._lensContainer = lensContainer; + + var conImg = document.createElement("img"); + conImg.className = "conImg"; + self._conImg = conImg; + + if (self._currentImage) { + self._conImg.src = self._currentImage; + $(self._blackBoardDIV).css('background-image', 'url(' + self._currentImage + ')'); + } + + $(lensContainer).append(conImg); + + $(self._lensContainer).mouseenter(function(){self.createLens(); self._blackBoardDIV.style.opacity = 1.0;}); + $(self._lensContainer).mouseleave(function(){self.destroyLens();}); + + setTimeout(function(){ // TIMER FOR NICE VIEW + let overlayContainer = paella.player.videoContainer.overlayContainer; + overlayContainer.addElement(blackBoardDiv, overlayContainer.getVideoRect(0)); + overlayContainer.addElement(lensContainer, self._containerRect); + }, self._creationTimer); + } + + destroyOverlay() { + var self = this; + + if (self._blackBoardDIV) { + $(self._blackBoardDIV).remove(); + } + if (self._lensContainer){ + $(self._lensContainer).remove(); + } + } + + imageUpdate(event,params) { + var self = this; + var sec = Math.round(params.currentTime); + var src = $(self._blackBoardDIV).css('background-image'); + + if($(self._blackBoardDIV).length>0){ + + if(self._zImages.hasOwnProperty("frame_"+sec)) { // SWAP IMAGES WHEN PLAYING + if(src == self._zImages["frame_"+sec]) { + return; + } + else { + src = self._zImages["frame_"+sec]; + } + } + else if(sec > self._next || sec < self._prev) { + src = self.returnSrc(sec); + } // RELOAD IF OUT OF INTERVAL + else { + return; + } + + //PRELOAD NEXT IMAGE + var image = new Image(); + image.onload = function(){ + $(self._blackBoardDIV).css('background-image', 'url(' + src + ')'); // UPDATING IMAGE + }; + image.src = src; + + self._currentImage = src; + self._conImg.src = self._currentImage; + } + } + + returnSrc(sec) { + var prev = 0; + for (let i=0; i<this._keys.length; i++){ + var id = parseInt(this._keys[i].slice(6)); + var lastId = parseInt(this._keys[(this._keys.length-1)].slice(6)); + if(sec < id) { // PREVIOUS IMAGE + this._next = id; + this._prev = prev; + this._imageNumber = i-1; + return this._zImages["frame_" + prev]; // return previous and keep next change + } + else if (sec > lastId && sec < this._videoLength) { // LAST INTERVAL + this._next = this._videoLength; + this._prev = lastId; + return this._zImages["frame_" + prev]; + } + else { + prev = id; + } + } + } + } + +}); + +paella.addPlugin(() => { + return class BreaksPlayerPlugin extends paella.EventDrivenPlugin { + getName() { return "es.upv.paella.breaksPlayerPlugin"; } + + checkEnabled(onSuccess) { + onSuccess(true); + } + + setup() { + this.breaks = []; + this.status = false; + this.lastTime = 0; + paella.data.read('breaks', { id: paella.player.videoIdentifier }, (data) => { + if (data && typeof (data) == 'object' && data.breaks && data.breaks.length > 0) { + this.breaks = data.breaks; + } + }); + } + + getEvents() { return [ paella.events.timeUpdate ]; } + + onEvent(eventType, params) { + paella.player.videoContainer.currentTime(true) + .then((currentTime) => { + // The event type checking must to be done using the time difference, because + // the timeUpdate event may arrive before the seekToTime event + let diff = Math.abs(currentTime - this.lastTime); + this.checkBreaks(currentTime,diff>=1 ? paella.events.seekToTime : paella.events.timeUpdate); + this.lastTime = currentTime; + }); + } + + checkBreaks(currentTime,eventType) { + let breakMessage = ""; + if (this.breaks.some((breakItem) => { + if (breakItem.s<=currentTime && breakItem.e>=currentTime) { + if (eventType==paella.events.timeUpdate && !this.status) { + this.skipTo(breakItem.e); + } + breakMessage = breakItem.text; + return true; + } + })) { + this.showMessage(breakMessage); + this.status = true; + } + else { + this.hideMessage(); + this.status = false; + } + } + + skipTo(time) { + paella.player.videoContainer.trimming() + .then((trimming) => { + if (trimming.enabled) { + paella.player.videoContainer.seekToTime(time + trimming.start); + } + else { + paella.player.videoContainer.seekToTime(time); + } + }) + } + + showMessage(text) { + if (this.currentText != text) { + if (this.messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this.messageContainer); + } + var rect = { + left: 100, + top: 350, + width: 1080, + height: 40 + }; + this.currentText = text; + this.messageContainer = paella.player.videoContainer.overlayContainer.addText(paella.dictionary.translate(text), rect); + this.messageContainer.className = 'textBreak'; + this.currentText = text; + } + } + + hideMessage() { + if (this.messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this.messageContainer); + this.messageContainer = null; + } + this.currentText = ""; + } + } +}); + +paella.addPlugin(function() { + + ///////////////////////////////////////////////// + // DFXP Parser + ///////////////////////////////////////////////// + return class DFXPParserPlugin extends paella.CaptionParserPlugIn { + get ext() { return ["dfxp"] } + getName() { return "es.upv.paella.captions.DFXPParserPlugin"; } + parse(content, lang, next) { + var captions = []; + var self = this; + var xml = $(content); + var g_lang = xml.attr("xml:lang"); + + var lls = xml.find("div"); + for(var idx=0; idx<lls.length; ++idx) { + var ll = $(lls[idx]); + var l_lang = ll.attr("xml:lang"); + if ((l_lang == undefined) || (l_lang == "")){ + if ((g_lang == undefined) || (g_lang == "")) { + base.log.debug("No xml:lang found! Using '" + lang + "' lang instead."); + l_lang = lang; + } + else { + l_lang = g_lang; + } + } + // + if (l_lang == lang) { + ll.find("p").each(function(i, cap){ + var c = { + id: i, + begin: self.parseTimeTextToSeg(cap.getAttribute("begin")), + end: self.parseTimeTextToSeg(cap.getAttribute("end")), + content: $(cap).text().trim() + }; + captions.push(c); + }); + break; + } + } + + if (captions.length > 0) { + next(false, captions); + } + else { + next(true); + } + } + + parseTimeTextToSeg(ttime){ + var nseg = 0; + var segtime = /^([0-9]*([.,][0-9]*)?)s/.test(ttime); + if (segtime){ + nseg = parseFloat(RegExp.$1); + } + else { + var split = ttime.split(":"); + var h = parseInt(split[0]); + var m = parseInt(split[1]); + var s = parseInt(split[2]); + nseg = s+(m*60)+(h*60*60); + } + return nseg; + } + } +}); +paella.addPlugin(function() { + return class CaptionsPlugin extends paella.ButtonPlugin { + getInstanceName() { return "captionsPlugin"; } // plugin instance will be available in paella.plugins.captionsPlugin + getAlignment() { return 'right'; } + getSubclass() { return 'captionsPluginButton'; } + getIconClass() { return 'icon-captions'; } + getName() { return "es.upv.paella.captionsPlugin"; } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + getDefaultToolTip() { return base.dictionary.translate("Subtitles"); } + getIndex() { return 509; } + closeOnMouseOut() { return false; } + + checkEnabled(onSuccess) { + this._searchTimerTime = 1500; + this._searchTimer = null; + this._pluginButton = null; + this._open = 0; // 0 closed, 1 st clic; + this._parent = null; + this._body = null; + this._inner = null; + this._bar = null; + this._input = null; + this._select = null; + this._editor = null; + this._activeCaptions = null; + this._lastSel = null; + this._browserLang = null; + this._defaultBodyHeight = 280; + this._autoScroll = true; + this._searchOnCaptions = null; + + onSuccess(true); + } + + showUI(){ + if(paella.captions.getAvailableLangs().length>=1){ + super.showUI(); + } + } + + setup() { + var self = this; + + // HIDE UI IF NO Captions + if(!paella.captions.getAvailableLangs().length){ + paella.plugins.captionsPlugin.hideUI(); + } + + //BINDS + paella.events.bind(paella.events.captionsEnabled,function(event,params){ + self.onChangeSelection(params); + }); + + paella.events.bind(paella.events.captionsDisabled,function(event,params){ + self.onChangeSelection(params); + }); + + paella.events.bind(paella.events.captionAdded,function(event,params){ + self.onCaptionAdded(params); + paella.plugins.captionsPlugin.showUI(); + }); + + paella.events.bind(paella.events.timeUpdate, function(event,params){ + if(self._searchOnCaptions){ + self.updateCaptionHiglighted(params); + } + + }); + + paella.events.bind(paella.events.controlBarWillHide, function(evt) { + self.cancelHideBar(); + }); + + self._activeCaptions = paella.captions.getActiveCaptions(); + + self._searchOnCaptions = self.config.searchOnCaptions || false; + } + + cancelHideBar() { + var thisClass = this; + if(thisClass._open > 0){ + paella.player.controls.cancelHideBar(); + } + } + + updateCaptionHiglighted(time) { + var thisClass = this; + var sel = null; + var id = null; + if(time){ + paella.player.videoContainer.trimming() + .then((trimming) => { + let offset = trimming.enabled ? trimming.start : 0; + let c = paella.captions.getActiveCaptions(); + let caption = c && c.getCaptionAtTime(time.currentTime + offset); + let id = caption && caption.id; + + if(id != null){ + sel = $( ".bodyInnerContainer[sec-id='"+id+"']" ); + + if(sel != thisClass._lasSel){ + $(thisClass._lasSel).removeClass("Highlight"); + } + + if(sel){ + $(sel).addClass("Highlight"); + if(thisClass._autoScroll){ + thisClass.updateScrollFocus(id); + } + thisClass._lasSel = sel; + } + } + }); + } + } + + updateScrollFocus(id) { + var thisClass = this; + var resul = 0; + var t = $(".bodyInnerContainer").slice(0,id); + t = t.toArray(); + + t.forEach(function(l){ + var i = $(l).outerHeight(true); + resul += i; + }); + + var x = parseInt(resul / 280); + $(".captionsBody").scrollTop( x*thisClass._defaultBodyHeight ); + } + + onCaptionAdded(obj) { + var thisClass = this; + + var newCap = paella.captions.getCaptions(obj); + + var defOption = document.createElement("option"); // NO ONE SELECT + defOption.text = newCap._lang.txt; + defOption.value = obj; + + thisClass._select.add(defOption); + } + + changeSelection() { + var thisClass = this; + + var sel = $(thisClass._select).val(); + if(sel == ""){ + $(thisClass._body).empty(); + paella.captions.setActiveCaptions(sel); + return; + } // BREAK IF NO ONE SELECTED + paella.captions.setActiveCaptions(sel); + thisClass._activeCaptions = sel; + if(thisClass._searchOnCaptions){ + thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions,"list"); + } + thisClass.setButtonHideShow(); + } + + onChangeSelection(obj) { + var thisClass = this; + + if(thisClass._activeCaptions != obj){ + $(thisClass._body).empty(); + if(obj==undefined){ + thisClass._select.value = ""; + $(thisClass._input).prop('disabled', true); + } + else{ + $(thisClass._input).prop('disabled', false); + thisClass._select.value = obj; + if(thisClass._searchOnCaptions){ + thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions,"list"); + } + } + thisClass._activeCaptions = obj; + thisClass.setButtonHideShow(); + } + } + + action() { + var self = this; + self._browserLang = base.dictionary.currentLanguage(); + self._autoScroll = true; + + switch(self._open){ + case 0: + if(self._browserLang && paella.captions.getActiveCaptions()==undefined){ + self.selectDefaultBrowserLang(self._browserLang); + } + self._open = 1; + paella.keyManager.enabled = false; + break; + + case 1: + paella.keyManager.enabled = true; + self._open = 0; + break; + } + } + + buildContent(domElement) { + var thisClass = this; + + //captions CONTAINER + thisClass._parent = document.createElement('div'); + thisClass._parent.className = 'captionsPluginContainer'; + //captions BAR + thisClass._bar = document.createElement('div'); + thisClass._bar.className = 'captionsBar'; + //captions BODY + if(thisClass._searchOnCaptions){ + thisClass._body = document.createElement('div'); + thisClass._body.className = 'captionsBody'; + thisClass._parent.appendChild(thisClass._body); + //BODY JQUERY + $(thisClass._body).scroll(function(){ + thisClass._autoScroll = false; + }); + + //INPUT + thisClass._input = document.createElement("input"); + thisClass._input.className = "captionsBarInput"; + thisClass._input.type = "text"; + thisClass._input.id ="captionsBarInput"; + thisClass._input.name = "captionsString"; + thisClass._input.placeholder = base.dictionary.translate("Search captions"); + thisClass._bar.appendChild(thisClass._input); + + //INPUT jQuery + $(thisClass._input).change(function(){ + var text = $(thisClass._input).val(); + thisClass.doSearch(text); + }); + + $(thisClass._input).keyup(function(){ + var text = $(thisClass._input).val(); + if(thisClass._searchTimer != null){ + thisClass._searchTimer.cancel(); + } + thisClass._searchTimer = new base.Timer(function(timer) { + thisClass.doSearch(text); + }, thisClass._searchTimerTime); + }); + } + + + + //SELECT + thisClass._select = document.createElement("select"); + thisClass._select.className = "captionsSelector"; + + var defOption = document.createElement("option"); // NO ONE SELECT + defOption.text = base.dictionary.translate("None"); + defOption.value = ""; + thisClass._select.add(defOption); + + paella.captions.getAvailableLangs().forEach(function(l){ + var option = document.createElement("option"); + option.text = l.lang.txt; + option.value = l.id; + thisClass._select.add(option); + }); + + thisClass._bar.appendChild(thisClass._select); + thisClass._parent.appendChild( thisClass._bar); + + //jQuery SELECT + $(thisClass._select).change(function(){ + thisClass.changeSelection(); + }); + + //BUTTON EDITOR + thisClass._editor = document.createElement("button"); + thisClass._editor.className = "editorButton"; + thisClass._editor.innerText = ""; + thisClass._bar.appendChild(thisClass._editor); + + //BUTTON jQuery + $(thisClass._editor).prop("disabled",true); + $(thisClass._editor).click(function(){ + var c = paella.captions.getActiveCaptions(); + paella.userTracking.log("paella:caption:edit", {id: c._captionsProvider + ':' + c._id, lang: c._lang}); + c.goToEdit(); + }); + + domElement.appendChild(thisClass._parent); + } + + selectDefaultBrowserLang(code) { + var thisClass = this; + var provider = null; + paella.captions.getAvailableLangs().forEach(function(l){ + if(l.lang.code == code){ provider = l.id; } + }); + + if(provider){ + paella.captions.setActiveCaptions(provider); + } + /* + else{ + $(thisClass._input).prop("disabled",true); + } + */ + + } + + doSearch(text) { + var thisClass = this; + var c = paella.captions.getActiveCaptions(); + if(c){ + if(text==""){thisClass.buildBodyContent(paella.captions.getActiveCaptions()._captions,"list");} + else{ + c.search(text,function(err,resul){ + if(!err){ + thisClass.buildBodyContent(resul,"search"); + } + }); + } + } + } + + setButtonHideShow() { + var thisClass = this; + var editor = $('.editorButton'); + var c = paella.captions.getActiveCaptions(); + var res = null; + if(c!=null){ + $(thisClass._select).width('39%'); + + c.canEdit(function(err, r){res=r;}); + if(res){ + $(editor).prop("disabled",false); + $(editor).show(); + } + else{ + $(editor).prop("disabled",true); + $(editor).hide(); + $(thisClass._select).width('47%'); + } + } + else { + $(editor).prop("disabled",true); + $(editor).hide(); + $(thisClass._select).width('47%'); + } + + if(!thisClass._searchOnCaptions){ + if(res){$(thisClass._select).width('92%');} + else{$(thisClass._select).width('100%');} + } + } + + buildBodyContent(obj,type) { + paella.player.videoContainer.trimming() + .then((trimming)=>{ + var thisClass = this; + $(thisClass._body).empty(); + obj.forEach(function(l){ + if(trimming.enabled && (l.end<trimming.start || l.begin>trimming.end)){ + return; + } + thisClass._inner = document.createElement('div'); + thisClass._inner.className = 'bodyInnerContainer'; + thisClass._inner.innerText = l.content; + if(type=="list"){ + thisClass._inner.setAttribute('sec-begin',l.begin); + thisClass._inner.setAttribute('sec-end',l.end); + thisClass._inner.setAttribute('sec-id',l.id); + thisClass._autoScroll = true; + } + if(type=="search"){ + thisClass._inner.setAttribute('sec-begin',l.time); + } + thisClass._body.appendChild(thisClass._inner); + + //JQUERY + $(thisClass._inner).hover( + function(){ + $(this).css('background-color','rgba(250, 161, 102, 0.5)'); + }, + function(){ + $(this).removeAttr('style'); + } + ); + $(thisClass._inner).click(function(){ + var secBegin = $(this).attr("sec-begin"); + paella.player.videoContainer.trimming() + .then((trimming) => { + let offset = trimming.enabled ? trimming.start : 0; + paella.player.videoContainer.seekToTime(secBegin - offset + 0.1); + }); + }); + }); + }); + } + } + +}); +paella.addPlugin(function() { + return class CaptionsOnScreen extends paella.EventDrivenPlugin { + + checkEnabled(onSuccess) { + this.containerId = 'paella_plugin_CaptionsOnScreen'; + this.container = null; + this.innerContainer = null; + this.top = null; + this.actualPos = null; + this.lastEvent = null; + this.controlsPlayback = null; + this.captions = false; + this.captionProvider = null; + onSuccess(!paella.player.isLiveStream()); + } + + setup() { + } + + getEvents() { + return [paella.events.controlBarDidHide, paella.events.resize, paella.events.controlBarDidShow, paella.events.captionsEnabled, paella.events.captionsDisabled ,paella.events.timeUpdate]; + } + + onEvent(eventType,params) { + var thisClass = this; + + switch (eventType) { + case paella.events.controlBarDidHide: + if(thisClass.lastEvent == eventType || thisClass.captions==false)break; + thisClass.moveCaptionsOverlay("down"); + break; + case paella.events.resize: + if(thisClass.captions==false)break; + if(paella.player.controls.isHidden()){ + thisClass.moveCaptionsOverlay("down"); + } + else { + thisClass.moveCaptionsOverlay("top"); + } + break; + + case paella.events.controlBarDidShow: + if(thisClass.lastEvent == eventType || thisClass.captions==false)break; + thisClass.moveCaptionsOverlay("top"); + break; + case paella.events.captionsEnabled: + thisClass.buildContent(params); + thisClass.captions = true; + if(paella.player.controls.isHidden()){ + thisClass.moveCaptionsOverlay("down"); + } + else { + thisClass.moveCaptionsOverlay("top"); + } + break; + case paella.events.captionsDisabled: + thisClass.hideContent(); + thisClass.captions = false; + break; + case paella.events.timeUpdate: + if(thisClass.captions){ thisClass.updateCaptions(params); } + break; + + } + thisClass.lastEvent = eventType; + } + + buildContent(provider){ + var thisClass = this; + thisClass.captionProvider = provider; + + if(thisClass.container==null){ // PARENT + thisClass.container = document.createElement('div'); + thisClass.container.className = "CaptionsOnScreen"; + thisClass.container.id = thisClass.containerId; + + thisClass.innerContainer = document.createElement('div'); + thisClass.innerContainer.className = "CaptionsOnScreenInner"; + + thisClass.container.appendChild(thisClass.innerContainer); + + if(thisClass.controlsPlayback==null) thisClass.controlsPlayback = $('#playerContainer_controls_playback'); + + + paella.player.videoContainer.domElement.appendChild(thisClass.container); + } + else { + $(thisClass.container).show(); + } + } + + updateCaptions(time){ + if (this.captions) { + paella.player.videoContainer.trimming() + .then((trimming) => { + let offset = trimming.enabled ? trimming.start : 0; + var c = paella.captions.getActiveCaptions(); + var caption = c.getCaptionAtTime(time.currentTime + offset); + if(caption){ + $(this.container).show(); + this.innerContainer.innerText = caption.content; + this.moveCaptionsOverlay("auto"); + + } + else { + this.innerContainer.innerText = ""; + this.hideContent(); + } + }); + } + } + + hideContent(){ + var thisClass = this; + + $(thisClass.container).hide(); + } + + moveCaptionsOverlay(pos){ + var thisClass = this; + var marginbottom = 10; + + if(thisClass.controlsPlayback==null) thisClass.controlsPlayback = $('#playerContainer_controls_playback'); + + if(pos=="auto" || pos==undefined) { + pos = paella.player.controls.isHidden() ? "down" : "top"; + } + if(pos=="down"){ + var t = thisClass.container.offsetHeight; + t -= thisClass.innerContainer.offsetHeight + marginbottom; + thisClass.innerContainer.style.bottom = (0 - t) + "px"; + } + if(pos=="top") { + var t2 = thisClass.controlsPlayback.offset().top; + t2 -= thisClass.innerContainer.offsetHeight + marginbottom; + thisClass.innerContainer.style.bottom = (0-t2)+"px"; + } + } + + getIndex() { + return 1050; + } + + getName() { + return "es.upv.paella.overlayCaptionsPlugin"; + } + } +}); + + + +(() => { + + function buildChromaVideoCanvas(stream, canvas) { + class ChromaVideoCanvas extends bg.app.WindowController { + + constructor(stream) { + super(); + this.stream = stream; + this._chroma = bg.Color.White(); + this._crop = new bg.Vector4(0.3,0.01,0.3,0.01); + this._transform = bg.Matrix4.Identity().translate(0.6,-0.04,0); + this._bias = 0.01; + } + + get chroma() { return this._chroma; } + get bias() { return this._bias; } + get crop() { return this._crop; } + get transform() { return this._transform; } + set chroma(c) { this._chroma = c; } + set bias(b) { this._bias = b; } + set crop(c) { this._crop = c; } + set transform(t) { this._transform = t; } + + get video() { + return this.texture ? this.texture.video : null; + } + + loaded() { + return new Promise((resolve) => { + let checkLoaded = () => { + if (this.video) { + resolve(this); + } + else { + setTimeout(checkLoaded,100); + } + } + checkLoaded(); + }); + } + + buildShape() { + this.plist = new bg.base.PolyList(this.gl); + + this.plist.vertex = [ -1,-1,0, 1,-1,0, 1,1,0, -1,1,0, ]; + this.plist.texCoord0 = [ 0,0, 1,0, 1,1, 0,1 ]; + this.plist.index = [ 0, 1, 2, 2, 3, 0 ]; + + this.plist.build(); + } + + buildShader() { + let vshader = ` + attribute vec4 position; + attribute vec2 texCoord; + uniform mat4 inTransform; + varying vec2 vTexCoord; + void main() { + gl_Position = inTransform * position; + vTexCoord = texCoord; + } + `; + let fshader = ` + precision mediump float; + varying vec2 vTexCoord; + uniform sampler2D inTexture; + uniform vec4 inChroma; + uniform float inBias; + uniform vec4 inCrop; + void main() { + vec4 result = texture2D(inTexture,vTexCoord); + + if ((result.r>=inChroma.r-inBias && result.r<=inChroma.r+inBias && + result.g>=inChroma.g-inBias && result.g<=inChroma.g+inBias && + result.b>=inChroma.b-inBias && result.b<=inChroma.b+inBias) || + (vTexCoord.x<inCrop.x || vTexCoord.x>inCrop.z || vTexCoord.y<inCrop.w || vTexCoord.y>inCrop.y) + ) + { + discard; + } + else { + gl_FragColor = result; + } + } + `; + + this.shader = new bg.base.Shader(this.gl); + this.shader.addShaderSource(bg.base.ShaderType.VERTEX, vshader); + + this.shader.addShaderSource(bg.base.ShaderType.FRAGMENT, fshader); + + status = this.shader.link(); + if (!this.shader.status) { + console.log(this.shader.compileError); + console.log(this.shader.linkError); + } + + this.shader.initVars(["position","texCoord"],["inTransform","inTexture","inChroma","inBias","inCrop"]); + } + + init() { + // Use WebGL V1 engine + bg.Engine.Set(new bg.webgl1.Engine(this.gl)); + + bg.base.Loader.RegisterPlugin(new bg.base.VideoTextureLoaderPlugin()); + + this.buildShape(); + this.buildShader(); + + this.pipeline = new bg.base.Pipeline(this.gl); + bg.base.Pipeline.SetCurrent(this.pipeline); + this.pipeline.clearColor = bg.Color.Transparent(); + + bg.base.Loader.Load(this.gl,this.stream.src) + .then((texture) => { + this.texture = texture; + }); + } + + frame(delta) { + if (this.texture) { + this.texture.update(); + } + } + + display() { + this.pipeline.clearBuffers(bg.base.ClearBuffers.COLOR | bg.base.ClearBuffers.DEPTH); + + if (this.texture) { + this.shader.setActive(); + this.shader.setInputBuffer("position",this.plist.vertexBuffer,3); + this.shader.setInputBuffer("texCoord",this.plist.texCoord0Buffer,2); + this.shader.setMatrix4("inTransform",this.transform); + this.shader.setTexture("inTexture",this.texture || bg.base.TextureCache.WhiteTexture(this.gl),bg.base.TextureUnit.TEXTURE_0); + this.shader.setVector4("inChroma",this.chroma); + this.shader.setValueFloat("inBias",this.bias); + this.shader.setVector4("inCrop",new bg.Vector4(this.crop.x, 1.0 - this.crop.y, 1.0 - this.crop.z, this.crop.w)); + this.plist.draw(); + + this.shader.disableInputBuffer("position"); + this.shader.disableInputBuffer("texCoord"); + this.shader.clearActive(); + } + } + + reshape(width,height) { + let canvas = this.canvas.domElement; + canvas.width = width; + canvas.height = height; + this.pipeline.viewport = new bg.Viewport(0,0,width,height); + } + + mouseMove(evt) { this.postRedisplay(); } + } + + let controller = new ChromaVideoCanvas(stream); + let mainLoop = bg.app.MainLoop.singleton; + + mainLoop.updateMode = bg.app.FrameUpdate.AUTO; + mainLoop.canvas = canvas; + mainLoop.run(controller); + + return controller.loaded(); + } + + class ChromaVideo extends paella.VideoElementBase { + + constructor(id,stream,left,top,width,height,streamName) { + super(id,stream,'canvas',left,top,width,height); + + this._posterFrame = null; + this._currentQuality = null; + this._autoplay = false; + this._streamName = null; + this._streamName = streamName || 'chroma'; + var This = this; + + if (this._stream.sources[this._streamName]) { + this._stream.sources[this._streamName].sort(function (a, b) { + return a.res.h - b.res.h; + }); + } + + this.video = null; + + function onProgress(event) { + if (!This._ready && This.video.readyState==4) { + This._ready = true; + if (This._initialCurrentTipe!==undefined) { + This.video.currentTime = This._initialCurrentTime; + delete This._initialCurrentTime; + } + This._callReadyEvent(); + } + } + + function evtCallback(event) { onProgress.apply(This,event); } + + function onUpdateSize() { + if (This.canvasController) { + let canvas = This.canvasController.canvas.domElement; + This.canvasController.reshape($(canvas).width(),$(canvas).height()); + } + } + + let timer = new paella.Timer(function(timer) { + onUpdateSize(); + },500); + timer.repeat = true; + } + + defaultProfile() { + return 'chroma'; + } + + _setVideoElem(video) { + $(this.video).bind('progress', evtCallback); + $(this.video).bind('loadstart',evtCallback); + $(this.video).bind('loadedmetadata',evtCallback); + $(this.video).bind('canplay',evtCallback); + $(this.video).bind('oncanplay',evtCallback); + } + + _loadDeps() { + return new Promise((resolve,reject) => { + if (!window.$paella_bg2e) { + paella.require(paella.baseUrl + 'javascript/bg2e-es2015.js') + .then(() => { + window.$paella_bg2e = bg; + resolve(window.$paella_bg2e); + }) + .catch((err) => { + console.error(err.message); + reject(); + }); + } + else { + defer.resolve(window.$paella_bg2e); + } + }); + } + + _deferredAction(action) { + return new Promise((resolve,reject) => { + if (this.video) { + resolve(action()); + } + else { + $(this.video).bind('canplay',() => { + this._ready = true; + resolve(action()); + }); + } + }); + } + + _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString:function() { return this.res.w + "x" + this.res.h; }, + shortLabel:function() { return this.res.h + "p"; }, + compare:function(q2) { return this.res.w*this.res.h - q2.res.w*q2.res.h; } + }; + } + + // Initialization functions + + getVideoData() { + var This = this; + return new Promise((resolve,reject) => { + this._deferredAction(() => { + resolve({ + duration: This.video.duration, + currentTime: This.video.currentTime, + volume: This.video.volume, + paused: This.video.paused, + ended: This.video.ended, + res: { + w: This.video.videoWidth, + h: This.video.videoHeight + } + }); + }); + }); + } + + setPosterFrame(url) { + this._posterFrame = url; + } + + setAutoplay(auto) { + this._autoplay = auto; + if (auto && this.video) { + this.video.setAttribute("autoplay",auto); + } + } + + load() { + var This = this; + return new Promise((resolve,reject) => { + this._loadDeps() + .then(() => { + var sources = this._stream.sources[this._streamName]; + if (this._currentQuality===null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var stream = this._currentQuality<sources.length ? sources[this._currentQuality]:null; + this.video = null; + this.domElement.parentNode.style.backgroundColor = "transparent"; + if (stream) { + this.canvasController = null; + buildChromaVideoCanvas(stream,this.domElement) + .then((canvasController) => { + this.canvasController = canvasController; + this.video = canvasController.video; + this.video.pause(); + if (stream.crop) { + this.canvasController.crop = new bg.Vector4(stream.crop.left,stream.crop.top,stream.crop.right,stream.crop.bottom); + } + if (stream.displacement) { + this.canvasController.transform = bg.Matrix4.Translation(stream.displacement.x, stream.displacement.y, 0); + } + if (stream.chromaColor) { + this.canvasController.chroma = new bg.Color(stream.chromaColor[0], + stream.chromaColor[1], + stream.chromaColor[2], + stream.chromaColor[3]) + } + if (stream.chromaBias) { + this.canvasController.bias = stream.chromaBias; + } + resolve(stream); + }); + } + else { + reject(new Error("Could not load video: invalid quality stream index")); + } + }); + }); + } + + getQualities() { + return new Promise((resolve,reject) => { + setTimeout(() => { + var result = []; + var sources = this._stream.sources[this._streamName]; + var index = -1; + sources.forEach((s) => { + index++; + result.push(this._getQualityObject(index,s)); + }); + resolve(result); + },10); + }); + } + + setQuality(index) { + return new Promise((resolve) => { + var paused = this.video.paused; + var sources = this._stream.sources[this._streamName]; + this._currentQuality = index<sources.length ? index:0; + var currentTime = this.video.currentTime; + this.freeze() + + .then(() => { + this._ready = false; + return this.load(); + }) + + .then(() => { + if (!paused) { + this.play(); + } + $(this.video).on('seeked',() => { + this.unFreeze(); + resolve(); + $(this.video).off('seeked'); + }); + this.video.currentTime = currentTime; + }); + }); + } + + getCurrentQuality() { + return new Promise((resolve) => { + resolve(this._getQualityObject(this._currentQuality,this._stream.sources[this._streamName][this._currentQuality])); + }); + } + + play() { + return this._deferredAction(() => { + bg.app.MainLoop.singleton.updateMode = bg.app.FrameUpdate.AUTO; + this.video.play(); + }); + } + + pause() { + return this._deferredAction(() => { + bg.app.MainLoop.singleton.updateMode = bg.app.FrameUpdate.MANUAL; + this.video.pause(); + }); + } + + isPaused() { + return this._deferredAction(() => { + return this.video.paused; + }); + } + + duration() { + return this._deferredAction(() => { + return this.video.duration; + }); + } + + setCurrentTime(time) { + return this._deferredAction(() => { + this.video.currentTime = time; + $(this.video).on('seeked',() => { + this.canvasController.postRedisplay(); + $(this.video).off('seeked'); + }); + }); + } + + currentTime() { + return this._deferredAction(() => { + return this.video.currentTime; + }); + } + + setVolume(volume) { + return this._deferredAction(() => { + this.video.volume = volume; + }); + } + + volume() { + return this._deferredAction(() => { + return this.video.volume; + }); + } + + setPlaybackRate(rate) { + return this._deferredAction(() => { + this.video.playbackRate = rate; + }); + } + + playbackRate() { + return this._deferredAction(() => { + return this.video.playbackRate; + }); + } + + goFullScreen() { + return this._deferredAction(() => { + var elem = this.video; + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } + else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } + else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } + else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + + unFreeze(){ + return this._deferredAction(() => { + var c = document.getElementById(this.video.className + "canvas"); + $(c).remove(); + }); + } + + freeze(){ + var This = this; + return this._deferredAction(function() {}); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); + } + } + + paella.ChromaVideo = ChromaVideo; + + class ChromaVideoFactory extends paella.VideoFactory { + isStreamCompatible(streamData) { + try { + if (paella.ChromaVideo._loaded) { + return false; + } + if (paella.videoFactories.Html5VideoFactory.s_instances>0 && + base.userAgent.system.iOS) + { + return false; + } + for (var key in streamData.sources) { + if (key=='chroma') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + paella.ChromaVideo._loaded = true; + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.ChromaVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + } + + paella.videoFactories.ChromaVideoFactory = ChromaVideoFactory; + +})(); + +/* +paella.addPlugin(function() { + return class CommentsPlugin extends paella.TabBarPlugin { + get divPublishComment() { return this._divPublishComment; } + set divPublishComment(v) { this._divPublishComment = v; } + get divComments() { return this._divComments; } + set divComments(v) { this._divComments = v; } + get publishCommentTextArea() { return this._publishCommentTextArea; } + set publishCommentTextArea(v) { this._publishCommentTextArea = v; } + get publishCommentButtons() { return this._publishCommentButtons; } + set publishCommentButtons(v) { this._publishCommentButtons = v; } + get canPublishAComment() { return this._canPublishAComment; } + set canPublishAComment(v) { this._canPublishAComment = v; } + get comments() { return this._comments; } + set comments(v) { this._comments = v; } + get commentsTree() { return this._commentsTree; } + set commentsTree(v) { this._commentsTree = v; } + get domElement() { return this._domElement; } + set domElement(v) { this._domElement = v; } + + getSubclass() { return "showCommentsTabBar"; } + getName() { return "es.upv.paella.commentsPlugin"; } + getTabName() { return base.dictionary.translate("Comments"); } + checkEnabled(onSuccess) { onSuccess(true); } + getIndex() { return 40; } + getDefaultToolTip() { return base.dictionary.translate("Comments"); } + + action(tab) { + this.loadContent(); + } + + buildContent(domElement) { + this.domElement = domElement; + this.canPublishAComment = paella.initDelegate.initParams.accessControl.permissions.canWrite; + this.loadContent(); + } + + loadContent() { + this.divRoot = this.domElement; + this.divRoot.innerText =""; + + this.divPublishComment = document.createElement('div'); + this.divPublishComment.className = 'CommentPlugin_Publish'; + this.divPublishComment.id = 'CommentPlugin_Publish'; + + this.divComments = document.createElement('div'); + this.divComments.className = 'CommentPlugin_Comments'; + this.divComments.id = 'CommentPlugin_Comments'; + + if(this.canPublishAComment){ + this.divRoot.appendChild(this.divPublishComment); + this.createPublishComment(); + } + this.divRoot.appendChild(this.divComments); + + this.reloadComments(); + } + + //Allows the user to write a new comment + createPublishComment() { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry"; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = 'comments_entry'; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.style.width = "48px"; + divSil.src = paella.initDelegate.initParams.accessControl.userData.avatar; + divSil.id = rootID+"_silhouette"; + divEntry.appendChild(divSil); + + var divTextAreaContainer; + divTextAreaContainer = document.createElement('div'); + divTextAreaContainer.className = "comments_entry_container"; + divTextAreaContainer.id = rootID+"_textarea_container"; + divEntry.appendChild(divTextAreaContainer); + + this.publishCommentTextArea = document.createElement('textarea'); + this.publishCommentTextArea.id = rootID+"_textarea"; + this.publishCommentTextArea.onclick = function(){paella.keyManager.enabled = false;}; + this.publishCommentTextArea.onblur = function(){paella.keyManager.enabled = true;}; + divTextAreaContainer.appendChild(this.publishCommentTextArea); + + this.publishCommentButtons = document.createElement('div'); + this.publishCommentButtons.id = rootID+"_buttons_area"; + divTextAreaContainer.appendChild(this.publishCommentButtons); + + var btnAddComment; + btnAddComment = document.createElement('button'); + btnAddComment.id = rootID+"_btnAddComment"; + btnAddComment.className = "publish"; + btnAddComment.onclick = function(){ + var txtValue = thisClass.publishCommentTextArea.value; + if (txtValue.replace(/\s/g,'') != "") { + thisClass.addComment(); + } + }; + btnAddComment.innerText = base.dictionary.translate("Publish"); + + this.publishCommentButtons.appendChild(btnAddComment); + + divTextAreaContainer.commentsTextArea = this.publishCommentTextArea; + divTextAreaContainer.commentsBtnAddComment = btnAddComment; + divTextAreaContainer.commentsBtnAddCommentToInstant = this.btnAddCommentToInstant; + + this.divPublishComment.appendChild(divEntry); + } + + addComment() { + var thisClass = this; + var txtValue = paella.AntiXSS.htmlEscape(thisClass.publishCommentTextArea.value); + //var txtValue = thisClass.publishCommentTextArea.value; + var now = new Date(); + + this.comments.push({ + id: base.uuid(), + userName:paella.initDelegate.initParams.accessControl.userData.name, + mode: "normal", + value: txtValue, + created: now + }); + + var data = { + allComments: this.comments + }; + + paella.data.write('comments',{id:paella.initDelegate.getId()},data,function(response,status){ + if (status) {thisClass.loadContent();} + }); + } + + addReply(annotationID, domNodeId) { + var thisClass = this; + var textArea = document.getElementById(domNodeId); + var txtValue = paella.AntiXSS.htmlEscape(textArea.value); + var now = new Date(); + + paella.keyManager.enabled = true; + + this.comments.push({ + id: base.uuid(), + userName:paella.initDelegate.initParams.accessControl.userData.name, + mode: "reply", + parent: annotationID, + value: txtValue, + created: now + }); + + var data = { + allComments: this.comments + }; + + paella.data.write('comments',{id:paella.initDelegate.getId()},data,function(response,status){ + if (status) thisClass.reloadComments(); + }); + } + + reloadComments() { + var thisClass = this; + thisClass.commentsTree = []; + thisClass.comments = []; + this.divComments.innerText =""; + + paella.data.read('comments',{id:paella.initDelegate.getId()},function(data,status) { + var i; + var valueText; + var comment; + if (data && typeof(data)=='object' && data.allComments && data.allComments.length>0) { + thisClass.comments = data.allComments; + var tempDict = {}; + + // obtain normal comments + for (i =0; i < data.allComments.length; ++i ) { + valueText = data.allComments[i].value; + + if (data.allComments[i].mode !== "reply") { + comment = {}; + comment["id"] = data.allComments[i].id; + comment["userName"] = data.allComments[i].userName; + comment["mode"] = data.allComments[i].mode; + comment["value"] = valueText; + comment["created"] = data.allComments[i].created; + comment["replies"] = []; + + thisClass.commentsTree.push(comment); + tempDict[comment["id"]] = thisClass.commentsTree.length - 1; + } + } + + // obtain reply comments + for (i =0; i < data.allComments.length; ++i ){ + valueText = data.allComments[i].value; + + if (data.allComments[i].mode === "reply") { + comment = {}; + comment["id"] = data.allComments[i].id; + comment["userName"] = data.allComments[i].userName; + comment["mode"] = data.allComments[i].mode; + comment["value"] = valueText; + comment["created"] = data.allComments[i].created; + + var index = tempDict[data.allComments[i].parent]; + thisClass.commentsTree[index]["replies"].push(comment); + } + } + thisClass.displayComments(); + } + }); + } + + displayComments() { + var thisClass = this; + for (var i =0; i < thisClass.commentsTree.length; ++i ){ + var comment = thisClass.commentsTree[i]; + var e = thisClass.createACommentEntry(comment); + thisClass.divComments.appendChild(e); + } + } + + createACommentEntry(comment) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry"+comment["id"]; + var users; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.id = rootID+"_silhouette"; + + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container"; + divCommentContainer.id = rootID+"_comment_container"; + divEntry.appendChild(divCommentContainer); + + var divCommentMetadata; + divCommentMetadata = document.createElement('div'); + divCommentMetadata.id = rootID+"_comment_metadata"; + divCommentContainer.appendChild(divCommentMetadata); + + + + // var datePublish = comment["created"]; + var datePublish = ""; + if (comment["created"]) { + var dateToday=new Date(); + var dateComment = paella.utils.timeParse.matterhornTextDateToDate(comment["created"]); + datePublish = paella.utils.timeParse.secondsToText((dateToday.getTime()-dateComment.getTime())/1000); + } + + // var headLine = "<span class='comments_entry_username'>" + comment["userName"] + "</span>"; + // headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + // divCommentMetadata.innerHTML = headLine; + + + var divCommentValue; + divCommentValue = document.createElement('div'); + divCommentValue.id = rootID+"_comment_value"; + divCommentValue.className = "comments_entry_comment"; + divCommentContainer.appendChild(divCommentValue); + + divCommentValue.innerText = comment["value"]; + + var divCommentReply = document.createElement('div'); + divCommentReply.id = rootID+"_comment_reply"; + divCommentContainer.appendChild(divCommentReply); + + paella.data.read('userInfo',{username:comment["userName"]}, function(data,status) { + if (data) { + divSil.src = data.avatar; + + var headLine = "<span class='comments_entry_username'>" + data.name + " " + data.lastname + "</span>"; + headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + divCommentMetadata.innerHTML = headLine; + } + }); + + if (this.canPublishAComment == true) { + //var btnRplyComment = document.createElement('button'); + var btnRplyComment = document.createElement('div'); + btnRplyComment.className = "reply_button"; + btnRplyComment.innerText = base.dictionary.translate("Reply"); + + btnRplyComment.id = rootID+"_comment_reply_button"; + btnRplyComment.onclick = function(){ + var e = thisClass.createAReplyEntry(comment["id"]); + this.style.display="none"; + this.parentElement.parentElement.appendChild(e); + }; + divCommentReply.appendChild(btnRplyComment); + } + + for (var i =0; i < comment.replies.length; ++i ){ + var e = thisClass.createACommentReplyEntry(comment["id"], comment["replies"][i]); + divCommentContainer.appendChild(e); + } + return divEntry; + } + + createACommentReplyEntry(parentID, comment) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry_" + parentID + "_reply_" + comment["id"]; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.id = rootID+"_silhouette"; + + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container"; + divCommentContainer.id = rootID+"_comment_container"; + divEntry.appendChild(divCommentContainer); + + var divCommentMetadata; + divCommentMetadata = document.createElement('div'); + divCommentMetadata.id = rootID+"_comment_metadata"; + divCommentContainer.appendChild(divCommentMetadata); + // var datePublish = comment["created"]; + var datePublish = ""; + if (comment["created"]) { + var dateToday=new Date(); + var dateComment = paella.utils.timeParse.matterhornTextDateToDate(comment["created"]); + datePublish = paella.utils.timeParse.secondsToText((dateToday.getTime()-dateComment.getTime())/1000); + } + + // var headLine = "<span class='comments_entry_username'>" + comment["userName"] + "</span>"; + // headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + // divCommentMetadata.innerHTML = headLine; + + var divCommentValue; + divCommentValue = document.createElement('div'); + divCommentValue.id = rootID+"_comment_value"; + divCommentValue.className = "comments_entry_comment"; + divCommentContainer.appendChild(divCommentValue); + + divCommentValue.innerText = comment["value"]; + + paella.data.read('userInfo',{username:comment["userName"]}, function(data,status) { + if (data) { + divSil.src = data.avatar; + + var headLine = "<span class='comments_entry_username'>" + data.name + " " + data.lastname + "</span>"; + headLine += "<span class='comments_entry_datepublish'>" + datePublish + "</span>"; + divCommentMetadata.innerHTML = headLine; + } + }); + + return divEntry; + } + + //Allows the user to write a new reply + createAReplyEntry(annotationID) { + var thisClass = this; + var rootID = this.divPublishComment.id+"_entry_" + annotationID + "_reply"; + + var divEntry; + divEntry = document.createElement('div'); + divEntry.id = rootID+"_entry"; + divEntry.className = "comments_entry"; + + var divSil; + divSil = document.createElement('img'); + divSil.className = "comments_entry_silhouette"; + divSil.style.width = "48px"; + divSil.id = rootID+"_silhouette"; + divSil.src = paella.initDelegate.initParams.accessControl.userData.avatar; + divEntry.appendChild(divSil); + + var divCommentContainer; + divCommentContainer = document.createElement('div'); + divCommentContainer.className = "comments_entry_container comments_reply_container"; + divCommentContainer.id = rootID+"_reply_container"; + divEntry.appendChild(divCommentContainer); + + var textArea; + textArea = document.createElement('textArea'); + textArea.onclick = function(){paella.keyManager.enabled = false;}; + textArea.draggable = false; + textArea.id = rootID+"_textarea"; + divCommentContainer.appendChild(textArea); + + this.publishCommentButtons = document.createElement('div'); + this.publishCommentButtons.id = rootID+"_buttons_area"; + divCommentContainer.appendChild(this.publishCommentButtons); + + var btnAddComment; + btnAddComment = document.createElement('button'); + btnAddComment.id = rootID+"_btnAddComment"; + btnAddComment.className = "publish"; + btnAddComment.onclick = function(){ + var txtValue = textArea.value; + if (txtValue.replace(/\s/g,'') != "") { + thisClass.addReply(annotationID,textArea.id); + } + }; + btnAddComment.innerText = base.dictionary.translate("Reply"); + + this.publishCommentButtons.appendChild(btnAddComment); + + return divEntry; + } + } +}); +*/ + + +/* +paella.addPlugin(function() { + + return class DescriptionPlugin extends paella.TabBarPlugin { + getSubclass() { return "showDescriptionTabBar"; } + getName() { return "es.upv.paella.descriptionPlugin"; } + getTabName() { return "Descripción"; } + + get domElement() { return this._domElement || null; } + set domElement(d) { this._domElement = d; } + + buildContent(domElement) { + this.domElement = domElement; + this.loadContent(); + } + + action(tab) { + this.loadContent(); + } + + loadContent() { + var container = this.domElement; + container.innerText = "Loading..."; + new paella.Timer(function(t) { + container.innerText = "Loading done"; + },2000); + } + } +}) +*/ + + +paella.addPlugin(function() { + return class extendedTabAdapterPlugin extends paella.ButtonPlugin { + get currentUrl() { return this._currentUrl; } + set currentUrl(v) { this._currentUrl = v; } + get currentMaster() { return this._currentMaster; } + set currentMaster(v) { this._currentMaster = v; } + get currentSlave() { return this._currentSlave; } + set currentSlave(v) { this._currentSlave = v; } + get availableMasters() { return this._availableMasters; } + set availableMasters(v) { this._availableMasters = v; } + get availableSlaves() { return this._availableSlaves } + set availableSlaves(v) { this._availableSlaves = v; } + get showWidthRes() { return this._showWidthRes; } + set showWidthRes(v) { this._showWidthRes = v; } + + getAlignment() { return 'right'; } + getSubclass() { return "extendedTabAdapterPlugin"; } + getIconClass() { return 'icon-folder'; } + getIndex() { return 2030; } + getName() { return "es.upv.paella.extendedTabAdapterPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Extended Tab Adapter"); } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + buildContent(domElement) { + domElement.appendChild(paella.extendedAdapter.bottomContainer); + } + } +}); +paella.addPlugin(function() { + return class FootPrintsPlugin extends paella.ButtonPlugin { + get INTERVAL_LENGTH() { return this._INTERVAL_LENGTH; } + set INTERVAL_LENGTH(v) { this._INTERVAL_LENGTH = v; } + get inPosition() { return this._inPosition; } + set inPosition(v) { this._inPosition = v; } + get outPosition() { return this._outPosition; } + set outPosition(v) { this._outPosition = v; } + get canvas() { return this._canvas; } + set canvas(v) { this._canvas = v; } + get footPrintsTimer() { return this._footPrintsTimer; } + set footPrintsTimer(v) { this._footPrintsTimer = v; } + get footPrintsData() { return this._footPrintsData; } + set footPrintsData(v) { this._footPrintsData = v; } + + getAlignment() { return 'right'; } + getSubclass() { return "footPrints"; } + getIconClass() { return 'icon-stats'; } + getIndex() { return 590; } + getDefaultToolTip() { return base.dictionary.translate("Show statistics"); } + getName() { return "es.upv.paella.footprintsPlugin"; } + getButtonType() { return paella.ButtonPlugin.type.timeLineButton; } + + setup(){ + this._INTERVAL_LENGTH = 5; + var thisClass = this; + paella.events.bind(paella.events.timeUpdate, function(event) { thisClass.onTimeUpdate(); }); + + switch(this.config.skin) { + case 'custom': + this.fillStyle = this.config.fillStyle; + this.strokeStyle = this.config.strokeStyle; + break; + + case 'dark': + this.fillStyle = '#727272'; + this.strokeStyle = '#424242'; + break; + + case 'light': + this.fillStyle = '#d8d8d8'; + this.strokeStyle = '#ffffff'; + break; + + default: + this.fillStyle = '#d8d8d8'; + this.strokeStyle = '#ffffff'; + break; + } + } + + checkEnabled(onSuccess) { + onSuccess(!paella.player.isLiveStream()); + } + + buildContent(domElement) { + var container = document.createElement('div'); + container.className = 'footPrintsContainer'; + + this.canvas = document.createElement('canvas'); + this.canvas.id = 'footPrintsCanvas'; + this.canvas.className = 'footPrintsCanvas'; + container.appendChild(this.canvas); + + + domElement.appendChild(container); + } + + onTimeUpdate() { + let currentTime = -1; + paella.player.videoContainer.currentTime() + .then((c) => { + currentTime = c; + return paella.player.videoContainer.trimming(); + }) + .then((trimming) => { + let videoCurrentTime = Math.round(currentTime + (trimming.enabled ? trimming.start : 0)); + if (this.inPosition <= videoCurrentTime && videoCurrentTime <= this.inPosition + this.INTERVAL_LENGTH) { + this.outPosition = videoCurrentTime; + if ((this.inPosition + this.INTERVAL_LENGTH)===this.outPosition) { + this.trackFootPrint(this.inPosition, this.outPosition); + this.inPosition = this.outPosition; + } + } + else { + this.trackFootPrint(this.inPosition, this.outPosition); + this.inPosition = videoCurrentTime; + this.outPosition = videoCurrentTime; + } + }); + } + + trackFootPrint(inPosition, outPosition) { + var data = {"in": inPosition, "out": outPosition}; + paella.data.write('footprints',{id:paella.initDelegate.getId()}, data); + } + + willShowContent() { + var thisClass = this; + this.loadFootprints(); + this.footPrintsTimer = new base.Timer(function(timer) { + thisClass.loadFootprints(); + },5000); + this.footPrintsTimer.repeat = true; + } + + didHideContent() { + if (this.footPrintsTimer!=null) { + this.footPrintsTimer.cancel(); + this.footPrintsTimer = null; + } + } + + loadFootprints() { + var thisClass = this; + paella.data.read('footprints',{id:paella.initDelegate.getId()},function(data,status) { + var footPrintsData = {}; + paella.player.videoContainer.duration().then(function(duration){ + var trimStart = Math.floor(paella.player.videoContainer.trimStart()); + + var lastPosition = -1; + var lastViews = 0; + for (var i = 0; i < data.length; i++) { + var position = data[i].position - trimStart; + if (position < duration){ + var views = data[i].views; + + if (position - 1 != lastPosition){ + for (var j = lastPosition + 1; j < position; j++) { + footPrintsData[j] = lastViews; + } + } + footPrintsData[position] = views; + lastPosition = position; + lastViews = views; + } + } + thisClass.drawFootPrints(footPrintsData); + }); + }); + } + + drawFootPrints(footPrintsData) { + if (this.canvas) { + var duration = Object.keys(footPrintsData).length; + var ctx = this.canvas.getContext("2d"); + var h = 20; + var i; + for (i = 0; i<duration; ++i) { + if (footPrintsData[i] > h) { h = footPrintsData[i]; } + } + + this.canvas.setAttribute("width", duration); + this.canvas.setAttribute("height", h); + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + ctx.fillStyle = this.fillStyle; //'#faa166'; //'#9ED4EE'; + ctx.strokeStyle = this.strokeStyle; //'#fa8533'; //"#0000FF"; + ctx.lineWidth = 2; + + ctx.webkitImageSmoothingEnabled = false; + ctx.mozImageSmoothingEnabled = false; + + for (i = 0; i<duration-1; ++i) { + ctx.beginPath(); + ctx.moveTo(i, h); + ctx.lineTo(i, h-footPrintsData[i]); + ctx.lineTo(i+1, h-footPrintsData[i+1]); + ctx.lineTo(i+1, h); + ctx.closePath(); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(i, h-footPrintsData[i]); + ctx.lineTo(i+1, h-footPrintsData[i+1]); + ctx.closePath(); + ctx.stroke(); + } + } + } + } +}); + +paella.addPlugin(function() { + return class FrameCaptionsSearchPlugIn extends paella.SearchServicePlugIn { + getName() { return "es.upv.paella.frameCaptionsSearchPlugin"; } + + search(text, next) { + let re = RegExp(text,"i"); + let results = []; + for (var key in paella.player.videoLoader.frameList) { + var value = paella.player.videoLoader.frameList[key]; + if (typeof(value)=="object") { + if (re.test(value.caption)) { + results.push({ + time: key, + content: value.caption, + score: 0 + }); + } + } + } + if (next) { + next(false, results); + } + } + } +}); + +paella.addPlugin(function() { + return class FrameControlPlugin extends paella.ButtonPlugin { + get frames() { return this._frames; } + set frames(v) { this._frames = v; } + get highResFrames() { return this._highResFrames; } + set highResFrames(v) { this._highResFrames = v; } + get currentFrame() { return this._currentFrame; } + set currentFrame(v) { this._currentFrame = v; } + get navButtons() { return this._navButtons; } + set navButtons(v) { this._navButtons = v; } + get buttons() { + if (!this._buttons) { + this._buttons = []; + } + return this._buttons; + } + set buttons(v) { this._buttons = v; } + get contx() { return this._contx; } + set contx(v) { this._contx = v; } + + getAlignment() { return 'right'; } + getSubclass() { return "frameControl"; } + getIconClass() { return 'icon-photo'; } + getIndex() { return 510; } + getName() { return "es.upv.paella.frameControlPlugin"; } + getButtonType() { return paella.ButtonPlugin.type.timeLineButton; } + getDefaultToolTip() { return base.dictionary.translate("Navigate by slides"); } + + checkEnabled(onSuccess) { + this._img = null; + this._searchTimer = null; + this._searchTimerTime = 250; + + if (paella.initDelegate.initParams.videoLoader.frameList==null) onSuccess(false); + else if (paella.initDelegate.initParams.videoLoader.frameList.length===0) onSuccess(false); + else if (Object.keys(paella.initDelegate.initParams.videoLoader.frameList).length==0) onSuccess(false); + else onSuccess(true); + } + + setup() { + this._showFullPreview = this.config.showFullPreview || "auto"; + + var thisClass = this; + var oldClassName; + var blockCounter = 1; + var correctJump = 0; + var selectedItem = -1; + var jumpAtItem; + var Keys = {Tab:9,Return:13,Esc:27,End:35,Home:36,Left:37,Up:38,Right:39,Down:40}; + + $(this.button).keyup(function(event) { + var visibleItems = Math.floor(thisClass.contx.offsetWidth/100); + var rest = thisClass.buttons.length%visibleItems; + var blocks = Math.floor(thisClass.buttons.length/visibleItems); + + if (thisClass.isPopUpOpen()){ + if (event.keyCode == Keys.Left) { + if(selectedItem > 0){ + thisClass.buttons[selectedItem].className = oldClassName; + + selectedItem--; + + if(blockCounter > blocks) correctJump = visibleItems - rest; + jumpAtItem = ((visibleItems)*(blockCounter-1))-1-correctJump; + + if(selectedItem == jumpAtItem && selectedItem != 0){ + thisClass.navButtons.left.scrollContainer.scrollLeft -= visibleItems*105; + --blockCounter; + } + + if(this.hiResFrame) thisClass.removeHiResFrame(); + if (!base.userAgent.browser.IsMobileVersion) { + thisClass.buttons[selectedItem].frameControl.onMouseOver(null,thisClass.buttons[selectedItem].frameData); + } + + oldClassName = thisClass.buttons[selectedItem].className; + thisClass.buttons[selectedItem].className = 'frameControlItem selected'; + } + } + else if (event.keyCode == Keys.Right) { + if(selectedItem<thisClass.buttons.length-1){ + if(selectedItem >= 0){ + thisClass.buttons[selectedItem].className = oldClassName; + } + + selectedItem++; + + if (blockCounter == 1) correctJump = 0; + jumpAtItem = (visibleItems)*blockCounter-correctJump; + + if(selectedItem == jumpAtItem){ + thisClass.navButtons.left.scrollContainer.scrollLeft += visibleItems*105; + ++blockCounter; + } + + if(this.hiResFrame)thisClass.removeHiResFrame(); + if (!base.userAgent.browser.IsMobileVersion) { + thisClass.buttons[selectedItem].frameControl.onMouseOver(null,thisClass.buttons[selectedItem].frameData); + } + + oldClassName = thisClass.buttons[selectedItem].className; + thisClass.buttons[selectedItem].className = 'frameControlItem selected'; + } + } + else if (event.keyCode == Keys.Return) { + thisClass.buttons[selectedItem].frameControl.onClick(null,thisClass.buttons[selectedItem].frameData); + oldClassName = 'frameControlItem current'; + } + else if (event.keyCode == Keys.Esc){ + thisClass.removeHiResFrame(); + } + } + }); + } + + buildContent(domElement) { + var thisClass = this; + this.frames = []; + var container = document.createElement('div'); + container.className = 'frameControlContainer'; + + thisClass.contx = container; + + var content = document.createElement('div'); + content.className = 'frameControlContent'; + + this.navButtons = { + left:document.createElement('div'), + right:document.createElement('div') + }; + this.navButtons.left.className = 'frameControl navButton left'; + this.navButtons.right.className = 'frameControl navButton right'; + + var frame = this.getFrame(null); + + domElement.appendChild(this.navButtons.left); + domElement.appendChild(container); + container.appendChild(content); + domElement.appendChild(this.navButtons.right); + + this.navButtons.left.scrollContainer = container; + $(this.navButtons.left).click(function(event) { + this.scrollContainer.scrollLeft -= 100; + }); + + this.navButtons.right.scrollContainer = container; + $(this.navButtons.right).click(function(event) { + this.scrollContainer.scrollLeft += 100; + }); + + content.appendChild(frame); + + var itemWidth = $(frame).outerWidth(true); + content.innerText = ''; + $(window).mousemove(function(event) { + if ($(content).offset().top>event.pageY || !$(content).is(":visible") || + ($(content).offset().top + $(content).height())<event.pageY) + { + thisClass.removeHiResFrame(); + } + }); + + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var numFrames; + if (frames) { + var framesKeys = Object.keys(frames); + numFrames = framesKeys.length; + + framesKeys.map(function(i){return Number(i, 10);}) + .sort(function(a, b){return a-b;}) + .forEach(function(key){ + var frameItem = thisClass.getFrame(frames[key]); + content.appendChild(frameItem,'frameContrlItem_' + numFrames); + thisClass.frames.push(frameItem); + }); + } + + $(content).css({width:(numFrames * itemWidth) + 'px'}); + + paella.events.bind(paella.events.setTrim,(event,params) => { + this.updateFrameVisibility(params.trimEnabled,params.trimStart,params.trimEnd); + }); + paella.player.videoContainer.trimming() + .then((trimData) => { + this.updateFrameVisibility(trimData.enabled,trimData.start,trimData.end); + }); + + + paella.events.bind(paella.events.timeupdate,(event,params) => this.onTimeUpdate(params.currentTime) ); + } + + showHiResFrame(url,caption) { + var frameRoot = document.createElement("div"); + var frame = document.createElement("div"); + var hiResImage = document.createElement('img'); + this._img = hiResImage; + hiResImage.className = 'frameHiRes'; + hiResImage.setAttribute('src',url); + hiResImage.setAttribute('style', 'width: 100%;'); + + $(frame).append(hiResImage); + $(frameRoot).append(frame); + + frameRoot.setAttribute('style', 'display: table;'); + frame.setAttribute('style', 'display: table-cell; vertical-align:middle;'); + + if (this.config.showCaptions === true){ + var captionContainer = document.createElement('p'); + captionContainer.className = "frameCaption"; + captionContainer.innerText = caption || ""; + frameRoot.append(captionContainer); + this._caption = captionContainer; + } + + let overlayContainer = paella.player.videoContainer.overlayContainer; + + switch(this._showFullPreview) { + case "auto": + var streams = paella.initDelegate.initParams.videoLoader.streams; + if (streams.length == 1){ + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + } + else if (streams.length >= 2){ + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(1)); + } + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + break; + case "master": + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + break; + case "slave": + var streams = paella.initDelegate.initParams.videoLoader.streams; + if (streams.length >= 2){ + overlayContainer.addElement(frameRoot, overlayContainer.getVideoRect(0)); + overlayContainer.enableBackgroundMode(); + this.hiResFrame = frameRoot; + } + break; + } + } + + removeHiResFrame() { + var thisClass = this; + var overlayContainer = paella.player.videoContainer.overlayContainer; + if (this.hiResFrame) { + overlayContainer.removeElement(this.hiResFrame); + } + overlayContainer.disableBackgroundMode(); + thisClass._img = null; + } + + updateFrameVisibility(trimEnabled,trimStart,trimEnd) { + var i; + if (!trimEnabled) { + for (i = 0; i<this.frames.length;++i) { + $(this.frames[i]).show(); + } + } + else { + for (i = 0; i<this.frames.length; ++i) { + var frameElem = this.frames[i]; + var frameData = frameElem.frameData; + if (frameData.time<trimStart) { + if (this.frames.length>i+1 && this.frames[i+1].frameData.time>trimStart) { + $(frameElem).show(); + } + else { + $(frameElem).hide(); + } + } + else if (frameData.time>trimEnd) { + $(frameElem).hide(); + } + else { + $(frameElem).show(); + } + } + } + } + + getFrame(frameData,id) { + var frame = document.createElement('div'); + frame.className = 'frameControlItem'; + if (id) frame.id = id; + if (frameData) { + + this.buttons.push(frame); + + frame.frameData = frameData; + frame.frameControl = this; + var image = frameData.thumb ? frameData.thumb:frameData.url; + var labelTime = paella.utils.timeParse.secondsToTime(frameData.time); + frame.innerHTML = '<img src="' + image + '" alt="" class="frameControlImage" title="'+labelTime+'" aria-label="'+labelTime+'"></img>'; + if (!base.userAgent.browser.IsMobileVersion) { + $(frame).mouseover(function(event) { + this.frameControl.onMouseOver(event,this.frameData); + }); + } + + $(frame).mouseout(function(event) { + this.frameControl.onMouseOut(event,this.frameData); + }); + $(frame).click(function(event) { + this.frameControl.onClick(event,this.frameData); + }); + } + return frame; + } + + onMouseOver(event,frameData) { + var frames = paella.initDelegate.initParams.videoLoader.frameList; + var frame = frames[frameData.time]; + if (frame) { + var image = frame.url; + if(this._img){ + this._img.setAttribute('src',image); + if (this.config.showCaptions === true){ + this._caption.innerText = frame.caption || ""; + } + } + else{ + this.showHiResFrame(image,frame.caption); + } + } + + if(this._searchTimer != null){ + clearTimeout(this._searchTimer); + } + } + + onMouseOut(event,frameData) { + this._searchTimer = setTimeout((timer) => this.removeHiResFrame(), this._searchTimerTime); + } + + onClick(event,frameData) { + paella.player.videoContainer.trimming() + .then((trimming) => { + let time = trimming.enabled ? frameData.time - trimming.start : frameData.time; + if (time>0) { + paella.player.videoContainer.seekToTime(time + 1); + } + else { + paella.player.videoContainer.seekToTime(0); + } + }); + } + + onTimeUpdate(currentTime) { + var frame = null; + paella.player.videoContainer.trimming() + .then((trimming) => { + let time = trimming.enabled ? currentTime + trimming.start : currentTime; + + for (var i = 0; i<this.frames.length; ++i) { + if (this.frames[i].frameData && this.frames[i].frameData.time<=time) { + frame = this.frames[i]; + } + else { + break; + } + } + if (this.currentFrame!=frame && frame) { + //this.navButtons.left.scrollContainer.scrollLeft += 100; + + if (this.currentFrame) this.currentFrame.className = 'frameControlItem'; + this.currentFrame = frame; + this.currentFrame.className = 'frameControlItem current'; + } + + + }); + + } + } +}); + +paella.addPlugin(function() { + return class FullScreenPlugin extends paella.ButtonPlugin { + + getIndex() { return 551; } + getAlignment() { return 'right'; } + getSubclass() { return "showFullScreenButton"; } + getIconClass() { return 'icon-fullscreen'; } + getName() { return "es.upv.paella.fullScreenButtonPlugin"; } + checkEnabled(onSuccess) { + this._reload = null; + var enabled = paella.player.checkFullScreenCapability(); + onSuccess(enabled); + } + getDefaultToolTip() { return base.dictionary.translate("Go Fullscreen"); } + + setup() { + this._reload = this.config.reloadOnFullscreen ? this.config.reloadOnFullscreen.enabled:false; + paella.events.bind(paella.events.enterFullscreen, (event) => this.onEnterFullscreen()); + paella.events.bind(paella.events.exitFullscreen, (event) => this.onExitFullscreen()); + } + + action(button) { + if (paella.player.isFullScreen()) { + paella.player.exitFullScreen(); + } + else if ((!paella.player.checkFullScreenCapability() || base.userAgent.browser.Explorer) && window.location !== window.parent.location) { + // Iframe and no fullscreen support + var url = window.location.href; + + paella.player.pause(); + paella.player.videoContainer.currentTime() + .then((currentTime) => { + var obj = this.secondsToHours(currentTime); + window.open(url+"&time="+obj.h+"h"+obj.m+"m"+obj.s+"s&autoplay=true"); + }); + + return; + } + else { + paella.player.goFullScreen(); + } + + if (paella.player.config.player.reloadOnFullscreen && paella.player.videoContainer.supportAutoplay()) { + setTimeout(() => { + if(this._reload) { + paella.player.videoContainer.setQuality(null) + .then(() => { + }); + //paella.player.reloadVideos(); + } + }, 1000); + } + } + + secondsToHours(sec_numb) { + var hours = Math.floor(sec_numb / 3600); + var minutes = Math.floor((sec_numb - (hours * 3600)) / 60); + var seconds = Math.floor(sec_numb - (hours * 3600) - (minutes * 60)); + var obj = {}; + + if (hours < 10) {hours = "0"+hours;} + if (minutes < 10) {minutes = "0"+minutes;} + if (seconds < 10) {seconds = "0"+seconds;} + obj.h = hours; + obj.m = minutes; + obj.s = seconds; + return obj; + } + + onEnterFullscreen() { + this.setToolTip(base.dictionary.translate("Exit Fullscreen")); + this.button.className = this.getButtonItemClass(true); + this.changeIconClass('icon-windowed'); + } + + onExitFullscreen() { + this.setToolTip(base.dictionary.translate("Go Fullscreen")); + this.button.className = this.getButtonItemClass(false); + this.changeIconClass('icon-fullscreen'); + setTimeout(() => { + paella.player.onresize(); + }, 100); + } + + getButtonItemClass(selected) { + return 'buttonPlugin '+this.getAlignment() +' '+ this.getSubclass() + ((selected) ? ' active':''); + } + } +}); + +paella.addPlugin(function() { + return class HelpPlugin extends paella.ButtonPlugin { + + getIndex() { return 509; } + getAlignment() { return 'right'; } + getSubclass() { return "helpButton"; } + getIconClass() { return 'icon-help'; } + getName() { return "es.upv.paella.helpPlugin"; } + + getDefaultToolTip() { return base.dictionary.translate("Show help") + ' (' + base.dictionary.translate("Paella version:") + ' ' + paella.version + ')'; } + + + checkEnabled(onSuccess) { + var availableLangs = (this.config && this.config.langs) || []; + onSuccess(availableLangs.length>0); + } + + action(button) { + var mylang = base.dictionary.currentLanguage(); + + var availableLangs = (this.config && this.config.langs) || []; + var idx = availableLangs.indexOf(mylang); + if (idx < 0) { idx = 0; } + + //paella.messageBox.showFrame("http://paellaplayer.upv.es/?page=usage"); + let url = "resources/style/help/help_" + availableLangs[idx] + ".html"; + if (base.userAgent.browser.IsMobileVersion) { + window.open(url); + } + else { + paella.messageBox.showFrame(url); + } + } + + } +}); + +(() => { + + let s_preventVideoDump = []; + + class HLSPlayer extends paella.Html5Video { + get config() { + let config = { + autoStartLoad: true, + startPosition : -1, + capLevelToPlayerSize: true, + debug: false, + defaultAudioCodec: undefined, + initialLiveManifestSize: 1, + maxBufferLength: 30, + maxMaxBufferLength: 600, + maxBufferSize: 60*1000*1000, + maxBufferHole: 0.5, + lowBufferWatchdogPeriod: 0.5, + highBufferWatchdogPeriod: 3, + nudgeOffset: 0.1, + nudgeMaxRetry : 3, + maxFragLookUpTolerance: 0.2, + liveSyncDurationCount: 3, + liveMaxLatencyDurationCount: 10, + enableWorker: true, + enableSoftwareAES: true, + manifestLoadingTimeOut: 10000, + manifestLoadingMaxRetry: 1, + manifestLoadingRetryDelay: 500, + manifestLoadingMaxRetryTimeout : 64000, + startLevel: undefined, + levelLoadingTimeOut: 10000, + levelLoadingMaxRetry: 4, + levelLoadingRetryDelay: 500, + levelLoadingMaxRetryTimeout: 64000, + fragLoadingTimeOut: 20000, + fragLoadingMaxRetry: 6, + fragLoadingRetryDelay: 500, + fragLoadingMaxRetryTimeout: 64000, + startFragPrefetch: false, + appendErrorMaxRetry: 3, + + // loader: customLoader, + // fLoader: customFragmentLoader, + // pLoader: customPlaylistLoader, + // xhrSetup: XMLHttpRequestSetupCallback, + // fetchSetup: FetchSetupCallback, + // abrController: customAbrController, + // timelineController: TimelineController, + + enableWebVTT: true, + enableCEA708Captions: true, + stretchShortVideoTrack: false, + maxAudioFramesDrift : 1, + forceKeyFrameOnDiscontinuity: true, + abrEwmaFastLive: 5.0, + abrEwmaSlowLive: 9.0, + abrEwmaFastVoD: 4.0, + abrEwmaSlowVoD: 15.0, + abrEwmaDefaultEstimate: 500000, + abrBandWidthFactor: 0.95, + abrBandWidthUpFactor: 0.7, + minAutoBitrate: 0 + }; + + let pluginConfig = {}; + paella.player.config.player.methods.some((methodConfig) => { + if (methodConfig.factory=="HLSVideoFactory") { + pluginConfig = methodConfig.config || {}; + return true; + } + }); + + for (let key in config) { + if (pluginConfig[key]!=undefined) { + config[key] = pluginConfig[key]; + } + } + + return config; + } + + constructor(id,stream,left,top,width,height) { + super(id,stream,left,top,width,height,'hls'); + } + + _loadDeps() { + return new Promise((resolve,reject) => { + if (!window.$paella_hls) { + require([paella.baseUrl +'resources/deps/hls.min.js'],function(hls) { + window.$paella_hls = hls; + resolve(window.$paella_hls); + }); + } + else { + resolve(window.$paella_hls); + } + }); + } + + setupHls(video,url) { + return new Promise((resolve,reject) => { + this._loadDeps() + .then((Hls) => { + if (Hls.isSupported()) { + let cfg = this.config; + this._hls = new Hls(cfg); + this._hls.loadSource(url); + this._hls.attachMedia(video); + this.autoQuality = true; + + this._hls.on(Hls.Events.LEVEL_SWITCHED, (ev,data) => { + this._qualities = this._qualities || []; + this._qualityIndex = this.autoQuality ? this._qualities.length - 1 : data.level; + paella.events.trigger(paella.events.qualityChanged,{}); + if (console && console.log) console.log(`HLS: quality level changed to ${ data.level }`); + }); + + this._hls.on(Hls.Events.ERROR, (event, data) => { + if (data.fatal) { + switch (data.type) { + case Hls.ErrorTypes.NETWORK_ERROR: + console.error("paella.HLSPlayer: Fatal network error encountered, try to recover"); + this._hls.startLoad(); + break; + case Hls.ErrorTypes.MEDIA_ERROR: + console.error("paella.HLSPlayer: Fatal media error encountered, try to recover"); + this._hls.recoverMediaError(); + break; + default: + console.error("paella.HLSPlayer: Fatal error. Can not recover"); + this._hls.destroy(); + reject(new Errro("Invalid media")); + break; + } + } + }); + + this._hls.on(Hls.Events.MANIFEST_PARSED, () => { + //this._deferredAction(function() { + resolve(video); + //}); + }); + } + else { + reject(new Error("HLS not supported")); + } + }) + }); + } + + webGlDidLoad() { + // Register a new video loader in the webgl engine, to enable the + // hls compatibility in webgl canvas + bg.utils.HTTPResourceProvider.AddVideoLoader('m3u8', (url,onSuccess,onFail) => { + var video = document.createElement("video"); + s_preventVideoDump.push(video); + this.setupHls(video,url) + .then(() => onSuccess(video)) + .catch(() => onFail()); + }); + return Promise.resolve(); + } + + loadVideoStream(canvasInstance,stream) { + return canvasInstance.loadVideo(this,stream,(videoElem) => { + return this.setupHls(videoElem,stream.src); + }); + } + + getQualities() { + if (base.userAgent.system.iOS)// || + // base.userAgent.browser.Safari) + { + return new Promise((resolve,reject) => { + resolve([ + { + index: 0, + res: "", + src: "", + toString:function() { return "auto"; }, + shortLabel:function() { return "auto"; }, + compare:function(q2) { return 0; } + } + ]); + }); + } + else { + let This = this; + return new Promise((resolve) => { + if (!this._qualities || this._qualities.length==0) { + This._qualities = []; + This._hls.levels.forEach(function(q, index){ + This._qualities.push(This._getQualityObject(index, { + index: index, + res: { w:q.width, h:q.height }, + bitrate: q.bitrate + })); + }); + if (this._qualities.length>1) { + // If there is only one quality level, don't add the "auto" option + This._qualities.push( + This._getQualityObject(This._qualities.length, { + index:This._qualities.length, + res: { w:0, h:0 }, + bitrate: 0 + })); + } + } + This.qualityIndex = This._qualities.length - 1; + resolve(This._qualities); + }); + } + } + + printQualityes() { + return new Promise((resolve,reject) => { + this.getCurrentQuality() + .then((cq)=>{ + return this.getNextQuality(); + }) + .then((nq) => { + resolve(); + }) + }); + } + + setQuality(index) { + if (base.userAgent.system.iOS)// || + //base.userAgent.browser.Safari) + { + return Promise.resolve(); + } + else if (index!==null) { + try { + this.qualityIndex = index; + let level = index; + this.autoQuality = false; + if (index==this._qualities.length-1) { + level = -1; + this.autoQuality = true; + } + this._hls.currentLevel = level; + } + catch(err) { + + } + return Promise.resolve(); + } + else { + return Promise.resolve(); + } + } + + getNextQuality() { + return new Promise((resolve,reject) => { + let index = this.qualityIndex; + resolve(this._qualities[index]); + }); + } + + getCurrentQuality() { + if (base.userAgent.system.iOS)// || + //base.userAgent.browser.Safari) + { + return Promise.resolve(0); + } + else { + return new Promise((resolve,reject) => { + resolve(this._qualities[this.qualityIndex]); + }); + } + } + } + + paella.HLSPlayer = HLSPlayer; + + + class HLSVideoFactory extends paella.VideoFactory { + get config() { + let hlsConfig = null; + paella.player.config.player.methods.some((methodConfig) => { + if (methodConfig.factory=="HLSVideoFactory") { + hlsConfig = methodConfig; + } + return hlsConfig!=null; + }); + return hlsConfig || { + iOSMaxStreams: 1, + androidMaxStreams: 1 + }; + } + + isStreamCompatible(streamData) { + if (paella.videoFactories.HLSVideoFactory.s_instances===undefined) { + paella.videoFactories.HLSVideoFactory.s_instances = 0; + } + try { + let cfg = this.config; + if ((base.userAgent.system.iOS && + paella.videoFactories.HLSVideoFactory.s_instances>=cfg.iOSMaxStreams) || + (base.userAgent.system.Android && + paella.videoFactories.HLSVideoFactory.s_instances>=cfg.androidMaxStreams)) + // In some old mobile devices, playing a high number of HLS streams may cause that the browser tab crash + { + return false; + } + + for (var key in streamData.sources) { + if (key=='hls') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + ++paella.videoFactories.HLSVideoFactory.s_instances; + return new paella.HLSPlayer(id, streamData, rect.x, rect.y, rect.w, rect.h); + } + } + + paella.videoFactories.HLSVideoFactory = HLSVideoFactory; + +})(); + +paella.addPlugin(() => { + return class DefaultKeyPlugin extends paella.KeyPlugin { + checkEnabled(onSuccess) { + onSuccess(true); + } + + getName() { return "es.upv.paella.defaultKeysPlugin"; } + + setup() { + + } + + onKeyPress(event) { + // Matterhorn standard keys + if (event.altKey && event.ctrlKey) { + if (event.which==paella.Keys.P) { + this.togglePlayPause(); + return true; + } + else if (event.which==paella.Keys.S) { + this.pause(); + return true; + } + else if (event.which==paella.Keys.M) { + this.mute(); + return true; + } + else if (event.which==paella.Keys.U) { + this.volumeUp(); + return true; + } + else if (event.which==paella.Keys.D) { + this.volumeDown(); + return true; + } + } + else { // Paella player keys + if (event.which==paella.Keys.Space) { + this.togglePlayPause(); + return true; + } + else if (event.which==paella.Keys.Up) { + this.volumeUp(); + return true; + } + else if (event.which==paella.Keys.Down) { + this.volumeDown(); + return true; + } + else if (event.which==paella.Keys.M) { + this.mute(); + return true; + } + } + + return false; + } + + togglePlayPause() { + paella.player.videoContainer.paused().then((p) => { + p ? paella.player.play() : paella.player.pause(); + }); + } + + pause() { + paella.player.pause(); + } + + mute() { + var videoContainer = paella.player.videoContainer; + if (videoContainer.muted) { + videoContainer.unmute(); + } + else { + videoContainer.mute(); + } + // videoContainer.volume().then(function(volume){ + // var newVolume = 0; + // if (volume==0) { newVolume = 1.0; } + // paella.player.videoContainer.setVolume({ master:newVolume, slave: 0}); + // }); + } + + volumeUp() { + var videoContainer = paella.player.videoContainer; + videoContainer.volume().then(function(volume){ + volume += 0.1; + volume = (volume>1) ? 1.0:volume; + paella.player.videoContainer.setVolume(volume); + }); + } + + volumeDown() { + var videoContainer = paella.player.videoContainer; + videoContainer.volume().then(function(volume){ + volume -= 0.1; + volume = (volume<0) ? 0.0:volume; + paella.player.videoContainer.setVolume(volume); + }); + } + }; +}) + +paella.addPlugin(() => { + return class LegalPlugin extends paella.VideoOverlayButtonPlugin { + getIndex() { return 0; } + getSubclass() { return "legal"; } + getAlignment() { return paella.player.config.plugins.list[this.getName()].position; } + getDefaultToolTip() { return ""; } + + checkEnabled(onSuccess) { + onSuccess(true); + } + + setup() { + let plugin = paella.player.config.plugins.list[this.getName()]; + let title = document.createElement('a'); + title.innerText = plugin.label; + this._url = plugin.legalUrl; + title.className = ""; + this.button.appendChild(title); + } + + action(button) { + window.open(this._url); + } + + getName() { return "es.upv.paella.legalPlugin"; } + } +}); + + +paella.addPlugin(function() { + return class LiveStreamIndicator extends paella.VideoOverlayButtonPlugin { + isEditorVisible() { return paella.editor.instance!=null; } + getIndex() {return 10;} + getSubclass() { return "liveIndicator"; } + getAlignment() { return 'right'; } + getDefaultToolTip() { return base.dictionary.translate("This video is a live stream"); } + getName() { return "es.upv.paella.liveStreamingIndicatorPlugin"; } + + checkEnabled(onSuccess) { + onSuccess(paella.player.isLiveStream()); + } + + setup() {} + + action(button) { + paella.messageBox.showMessage(base.dictionary.translate("Live streaming mode: This is a live video, so, some capabilities of the player are disabled")); + } + } +}); + +(() => { + +class MpegDashVideo extends paella.Html5Video { + + constructor(id,stream,left,top,width,height) { + super(id,stream,left,top,width,height,'mpd'); + this._posterFrame = null; + this._player = null; + } + + _loadDeps() { + return new Promise((resolve,reject) => { + if (!window.$paella_mpd) { + require([paella.baseUrl +'resources/deps/dash.all.js'],function() { + window.$paella_mpd = true; + resolve(window.$paella_mpd); + }); + } + else { + resolve(window.$paella_mpd); + } + }); + } + + _getQualityObject(item, index, bitrates) { + var total = bitrates.length; + var percent = Math.round(index * 100 / total); + var label = index==0 ? "min":(index==total-1 ? "max":percent + "%"); + return { + index: index, + res: { w:null, h:null }, + bitrate: item.bitrate, + src: null, + toString:function() { return percent; }, + shortLabel:function() { return label; }, + compare:function(q2) { return this.bitrate - q2.bitrate; } + }; + } + + webGlDidLoad() { + // Register a new video loader in the webgl engine, to enable the + // hls compatibility in webgl canvas + bg.utils.HTTPResourceProvider.AddVideoLoader('mpd', (url,onSuccess,onFail) => { + var video = document.createElement("video"); + s_preventVideoDump.push(video); + // this.setupHls(video,url) + // .then(() => onSuccess(video)) + // .catch(() => onFail()); + }); + return Promise.resolve(); + } + + loadVideoStream(canvasInstance,stream) { + let This = this; + return canvasInstance.loadVideo(this,stream,(videoElem) => { + return new Promise((resolve,reject) => { + this._loadDeps() + .then(() => { + + var player = dashjs.MediaPlayer().create(); + player.initialize(videoElem,stream.src,true); + player.getDebug().setLogToBrowserConsole(false); + this._player = player; + + + player.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED, function(a,b) { + var bitrates = player.getBitrateInfoListFor("video"); + This._deferredAction(function() { + if (!This._firstPlay) { + This._player.pause(); + This._firstPlay = true; + } + resolve(); + }); + }); + + }); + }); + }); + } + + // load() { + // let This = this; + // return new Promise((resolve,reject) => { + // var source = this._stream.sources.mpd; + // if (source && source.length>0) { + // source = source[0]; + // this._loadDeps() + // .then(function() { + // var context = dashContext; + // var player = dashjs.MediaPlayer().create(); + // var dashContext = context; + // player.initialize(This.video,source.src,true); + // player.getDebug().setLogToBrowserConsole(false); + // This._player = player; + // player.on(dashjs.MediaPlayer.events.STREAM_INITIALIZED,function(a,b) { + // var bitrates = player.getBitrateInfoListFor("video"); + // This._deferredAction(function() { + // if (!This._firstPlay) { + // This._player.pause(); + // This._firstPlay = true; + // } + // resolve(); + // }); + // }); + // }); + // } + // else { + // reject(new Error("Invalid source")); + // } + // }); + // } + + supportAutoplay() { + return true; + } + + getQualities() { + return new Promise((resolve) => { + this._deferredAction(() => { + if (!this._qualities) { + this._qualities = []; + this._player + .getBitrateInfoListFor("video") + + .sort((a,b) => { + return a.bitrate - b.bitrate; + }) + + .forEach((item,index,bitrates) => { + this._qualities.push(this._getQualityObject(item,index,bitrates)); + }); + + this.autoQualityIndex = this._qualities.length; + this._qualities.push({ + index: this.autoQualityIndex, + res: { w:null, h:null }, + bitrate: -1, + src: null, + toString:function() { return "auto"; }, + shortLabel:function() { return "auto"; }, + compare:function(q2) { return this.bitrate - q2.bitrate; } + }); + + } + resolve(this._qualities); + }); + }); + } + + setQuality(index) { + return new Promise((resolve,reject) => { + let currentQuality = this._player.getQualityFor("video"); + if (index==this.autoQualityIndex) { + this._player.setAutoSwitchQuality(true); + resolve(); + } + else if (index!=currentQuality) { + this._player.setAutoSwitchQuality(false); + this._player.off(dashjs.MediaPlayer.events.METRIC_CHANGED); + this._player.on(dashjs.MediaPlayer.events.METRIC_CHANGED, (a,b) => { + if (a.type=="metricchanged") { + if (currentQuality!=this._player.getQualityFor("video")) { + currentQuality = this._player.getQualityFor("video"); + resolve(); + } + } + }); + this._player.setQualityFor("video",index); + } + else { + resolve(); + } + }); + } + + getCurrentQuality() { + return new Promise((resolve,reject) => { + if (this._player.getAutoSwitchQuality()) {// auto quality + resolve({ + index: this.autoQualityIndex, + res: { w:null, h:null }, + bitrate: -1, + src: null, + toString:function() { return "auto"; }, + shortLabel:function() { return "auto"; }, + compare:function(q2) { return this.bitrate - q2.bitrate; } + }); + } + else { + var index = this._player.getQualityFor("video"); + resolve(this._getQualityObject(this._qualities[index],index,this._player.getBitrateInfoListFor("video"))); + } + }); + } + + unFreeze(){ + return paella_DeferredNotImplemented(); + } + + freeze(){ + return paella_DeferredNotImplemented(); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } +} + +paella.MpegDashVideo = MpegDashVideo; + + +class MpegDashVideoFactory extends paella.VideoFactory { + isStreamCompatible(streamData) { + try { + if (base.userAgent.system.iOS) { + return false; + } + for (var key in streamData.sources) { + if (key=='mpd') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + ++paella.videoFactories.Html5VideoFactory.s_instances; + return new paella.MpegDashVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.MpegDashVideoFactory = MpegDashVideoFactory; + +})(); + + +paella.addPlugin(function() { + return class MultipleQualitiesPlugin extends paella.ButtonPlugin { + + getAlignment() { return 'right'; } + getSubclass() { return "showMultipleQualitiesPlugin"; } + getIconClass() { return 'icon-screen'; } + getIndex() { return 2030; } + getName() { return "es.upv.paella.multipleQualitiesPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Change video quality"); } + + closeOnMouseOut() { return true; } + + checkEnabled(onSuccess) { + this._available = []; + paella.player.videoContainer.getQualities() + .then((q) => { + this._available = q; + onSuccess(q.length>1); + }); + } + + setup() { + this.setQualityLabel(); + paella.events.bind(paella.events.qualityChanged, (event) => this.setQualityLabel()); + } + + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + buildContent(domElement) { + this._available.forEach((q) => { + var title = q.shortLabel(); + domElement.appendChild(this.getItemButton(q)); + }); + } + + getItemButton(quality) { + var elem = document.createElement('div'); + let This = this; + paella.player.videoContainer.getCurrentQuality() + .then((currentIndex,currentData) => { + var label = quality.shortLabel(); + elem.className = this.getButtonItemClass(label,quality.index==currentIndex); + elem.id = label; + elem.innerText = label; + elem.data = quality; + $(elem).click(function(event) { + $('.multipleQualityItem').removeClass('selected'); + $('.multipleQualityItem.' + this.data.toString()).addClass('selected'); + paella.player.videoContainer.setQuality(this.data.index) + .then(() => { + paella.player.controls.hidePopUp(This.getName()); + This.setQualityLabel(); + }); + }); + }); + return elem; + } + + setQualityLabel() { + paella.player.videoContainer.getCurrentQuality() + .then((q) => { + this.setText(q.shortLabel()); + }); + } + + getButtonItemClass(profileName,selected) { + return 'multipleQualityItem ' + profileName + ((selected) ? ' selected':''); + } + } +}); +paella.addPlugin(function() { + return class PIPModePlugin extends paella.ButtonPlugin { + getIndex() { return 551; } + getAlignment() { return 'right'; } + getSubclass() { return "PIPModeButton"; } + getIconClass() { return 'icon-pip'; } + getName() { return "es.upv.paella.pipModePlugin"; } + checkEnabled(onSuccess) { + var mainVideo = paella.player.videoContainer.masterVideo(); + var video = mainVideo.video; + + // PIP is only available with single stream videos + if (paella.player.videoContainer.streamProvider.videoStreams.length!=1) { + onSuccess(false); + } + else if (video && video.webkitSetPresentationMode) { + onSuccess(true); + } + else if (video && 'pictureInPictureEnabled' in document) { + onSuccess(true); + } + else { + onSuccess(false); + } + } + getDefaultToolTip() { return base.dictionary.translate("Set picture-in-picture mode."); } + + setup() { + + } + + action(button) { + var video = paella.player.videoContainer.masterVideo().video; + if (video.webkitSetPresentationMode) { + if (video.webkitPresentationMode=="picture-in-picture") { + video.webkitSetPresentationMode("inline"); + } + else { + video.webkitSetPresentationMode("picture-in-picture"); + } + } + else if ('pictureInPictureEnabled' in document) { + if (video !== document.pictureInPictureElement) { + video.requestPictureInPicture(); + } else { + document.exitPictureInPicture(); + } + } + + } + } +}); + +//paella.plugins.PlayPauseButtonPlugin = Class.create(paella.ButtonPlugin, { +paella.addPlugin(function() { + return class PlayPauseButtonPlugin extends paella.ButtonPlugin { + constructor() { + super(); + this.playIconClass = 'icon-play'; + this.pauseIconClass = 'icon-pause'; + this.playSubclass = 'playButton'; + this.pauseSubclass = 'pauseButton'; + } + + getAlignment() { return 'left'; } + getSubclass() { return this.playSubclass; } + getIconClass() { return this.playIconClass; } + getName() { return "es.upv.paella.playPauseButtonPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Play"); } + getIndex() { return 110; } + + checkEnabled(onSuccess) { + onSuccess(true); + } + + setup() { + if (paella.player.playing()) { + this.changeIconClass(this.playIconClass); + } + paella.events.bind(paella.events.play,(event) => { + this.changeIconClass(this.pauseIconClass); + this.changeSubclass(this.pauseSubclass); + this.setToolTip(paella.dictionary.translate("Pause")); + }); + + paella.events.bind(paella.events.pause,(event) => { + this.changeIconClass(this.playIconClass); + this.changeSubclass(this.playSubclass); + this.setToolTip(paella.dictionary.translate("Play")); + }); + + paella.events.bind(paella.events.ended,(event) => { + this.changeIconClass(this.playIconClass); + this.changeSubclass(this.playSubclass); + this.setToolTip(paella.dictionary.translate("Play")); + }); + } + + action(button) { + paella.player.videoContainer.paused() + .then(function(paused) { + if (paused) { + paella.player.play(); + } + else { + paella.player.pause(); + } + }); + } + } +}); + + + +paella.addPlugin(function() { + return class PlayButtonOnScreen extends paella.EventDrivenPlugin { + constructor() { + super(); + this.containerId = 'paella_plugin_PlayButtonOnScreen'; + this.container = null; + this.enabled = true; + this.isPlaying = false; + this.showIcon = true; + this.firstPlay = false; + } + + checkEnabled(onSuccess) { + this.showOnEnd = true; + paella.data.read('relatedVideos', {id:paella.player.videoIdentifier}, (data) => { + this.showOnEnd = !Array.isArray(data) || data.length == 0; + }); + + onSuccess(!paella.player.isLiveStream() || base.userAgent.system.Android + || base.userAgent.system.iOS || !paella.player.videoContainer.supportAutoplay()); + } + + getIndex() { return 1010; } + getName() { return "es.upv.paella.playButtonOnScreenPlugin"; } + + setup() { + this.container = paella.LazyThumbnailContainer.GetIconElement(); + paella.player.videoContainer.domElement.appendChild(this.container); + $(this.container).click(() => this.onPlayButtonClick()); + } + + getEvents() { + return [paella.events.endVideo,paella.events.play,paella.events.pause,paella.events.showEditor,paella.events.hideEditor]; + } + + onEvent(eventType,params) { + switch (eventType) { + case paella.events.endVideo: + this.endVideo(); + break; + case paella.events.play: + this.play(); + break; + case paella.events.pause: + this.pause(); + break; + case paella.events.showEditor: + this.showEditor(); + break; + case paella.events.hideEditor: + this.hideEditor(); + break; + } + } + + onPlayButtonClick() { + this.firstPlay = true; + this.checkStatus(); + } + + endVideo() { + this.isPlaying = false; + this.showIcon = this.showOnEnd; + this.checkStatus(); + } + + play() { + this.isPlaying = true; + this.showIcon = false; + this.checkStatus(); + } + + pause() { + this.isPlaying = false; + this.showIcon = true; + this.checkStatus(); + } + + showEditor() { + this.enabled = false; + this.checkStatus(); + } + + hideEditor() { + this.enabled = true; + this.checkStatus(); + } + + checkStatus() { + if ((this.enabled && this.isPlaying) || !this.enabled || !this.showIcon) { + $(this.container).hide(); + } + // Only show play button if none of the video players require mouse events + else if (!paella.player.videoContainer.streamProvider.videoPlayers.every((p) => p.canvasData.mouseEventsSupport)) { + $(this.container).show(); + } + } + } +}); + + + +paella.addPlugin(function() { + return class PlaybackRate extends paella.ButtonPlugin { + + getAlignment() { return 'left'; } + getSubclass() { return "showPlaybackRateButton"; } + getIconClass() { return 'icon-screen'; } + getIndex() { return 140; } + getName() { return "es.upv.paella.playbackRatePlugin"; } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + getDefaultToolTip() { return base.dictionary.translate("Set playback rate"); } + + checkEnabled(onSuccess) { + this.buttonItems = null; + this.buttons = []; + this.selected_button = null; + this.defaultRate = null; + this._domElement = null; + this.available_rates = null; + var enabled = (!base.userAgent.browser.IsMobileVersion && paella.player.videoContainer.masterVideo() instanceof paella.Html5Video); + onSuccess(enabled && !paella.player.videoContainer.streamProvider.isLiveStreaming); + } + + closeOnMouseOut() { return true; } + + setup() { + this.defaultRate = 1.0; + this.available_rates = this.config.availableRates || [0.75, 1, 1.25, 1.5]; + } + + buildContent(domElement) { + this._domElement = domElement; + this.buttonItems = {}; + this.available_rates.forEach((rate) => { + domElement.appendChild(this.getItemButton(rate+"x", rate)); + }); + } + + getItemButton(label,rate) { + var elem = document.createElement('div'); + if(rate == 1.0){ + elem.className = this.getButtonItemClass(label,true); + } + else{ + elem.className = this.getButtonItemClass(label,false); + } + elem.id = label + '_button'; + elem.innerText = label; + elem.data = { + label:label, + rate:rate, + plugin:this + }; + $(elem).click(function(event) { + this.data.plugin.onItemClick(this,this.data.label,this.data.rate); + }); + return elem; + } + + onItemClick(button,label,rate) { + var self = this; + paella.player.videoContainer.setPlaybackRate(rate); + this.setText(label); + paella.player.controls.hidePopUp(this.getName()); + + + var arr = self._domElement.children; + for(var i=0; i < arr.length; i++){ + arr[i].className = self.getButtonItemClass(i,false); + } + button.className = self.getButtonItemClass(i,true); + } + + getText() { + return "1x"; + } + + getProfileItemButton(profile,profileData) { + var elem = document.createElement('div'); + elem.className = this.getButtonItemClass(profile,false); + elem.id = profile + '_button'; + + elem.data = { + profile:profile, + profileData:profileData, + plugin:this + }; + $(elem).click(function(event) { + this.data.plugin.onItemClick(this,this.data.profile,this.data.profileData); + }); + return elem; + } + + getButtonItemClass(profileName,selected) { + return 'playbackRateItem ' + profileName + ((selected) ? ' selected':''); + } + } +}); + +paella.addPlugin(function() { + return class RatePlugin extends paella.ButtonPlugin { + + getAlignment() { return 'right'; } + getSubclass() { return "rateButtonPlugin"; } + getIconClass() { return 'icon-star'; } + getIndex() { return 540; } + getName() { return "es.upv.paella.ratePlugin"; } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + getDefaultToolTip() { return base.dictionary.translate("Rate this video"); } + checkEnabled(onSuccess) { + this.buttonItems = null; + this.buttons = []; + this.selected_button = null; + this.score = 0; + this.count = 0; + this.myScore = 0; + this.canVote = false; + this.scoreContainer = { + header:null, + rateButtons:null + }; + paella.data.read('rate',{id:paella.initDelegate.getId()}, (data,status) => { + if (data && typeof(data)=='object') { + this.score = Number(data.mean).toFixed(1); + this.count = data.count; + this.myScore = data.myScore; + this.canVote = data.canVote; + } + onSuccess(status); + }); + } + + setup() { + } + + setScore(s) { + this.score = s; + this.updateScore(); + } + + closeOnMouseOut() { return true; } + + updateHeader() { + let score = base.dictionary.translate("Not rated"); + if (this.count>0) { + score = '<i class="glyphicon glyphicon-star"></i>'; + score += ` ${ this.score } ${ this.count } ${ base.dictionary.translate('votes') }`; + } + + this.scoreContainer.header.innerHTML = ` + <div> + <h4>${ base.dictionary.translate('Video score') }:</h4> + <h5> + ${ score } + </h5> + </h4> + <h4>${ base.dictionary.translate('Vote:') }</h4> + </div> + `; + } + + updateRateButtons() { + this.scoreContainer.rateButtons.className = "rateButtons"; + this.buttons = []; + if (this.canVote) { + this.scoreContainer.rateButtons.innerText = ""; + for (let i = 0; i<5; ++i) { + let btn = this.getStarButton(i + 1); + this.buttons.push(btn); + this.scoreContainer.rateButtons.appendChild(btn); + } + } + else { + this.scoreContainer.rateButtons.innerHTML = `<h5>${ base.dictionary.translate('Login to vote')}</h5>`; + } + this.updateVote(); + } + + buildContent(domElement) { + var This = this; + This._domElement = domElement; + + var header = document.createElement('div'); + domElement.appendChild(header); + header.className = "rateContainerHeader"; + this.scoreContainer.header = header; + this.updateHeader(); + + var rateButtons = document.createElement('div'); + this.scoreContainer.rateButtons = rateButtons; + domElement.appendChild(rateButtons); + this.updateRateButtons(); + } + + getStarButton(score) { + let This = this; + let elem = document.createElement('i'); + elem.data = { + score: score, + active: false + }; + elem.className = "starButton glyphicon glyphicon-star-empty"; + $(elem).click(function(event) { + This.vote(this.data.score); + }); + return elem; + } + + vote(score) { + this.myScore = score; + let data = { + mean: this.score, + count: this.count, + myScore: score, + canVote: this.canVote + }; + paella.data.write('rate',{id:paella.initDelegate.getId()}, data, (result) => { + paella.data.read('rate',{id:paella.initDelegate.getId()}, (data,status) => { + if (data && typeof(data)=='object') { + this.score = Number(data.mean).toFixed(1); + this.count = data.count; + this.myScore = data.myScore; + this.canVote = data.canVote; + } + this.updateHeader(); + this.updateRateButtons(); + }); + }); + } + + updateVote() { + this.buttons.forEach((item,index) => { + item.className = index<this.myScore ? "starButton glyphicon glyphicon-star" : "starButton glyphicon glyphicon-star-empty"; + }); + } + } +}); + +// Change this data delegate to read the related videos form an external source +// Default behaviour is to get the related videos from the data.json file + +paella.addDataDelegate("relatedVideos",() => { + return class RelatedVideoDataDelegate extends paella.DataDelegate { + read(context,params,onSuccess) { + let videoMetadata = paella.player.videoLoader.getMetadata(); + if (videoMetadata.related) { + onSuccess(videoMetadata.related); + } + } + } +}); + +paella.addPlugin(() => { + return class RelatedVideoPlugin extends paella.EventDrivenPlugin { + getName() { return "es.upv.paella.relatedVideosPlugin"; } + + checkEnabled(onSuccess) { + paella.data.read('relatedVideos', {id:paella.player.videoIdentifier}, (data) => { + this._relatedVideos = data; + onSuccess(Array.isArray(this._relatedVideos) && this._relatedVideos.length > 0); + }); + } + + setup() { + + } + + getEvents() { return [ + paella.events.ended, + paella.events.timeUpdate, + paella.events.play, + paella.events.seekTo, + paella.events.seekToTime, + ];} + + onEvent(eventType, params) { + if (eventType == paella.events.ended) { + this.showRelatedVideos(); + } + else { + this.hideRelatedVideos(); + } + } + + showRelatedVideos() { + this.hideRelatedVideos(); + let container = document.createElement('div'); + container.className = "related-video-container"; + + function getRelatedVideoLink(data,className) { + let linkContainer = document.createElement("a"); + linkContainer.className = "related-video-link " + className; + linkContainer.innerHTML = ` + <img src="${ data.thumb }" alt=""> + <p>${ data.title }</p> + `; + linkContainer.href = data.url; + return linkContainer; + } + + this._messageContainer = paella.player.videoContainer.overlayContainer.addElement(container, { + left: 0, + right: 0, + width: 1280, + height: 720 + }); + switch (this._relatedVideos.length) { + case 1: + container.appendChild(getRelatedVideoLink(this._relatedVideos[0],'related-video-single')); + break; + case 2: + default: + container.appendChild(getRelatedVideoLink(this._relatedVideos[0],'related-video-dual-1')); + container.appendChild(getRelatedVideoLink(this._relatedVideos[1],'related-video-dual-2')); + break; + } + + paella.player.videoContainer.attenuationEnabled = true; + } + + hideRelatedVideos() { + if (this._messageContainer) { + paella.player.videoContainer.overlayContainer.removeElement(this._messageContainer); + this._messageContainer = null; + + paella.player.videoContainer.attenuationEnabled = false; + } + } + } +}); + + +(() => { + +class RTMPVideo extends paella.VideoElementBase { + + constructor(id,stream,left,top,width,height) { + super(id,stream,'div',left,top,width,height); + + this._posterFrame = null; + this._currentQuality = null; + this._duration = 0; + this._paused = true; + this._streamName = null; + this._flashId = null; + this._swfContainer = null; + this._flashVideo = null; + this._volume = 1; + + this._flashId = id + 'Movie'; + this._streamName = 'rtmp'; + var This = this; + + this._stream.sources.rtmp.sort(function(a,b) { + return a.res.h - b.res.h; + }); + + var processEvent = function(eventName,params) { + if (eventName!="loadedmetadata" && eventName!="pause" && !This._isReady) { + This._isReady = true; + This._duration = params.duration; + $(This.swfContainer).trigger("paella:flashvideoready"); + } + if (eventName=="progress") { + try { This.flashVideo.setVolume(This._volume); } + catch(e) {} + base.log.debug("Flash video event: " + eventName + ", progress: " + This.flashVideo.currentProgress()); + } + else if (eventName=="ended") { + base.log.debug("Flash video event: " + eventName); + paella.events.trigger(paella.events.pause); + paella.player.controls.showControls(); + } + else { + base.log.debug("Flash video event: " + eventName); + } + }; + + var eventReceived = function(eventName,params) { + params = params.split(","); + var processedParams = {}; + for (var i=0; i<params.length; ++i) { + var splitted = params[i].split(":"); + var key = splitted[0]; + var value = splitted[1]; + if (value=="NaN") { + value = NaN; + } + else if (/^true$/i.test(value)) { + value = true; + } + else if (/^false$/i.test(value)) { + value = false; + } + else if (!isNaN(parseFloat(value))) { + value = parseFloat(value); + } + processedParams[key] = value; + } + processEvent(eventName,processedParams); + }; + + paella.events.bind(paella.events.flashVideoEvent,function(event,params) { + if (This.flashId==params.source) { + eventReceived(params.eventName,params.values); + } + }); + } + + get swfContainer() { return this._swfContainer; }; + + get flashId() { return this._flashId; } + + get flashVideo() { return this._flashVideo; } + + _createSwfObject(swfFile,flashVars) { + var id = this.identifier; + var parameters = { wmode:'transparent' }; + + var domElement = document.createElement('div'); + this.domElement.appendChild(domElement); + domElement.id = id + "Movie"; + this._swfContainer = domElement; + + if (swfobject.hasFlashPlayerVersion("9.0.0")) { + swfobject.embedSWF(swfFile,domElement.id,"100%","100%","9.0.0","",flashVars,parameters, null, function callbackFn(e){ + if (e.success == false){ + var message = document.createElement('div'); + + var header = document.createElement('h3'); + header.innerText = base.dictionary.translate("Flash player problem"); + var text = document.createElement('div'); + text.innerHTML = base.dictionary.translate("A problem occurred trying to load flash player.") + "<br>" + + base.dictionary.translate("Please go to {0} and install it.") + .replace("{0}", "<a style='color: #800000; text-decoration: underline;' href='http://www.adobe.com/go/getflash'>http://www.adobe.com/go/getflash</a>") + '<br>' + + + base.dictionary.translate("If the problem presist, contact us."); + + var link = document.createElement('a'); + link.setAttribute("href", "http://www.adobe.com/go/getflash"); + link.innerHTML = '<img style="margin:5px;" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" />'; + + message.appendChild(header); + message.appendChild(text); + message.appendChild(link); + + paella.messageBox.showError(message.innerHTML); + } + }); + } + else { + var message = document.createElement('div'); + + var header = document.createElement('h3'); + header.innerText = base.dictionary.translate("Flash player needed"); + + var text = document.createElement('div'); + + text.innerHTML = base.dictionary.translate("You need at least Flash player 9 installed.") + "<br>" + + base.dictionary.translate("Please go to {0} and install it.") + .replace("{0}", "<a style='color: #800000; text-decoration: underline;' href='http://www.adobe.com/go/getflash'>http://www.adobe.com/go/getflash</a>"); + + var link = document.createElement('a'); + link.setAttribute("href", "http://www.adobe.com/go/getflash"); + link.innerHTML = '<img style="margin:5px;" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtener Adobe Flash Player" />'; + + message.appendChild(header); + message.appendChild(text); + message.appendChild(link); + + paella.messageBox.showError(message.innerHTML); + } + + var flashObj = $('#' + domElement.id)[0]; + return flashObj; + } + + _deferredAction(action) { + return new Promise((resolve,reject) => { + if (this.ready) { + resolve(action()); + } + else { + $(this.swfContainer).bind('paella:flashvideoready', () => { + this._ready = true; + resolve(action()); + }); + } + }); + } + + _getQualityObject(index, s) { + return { + index: index, + res: s.res, + src: s.src, + toString:function() { return this.res.w + "x" + this.res.h; }, + shortLabel:function() { return this.res.h + "p"; }, + compare:function(q2) { return this.res.w*this.res.h - q2.res.w*q2.res.h; } + }; + } + + // Initialization functions + getVideoData() { + let FlashVideoPlugin = this; + return new Promise((resolve,reject) => { + this._deferredAction(() => { + let videoData = { + duration: FlashVideoPlugin.flashVideo.duration(), + currentTime: FlashVideoPlugin.flashVideo.getCurrentTime(), + volume: FlashVideoPlugin.flashVideo.getVolume(), + paused: FlashVideoPlugin._paused, + ended: FlashVideoPlugin._ended, + res: { + w: FlashVideoPlugin.flashVideo.getWidth(), + h: FlashVideoPlugin.flashVideo.getHeight() + } + }; + resolve(videoData); + }); + }); + } + + setPosterFrame(url) { + if (this._posterFrame==null) { + this._posterFrame = url; + var posterFrame = document.createElement('img'); + posterFrame.src = url; + posterFrame.className = "videoPosterFrameImage"; + posterFrame.alt = "poster frame"; + this.domElement.appendChild(posterFrame); + this._posterFrameElement = posterFrame; + } + // this.video.setAttribute("poster",url); + } + + setAutoplay(auto) { + this._autoplay = auto; + } + + load() { + var This = this; + var sources = this._stream.sources.rtmp; + if (this._currentQuality===null && this._videoQualityStrategy) { + this._currentQuality = this._videoQualityStrategy.getQualityIndex(sources); + } + + var isValid = function(stream) { + return stream.src && typeof(stream.src)=='object' && stream.src.server && stream.src.stream; + }; + + var stream = this._currentQuality<sources.length ? sources[this._currentQuality]:null; + if (stream) { + if (!isValid(stream)) { + return paella_DeferredRejected(new Error("Invalid video data")); + } + else { + var subscription = false; + if (stream.src.requiresSubscription===undefined && paella.player.config.player.rtmpSettings) { + subscription = paella.player.config.player.rtmpSettings.requiresSubscription || false; + } + else if (stream.src.requiresSubscription) { + subscription = stream.src.requiresSubscription; + } + var parameters = {}; + var swfName = 'resources/deps/player_streaming.swf'; + if (this._autoplay) { + parameters.autoplay = this._autoplay; + } + if (base.parameters.get('debug')=="true") { + parameters.debugMode = true; + } + + parameters.playerId = this.flashId; + parameters.isLiveStream = stream.isLiveStream!==undefined ? stream.isLiveStream:false; + parameters.server = stream.src.server; + parameters.stream = stream.src.stream; + parameters.subscribe = subscription; + if (paella.player.config.player.rtmpSettings && paella.player.config.player.rtmpSettings.bufferTime!==undefined) { + parameters.bufferTime = paella.player.config.player.rtmpSettings.bufferTime; + } + this._flashVideo = this._createSwfObject(swfName,parameters); + + $(this.swfContainer).trigger("paella:flashvideoready"); + + return this._deferredAction(function() { + return stream; + }); + } + + } + else { + return paella_DeferredRejected(new Error("Could not load video: invalid quality stream index")); + } + } + + getQualities() { + return new Promise((resolve,reject) => { + setTimeout(() => { + var result = []; + var sources = this._stream.sources.rtmp; + var index = -1; + sources.forEach((s) => { + index++; + result.push(this._getQualityObject(index,s)); + }); + resolve(result); + },50); + }); + } + + setQuality(index) { + index = index!==undefined && index!==null ? index:0; + return new Promise((resolve,reject) => { + var paused = this._paused; + var sources = this._stream.sources.rtmp; + this._currentQuality = index<sources.length ? index:0; + var source = sources[index]; + this._ready = false; + this._isReady = false; + this.load() + .then(function() { + resolve(); + }); + }); + } + + getCurrentQuality() { + return new Promise((resolve,reject) => { + resolve(this._getQualityObject(this._currentQuality, + this._stream.sources.rtmp[this._currentQuality])); + }); + } + + play() { + var This = this; + return this._deferredAction(function() { + if (This._posterFrameElement) { + This._posterFrameElement.parentNode.removeChild(This._posterFrameElement); + This._posterFrameElement = null; + } + This._paused = false; + This.flashVideo.play(); + }); + } + + pause() { + var This = this; + return this._deferredAction(function() { + This._paused = true; + This.flashVideo.pause(); + }); + } + + isPaused() { + var This = this; + return this._deferredAction(function() { + return This._paused; + }); + } + + duration() { + var This = this; + return this._deferredAction(function() { + return This.flashVideo.duration(); + }); + } + + setCurrentTime(time) { + var This = this; + return this._deferredAction(function() { + var duration = This.flashVideo.duration(); + This.flashVideo.seekTo(time * 100 / duration); + }); + } + + currentTime() { + var This = this; + return this._deferredAction(function() { + return This.flashVideo.getCurrentTime(); + }); + } + + setVolume(volume) { + var This = this; + this._volume = volume; + return this._deferredAction(function() { + This.flashVideo.setVolume(volume); + }); + } + + volume() { + var This = this; + return this._deferredAction(function() { + return This.flashVideo.getVolume(); + }); + } + + setPlaybackRate(rate) { + var This = this; + return this._deferredAction(function() { + This._playbackRate = rate; + }); + } + + playbackRate() { + var This = this; + return this._deferredAction(function() { + return This._playbackRate; + }); + } + + goFullScreen() { + return paella_DeferredNotImplemented(); + } + + unFreeze(){ + return this._deferredAction(function() {}); + } + + freeze() { + return this._deferredAction(function() {}); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); + } +} + +paella.RTMPVideo = RTMPVideo; + +class RTMPVideoFactory extends paella.VideoFactory { + isStreamCompatible(streamData) { + try { + if (base.userAgent.system.iOS || base.userAgent.system.Android) { + return false; + } + for (var key in streamData.sources) { + if (key=='rtmp') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + return new paella.RTMPVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.RTMPVideoFactory = RTMPVideoFactory; + +})(); +///////////////////////////////////////////////// +// Caption Search +///////////////////////////////////////////////// +paella.addPlugin(function() { + return class CaptionsSearchPlugIn extends paella.SearchServicePlugIn { + getName() { return "es.upv.paella.search.captionsSearchPlugin"; } + + search(text, next) { + paella.captions.search(text, next); + } + } +}); + +paella.addPlugin(function() { + return class SearchPlugin extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return 'searchButton'; } + getIconClass() { return 'icon-binoculars'; } + getName() { return "es.upv.paella.searchPlugin"; } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + getDefaultToolTip() { return base.dictionary.translate("Search"); } + getIndex() {return 510;} + + closeOnMouseOut() { return true; } + + checkEnabled(onSuccess) { + this._open = false; + this._sortDefault = 'time'; + this._colorSearch = false; + this._localImages = null; + this._searchTimer = null; + this._searchTimerTime = 1500; + this._searchBody = null; + this._trimming = null; + onSuccess(true); + } + + setup() { + var self = this; + $('.searchButton').click(function(event){ + if(self._open){ + self._open = false; + } + else { + self._open = true; + setTimeout(function(){ + $("#searchBarInput").focus(); + }, 0); + } + }); + //GET THE FRAME LIST + self._localImages = paella.initDelegate.initParams.videoLoader.frameList; + + //config + self._colorSearch = self.config.colorSearch || false; + self._sortDefault = self.config.sortType || "time"; + + paella.events.bind(paella.events.controlBarWillHide, function(evt) { if(self._open)paella.player.controls.cancelHideBar(); }); + paella.player.videoContainer.trimming() + .then((trimData) => { + self._trimming = trimData; + }); + } + + prettyTime(seconds){ + // TIME FORMAT + var hou = Math.floor(seconds / 3600)%24; + hou = ("00"+hou).slice(hou.toString().length); + + var min = Math.floor(seconds / 60)%60; + min = ("00"+min).slice(min.toString().length); + + var sec = Math.floor(seconds % 60); + sec = ("00"+sec).slice(sec.toString().length); + var timestr = (hou+":"+min+":"+sec); + + return timestr; + } + + search(text,cb){ + paella.searchService.search(text, cb); + } + + getPreviewImage(time){ + var thisClass = this; + var keys = Object.keys(thisClass._localImages); + + keys.push(time); + + keys.sort(function(a,b){ + return parseInt(a)-parseInt(b); + }); + + var n = keys.indexOf(time)-1; + n = (n > 0) ? n : 0; + + var i = keys[n]; + i=parseInt(i); + + return thisClass._localImages[i].url; + } + + createLoadingElement(parent){ + var loadingResults = document.createElement('div'); + loadingResults.className = "loader"; + + var htmlLoader = "<svg version=\"1.1\" id=\"loader-1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"40px\" height=\"40px\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50;\" xml:space=\"preserve\">"+ + "<path fill=\"#000\" d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\">"+ + "<animateTransform attributeType=\"xml\""+ + "attributeName=\"transform\""+ + "type=\"rotate\""+ + "from=\"0 25 25\""+ + "to=\"360 25 25\""+ + "dur=\"0.6s\""+ + "repeatCount=\"indefinite\"/>"+ + "</path>"+ + "</svg>"; + loadingResults.innerHTML = htmlLoader; + parent.appendChild(loadingResults); + var sBodyText = document.createElement('p'); + sBodyText.className = 'sBodyText'; + sBodyText.innerText = base.dictionary.translate("Searching") + "..."; + parent.appendChild(sBodyText); + } + + createNotResultsFound(parent){ + var noResults = document.createElement('div'); + noResults.className = "noResults"; + noResults.innerText = base.dictionary.translate("Sorry! No results found."); + parent.appendChild(noResults); + } + + doSearch(txt,searchBody) { + var thisClass = this; + $(searchBody).empty(); + + //LOADING CONTAINER + thisClass.createLoadingElement(searchBody); + + thisClass.search(txt, function(err, results){ + + $(searchBody).empty(); + //BUILD SEARCH RESULTS + if(!err){ + if(results.length == 0){ // 0 RESULTS FOUND + thisClass.createNotResultsFound(searchBody); + } + else { + for(var i=0; i<results.length; i++){ // FILL THE BODY CONTAINER WITH RESULTS + if (thisClass._trimming.enabled && results[i].time <= thisClass._trimming.start){ + continue; + } + //SEARCH SORT TYPE (TIME oR SCoRE) + if(thisClass._sortDefault == 'score') { + results.sort(function(a,b){ + return b.score - a.score; + }); + } + if(thisClass._sortDefault == 'time') { + results.sort(function(a,b){ + return a.time - b.time; + }); + } + + var sBodyInnerContainer = document.createElement('div'); + sBodyInnerContainer.className = 'sBodyInnerContainer'; + + //COLOR + if(thisClass._colorSearch){ + + if(results[i].score <= 0.3) {$(sBodyInnerContainer).addClass('redScore');} + + if(results[i].score >= 0.7) {$(sBodyInnerContainer).addClass('greenScore');} + } + + var TimePicContainer = document.createElement('div'); + TimePicContainer.className = 'TimePicContainer'; + + + var sBodyPicture = document.createElement('img'); + sBodyPicture.className = 'sBodyPicture'; + sBodyPicture.src = thisClass.getPreviewImage(results[i].time); + + + var sBodyText = document.createElement('p'); + sBodyText.className = 'sBodyText'; + let time = thisClass._trimming.enabled ? results[i].time - thisClass._trimming.start : results[i].time; + sBodyText.innerHTML = "<span class='timeSpan'>"+thisClass.prettyTime(time)+"</span>"+paella.AntiXSS.htmlEscape(results[i].content); + + + TimePicContainer.appendChild(sBodyPicture); + + + sBodyInnerContainer.appendChild(TimePicContainer); + sBodyInnerContainer.appendChild(sBodyText); + + + searchBody.appendChild(sBodyInnerContainer); + //ADD SECS TO DOM FOR EASY HANDLE + sBodyInnerContainer.setAttribute('sec', time); + + //jQuery Binds for the search + $(sBodyInnerContainer).hover( + function(){ + $(this).css('background-color','#faa166'); + }, + function(){ + $(this).removeAttr('style'); + } + ); + + $(sBodyInnerContainer).click(function(){ + var sec = $(this).attr("sec"); + paella.player.videoContainer.seekToTime(parseInt(sec)); + paella.player.play(); + }); + } + } + } + }); + } + + buildContent(domElement) { + var thisClass = this; + var myUrl = null; + + //SEARCH CONTAINER + var searchPluginContainer = document.createElement('div'); + searchPluginContainer.className = 'searchPluginContainer'; + + //SEARCH BODY + var searchBody = document.createElement('div'); + searchBody.className = 'searchBody'; + searchPluginContainer.appendChild(searchBody); + + thisClass._searchBody = searchBody; + + + //SEARCH BAR + var searchBar = document.createElement('div'); + searchBar.className = 'searchBar'; + searchPluginContainer.appendChild(searchBar); + + //INPUT + var input = document.createElement("input"); + input.className = "searchBarInput"; + input.type = "text"; + input.id ="searchBarInput"; + input.name = "searchString"; + input.placeholder = base.dictionary.translate("Search"); + searchBar.appendChild(input); + + $(input).change(function(){ + var text = $(input).val(); + if(thisClass._searchTimer != null){ + thisClass._searchTimer.cancel(); + } + if(text!=""){ + thisClass.doSearch(text, searchBody); + } + }); + + $(input).keyup(function(event){ + if(event.keyCode != 13){ //IF no ENTER PRESSED SETUP THE TIMER + var text = $(input).val(); + if(thisClass._searchTimer != null){ + thisClass._searchTimer.cancel(); + } + if(text!=""){ + thisClass._searchTimer = new base.Timer(function(timer) { + thisClass.doSearch(text, searchBody); + }, thisClass._searchTimerTime); + } + else { + $(thisClass._searchBody).empty(); + } + } + }); + + $(input).focus(function(){ + paella.keyManager.enabled = false; + }); + + $(input).focusout(function(){ + paella.keyManager.enabled = true; + }); + + + + domElement.appendChild(searchPluginContainer); + + } + + } +}); + +paella.addPlugin(function() { + return class ShowEditorPlugin extends paella.VideoOverlayButtonPlugin { + getName() { + return "es.upv.paella.showEditorPlugin"; + } + getSubclass() { return "showEditorButton"; } + getIconClass() { return 'icon-pencil'; } + getAlignment() { return 'right'; } + getIndex() {return 10;} + getDefaultToolTip() { return base.dictionary.translate("Enter editor mode"); } + + checkEnabled(onSuccess) { + if (this.config.editorUrl) { + paella.initDelegate.initParams.accessControl.canWrite() + .then((canWrite)=>{ + var enabled = (canWrite); // && !base.userAgent.browser.IsMobileVersion && !paella.player.isLiveStream()); + onSuccess(enabled); + }); + } + else { + onSuccess(false); + } + } + + action(button) { + var editorUrl = this.config.editorUrl.replace("{id}", paella.player.videoIdentifier); + window.location.href = editorUrl; + } + } +}); + + +paella.addPlugin(function() { + return class SocialPlugin extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return "showSocialPluginButton"; } + getIconClass() { return 'icon-social'; } + getIndex() { return 560; } + getName() { return "es.upv.paella.socialPlugin"; } + checkEnabled(onSuccess) { onSuccess(true); } + getDefaultToolTip() { return base.dictionary.translate("Share this video"); } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + closeOnMouseOut() { return true; } + + setup() { + this.buttonItems = null; + this.socialMedia = null; + this.buttons = []; + this.selected_button = null; + + if (base.dictionary.currentLanguage()=='es') { + var esDict = { + 'Custom size:': 'Tamaño personalizado:', + 'Choose your embed size. Copy the text and paste it in your html page.': 'Elija el tamaño del video a embeber. Copie el texto y péguelo en su página html.', + 'Width:':'Ancho:', + 'Height:':'Alto:' + }; + base.dictionary.addDictionary(esDict); + } + var thisClass = this; + + var Keys = {Tab:9,Return:13,Esc:27,End:35,Home:36,Left:37,Up:38,Right:39,Down:40}; + + $(this.button).keyup(function(event) { + if(thisClass.isPopUpOpen()) { + if (event.keyCode == Keys.Up) { + if(thisClass.selected_button>0){ + if(thisClass.selected_button<thisClass.buttons.length) + thisClass.buttons[thisClass.selected_button].className = 'socialItemButton '+thisClass.buttons[thisClass.selected_button].data.mediaData; + + thisClass.selected_button--; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className+' selected'; + } + } + else if (event.keyCode == Keys.Down) { + if(thisClass.selected_button<thisClass.buttons.length-1){ + if(thisClass.selected_button>=0) + thisClass.buttons[thisClass.selected_button].className = 'socialItemButton '+thisClass.buttons[thisClass.selected_button].data.mediaData; + + thisClass.selected_button++; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className+' selected'; + } + } + else if (event.keyCode == Keys.Return) { + thisClass.onItemClick(thisClass.buttons[thisClass.selected_button].data.mediaData); + } + } + }); + } + + buildContent(domElement) { + this.buttonItems = {}; + this.socialMedia = ['facebook','twitter', 'embed']; + this.socialMedia.forEach((mediaData) => { + var buttonItem = this.getSocialMediaItemButton(mediaData); + this.buttonItems[this.socialMedia.indexOf(mediaData)] = buttonItem; + domElement.appendChild(buttonItem); + this.buttons.push(buttonItem); + }); + this.selected_button = this.buttons.length; + } + + getSocialMediaItemButton(mediaData) { + var elem = document.createElement('div'); + elem.className = 'socialItemButton ' + mediaData; + elem.id = mediaData + '_button'; + elem.data = { + mediaData:mediaData, + plugin:this + }; + $(elem).click(function(event) { + this.data.plugin.onItemClick(this.data.mediaData); + }); + return elem; + } + + onItemClick(mediaData) { + var url = this.getVideoUrl(); + switch (mediaData) { + case ('twitter'): + window.open('http://twitter.com/home?status=' + url); + break; + case ('facebook'): + window.open('http://www.facebook.com/sharer.php?u=' + url); + break; + case ('embed'): + this.embedPress(); + break; + } + paella.player.controls.hidePopUp(this.getName()); + } + + getVideoUrl() { + var url = document.location.href; + return url; + } + + embedPress() { + var host = document.location.protocol + "//" +document.location.host; + var pathname = document.location.pathname; + + var p = pathname.split("/"); + if (p.length > 0){p[p.length-1] = "embed.html";} + var id = paella.initDelegate.getId(); + var url = host+p.join("/")+"?id="+id; + //var paused = paella.player.videoContainer.paused(); + //$(document).trigger(paella.events.pause); + + + var divSelectSize="<div style='display:inline-block;'> " + + " <div class='embedSizeButton' style='width:110px; height:73px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 620x349 </span></div>" + + " <div class='embedSizeButton' style='width:100px; height:65px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 540x304 </span></div>" + + " <div class='embedSizeButton' style='width:90px; height:58px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 460x259 </span></div>" + + " <div class='embedSizeButton' style='width:80px; height:50px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 380x214 </span></div>" + + " <div class='embedSizeButton' style='width:70px; height:42px;'> <span style='display:flex; align-items:center; justify-content:center; width:100%; height:100%;'> 300x169 </span></div>" + + "</div><div style='display:inline-block; vertical-align:bottom; margin-left:10px;'>"+ + " <div>"+base.dictionary.translate("Custom size:")+"</div>" + + " <div>"+base.dictionary.translate("Width:")+" <input id='social_embed_width-input' class='embedSizeInput' maxlength='4' type='text' name='Costum width min 300px' alt='Costum width min 300px' title='Costum width min 300px' value=''></div>" + + " <div>"+base.dictionary.translate("Height:")+" <input id='social_embed_height-input' class='embedSizeInput' maxlength='4' type='text' name='Costum width min 300px' alt='Costum width min 300px' title='Costum width min 300px' value=''></div>" + + "</div>"; + + + var divEmbed = "<div id='embedContent' style='text-align:left; font-size:14px; color:black;'><div id=''>"+divSelectSize+"</div> <div id=''>"+base.dictionary.translate("Choose your embed size. Copy the text and paste it in your html page.")+"</div> <div id=''><textarea id='social_embed-textarea' class='social_embed-textarea' rows='4' cols='1' style='font-size:12px; width:95%; overflow:auto; margin-top:5px; color:black;'></textarea></div> </div>"; + + + paella.messageBox.showMessage(divEmbed, { + closeButton:true, + width:'750px', + height:'210px', + onClose() { + // if (paused == false) {$(document).trigger(paella.events.play);} + } + }); + var w_e = $('#social_embed_width-input')[0]; + var h_e = $('#social_embed_height-input')[0]; + w_e.onkeyup = function(event){ + var width = parseInt(w_e.value); + var height = parseInt(h_e.value); + if (isNaN(width)){ + w_e.value=""; + } + else{ + if (width<300){ + $("#social_embed-textarea")[0].value = "Embed width too low. The minimum value is a width of 300."; + } + else{ + if (isNaN(height)){ + height = (width/(16/9)).toFixed(); + h_e.value = height; + } + $("#social_embed-textarea")[0].value = '<iframe allowfullscreen src="'+url+'" style="border:0px #FFFFFF none;" name="Paella Player" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" width="'+width+'" height="'+height+'"></iframe>'; + } + } + }; + var embs = $(".embedSizeButton"); + for (var i=0; i< embs.length; i=i+1){ + var e = embs[i]; + e.onclick=function(event){ + var value = event.target? event.target.textContent: event.toElement.textContent; + if (value) { + var size = value.trim().split("x"); + + w_e.value = size[0]; + h_e.value = size[1]; + $("#social_embed-textarea")[0].value = '<iframe allowfullscreen src="'+url+'" style="border:0px #FFFFFF none;" name="Paella Player" scrolling="no" frameborder="0" marginheight="0px" marginwidth="0px" width="'+size[0]+'" height="'+size[1]+'"></iframe>'; + } + }; + } + } + } + +}); + +paella.addPlugin(function() { + return class ThemeChooserPlugin extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return "themeChooserPlugin"; } + getIconClass() { return 'icon-paintbrush'; } + getIndex() { return 2030; } + getName() { return "es.upv.paella.themeChooserPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Change theme"); } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + checkEnabled(onSuccess) { + this.currentUrl = null; + this.currentMaster = null; + this.currentSlave = null; + this.availableMasters = []; + this.availableSlaves = []; + if ( paella.player.config.skin && paella.player.config.skin.available + && (paella.player.config.skin.available instanceof Array) + && (paella.player.config.skin.available.length >0)) { + + onSuccess(true); + } + else { + onSuccess(false); + } + } + + buildContent(domElement) { + var This = this; + paella.player.config.skin.available.forEach(function(item){ + var elem = document.createElement('div'); + elem.className = "themebutton"; + elem.innerText = item.replace('-',' ').replace('_',' '); + $(elem).click(function(event) { + paella.utils.skin.set(item); + paella.player.controls.hidePopUp(This.getName()); + }); + + domElement.appendChild(elem); + }); + } + } +}); + + +paella.addDataDelegate("cameraTrack",() => { + return class TrackCameraDataDelegate extends paella.DataDelegate { + read(context,params,onSuccess) { + let videoUrl = paella.player.videoLoader.getVideoUrl(); + if (videoUrl) { + videoUrl += 'trackhd.json'; + paella.utils.ajax.get({ url:videoUrl }, + (data) => { + if (typeof(data)==="string") { + try { + data = JSON.parse(data); + } + catch(err) {} + } + data.positions.sort((a,b) => { + return a.time-b.time; + }); + onSuccess(data); + }, + () => onSuccess(null) ); + } + else { + onSuccess(null); + } + } + + write(context,params,value,onSuccess) { + } + + remove(context,params,onSuccess) { + } + }; +}); + +(() => { + // Used to connect the toolbar button with the track4k plugin + let g_track4kPlugin = null; + + + function updatePosition(positionData,nextFrameData) { + let twinTime = nextFrameData ? (nextFrameData.time - positionData.time) * 1000 : 100; + if (twinTime>2000) twinTime = 2000; + let rect = (positionData && positionData.rect) || [0, 0, 0, 0]; + let offset_x = Math.abs(rect[0]); + let offset_y = Math.abs(rect[1]); + let view_width = rect[2]; + let view_height = rect[3]; + let zoom = this._videoData.originalWidth / view_width; + let left = offset_x / this._videoData.originalWidth; + let top = offset_y / this._videoData.originalHeight; + paella.player.videoContainer.masterVideo().setZoom(zoom * 100,left * zoom * 100, top * zoom * 100, twinTime); + } + + function nextFrame(time) { + let index = -1; + time = Math.round(time); + this._trackData.some((data,i) => { + if (data.time>=time) { + index = i; + } + return index!==-1; + }); + // Index contains the current frame index + if (this._trackData.length>index+1) { + return this._trackData[index+1]; + } + else { + return null; + } + } + + function prevFrame(time) { + let frame = this._trackData[0]; + time = Math.round(time); + this._trackData.some((data, i, frames) => { + if (frames[i+1]) { + if (data.time <= time && frames[i+1].time > time) { + return true; + } + } else { + return true; + } + frame = data; + return false; + }); + return frame; + } + + function curFrame(time) { + let frameRect = null; + time = Math.round(time); + this._trackData.some((data,i, frames) => { + if (data.time <= time) { + if (frames[i+1]) { + if (frames[i+1].time > time) { + frameRect = data; + } + } else { + frameRect = data; + } + } + return frameRect!==null; + }); + return frameRect; + } + + + paella.addPlugin(function() { + return class Track4KPlugin extends paella.EventDrivenPlugin { + constructor() { + super(); + + g_track4kPlugin = this; + + this._videoData = {}; + this._trackData = []; + + this._enabled = true; + } + + checkEnabled(cb) { + paella.data.read('cameraTrack',{id:paella.initDelegate.getId()},(data) => { + if (data) { + this._videoData.width = data.width; + this._videoData.height = data.height; + this._videoData.originalWidth = data.originalWidth; + this._videoData.originalHeight = data.originalHeight; + this._trackData = data.positions; + this._enabled = true; + } + else { + this._enabled = false; + } + cb(this._enabled); + }); + } + + get enabled() { return this._enabled; } + + set enabled(e) { + this._enabled = e; + if (this._enabled) { + let thisClass = this; + paella.player.videoContainer.currentTime().then(function(time) { + thisClass.updateZoom(time); + }); + } + } + + getName() { return "es.upv.paella.track4kPlugin"; } + getEvents() { + return [ paella.events.timeupdate, paella.events.play, paella.events.seekToTime ]; + } + onEvent(eventType,data) { + if (!this._trackData.length) return; + if (eventType===paella.events.play) { + } + else if (eventType===paella.events.timeupdate) { + this.updateZoom(data.currentTime); + } + else if (eventType===paella.events.seekToTime) { + this.seekTo(data.newPosition); + } + } + + updateZoom(currentTime) { + if (this._enabled) { + let data = curFrame.apply(this,[currentTime]); + let nextFrameData = nextFrame.apply(this,[currentTime]); + if (data && this._lastPosition!==data) { + this._lastPosition = data; + updatePosition.apply(this,[data,nextFrameData]); + } + } + } + + seekTo(time) { + let data = prevFrame.apply(this,[time]); + if (data && this._enabled) { + this._lastPosition = data; + updatePosition.apply(this,[data]); + } + } + + }; + }); + + paella.addPlugin(function() { + + return class VideoZoomTrack4KPlugin extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return "videoZoomToolbar"; } + getIconClass() { return 'icon-screen'; } + closeOnMouseOut() { return true; } + getIndex() { return 2030; } + getName() { return "es.upv.paella.videoZoomTrack4kPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Set video zoom"); } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + checkEnabled(onSuccess) { + let players = paella.player.videoContainer.streamProvider.videoPlayers; + let pluginData = paella.player.config.plugins.list[this.getName()]; + let playerIndex = pluginData.targetStreamIndex; + let autoByDefault = pluginData.autoModeByDefault; + this.targetPlayer = players.length>playerIndex ? players[playerIndex] : null; + g_track4kPlugin.enabled = autoByDefault; + onSuccess(paella.player.config.player.videoZoom.enabled && + this.targetPlayer && + this.targetPlayer.allowZoom()); + } + + setup() { + if (this.config.autoModeByDefault) { + this.zoomAuto() + } + else { + this.resetZoom() + } + } + + buildContent(domElement) { + this.changeIconClass("icon-mini-zoom-in"); + g_track4kPlugin.updateTrackingStatus = () => { + if (g_track4kPlugin.enabled) { + $('.zoom-auto').addClass("autoTrackingActivated"); + $('.icon-mini-zoom-in').addClass("autoTrackingActivated"); + } else { + $('.zoom-auto').removeClass("autoTrackingActivated"); + $('.icon-mini-zoom-in').removeClass("autoTrackingActivated"); + } + }; + paella.events.bind(paella.events.videoZoomChanged, (evt,target) => { + g_track4kPlugin.updateTrackingStatus; + }); + g_track4kPlugin.updateTrackingStatus; + + function getZoomButton(className,onClick,content) { + let btn = document.createElement('div'); + btn.className = `videoZoomToolbarItem ${ className }`; + if (content) { + btn.innerText = content; + } + else { + btn.innerHTML = `<i class="glyphicon glyphicon-${ className }"></i>`; + } + $(btn).click(onClick); + return btn; + } + domElement.appendChild(getZoomButton('zoom-in',(evt) => { + this.zoomIn(); + })); + domElement.appendChild(getZoomButton('zoom-out',(evt) => { + this.zoomOut(); + })); + domElement.appendChild(getZoomButton('picture',(evt) => { + this.resetZoom(); + })); + domElement.appendChild(getZoomButton('zoom-auto',(evt) => { + this.zoomAuto(); + paella.player.controls.hidePopUp(this.getName()); + }, "auto")); + } + + zoomIn() { + g_track4kPlugin.enabled = false; + this.targetPlayer.zoomIn(); + } + + zoomOut() { + g_track4kPlugin.enabled = false; + this.targetPlayer.zoomOut(); + } + + resetZoom() { + g_track4kPlugin.enabled = false; + this.targetPlayer.setZoom(100,0,0,500); + if (g_track4kPlugin.updateTrackingStatus) g_track4kPlugin.updateTrackingStatus(); + } + + zoomAuto() { + g_track4kPlugin.enabled = ! g_track4kPlugin.enabled; + if (g_track4kPlugin.updateTrackingStatus) g_track4kPlugin.updateTrackingStatus(); + } + }; + }); +})(); + + + + +(() => { + +paella.plugins.translectures = {}; +/* +Class ("paella.captions.translectures.Caption", paella.captions.Caption, { + initialize: function(id, format, url, lang, editURL, next) { + this.parent(id, format, url, lang, next); + this._captionsProvider = "translecturesCaptionsProvider"; + this._editURL = editURL; + }, + + canEdit: function(next) { + // next(err, canEdit) + next(false, ((this._editURL != undefined)&&(this._editURL != ""))); + }, + + goToEdit: function() { + var self = this; + paella.player.auth.userData().then(function(userData){ + if (userData.isAnonymous == true) { + self.askForAnonymousOrLoginEdit(); + } + else { + self.doEdit(); + } + }); + }, + + doEdit: function() { + window.location.href = this._editURL; + }, + doLoginAndEdit: function() { + paella.player.auth.login(this._editURL); + }, + + askForAnonymousOrLoginEdit: function() { + var self = this; + + var messageBoxElem = document.createElement('div'); + messageBoxElem.className = "translecturesCaptionsMessageBox"; + + var messageBoxTitle = document.createElement('div'); + messageBoxTitle.className = "title"; + messageBoxTitle.innerText = base.dictionary.translate("You are trying to modify the transcriptions, but you are not Logged in!"); + messageBoxElem.appendChild(messageBoxTitle); + + var messageBoxAuthContainer = document.createElement('div'); + messageBoxAuthContainer.className = "authMethodsContainer"; + messageBoxElem.appendChild(messageBoxAuthContainer); + + // Anonymous edit + var messageBoxAuth = document.createElement('div'); + messageBoxAuth.className = "authMethod"; + messageBoxAuthContainer.appendChild(messageBoxAuth); + + var messageBoxAuthLink = document.createElement('a'); + messageBoxAuthLink.href = "#"; + messageBoxAuthLink.style.color = "#004488"; + messageBoxAuth.appendChild(messageBoxAuthLink); + + var messageBoxAuthLinkImg = document.createElement('img'); + messageBoxAuthLinkImg.src = "resources/style/caption_mlangs_anonymous.png"; + messageBoxAuthLinkImg.alt = "Anonymous"; + messageBoxAuthLinkImg.style.height = "100px"; + messageBoxAuthLink.appendChild(messageBoxAuthLinkImg); + + var messageBoxAuthLinkText = document.createElement('p'); + messageBoxAuthLinkText.innerText = base.dictionary.translate("Continue editing the transcriptions anonymously"); + messageBoxAuthLink.appendChild(messageBoxAuthLinkText); + + $(messageBoxAuthLink).click(function() { + self.doEdit(); + }); + + // Auth edit + messageBoxAuth = document.createElement('div'); + messageBoxAuth.className = "authMethod"; + messageBoxAuthContainer.appendChild(messageBoxAuth); + + messageBoxAuthLink = document.createElement('a'); + messageBoxAuthLink.href = "#"; + messageBoxAuthLink.style.color = "#004488"; + messageBoxAuth.appendChild(messageBoxAuthLink); + + messageBoxAuthLinkImg = document.createElement('img'); + messageBoxAuthLinkImg.src = "resources/style/caption_mlangs_lock.png"; + messageBoxAuthLinkImg.alt = "Login"; + messageBoxAuthLinkImg.style.height = "100px"; + messageBoxAuthLink.appendChild(messageBoxAuthLinkImg); + + messageBoxAuthLinkText = document.createElement('p'); + messageBoxAuthLinkText.innerText = base.dictionary.translate("Log in and edit the transcriptions"); + messageBoxAuthLink.appendChild(messageBoxAuthLinkText); + + + $(messageBoxAuthLink).click(function() { + self.doLoginAndEdit(); + }); + + // Show UI + paella.messageBox.showElement(messageBoxElem); + } +}); + +paella.captions.translectures.Caption = Caption; + +Class ("paella.plugins.translectures.CaptionsPlugIn", paella.EventDrivenPlugin, { + + getName:function() { return "es.upv.paella.translecture.captionsPlugin"; }, + getEvents:function() { return []; }, + onEvent:function(eventType,params) {}, + + checkEnabled: function(onSuccess) { + var self = this; + var video_id = paella.player.videoIdentifier; + + if ((this.config.tLServer == undefined) || (this.config.tLdb == undefined)){ + base.log.warning(this.getName() + " plugin not configured!"); + onSuccess(false); + } + else { + var langs_url = (this.config.tLServer + "/langs?db=${tLdb}&id=${videoId}").replace(/\$\{videoId\}/ig, video_id).replace(/\$\{tLdb\}/ig, this.config.tLdb); + base.ajax.get({url: langs_url}, + function(data, contentType, returnCode, dataRaw) { + if (data.scode == 0) { + data.langs.forEach(function(l){ + var l_get_url = (self.config.tLServer + "/dfxp?format=1&pol=0&db=${tLdb}&id=${videoId}&lang=${tl.lang.code}") + .replace(/\$\{videoId\}/ig, video_id) + .replace(/\$\{tLdb\}/ig, self.config.tLdb) + .replace(/\$\{tl.lang.code\}/ig, l.code); + + var l_edit_url; + if (self.config.tLEdit) { + l_edit_url = self.config.tLEdit + .replace(/\$\{videoId\}/ig, video_id) + .replace(/\$\{tLdb\}/ig, self.config.tLdb) + .replace(/\$\{tl.lang.code\}/ig, l.code); + } + + var l_txt = l.value; + switch(l.type){ + case 0: + l_txt += " (" + paella.dictionary.translate("Auto") + ")"; + break; + case 1: + l_txt += " (" + paella.dictionary.translate("Under review") + ")"; + break; + } + + var c = new paella.captions.translectures.Caption(l.code , "dfxp", l_get_url, {code: l.code, txt: l_txt}, l_edit_url); + paella.captions.addCaptions(c); + }); + onSuccess(false); + } + else { + base.log.debug("Error getting available captions from translectures: " + langs_url); + onSuccess(false); + } + }, + function(data, contentType, returnCode) { + base.log.debug("Error getting available captions from translectures: " + langs_url); + onSuccess(false); + } + ); + } + } +}); + +//new paella.plugins.translectures.CaptionsPlugIn(); +*/ +})(); +paella.addPlugin(function() { + return class ElasticsearchSaverPlugin extends paella.userTracking.SaverPlugIn { + getName() { return "es.upv.paella.usertracking.elasticsearchSaverPlugin"; } + + checkEnabled(onSuccess) { + this.type = 'userTrackingSaverPlugIn'; + this._url = this.config.url; + this._index = this.config.index || "paellaplayer"; + this._type = this.config.type || "usertracking"; + + var enabled = true; + if (this._url == undefined){ + enabled = false; + base.log.debug("No ElasticSearch URL found in config file. Disabling ElasticSearch PlugIn"); + } + + onSuccess(enabled); + } + + log(event, params) { + var p = params; + if (typeof(p) != "object") { + p = {value: p}; + } + + let currentTime = 0; + paella.player.videoContainer.currentTime() + .then((t) => { + currentTime = t; + return paella.player.videoContainer.paused(); + }) + .then((paused) => { + var log = { + date: new Date(), + video: paella.initDelegate.getId(), + playing: !paused, + time: parseInt(currentTime + paella.player.videoContainer.trimStart()), + event: event, + params: p + }; + + paella.ajax.post({url:this._url+ "/"+ this._index + "/" + this._type + "/", params:JSON.stringify(log) }); + }); + } + } +}); + + +paella.addPlugin(function() { + return class GoogleAnalyticsTracking extends paella.userTracking.SaverPlugIn { + getName() { return "es.upv.paella.usertracking.GoogleAnalyticsSaverPlugin"; } + + checkEnabled(onSuccess) { + var trackingID = this.config.trackingID; + var domain = this.config.domain || "auto"; + if (trackingID){ + base.log.debug("Google Analitycs Enabled"); + /* jshint ignore:start */ + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments);},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','__gaTracker'); + /* jshint ignore:end */ + __gaTracker('create', trackingID, domain); + __gaTracker('send', 'pageview'); + onSuccess(true); + } + else { + base.log.debug("No Google Tracking ID found in config file. Disabling Google Analitycs PlugIn"); + onSuccess(false); + } + } + + + log(event, params) { + if ((this.config.category === undefined) || (this.config.category ===true)) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } + catch(e) {} + + __gaTracker('send', 'event', category, action, label); + } + } + + } +}); + + + + + + + + +var _paq = _paq || []; + +paella.addPlugin(function() { + return class PiwikAnalyticsTracking extends paella.userTracking.SaverPlugIn { + + getName() { return "es.upv.paella.usertracking.piwikSaverPlugIn"; } + + checkEnabled(onSuccess) { + if (this.config.tracker && this.config.siteId) { + _paq.push(['trackPageView']); + _paq.push(['enableLinkTracking']); + (function() { + var u=this.config.tracker; + _paq.push(['setTrackerUrl', u+'/piwik.php']); + _paq.push(['setSiteId', this.config.siteId]); + var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; + g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); + onSuccess(true); + })(); + } + else { + onSuccess(false); + } + } + + log(event, params) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } + catch(e) {} + + _paq.push(['trackEvent', category, action, label]); + } + } +}); + + +(() => { + +paella.addCanvasPlugin("video360", true, true, () => { + return class Video360Canvas extends paella.WebGLCanvas { + constructor(stream) { + super(stream); + } + + loadVideo(videoPlugin,stream) { + return new Promise((resolve,reject) => { + let checkLoaded = () => { + if (this.video) { + resolve(this); + } + else { + setTimeout(checkLoaded,100); + } + } + checkLoaded(); + }); + } + + buildVideoSurface(sceneRoot,videoTexture) { + let sphere = bg.scene.PrimitiveFactory.Sphere(this.gl,1,50); + let sphereNode = new bg.scene.Node(this.gl); + sphereNode.addComponent(sphere); + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sphereNode.addComponent(new bg.scene.Transform(bg.Matrix4.Scale(1,-1,1))); + sceneRoot.addChild(sphereNode); + } + + buildCamera() { + let cameraNode = new bg.scene.Node(this.gl,"Camera"); + let camera = new bg.scene.Camera() + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + let projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + + let oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + + return cameraNode; + } + } +}); + +})(); + +(() => { + + function cyln2world(a, e) { + return (new bg.Vector3( + Math.cos(e) * Math.cos(a), + Math.cos(e) * Math.sin(a), + Math.sin(e))); + } + + function world2fish(x, y, z) { + let nz = z; + if (z < -1.0) nz = -1.0; + else if (z > 1.0) nz = 1.0; + return (new bg.Vector2( + Math.atan2(y, x), + Math.acos(nz) / Math.PI)); // 0.0 to 1.0 + } + + function calcTexUv(i, j, lens) { + const world = cyln2world( + ((i + 90) / 180.0 - 1.0) * Math.PI, // rotate 90 deg for polygon + (0.5 - j / 180.0) * Math.PI); + const ar = world2fish( + Math.sin(-0.5 * Math.PI) * world.z + Math.cos(-0.5 * Math.PI) * world.x, + world.y, + Math.cos(-0.5 * Math.PI) * world.z - Math.sin(-0.5 * Math.PI) * world.x); + + const fishRad = 0.883; + const fishRad2 = fishRad * 0.88888888888888; + const fishCenter = 1.0 - 0.44444444444444; + const x = (lens === 0) ? + fishRad * ar.y * Math.cos(ar.x) * 0.5 + 0.25 : + fishRad * (1.0 - ar.y) * Math.cos(-1.0 * ar.x + Math.PI) * 0.5 + 0.75; + const y = (lens === 0) ? + fishRad2 * ar.y * Math.sin(ar.x) + fishCenter : + fishRad2 * (1.0 - ar.y) * Math.sin(-1.0 * ar.x + Math.PI) + fishCenter; + return (new bg.Vector2(x, y)); + } + + function buildViewerNode(ctx) { + let radius = 1; + let node = new bg.scene.Node(ctx); + let drw = new bg.scene.Drawable(); + node.addComponent(drw); + + let plist = new bg.base.PolyList(ctx); + + let vertex = []; + let normals = []; + let uvs = []; + let index = []; + for (let j = 0; j <= 180; j += 5) { + for (let i = 0; i <= 360; i += 5) { + vertex.push(new bg.Vector3(Math.sin(Math.PI * j / 180.0) * Math.sin(Math.PI * i / 180.0) * radius, + Math.cos(Math.PI * j / 180.0) * radius, + Math.sin(Math.PI * j / 180.0) * Math.cos(Math.PI * i / 180.0) * radius)); + + normals.push(new bg.Vector3(0, 0, -1)); + } + /* devide texture */ + for (let k = 0; k <= 180; k += 5) { + uvs.push(calcTexUv(k, j, 0)); + } + for (let l = 180; l <= 360; l += 5) { + uvs.push(calcTexUv(l, j, 1)); + } + } + + function addFace(v0, v1, v2, n0, n1, n2, uv0, uv1, uv2) { + plist.vertex.push(v0.x); plist.vertex.push(v0.y); plist.vertex.push(v0.z); + plist.vertex.push(v1.x); plist.vertex.push(v1.y); plist.vertex.push(v1.z); + plist.vertex.push(v2.x); plist.vertex.push(v2.y); plist.vertex.push(v2.z); + + plist.normal.push(n0.x); plist.normal.push(n0.y); plist.normal.push(n0.z); + plist.normal.push(n1.x); plist.normal.push(n1.y); plist.normal.push(n1.z); + plist.normal.push(n2.x); plist.normal.push(n2.z); plist.normal.push(n2.z); + + plist.texCoord0.push(uv0.x); plist.texCoord0.push(1 - uv0.y); + plist.texCoord0.push(uv1.x); plist.texCoord0.push(1 - uv1.y); + plist.texCoord0.push(uv2.x); plist.texCoord0.push(1 - uv2.y); + + plist.index.push(plist.index.length); + plist.index.push(plist.index.length); + plist.index.push(plist.index.length); + } + + for (let m = 0; m < 36; m++) { + for (let n = 0; n < 72; n++) { + const v = m * 73 + n; + const t = (n < 36) ? m * 74 + n : m * 74 + n + 1; + ([uvs[t + 0], uvs[t + 1], uvs[t + 74]], [uvs[t + 1], uvs[t + 75], uvs[t + 74]]); + + let v0 = vertex[v + 0]; let n0 = normals[v + 0]; let uv0 = uvs[t + 0]; + let v1 = vertex[v + 1]; let n1 = normals[v + 1]; let uv1 = uvs[t + 1]; + let v2 = vertex[v + 73]; let n2 = normals[v + 73]; let uv2 = uvs[t + 74]; + let v3 = vertex[v + 74]; let n3 = normals[v + 74]; let uv3 = uvs[t + 75]; + + addFace(v0, v1, v2, n0, n1, n2, uv0, uv1, uv2); + addFace(v1, v3, v2, n1, n3, n2, uv1, uv3, uv2); + } + } + plist.build(); + + drw.addPolyList(plist); + + let trx = bg.Matrix4.Scale(-1,1,1); + node.addComponent(new bg.scene.Transform(trx)); + + return node; + } + + paella.addCanvasPlugin("video360Theta", true, true, () => { + return class Video360ThetaCanvas extends paella.WebGLCanvas { + constructor(stream) { + super(stream); + } + + loadVideo(videoPlugin,stream) { + return new Promise((resolve,reject) => { + let checkLoaded = () => { + if (this.video) { + resolve(this); + } + else { + setTimeout(checkLoaded,100); + } + } + checkLoaded(); + }); + } + + buildVideoSurface(sceneRoot,videoTexture) { + let sphereNode = buildViewerNode(this.gl); + let sphere = sphereNode.drawable; + sphere.getMaterial(0).texture = videoTexture; + sphere.getMaterial(0).lightEmission = 0; + sphere.getMaterial(0).lightEmissionMaskInvert = false; + sphere.getMaterial(0).cullFace = false; + sceneRoot.addChild(sphereNode); + } + + buildCamera() { + let cameraNode = new bg.scene.Node(this.gl,"Camera"); + let camera = new bg.scene.Camera() + cameraNode.addComponent(camera); + cameraNode.addComponent(new bg.scene.Transform()); + let projection = new bg.scene.OpticalProjectionStrategy(); + projection.far = 100; + projection.focalLength = 55; + camera.projectionStrategy = projection; + + let oc = new bg.manipulation.OrbitCameraController(); + oc.maxPitch = 90; + oc.minPitch = -90; + oc.maxDistance = 0; + oc.minDistance = 0; + this._cameraController = oc; + cameraNode.addComponent(oc); + + return cameraNode; + } + } + }); + +})(); + +paella.addDataDelegate('metadata', () => { + return class VideoManifestMetadataDataDelegate extends paella.DataDelegate { + read(context, params, onSuccess) { + let metadata = paella.player.videoLoader.getMetadata(); + onSuccess(metadata[params], true); + } + + write(context, params, value, onSuccess) { + onSuccess({}, true); + } + + remove(context, params, onSuccess) { + onSuccess({}, true); + } + } +}); + +paella.addPlugin(function() { + + return class VideoDataPlugin extends paella.VideoOverlayButtonPlugin { + + getIndex() { return 10; } + + getSubclass() { + return "videoData"; + } + + getAlignment() { + return 'left'; + } + + getDefaultToolTip() { return ""; } + + checkEnabled(onSuccess) { + // Check if enabled + let plugin = paella.player.config.plugins.list["es.upv.paella.videoDataPlugin"]; + let exclude = (plugin && plugin.excludeLocations) || []; + let excludeParent = (plugin && plugin.excludeParentLocations) || []; + let excluded = exclude.some((url) => { + let re = RegExp(url,"i"); + return re.test(location.href); + }); + + if (window!=window.parent) { + excluded = excluded || excludeParent.some((url) => { + let re = RegExp(url,"i"); + try { + return re.test(parent.location.href); + } + catch(e) { + // Cross domain error + return false; + } + }); + } + onSuccess(!excluded); + } + + setup() { + let title = document.createElement("h1"); + title.innerText = ""; + title.className = "videoTitle"; + this.button.appendChild(title); + + paella.data.read("metadata","title",function(data) { + title.innerText = data; + }); + } + + action(button) { + } + + getName() { + return "es.upv.paella.videoDataPlugin"; + } + } +}); +paella.addPlugin(function() { + let g_canvasWidth = 320; + let g_canvasHeight = 180; + + function getThumbnailContainer(videoIndex) { + let container = document.createElement('canvas'); + container.width = g_canvasWidth; + container.height = g_canvasHeight; + container.className = "zoom-thumbnail"; + container.id = "zoomContainer" + videoIndex; + return container; + } + + function getZoomRect() { + let zoomRect = document.createElement('div'); + zoomRect.className = "zoom-rect"; + + return zoomRect; + } + + function updateThumbnail(thumbElem) { + let player = thumbElem.player; + let canvas = thumbElem.canvas; + player.captureFrame() + .then((frameData) => { + let ctx = canvas.getContext("2d"); + ctx.drawImage(frameData.source,0,0,g_canvasWidth,g_canvasHeight); + }); + } + + function setupButtons(videoPlayer) { + let wrapper = videoPlayer.parent; + let wrapperDom = wrapper.domElement; + + let zoomButton = document.createElement('div'); + wrapperDom.appendChild(zoomButton); + zoomButton.className = "videoZoomButton btn zoomIn"; + zoomButton.innerHTML = '<i class="glyphicon glyphicon-zoom-in"></i>' + $(zoomButton).on('mousedown',() => { + paella.player.videoContainer.disablePlayOnClick(); + videoPlayer.zoomIn(); + }); + $(zoomButton).on('mouseup',() => { + setTimeout(() => paella.player.videoContainer.enablePlayOnClick(),10); + }); + + zoomButton = document.createElement('div'); + wrapperDom.appendChild(zoomButton); + zoomButton.className = "videoZoomButton btn zoomOut"; + zoomButton.innerHTML = '<i class="glyphicon glyphicon-zoom-out"></i>' + $(zoomButton).on('mousedown',() => { + paella.player.videoContainer.disablePlayOnClick(); + videoPlayer.zoomOut(); + }); + $(zoomButton).on('mouseup',() => { + setTimeout(() => paella.player.videoContainer.enablePlayOnClick(),10); + }); + + } + + return class VideoZoomPlugin extends paella.VideoOverlayButtonPlugin { + getIndex() {return 10; } + getSubclass() { return "videoZoom"; } + getAlignment() { return 'right'; } + getDefaultToolTip() { return ""; } + + checkEnabled(onSuccess) { + onSuccess(true); + } + + setup() { + var thisClass = this; + this._thumbnails = []; + this._visible = false; + this._available = false; + function checkVisibility() { + let buttons = $('.videoZoomButton'); + let thumbs = $('.videoZoom'); + if (this._visible && this._available) { + buttons.show(); + thumbs.show(); + } + else { + buttons.hide(); + thumbs.hide(); + } + } + + let players = paella.player.videoContainer.streamProvider.videoPlayers; + players.forEach((player,index) => { + if (player.allowZoom()) { + this._available = player.zoomAvailable(); + this._visible = this._available; + setupButtons.apply(this,[player]); + player.supportsCaptureFrame().then((supports) => { + if (supports) { + let thumbContainer = document.createElement('div'); + thumbContainer.className = "zoom-container" + let thumb = getThumbnailContainer.apply(this,[index]); + let zoomRect = getZoomRect.apply(this); + this.button.appendChild(thumbContainer); + thumbContainer.appendChild(thumb); + thumbContainer.appendChild(zoomRect); + $(thumbContainer).hide(); + this._thumbnails.push({ + player:player, + thumbContainer:thumbContainer, + zoomRect:zoomRect, + canvas:thumb + }); + checkVisibility.apply(this); + } + }) + } + }); + + let update = false; + paella.events.bind(paella.events.play,(evt) => { + let updateThumbs = () => { + this._thumbnails.forEach((item) => { + updateThumbnail(item); + }); + if (update) { + setTimeout(() => { + updateThumbs(); + }, 2000); + } + } + update = true; + updateThumbs(); + }); + + paella.events.bind(paella.events.pause,(evt) => { + update = false; + }); + + paella.events.bind(paella.events.videoZoomChanged, (evt,target) => { + this._thumbnails.some((thumb) => { + if (thumb.player==target.video) { + if (thumb.player.zoom>100) { + $(thumb.thumbContainer).show(); + let x = target.video.zoomOffset.x * 100 / target.video.zoom; + let y = target.video.zoomOffset.y * 100 / target.video.zoom; + + let zoomRect = thumb.zoomRect; + $(zoomRect).css({ + left: x + '%', + top: y + '%', + width: (10000 / target.video.zoom) + '%', + height: (10000 / target.video.zoom) + '%' + }); + } + else { + $(thumb.thumbContainer).hide(); + } + return true; + } + }) + }); + + paella.events.bind(paella.events.zoomAvailabilityChanged, (evt,target) => { + this._available = target.available; + this._visible = target.available; + checkVisibility.apply(this); + }); + + paella.events.bind(paella.events.controlBarDidHide, () => { + this._visible = false; + checkVisibility.apply(this); + }); + + paella.events.bind(paella.events.controlBarDidShow, () => { + this._visible = true; + checkVisibility.apply(this); + }); + } + + action(button) { + //paella.messageBox.showMessage(base.dictionary.translate("Live streaming mode: This is a live video, so, some capabilities of the player are disabled")); + } + + getName() { + return "es.upv.paella.videoZoomPlugin"; + } + } +}); + +paella.addPlugin(function() { + + return class VideoZoomToolbarPlugin extends paella.ButtonPlugin { + getAlignment() { return 'right'; } + getSubclass() { return "videoZoomToolbar"; } + getIconClass() { return 'icon-screen'; } + getIndex() { return 2030; } + getName() { return "es.upv.paella.videoZoomToolbarPlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Set video zoom"); } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + + checkEnabled(onSuccess) { + let players = paella.player.videoContainer.streamProvider.videoPlayers; + let pluginData = paella.player.config.plugins.list["es.upv.paella.videoZoomToolbarPlugin"]; + let playerIndex = pluginData.targetStreamIndex; + this.targetPlayer = players.length>playerIndex ? players[playerIndex] : null; + onSuccess(paella.player.config.player.videoZoom.enabled && + this.targetPlayer && + this.targetPlayer.allowZoom()); + + } + + buildContent(domElement) { + paella.events.bind(paella.events.videoZoomChanged, (evt,target) => { + this.setText(Math.round(target.video.zoom) + "%"); + }); + + this.setText("100%"); + + function getZoomButton(className,onClick) { + let btn = document.createElement('div'); + btn.className = `videoZoomToolbarItem ${ className }`; + btn.innerHTML = `<i class="glyphicon glyphicon-${ className }"></i>`; + $(btn).click(onClick); + return btn; + } + domElement.appendChild(getZoomButton('zoom-in',(evt) => { + this.targetPlayer.zoomIn(); + })); + domElement.appendChild(getZoomButton('zoom-out',(evt) => { + this.targetPlayer.zoomOut(); + })); + } + } +}); + +paella.addPlugin(function() { + return class ViewModePlugin extends paella.ButtonPlugin { + + getAlignment() { return 'right'; } + getSubclass() { return "showViewModeButton"; } + getIconClass() { return 'icon-presentation-mode'; } + getIndex() { return 540; } + getName() { return "es.upv.paella.viewModePlugin"; } + getButtonType() { return paella.ButtonPlugin.type.popUpButton; } + getDefaultToolTip() { return base.dictionary.translate("Change video layout"); } + checkEnabled(onSuccess) { + this.buttonItems =null; + this.buttons = []; + this.selected_button = null; + this.active_profiles = null; + this.active_profiles = this.config.activeProfiles; + onSuccess(!paella.player.videoContainer.isMonostream); + } + + closeOnMouseOut() { return true; } + + setup() { + var thisClass = this; + + var Keys = {Tab:9,Return:13,Esc:27,End:35,Home:36,Left:37,Up:38,Right:39,Down:40}; + + paella.events.bind(paella.events.setProfile,function(event,params) { + thisClass.onProfileChange(params.profileName); + }); + + $(this.button).keyup(function(event) { + if (thisClass.isPopUpOpen()){ + if (event.keyCode == Keys.Up) { + if(thisClass.selected_button>0){ + if(thisClass.selected_button<thisClass.buttons.length) + thisClass.buttons[thisClass.selected_button].className = 'viewModeItemButton '+thisClass.buttons[thisClass.selected_button].data.profile; + + thisClass.selected_button--; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className+' selected'; + } + } + else if (event.keyCode == Keys.Down) { + if( thisClass.selected_button < thisClass.buttons.length-1){ + if(thisClass.selected_button>=0) + thisClass.buttons[thisClass.selected_button].className = 'viewModeItemButton '+thisClass.buttons[thisClass.selected_button].data.profile; + + thisClass.selected_button++; + thisClass.buttons[thisClass.selected_button].className = thisClass.buttons[thisClass.selected_button].className+' selected'; + } + } + else if (event.keyCode == Keys.Return) { + thisClass.onItemClick(thisClass.buttons[thisClass.selected_button],thisClass.buttons[thisClass.selected_button].data.profile,thisClass.buttons[thisClass.selected_button].data.profile); + } + } + }); + } + + rebuildProfileList() { + this.buttonItems = {}; + this.domElement.innerText = ""; + paella.profiles.profileList.forEach((profileData) => { + if (profileData.hidden) return; + if (this.active_profiles) { + var active = false; + this.active_profiles.forEach(function(ap) { + if (ap == profile) {active = true;} + }); + if (active == false) { + return; + } + } + + var buttonItem = this.getProfileItemButton(profileData.id, profileData); + this.buttonItems[profileData.id] = buttonItem; + this.domElement.appendChild(buttonItem); + this.buttons.push(buttonItem); + if(paella.player.selectedProfile == profileData.id){ + this.buttonItems[profileData.id].className = this.getButtonItemClass(profileData.id, true); + } + }); + this.selected_button = this.buttons.length; + } + + buildContent(domElement) { + var thisClass = this; + this.domElement = domElement; + this.rebuildProfileList(); + + paella.events.bind(paella.events.profileListChanged,() => { + this.rebuildProfileList(); + }); + } + + getProfileItemButton(profile,profileData) { + var elem = document.createElement('div'); + elem.className = this.getButtonItemClass(profile,false); + let url = this.getButtonItemIcon(profileData); + url = url.replace(/\\/ig,'/'); + elem.style.backgroundImage = `url(${ url })`; + elem.id = profile + '_button'; + elem.data = { + profile:profile, + profileData:profileData, + plugin:this + }; + $(elem).click(function(event) { + this.data.plugin.onItemClick(this,this.data.profile,this.data.profileData); + }); + return elem; + } + + onProfileChange(profileName) { + var thisClass = this; + var ButtonItem = this.buttonItems[profileName]; + + var n = this.buttonItems; + var arr = Object.keys(n); + arr.forEach(function(i){ + thisClass.buttonItems[i].className = thisClass.getButtonItemClass(i,false); + }); + + if(ButtonItem) { + ButtonItem.className = thisClass.getButtonItemClass(profileName,true); + } + } + + onItemClick(button,profile,profileData) { + var ButtonItem = this.buttonItems[profile]; + + if (ButtonItem) { + paella.player.setProfile(profile); + } + paella.player.controls.hidePopUp(this.getName()); + } + + getButtonItemClass(profileName,selected) { + return 'viewModeItemButton ' + profileName + ((selected) ? ' selected':''); + } + + getButtonItemIcon(profileData) { + return `${ paella.baseUrl }resources/style/${ profileData.icon }`; + } + } +}); + + +paella.addPlugin(function() { + return class VolumeRangePlugin extends paella.ButtonPlugin { + getAlignment() { return 'left'; } + getSubclass() { return 'volumeRangeButton'; } + getIconClass() { return 'icon-volume-high'; } + getName() { return "es.upv.paella.volumeRangePlugin"; } + getDefaultToolTip() { return base.dictionary.translate("Volume"); } + getIndex() {return 9999;} + getAriaLabel() { return base.dictionary.translate("Volume"); } + + checkEnabled(onSuccess) { + this._tempMasterVolume = 0; + this._inputMaster = null; + this._control_NotMyselfEvent = true; + this._storedValue = false; + var enabled = !base.userAgent.browser.IsMobileVersion; + onSuccess(enabled); + } + + setup() { + var self = this; + //STORE VALUES + paella.events.bind(paella.events.videoUnloaded,function(event,params) {self.storeVolume();}); + //RECOVER VALUES + paella.events.bind(paella.events.singleVideoReady,function(event,params) {self.loadStoredVolume(params);}); + + paella.events.bind(paella.events.setVolume, function(evt,par){ self.updateVolumeOnEvent(par);}); + } + + updateVolumeOnEvent(volume){ + var thisClass = this; + + if(thisClass._control_NotMyselfEvent){ + thisClass._inputMaster = volume.master; + } + else {thisClass._control_NotMyselfEvent = true;} + } + + storeVolume(){ + var This = this; + paella.player.videoContainer.streamProvider.mainAudioPlayer.volume() + .then(function(v) { + This._tempMasterVolume = v; + This._storedValue = true; + }); + } + + loadStoredVolume(params){ + if (this._storedValue == false) { + this.storeVolume(); + } + + if(this._tempMasterVolume){ + paella.player.videoContainer.setVolume(this._tempMasterVolume); + } + this._storedValue = false; + } + + action(button) { + if (paella.player.videoContainer.muted) { + paella.player.videoContainer.unmute(); + } + else { + paella.player.videoContainer.mute(); + } + } + + getExpandableContent() { + var rangeInput = document.createElement('input'); + this._inputMaster = rangeInput; + rangeInput.type = "range"; + rangeInput.min = 0; + rangeInput.max = 1; + rangeInput.step = 0.01; + paella.player.videoContainer.audioPlayer.volume() + .then((vol) => { + rangeInput.value = vol; + }) + + let updateMasterVolume = () => { + var masterVolume = $(rangeInput).val(); + var slaveVolume = 0; + this._control_NotMyselfEvent = false; + paella.player.videoContainer.setVolume(masterVolume); + }; + $(rangeInput).bind('input', function (e) { updateMasterVolume(); }); + $(rangeInput).change(function() { updateMasterVolume(); }); + + paella.events.bind(paella.events.setVolume, (event,params) => { + rangeInput.value = params.master; + this.updateClass(); + }); + this.updateClass(); + + return rangeInput; + } + + updateClass() { + var selected = ''; + var self = this; + + paella.player.videoContainer.volume() + .then((volume) => { + if (volume === undefined) { selected = 'icon-volume-mid'; } + else if (volume == 0) { selected = 'icon-volume-mute'; } + else if (volume < 0.33) { selected = 'icon-volume-low'; } + else if (volume < 0.66) { selected = 'icon-volume-mid'; } + else { selected = 'icon-volume-high'; } + this.changeIconClass(selected); + }) + } + }; +}); + + +(() => { + +class WebmVideoFactory extends paella.VideoFactory { + webmCapable() { + var testEl = document.createElement( "video" ); + if ( testEl.canPlayType ) { + return "" !== testEl.canPlayType( 'video/webm; codecs="vp8, vorbis"' ); + } + else { + return false; + } + } + + isStreamCompatible(streamData) { + try { + if (!this.webmCapable()) return false; + for (var key in streamData.sources) { + if (key=='webm') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + return new paella.Html5Video(id, streamData, rect.x, rect.y, rect.w, rect.h,'webm'); + } +} + +paella.videoFactories.WebmVideoFactory = WebmVideoFactory; + +})(); + +paella.addPlugin(function() { + return class WindowTitlePlugin extends paella.EventDrivenPlugin { + + getName() { + return "es.upv.paella.windowTitlePlugin"; + } + + checkEnabled(onSuccess) { + this._initDone = false; + paella.player.videoContainer.masterVideo().duration() + .then((d) => { + this.loadTitle(); + }); + onSuccess(true); + } + + loadTitle() { + var title = paella.player.videoLoader.getMetadata() && paella.player.videoLoader.getMetadata().title; + document.title = title || document.title; + this._initDone = true; + } + }; +}); + +(() => { + +class YoutubeVideo extends paella.VideoElementBase { + + constructor(id,stream,left,top,width,height) { + super(id,stream,'div',left,top,width,height); + this._posterFrame = null; + this._currentQuality = null; + this._autoplay = false; + this._readyPromise = null; + + this._readyPromise = $.Deferred(); + } + + get video() { return this._youtubePlayer; } + + _deferredAction(action) { + return new Promise((resolve,reject) => { + this._readyPromise.then(function() { + resolve(action()); + }, + function() { + reject(); + }); + }); + } + + _getQualityObject(index, s) { + var level = 0; + switch (s) { + case 'small': + level = 1; + break; + case 'medium': + level = 2; + break; + case 'large': + level = 3; + break; + case 'hd720': + level = 4; + break; + case 'hd1080': + level = 5; + break; + case 'highres': + level = 6; + break; + } + return { + index: index, + res: { w:null, h:null}, + src: null, + label:s, + level:level, + bitrate:level, + toString:function() { return this.label; }, + shortLabel:function() { return this.label; }, + compare:function(q2) { return this.level - q2.level; } + }; + } + + _onStateChanged(e) { + console.log("On state changed"); + } + + // Initialization functions + getVideoData() { + var This = this; + return new Promise((resolve,reject) => { + var stream = this._stream.sources.youtube[0]; + this._deferredAction(() => { + var videoData = { + duration: This.video.getDuration(), + currentTime: This.video.getCurrentTime(), + volume: This.video.getVolume(), + paused: !This._playing, + ended: This.video.ended, + res: { + w: stream.res.w, + h: stream.res.h + } + }; + resolve(videoData); + }) + }); + } + + setPosterFrame(url) { + this._posterFrame = url; + } + + setAutoplay(auto) { + this._autoplay = auto; + + } + + setRect(rect,animate) { + this._rect = JSON.parse(JSON.stringify(rect)); + var relativeSize = new paella.RelativeVideoSize(); + var percentTop = relativeSize.percentVSize(rect.top) + '%'; + var percentLeft = relativeSize.percentWSize(rect.left) + '%'; + var percentWidth = relativeSize.percentWSize(rect.width) + '%'; + var percentHeight = relativeSize.percentVSize(rect.height) + '%'; + var style = {top:percentTop,left:percentLeft,width:percentWidth,height:percentHeight,position:'absolute'}; + if (animate) { + this.disableClassName(); + var thisClass = this; + + $('#' + this.identifier).animate(style,400,function(){ + thisClass.enableClassName(); + paella.events.trigger(paella.events.setComposition, { video:thisClass }); + }); + this.enableClassNameAfter(400); + } + else { + $('#' + this.identifier).css(style); + paella.events.trigger(paella.events.setComposition, { video:this }); + } + } + + setVisible(visible,animate) { + if (visible=="true" && animate) { + $('#' + this.identifier).show(); + $('#' + this.identifier).animate({opacity:1.0},300); + } + else if (visible=="true" && !animate) { + $('#' + this.identifier).show(); + } + else if (visible=="false" && animate) { + $('#' + this.identifier).animate({opacity:0.0},300); + } + else if (visible=="false" && !animate) { + $('#' + this.identifier).hide(); + } + } + + setLayer(layer) { + $('#' + this.identifier).css({ zIndex:layer}); + } + + load() { + var This = this; + return new Promise((resolve,reject) => { + this._qualityListReadyPromise = $.Deferred(); + paella.youtubePlayerVars.apiReadyPromise. + then(() => { + var stream = this._stream.sources.youtube[0]; + + if (stream) { + // TODO: poster frame + this._youtubePlayer = new YT.Player(This.identifier, { + height: '390', + width: '640', + videoId:stream.id, + playerVars: { + controls: 0, + disablekb: 1 + }, + events: { + onReady: function(e) { + This._readyPromise.resolve(); + }, + onStateChanged:function(e) { + console.log("state changed"); + }, + onPlayerStateChange:function(e) { + console.log("state changed"); + } + } + }); + + resolve(); + } + else { + reject(new Error("Could not load video: invalid quality stream index")); + } + }); + }); + } + + getQualities() { + let This = this; + return new Promise((resolve,reject) => { + This._qualityListReadyPromise.then(function(q) { + var result = []; + var index = -1; + This._qualities = {}; + q.forEach((item) => { + index++; + This._qualities[item] = This._getQualityObject(index,item); + result.push(This._qualities[item]); + }); + resolve(result); + }); + }); + } + + setQuality(index) { + return new Promise((resolve,reject) => { + this._qualityListReadyPromise.then((q) => { + for (var key in this._qualities) { + var searchQ = this._qualities[key]; + if (typeof(searchQ)=="object" && searchQ.index==index) { + this.video.setPlaybackQuality(searchQ.label); + break; + } + } + resolve(); + }); + }); + } + + getCurrentQuality() { + return new Promise((resolve,reject) => { + this._qualityListReadyPromise.then((q) => { + resolve(this._qualities[this.video.getPlaybackQuality()]); + }); + }); + } + + play() { + let This = this; + return new Promise((resolve,reject) => { + This._playing = true; + This.video.playVideo(); + new base.Timer((timer) => { + var q = this.video.getAvailableQualityLevels(); + if (q.length) { + timer.repeat = false; + this._qualityListReadyPromise.resolve(q); + resolve(); + } + else { + timer.repeat = true; + } + },500); + }); + } + + pause() { + return this._deferredAction(() => { + this._playing = false; + this.video.pauseVideo(); + }); + } + + isPaused() { + return this._deferredAction(() => { + return !this._playing; + }); + } + + duration() { + return this._deferredAction(() => { + return this.video.getDuration(); + }); + } + + setCurrentTime(time) { + return this._deferredAction(() => { + this.video.seekTo(time); + }); + } + + currentTime() { + return this._deferredAction(() => { + return this.video.getCurrentTime(); + }); + } + + setVolume(volume) { + return this._deferredAction(() => { + this.video.setVolume && this.video.setVolume(volume * 100); + }); + } + + volume() { + return this._deferredAction(() => { + return this.video.getVolume() / 100; + }); + } + + setPlaybackRate(rate) { + return this._deferredAction(() => { + this.video.playbackRate = rate; + }); + } + + playbackRate() { + return this._deferredAction(() => { + return this.video.playbackRate; + }); + } + + goFullScreen() { + return this._deferredAction(() => { + var elem = this.video; + if (elem.requestFullscreen) { + elem.requestFullscreen(); + } + else if (elem.msRequestFullscreen) { + elem.msRequestFullscreen(); + } + else if (elem.mozRequestFullScreen) { + elem.mozRequestFullScreen(); + } + else if (elem.webkitEnterFullscreen) { + elem.webkitEnterFullscreen(); + } + }); + } + + unFreeze(){ + return this._deferredAction(() => { + var c = document.getElementById(this.video.className + "canvas"); + $(c).remove(); + }); + } + + freeze(){ + return this._deferredAction(() => { + var canvas = document.createElement("canvas"); + canvas.id = this.video.className + "canvas"; + canvas.width = this.video.videoWidth; + canvas.height = this.video.videoHeight; + canvas.style.cssText = this.video.style.cssText; + canvas.style.zIndex = 2; + + var ctx = canvas.getContext("2d"); + ctx.drawImage(this.video, 0, 0, Math.ceil(canvas.width/16)*16, Math.ceil(canvas.height/16)*16);//Draw image + this.video.parentElement.appendChild(canvas); + }); + } + + unload() { + this._callUnloadEvent(); + return paella_DeferredNotImplemented(); + } + + getDimensions() { + return paella_DeferredNotImplemented(); + } +} + +paella.YoutubeVideo = YoutubeVideo; + +class YoutubeVideoFactory extends paella.VideoFactory { + initYoutubeApi() { + if (!this._initialized) { + var tag = document.createElement('script'); + + tag.src = "https://www.youtube.com/iframe_api"; + var firstScriptTag = document.getElementsByTagName('script')[0]; + firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); + + paella.youtubePlayerVars = { + apiReadyPromise: new $.Deferred() + }; + this._initialized = true; + } + } + + isStreamCompatible(streamData) { + try { + for (var key in streamData.sources) { + if (key=='youtube') return true; + } + } + catch (e) {} + return false; + } + + getVideoObject(id, streamData, rect) { + this.initYoutubeApi(); + return new paella.YoutubeVideo(id, streamData, rect.x, rect.y, rect.w, rect.h); + } +} + +paella.videoFactories.YoutubeVideoFactory = YoutubeVideoFactory; + +//paella.youtubePlayerVars = { +// apiReadyPromise: $.Promise() +//}; + + +})(); + + +function onYouTubeIframeAPIReady() { + // console.log("Youtube iframe API ready"); + paella.youtubePlayerVars.apiReadyPromise.resolve(); +} + + +paella.addPlugin(function() { + return class MatomoTracking extends paella.userTracking.SaverPlugIn { + getName() { return "org.opencast.usertracking.MatomoSaverPlugIn"; } + + checkEnabled(onSuccess) { + + var site_id = this.config.site_id, + server = this.config.server, + heartbeat = this.config.heartbeat, + thisClass = this; + + if (server && site_id){ + if (server.substr(-1) != '/') server += '/'; + require([server + "piwik.js"], function(matomo) { + base.log.debug("Matomo Analytics Enabled"); + paella.userTracking.matomotracker = Piwik.getAsyncTracker( server + "piwik.php", site_id ); + paella.userTracking.matomotracker.client_id = thisClass.config.client_id; + if (heartbeat && heartbeat > 0) paella.userTracking.matomotracker.enableHeartBeatTimer(heartbeat); + if (Piwik && Piwik.MediaAnalytics) { + paella.events.bind(paella.events.videoReady, () => { + Piwik.MediaAnalytics.scanForMedia(); + }); + } + thisClass.registerVisit(); + }); + onSuccess(true); + } else { + base.log.debug("No Matomo Site ID found in config file. Disabling Matomo Analytics PlugIn"); + onSuccess(false); + } + } + + registerVisit() { + var title, + event_id, + series_title, + series_id, + presenter, + view_mode; + + if (paella.opencast && paella.opencast._episode) { + title = paella.opencast._episode.dcTitle; + event_id = paella.opencast._episode.id; + presenter = paella.opencast._episode.dcCreator; + paella.userTracking.matomotracker.setCustomVariable(5, "client", + (paella.userTracking.matomotracker.client_id || "Paella Opencast")); + } else { + paella.userTracking.matomotracker.setCustomVariable(5, "client", + (paella.userTracking.matomotracker.client_id || "Paella Standalone")); + } + + if (paella.opencast && paella.opencast._episode && paella.opencast._episode.mediapackage) { + series_id = paella.opencast._episode.mediapackage.series; + series_title = paella.opencast._episode.mediapackage.seriestitle; + } + + if (title) + paella.userTracking.matomotracker.setCustomVariable(1, "event", title + " (" + event_id + ")", "page"); + if (series_title) + paella.userTracking.matomotracker.setCustomVariable(2, "series", series_title + " (" + series_id + ")", "page"); + if (presenter) paella.userTracking.matomotracker.setCustomVariable(3, "presenter", presenter, "page"); + paella.userTracking.matomotracker.setCustomVariable(4, "view_mode", view_mode, "page"); + if (title && presenter) { + paella.userTracking.matomotracker.setDocumentTitle(title + " - " + (presenter || "Unknown")); + paella.userTracking.matomotracker.trackPageView(title + " - " + (presenter || "Unknown")); + } else { + paella.userTracking.matomotracker.trackPageView(); + } + } + + log(event, params) { + if (paella.userTracking.matomotracker === undefined) { + base.log.debug("Matomo Tracker is missing"); + return; + } + if ((this.config.category === undefined) || (this.config.category ===true)) { + + var value = ""; + + try { + value = JSON.stringify(params); + } catch(e) {} + + switch (event) { + case paella.events.play: + paella.userTracking.matomotracker.trackEvent("Player.Controls","Play"); + break; + case paella.events.pause: + paella.userTracking.matomotracker.trackEvent("Player.Controls","Pause"); + break; + case paella.events.endVideo: + paella.userTracking.matomotracker.trackEvent("Player.Status","Ended"); + break; + case paella.events.showEditor: + paella.userTracking.matomotracker.trackEvent("Player.Editor","Show"); + break; + case paella.events.hideEditor: + paella.userTracking.matomotracker.trackEvent("Player.Editor","Hide"); + break; + case paella.events.enterFullscreen: + paella.userTracking.matomotracker.trackEvent("Player.View","Fullscreen"); + break; + case paella.events.exitFullscreen: + paella.userTracking.matomotracker.trackEvent("Player.View","ExitFullscreen"); + break; + case paella.events.loadComplete: + paella.userTracking.matomotracker.trackEvent("Player.Status","LoadComplete"); + break; + case paella.events.showPopUp: + paella.userTracking.matomotracker.trackEvent("Player.PopUp","Show", value); + break; + case paella.events.hidePopUp: + paella.userTracking.matomotracker.trackEvent("Player.PopUp","Hide", value); + break; + case paella.events.captionsEnabled: + paella.userTracking.matomotracker.trackEvent("Player.Captions","Enabled", value); + break; + case paella.events.captionsDisabled: + paella.userTracking.matomotracker.trackEvent("Player.Captions","Disabled", value); + break; + case paella.events.setProfile: + paella.userTracking.matomotracker.trackEvent("Player.View","Profile", value); + break; + case paella.events.seekTo: + case paella.events.seekToTime: + paella.userTracking.matomotracker.trackEvent("Player.Controls","Seek", value); + break; + case paella.events.setVolume: + paella.userTracking.matomotracker.trackEvent("Player.Settings","Volume", value); + break; + case paella.events.resize: + paella.userTracking.matomotracker.trackEvent("Player.View","resize", value); + break; + case paella.events.setPlaybackRate: + paella.userTracking.matomotracker.trackEvent("Player.Controls","PlaybackRate", value); + break; + + } + } + } + + } +}); + + + + + + + +paella.addPlugin(function() { + var self = this; + return class X5gonTracking extends paella.userTracking.SaverPlugIn { + getName() { + return "org.opencast.usertracking.x5gonSaverPlugIn"; + }; + + checkEnabled(onSuccess) { + var urlCookieconsentJS = "https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.1.0/cookieconsent.min.js", + token = this.config.token, + translations = [], + path, + testingEnvironment = this.config.testing_environment, + trackingPermission, + tracked; + + function trackX5gon() { + base.log.debug("X5GON: trackX5gon permission check [trackingPermission " + trackingPermission + "] [tracked " + tracked + "]"); + if (isTrackingPermission() && !tracked) { + if (!token) { + base.log.debug("X5GON: token missing! Disabling X5gon PlugIn"); + onSuccess(false); + } + else { + // load x5gon lib from remote server + base.log.debug("X5GON: trackX5gon loading x5gon-snippet, token: " + token); + require(["https://platform.x5gon.org/api/v1/snippet/latest/x5gon-log.min.js"], function (x5gon) { + base.log.debug("X5GON: external x5gon snippet loaded"); + if (typeof x5gonActivityTracker !== 'undefined') { + x5gonActivityTracker(token, testingEnvironment); + base.log.debug("X5GON: send data to X5gon servers"); + tracked = true; + } + }); + } + onSuccess(true); + } else { + onSuccess(false); + } + } + + function initCookieNotification() { + // load cookieconsent lib from remote server + require([urlCookieconsentJS], function (cookieconsent) { + base.log.debug("X5GON: external cookie consent lib loaded"); + window.cookieconsent.initialise({ + "palette": { + "popup": { + "background": "#1d8a8a" + }, + "button": { + "background": "#62ffaa" + } + }, + "type": "opt-in", + "position": "top", + "content": { + "message": translate('x5_message', "On this site the X5gon service can be included, to provide personalized Open Educational Ressources."), + "allow": translate('x5_accept', "Accept"), + "deny": translate('x5_deny', "Deny"), + "link": translate('x5_more_info', "More information"), + "policy": translate('x5_policy', "Cookie Policy"), + // link to the X5GON platform privacy policy - describing what are we collecting + // through the platform + "href": "https://platform.x5gon.org/privacy-policy" + }, + onInitialise: function (status) { + var type = this.options.type; + var didConsent = this.hasConsented(); + // enable cookies - send user data to the platform + // only if the user enabled cookies + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + }, + onStatusChange: function (status, chosenBefore) { + var type = this.options.type; + var didConsent = this.hasConsented(); + // enable cookies - send user data to the platform + // only if the user enabled cookies + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + }, + onRevokeChoice: function () { + var type = this.options.type; + var didConsent = this.hasConsented(); + // disable cookies - set what to do when + // the user revokes cookie usage + if (type == 'opt-in' && didConsent) { + setTrackingPermission(true); + } else { + setTrackingPermission(false); + } + } + }) + }) + } + + function initTranslate(language, funcSuccess, funcError) { + base.log.debug('X5GON: selecting language ' + language.slice(0,2)); + var jsonstr = window.location.origin + '/player/localization/paella_' + language.slice(0,2) + '.json'; + $.ajax({ + url: jsonstr, + dataType: 'json', + success: function (data) { + if (data) { + data.value_locale = language; + translations = data; + if (funcSuccess) { + funcSuccess(translations); + } + } else if (funcError) { + funcError(); + } + }, + error: function () { + if (funcError) { + funcError(); + } + } + }); + } + + function translate(str, strIfNotFound) { + return (translations[str] != undefined) ? translations[str] : strIfNotFound; + } + + function isTrackingPermission() { + if (checkDoNotTrackStatus() || !trackingPermission) { + return false; + } else { + return true; + } + } + + function checkDoNotTrackStatus() { + if (window.navigator.doNotTrack == 1 || window.navigator.msDoNotTrack == 1) { + base.log.debug("X5GON: Browser DoNotTrack: true"); + return true; + } + base.log.debug("X5GON: Browser DoNotTrack: false"); + return false; + } + + function setTrackingPermission(permissionStatus) { + trackingPermission = permissionStatus; + base.log.debug("X5GON: trackingPermissions: " + permissionStatus); + trackX5gon(); + }; + + initTranslate(navigator.language, function () { + base.log.debug('X5GON: Successfully translated.'); + initCookieNotification(); + }, function () { + base.log.debug('X5gon: Error translating.'); + initCookieNotification(); + }); + + trackX5gon(); + + onSuccess(true); + }; + + log(event, params) { + if ((this.config.category === undefined) || (this.config.category === true)) { + var category = this.config.category || "PaellaPlayer"; + var action = event; + var label = ""; + + try { + label = JSON.stringify(params); + } catch (e) {} + } + }; + }; +}); diff --git a/src/main/webapp/static/js/paella/player/javascript/polyfill.min.js b/src/main/webapp/static/js/paella/player/javascript/polyfill.min.js new file mode 100644 index 0000000000000000000000000000000000000000..a1cdc7b8acf0b864238a18dba6dcb2ee6155983f --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/polyfill.min.js @@ -0,0 +1 @@ +!function r(c,a,f){function o(n,t){if(!a[n]){if(!c[n]){var e="function"==typeof require&&require;if(!t&&e)return e(n,!0);if(s)return s(n,!0);var i=new Error("Cannot find module '"+n+"'");throw i.code="MODULE_NOT_FOUND",i}var u=a[n]={exports:{}};c[n][0].call(u.exports,function(t){return o(c[n][1][t]||t)},u,u.exports,r,c,a,f)}return a[n].exports}for(var s="function"==typeof require&&require,t=0;t<f.length;t++)o(f[t]);return o}({1:[function(t,n,r){"use strict";t(2);var e=function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}(t(15));e.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),e.default._babelPolyfill=!0},{15:15,2:2}],2:[function(t,n,r){"use strict";t(3),t(5),t(4),t(11),t(10),t(13),t(12),t(14),t(7),t(8),t(6),t(9),t(306),t(307)},{10:10,11:11,12:12,13:13,14:14,3:3,306:306,307:307,4:4,5:5,6:6,7:7,8:8,9:9}],3:[function(t,n,r){t(278),t(214),t(216),t(215),t(218),t(220),t(225),t(219),t(217),t(227),t(226),t(222),t(223),t(221),t(213),t(224),t(228),t(229),t(180),t(182),t(181),t(231),t(230),t(201),t(211),t(212),t(202),t(203),t(204),t(205),t(206),t(207),t(208),t(209),t(210),t(184),t(185),t(186),t(187),t(188),t(189),t(190),t(191),t(192),t(193),t(194),t(195),t(196),t(197),t(198),t(199),t(200),t(265),t(270),t(277),t(268),t(260),t(261),t(266),t(271),t(273),t(256),t(257),t(258),t(259),t(262),t(263),t(264),t(267),t(269),t(272),t(274),t(275),t(276),t(175),t(177),t(176),t(179),t(178),t(163),t(161),t(168),t(165),t(171),t(173),t(160),t(167),t(157),t(172),t(155),t(170),t(169),t(162),t(166),t(154),t(156),t(159),t(158),t(174),t(164),t(247),t(248),t(254),t(249),t(250),t(251),t(252),t(253),t(232),t(183),t(255),t(290),t(291),t(279),t(280),t(285),t(288),t(289),t(283),t(286),t(284),t(287),t(281),t(282),t(233),t(234),t(235),t(236),t(237),t(240),t(238),t(239),t(241),t(242),t(243),t(244),t(246),t(245),n.exports=t(52)},{154:154,155:155,156:156,157:157,158:158,159:159,160:160,161:161,162:162,163:163,164:164,165:165,166:166,167:167,168:168,169:169,170:170,171:171,172:172,173:173,174:174,175:175,176:176,177:177,178:178,179:179,180:180,181:181,182:182,183:183,184:184,185:185,186:186,187:187,188:188,189:189,190:190,191:191,192:192,193:193,194:194,195:195,196:196,197:197,198:198,199:199,200:200,201:201,202:202,203:203,204:204,205:205,206:206,207:207,208:208,209:209,210:210,211:211,212:212,213:213,214:214,215:215,216:216,217:217,218:218,219:219,220:220,221:221,222:222,223:223,224:224,225:225,226:226,227:227,228:228,229:229,230:230,231:231,232:232,233:233,234:234,235:235,236:236,237:237,238:238,239:239,240:240,241:241,242:242,243:243,244:244,245:245,246:246,247:247,248:248,249:249,250:250,251:251,252:252,253:253,254:254,255:255,256:256,257:257,258:258,259:259,260:260,261:261,262:262,263:263,264:264,265:265,266:266,267:267,268:268,269:269,270:270,271:271,272:272,273:273,274:274,275:275,276:276,277:277,278:278,279:279,280:280,281:281,282:282,283:283,284:284,285:285,286:286,287:287,288:288,289:289,290:290,291:291,52:52}],4:[function(t,n,r){t(292),n.exports=t(52).Array.flatMap},{292:292,52:52}],5:[function(t,n,r){t(293),n.exports=t(52).Array.includes},{293:293,52:52}],6:[function(t,n,r){t(294),n.exports=t(52).Object.entries},{294:294,52:52}],7:[function(t,n,r){t(295),n.exports=t(52).Object.getOwnPropertyDescriptors},{295:295,52:52}],8:[function(t,n,r){t(296),n.exports=t(52).Object.values},{296:296,52:52}],9:[function(t,n,r){"use strict";t(232),t(297),n.exports=t(52).Promise.finally},{232:232,297:297,52:52}],10:[function(t,n,r){t(298),n.exports=t(52).String.padEnd},{298:298,52:52}],11:[function(t,n,r){t(299),n.exports=t(52).String.padStart},{299:299,52:52}],12:[function(t,n,r){t(301),n.exports=t(52).String.trimRight},{301:301,52:52}],13:[function(t,n,r){t(300),n.exports=t(52).String.trimLeft},{300:300,52:52}],14:[function(t,n,r){t(302),n.exports=t(151).f("asyncIterator")},{151:151,302:302}],15:[function(t,n,r){t(32),n.exports=t(18).global},{18:18,32:32}],16:[function(t,n,r){n.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],17:[function(t,n,r){var e=t(28);n.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},{28:28}],18:[function(t,n,r){var e=n.exports={version:"2.6.10"};"number"==typeof __e&&(__e=e)},{}],19:[function(t,n,r){var o=t(16);n.exports=function(e,i,t){if(o(e),void 0===i)return e;switch(t){case 1:return function(t){return e.call(i,t)};case 2:return function(t,n){return e.call(i,t,n)};case 3:return function(t,n,r){return e.call(i,t,n,r)}}return function(){return e.apply(i,arguments)}}},{16:16}],20:[function(t,n,r){n.exports=!t(23)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{23:23}],21:[function(t,n,r){var e=t(28),i=t(24).document,o=e(i)&&e(i.createElement);n.exports=function(t){return o?i.createElement(t):{}}},{24:24,28:28}],22:[function(t,n,r){var g=t(24),y=t(18),d=t(19),x=t(26),m=t(25),S="prototype",b=function(t,n,r){var e,i,o,u=t&b.F,c=t&b.G,a=t&b.S,f=t&b.P,s=t&b.B,l=t&b.W,h=c?y:y[n]||(y[n]={}),p=h[S],v=c?g:a?g[n]:(g[n]||{})[S];for(e in c&&(r=n),r)(i=!u&&v&&void 0!==v[e])&&m(h,e)||(o=i?v[e]:r[e],h[e]=c&&"function"!=typeof v[e]?r[e]:s&&i?d(o,g):l&&v[e]==o?function(e){function qb(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)}return qb[S]=e[S],qb}(o):f&&"function"==typeof o?d(Function.call,o):o,f&&((h.virtual||(h.virtual={}))[e]=o,t&b.R&&p&&!p[e]&&x(p,e,o)))};b.F=1,b.G=2,b.S=4,b.P=8,b.B=16,b.W=32,b.U=64,b.R=128,n.exports=b},{18:18,19:19,24:24,25:25,26:26}],23:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(t){return!0}}},{}],24:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],25:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],26:[function(t,n,r){var e=t(29),i=t(30);n.exports=t(20)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},{20:20,29:29,30:30}],27:[function(t,n,r){n.exports=!t(20)&&!t(23)(function(){return 7!=Object.defineProperty(t(21)("div"),"a",{get:function(){return 7}}).a})},{20:20,21:21,23:23}],28:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],29:[function(t,n,r){var e=t(17),i=t(27),o=t(31),u=Object.defineProperty;r.f=t(20)?Object.defineProperty:function defineProperty(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},{17:17,20:20,27:27,31:31}],30:[function(t,n,r){n.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},{}],31:[function(t,n,r){var i=t(28);n.exports=function(t,n){if(!i(t))return t;var r,e;if(n&&"function"==typeof(r=t.toString)&&!i(e=r.call(t)))return e;if("function"==typeof(r=t.valueOf)&&!i(e=r.call(t)))return e;if(!n&&"function"==typeof(r=t.toString)&&!i(e=r.call(t)))return e;throw TypeError("Can't convert object to primitive value")}},{28:28}],32:[function(t,n,r){var e=t(22);e(e.G,{global:t(24)})},{22:22,24:24}],33:[function(t,n,r){arguments[4][16][0].apply(r,arguments)},{16:16}],34:[function(t,n,r){var e=t(48);n.exports=function(t,n){if("number"!=typeof t&&"Number"!=e(t))throw TypeError(n);return+t}},{48:48}],35:[function(t,n,r){var e=t(152)("unscopables"),i=Array.prototype;null==i[e]&&t(72)(i,e,{}),n.exports=function(t){i[e][t]=!0}},{152:152,72:72}],36:[function(t,n,r){"use strict";var e=t(129)(!0);n.exports=function(t,n,r){return n+(r?e(t,n).length:1)}},{129:129}],37:[function(t,n,r){n.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+": incorrect invocation!");return t}},{}],38:[function(t,n,r){arguments[4][17][0].apply(r,arguments)},{17:17,81:81}],39:[function(t,n,r){"use strict";var f=t(142),s=t(137),l=t(141);n.exports=[].copyWithin||function copyWithin(t,n){var r=f(this),e=l(r.length),i=s(t,e),o=s(n,e),u=2<arguments.length?arguments[2]:void 0,c=Math.min((void 0===u?e:s(u,e))-o,e-i),a=1;for(o<i&&i<o+c&&(a=-1,o+=c-1,i+=c-1);0<c--;)o in r?r[i]=r[o]:delete r[i],i+=a,o+=a;return r}},{137:137,141:141,142:142}],40:[function(t,n,r){"use strict";var c=t(142),a=t(137),f=t(141);n.exports=function fill(t){for(var n=c(this),r=f(n.length),e=arguments.length,i=a(1<e?arguments[1]:void 0,r),o=2<e?arguments[2]:void 0,u=void 0===o?r:a(o,r);i<u;)n[i++]=t;return n}},{137:137,141:141,142:142}],41:[function(t,n,r){var a=t(140),f=t(141),s=t(137);n.exports=function(c){return function(t,n,r){var e,i=a(t),o=f(i.length),u=s(r,o);if(c&&n!=n){for(;u<o;)if((e=i[u++])!=e)return!0}else for(;u<o;u++)if((c||u in i)&&i[u]===n)return c||u||0;return!c&&-1}}},{137:137,140:140,141:141}],42:[function(t,n,r){var m=t(54),S=t(77),b=t(142),w=t(141),e=t(45);n.exports=function(l,t){var h=1==l,p=2==l,v=3==l,g=4==l,y=6==l,d=5==l||y,x=t||e;return function(t,n,r){for(var e,i,o=b(t),u=S(o),c=m(n,r,3),a=w(u.length),f=0,s=h?x(t,a):p?x(t,0):void 0;f<a;f++)if((d||f in u)&&(i=c(e=u[f],f,o),l))if(h)s[f]=i;else if(i)switch(l){case 3:return!0;case 5:return e;case 6:return f;case 2:s.push(e)}else if(g)return!1;return y?-1:v||g?g:s}}},{141:141,142:142,45:45,54:54,77:77}],43:[function(t,n,r){var s=t(33),l=t(142),h=t(77),p=t(141);n.exports=function(t,n,r,e,i){s(n);var o=l(t),u=h(o),c=p(o.length),a=i?c-1:0,f=i?-1:1;if(r<2)for(;;){if(a in u){e=u[a],a+=f;break}if(a+=f,i?a<0:c<=a)throw TypeError("Reduce of empty array with no initial value")}for(;i?0<=a:a<c;a+=f)a in u&&(e=n(e,u[a],a,o));return e}},{141:141,142:142,33:33,77:77}],44:[function(t,n,r){var e=t(81),i=t(79),o=t(152)("species");n.exports=function(t){var n;return i(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},{152:152,79:79,81:81}],45:[function(t,n,r){var e=t(44);n.exports=function(t,n){return new(e(t))(n)}},{44:44}],46:[function(t,n,r){"use strict";var o=t(33),u=t(81),c=t(76),a=[].slice,f={};n.exports=Function.bind||function bind(n){var r=o(this),e=a.call(arguments,1),i=function(){var t=e.concat(a.call(arguments));return this instanceof i?function(t,n,r){if(!(n in f)){for(var e=[],i=0;i<n;i++)e[i]="a["+i+"]";f[n]=Function("F,a","return new F("+e.join(",")+")")}return f[n](t,r)}(r,t.length,t):c(r,t,n)};return u(r.prototype)&&(i.prototype=r.prototype),i}},{33:33,76:76,81:81}],47:[function(t,n,r){var i=t(48),o=t(152)("toStringTag"),u="Arguments"==i(function(){return arguments}());n.exports=function(t){var n,r,e;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),o))?r:u?i(n):"Object"==(e=i(n))&&"function"==typeof n.callee?"Arguments":e}},{152:152,48:48}],48:[function(t,n,r){var e={}.toString;n.exports=function(t){return e.call(t).slice(8,-1)}},{}],49:[function(t,n,r){"use strict";function ag(t,n){var r,e=p(n);if("F"!==e)return t._i[e];for(r=t._f;r;r=r.n)if(r.k==n)return r}var u=t(99).f,c=t(98),a=t(117),f=t(54),s=t(37),l=t(68),e=t(85),i=t(87),o=t(123),h=t(58),p=t(94).fastKey,v=t(149),g=h?"_s":"size";n.exports={getConstructor:function(t,o,r,e){var i=t(function(t,n){s(t,i,o,"_i"),t._t=o,t._i=c(null),t._f=void 0,t._l=void 0,t[g]=0,null!=n&&l(n,r,t[e],t)});return a(i.prototype,{clear:function clear(){for(var t=v(this,o),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[g]=0},delete:function(t){var n=v(this,o),r=ag(n,t);if(r){var e=r.n,i=r.p;delete n._i[r.i],r.r=!0,i&&(i.n=e),e&&(e.p=i),n._f==r&&(n._f=e),n._l==r&&(n._l=i),n[g]--}return!!r},forEach:function forEach(t){v(this,o);for(var n,r=f(t,1<arguments.length?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function has(t){return!!ag(v(this,o),t)}}),h&&u(i.prototype,"size",{get:function(){return v(this,o)[g]}}),i},def:function(t,n,r){var e,i,o=ag(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[g]++,"F"!==i&&(t._i[i]=o)),t},getEntry:ag,setStrong:function(t,r,n){e(t,r,function(t,n){this._t=v(t,r),this._k=n,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?i(0,"keys"==n?r.k:"values"==n?r.v:[r.k,r.v]):(t._t=void 0,i(1))},n?"entries":"values",!n,!0),o(r)}}},{117:117,123:123,149:149,37:37,54:54,58:58,68:68,85:85,87:87,94:94,98:98,99:99}],50:[function(t,n,r){"use strict";function _g(t){return t._l||(t._l=new g)}function bh(t,n){return o(t.a,function(t){return t[0]===n})}var u=t(117),c=t(94).getWeak,i=t(38),a=t(81),f=t(37),s=t(68),e=t(42),l=t(71),h=t(149),o=e(5),p=e(6),v=0,g=function(){this.a=[]};g.prototype={get:function(t){var n=bh(this,t);if(n)return n[1]},has:function(t){return!!bh(this,t)},set:function(t,n){var r=bh(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(n){var t=p(this.a,function(t){return t[0]===n});return~t&&this.a.splice(t,1),!!~t}},n.exports={getConstructor:function(t,r,e,i){var o=t(function(t,n){f(t,o,r,"_i"),t._t=r,t._i=v++,t._l=void 0,null!=n&&s(n,e,t[i],t)});return u(o.prototype,{delete:function(t){if(!a(t))return!1;var n=c(t);return!0===n?_g(h(this,r)).delete(t):n&&l(n,this._i)&&delete n[this._i]},has:function has(t){if(!a(t))return!1;var n=c(t);return!0===n?_g(h(this,r)).has(t):n&&l(n,this._i)}}),o},def:function(t,n,r){var e=c(i(n),!0);return!0===e?_g(t).set(n,r):e[t._i]=r,t},ufstore:_g}},{117:117,149:149,37:37,38:38,42:42,68:68,71:71,81:81,94:94}],51:[function(t,n,r){"use strict";var y=t(70),d=t(62),x=t(118),m=t(117),S=t(94),b=t(68),w=t(37),_=t(81),E=t(64),O=t(86),F=t(124),I=t(75);n.exports=function(e,t,n,r,i,o){function ci(t){var r=f[t];x(f,t,"delete"==t?function(t){return!(o&&!_(t))&&r.call(this,0===t?0:t)}:"has"==t?function has(t){return!(o&&!_(t))&&r.call(this,0===t?0:t)}:"get"==t?function get(t){return o&&!_(t)?void 0:r.call(this,0===t?0:t)}:"add"==t?function add(t){return r.call(this,0===t?0:t),this}:function set(t,n){return r.call(this,0===t?0:t,n),this})}var u=y[e],c=u,a=i?"set":"add",f=c&&c.prototype,s={};if("function"==typeof c&&(o||f.forEach&&!E(function(){(new c).entries().next()}))){var l=new c,h=l[a](o?{}:-0,1)!=l,p=E(function(){l.has(1)}),v=O(function(t){new c(t)}),g=!o&&E(function(){for(var t=new c,n=5;n--;)t[a](n,n);return!t.has(-0)});v||(((c=t(function(t,n){w(t,c,e);var r=I(new u,t,c);return null!=n&&b(n,i,r[a],r),r})).prototype=f).constructor=c),(p||g)&&(ci("delete"),ci("has"),i&&ci("get")),(g||h)&&ci(a),o&&f.clear&&delete f.clear}else c=r.getConstructor(t,e,i,a),m(c.prototype,n),S.NEED=!0;return F(c,e),s[e]=c,d(d.G+d.W+d.F*(c!=u),s),o||r.setStrong(c,e,i),c}},{117:117,118:118,124:124,37:37,62:62,64:64,68:68,70:70,75:75,81:81,86:86,94:94}],52:[function(t,n,r){arguments[4][18][0].apply(r,arguments)},{18:18}],53:[function(t,n,r){"use strict";var e=t(99),i=t(116);n.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},{116:116,99:99}],54:[function(t,n,r){arguments[4][19][0].apply(r,arguments)},{19:19,33:33}],55:[function(t,n,r){"use strict";function Qi(t){return 9<t?t:"0"+t}var e=t(64),i=Date.prototype.getTime,o=Date.prototype.toISOString;n.exports=e(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!e(function(){o.call(new Date(NaN))})?function toISOString(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":9999<n?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+Qi(t.getUTCMonth()+1)+"-"+Qi(t.getUTCDate())+"T"+Qi(t.getUTCHours())+":"+Qi(t.getUTCMinutes())+":"+Qi(t.getUTCSeconds())+"."+(99<r?r:"0"+Qi(r))+"Z"}:o},{64:64}],56:[function(t,n,r){"use strict";var e=t(38),i=t(143);n.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},{143:143,38:38}],57:[function(t,n,r){n.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},{}],58:[function(t,n,r){arguments[4][20][0].apply(r,arguments)},{20:20,64:64}],59:[function(t,n,r){arguments[4][21][0].apply(r,arguments)},{21:21,70:70,81:81}],60:[function(t,n,r){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],61:[function(t,n,r){var c=t(107),a=t(104),f=t(108);n.exports=function(t){var n=c(t),r=a.f;if(r)for(var e,i=r(t),o=f.f,u=0;i.length>u;)o.call(t,e=i[u++])&&n.push(e);return n}},{104:104,107:107,108:108}],62:[function(t,n,r){var g=t(70),y=t(52),d=t(72),x=t(118),m=t(54),S="prototype",b=function(t,n,r){var e,i,o,u,c=t&b.F,a=t&b.G,f=t&b.S,s=t&b.P,l=t&b.B,h=a?g:f?g[n]||(g[n]={}):(g[n]||{})[S],p=a?y:y[n]||(y[n]={}),v=p[S]||(p[S]={});for(e in a&&(r=n),r)o=((i=!c&&h&&void 0!==h[e])?h:r)[e],u=l&&i?m(o,g):s&&"function"==typeof o?m(Function.call,o):o,h&&x(h,e,o,t&b.U),p[e]!=o&&d(p,e,u),s&&v[e]!=o&&(v[e]=o)};g.core=y,b.F=1,b.G=2,b.S=4,b.P=8,b.B=16,b.W=32,b.U=64,b.R=128,n.exports=b},{118:118,52:52,54:54,70:70,72:72}],63:[function(t,n,r){var e=t(152)("match");n.exports=function(n){var r=/./;try{"/./"[n](r)}catch(t){try{return r[e]=!1,!"/./"[n](r)}catch(t){}}return!0}},{152:152}],64:[function(t,n,r){arguments[4][23][0].apply(r,arguments)},{23:23}],65:[function(t,n,r){"use strict";t(248);var s=t(118),l=t(72),h=t(64),p=t(57),v=t(152),g=t(120),y=v("species"),d=!h(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}),x=function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();n.exports=function(r,t,n){var e=v(r),o=!h(function(){var t={};return t[e]=function(){return 7},7!=""[r](t)}),i=o?!h(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===r&&(n.constructor={},n.constructor[y]=function(){return n}),n[e](""),!t}):void 0;if(!o||!i||"replace"===r&&!d||"split"===r&&!x){var u=/./[e],c=n(p,e,""[r],function maybeCallNative(t,n,r,e,i){return n.exec===g?o&&!i?{done:!0,value:u.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}}),a=c[0],f=c[1];s(String.prototype,r,a),l(RegExp.prototype,e,2==t?function(t,n){return f.call(t,this,n)}:function(t){return f.call(t,this)})}}},{118:118,120:120,152:152,248:248,57:57,64:64,72:72}],66:[function(t,n,r){"use strict";var e=t(38);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{38:38}],67:[function(t,n,r){"use strict";var p=t(79),v=t(81),g=t(141),y=t(54),d=t(152)("isConcatSpreadable");n.exports=function flattenIntoArray(t,n,r,e,i,o,u,c){for(var a,f,s=i,l=0,h=!!u&&y(u,c,3);l<e;){if(l in r){if(a=h?h(r[l],l,n):r[l],f=!1,v(a)&&(f=void 0!==(f=a[d])?!!f:p(a)),f&&0<o)s=flattenIntoArray(t,n,a,g(a.length),s,o-1)-1;else{if(9007199254740991<=s)throw TypeError();t[s]=a}s++}l++}return s}},{141:141,152:152,54:54,79:79,81:81}],68:[function(t,n,r){var h=t(54),p=t(83),v=t(78),g=t(38),y=t(141),d=t(153),x={},m={};(r=n.exports=function(t,n,r,e,i){var o,u,c,a,f=i?function(){return t}:d(t),s=h(r,e,n?2:1),l=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(v(f)){for(o=y(t.length);l<o;l++)if((a=n?s(g(u=t[l])[0],u[1]):s(t[l]))===x||a===m)return a}else for(c=f.call(t);!(u=c.next()).done;)if((a=p(c,s,u.value,n))===x||a===m)return a}).BREAK=x,r.RETURN=m},{141:141,153:153,38:38,54:54,78:78,83:83}],69:[function(t,n,r){n.exports=t(126)("native-function-to-string",Function.toString)},{126:126}],70:[function(t,n,r){arguments[4][24][0].apply(r,arguments)},{24:24}],71:[function(t,n,r){arguments[4][25][0].apply(r,arguments)},{25:25}],72:[function(t,n,r){arguments[4][26][0].apply(r,arguments)},{116:116,26:26,58:58,99:99}],73:[function(t,n,r){var e=t(70).document;n.exports=e&&e.documentElement},{70:70}],74:[function(t,n,r){arguments[4][27][0].apply(r,arguments)},{27:27,58:58,59:59,64:64}],75:[function(t,n,r){var o=t(81),u=t(122).set;n.exports=function(t,n,r){var e,i=n.constructor;return i!==r&&"function"==typeof i&&(e=i.prototype)!==r.prototype&&o(e)&&u&&u(t,e),t}},{122:122,81:81}],76:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],77:[function(t,n,r){var e=t(48);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{48:48}],78:[function(t,n,r){var e=t(88),i=t(152)("iterator"),o=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},{152:152,88:88}],79:[function(t,n,r){var e=t(48);n.exports=Array.isArray||function isArray(t){return"Array"==e(t)}},{48:48}],80:[function(t,n,r){var e=t(81),i=Math.floor;n.exports=function isInteger(t){return!e(t)&&isFinite(t)&&i(t)===t}},{81:81}],81:[function(t,n,r){arguments[4][28][0].apply(r,arguments)},{28:28}],82:[function(t,n,r){var e=t(81),i=t(48),o=t(152)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},{152:152,48:48,81:81}],83:[function(t,n,r){var o=t(38);n.exports=function(n,t,r,e){try{return e?t(o(r)[0],r[1]):t(r)}catch(t){var i=n.return;throw void 0!==i&&o(i.call(n)),t}}},{38:38}],84:[function(t,n,r){"use strict";var e=t(98),i=t(116),o=t(124),u={};t(72)(u,t(152)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},{116:116,124:124,152:152,72:72,98:98}],85:[function(t,n,r){"use strict";function Qn(){return this}var x=t(89),m=t(62),S=t(118),b=t(72),w=t(88),_=t(84),E=t(124),O=t(105),F=t(152)("iterator"),I=!([].keys&&"next"in[].keys()),P="values";n.exports=function(t,n,r,e,i,o,u){_(r,n,e);function Yn(t){if(!I&&t in p)return p[t];switch(t){case"keys":return function keys(){return new r(this,t)};case P:return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}}var c,a,f,s=n+" Iterator",l=i==P,h=!1,p=t.prototype,v=p[F]||p["@@iterator"]||i&&p[i],g=v||Yn(i),y=i?l?Yn("entries"):g:void 0,d="Array"==n&&p.entries||v;if(d&&(f=O(d.call(new t)))!==Object.prototype&&f.next&&(E(f,s,!0),x||"function"==typeof f[F]||b(f,F,Qn)),l&&v&&v.name!==P&&(h=!0,g=function values(){return v.call(this)}),x&&!u||!I&&!h&&p[F]||b(p,F,g),w[n]=g,w[s]=Qn,i)if(c={values:l?g:Yn(P),keys:o?g:Yn("keys"),entries:y},u)for(a in c)a in p||S(p,a,c[a]);else m(m.P+m.F*(I||h),n,c);return c}},{105:105,118:118,124:124,152:152,62:62,72:72,84:84,88:88,89:89}],86:[function(t,n,r){var o=t(152)("iterator"),u=!1;try{var e=[7][o]();e.return=function(){u=!0},Array.from(e,function(){throw 2})}catch(t){}n.exports=function(t,n){if(!n&&!u)return!1;var r=!1;try{var e=[7],i=e[o]();i.next=function(){return{done:r=!0}},e[o]=function(){return i},t(e)}catch(t){}return r}},{152:152}],87:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],88:[function(t,n,r){n.exports={}},{}],89:[function(t,n,r){n.exports=!1},{}],90:[function(t,n,r){var e=Math.expm1;n.exports=!e||22025.465794806718<e(10)||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function expm1(t){return 0==(t=+t)?t:-1e-6<t&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},{}],91:[function(t,n,r){var o=t(93),e=Math.pow,u=e(2,-52),c=e(2,-23),a=e(2,127)*(2-c),f=e(2,-126);n.exports=Math.fround||function fround(t){var n,r,e=Math.abs(t),i=o(t);return e<f?i*function(t){return t+1/u-1/u}(e/f/c)*f*c:a<(r=(n=(1+c/u)*e)-(n-e))||r!=r?i*(1/0):i*r}},{93:93}],92:[function(t,n,r){n.exports=Math.log1p||function log1p(t){return-1e-8<(t=+t)&&t<1e-8?t-t*t/2:Math.log(1+t)}},{}],93:[function(t,n,r){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},{}],94:[function(t,n,r){function tp(t){u(t,e,{value:{i:"O"+ ++c,w:{}}})}var e=t(147)("meta"),i=t(81),o=t(71),u=t(99).f,c=0,a=Object.isExtensible||function(){return!0},f=!t(64)(function(){return a(Object.preventExtensions({}))}),s=n.exports={KEY:e,NEED:!1,fastKey:function(t,n){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,e)){if(!a(t))return"F";if(!n)return"E";tp(t)}return t[e].i},getWeak:function(t,n){if(!o(t,e)){if(!a(t))return!0;if(!n)return!1;tp(t)}return t[e].w},onFreeze:function(t){return f&&s.NEED&&a(t)&&!o(t,e)&&tp(t),t}}},{147:147,64:64,71:71,81:81,99:99}],95:[function(t,n,r){var u=t(70),c=t(136).set,a=u.MutationObserver||u.WebKitMutationObserver,f=u.process,s=u.Promise,l="process"==t(48)(f);n.exports=function(){function Qp(){var t,n;for(l&&(t=f.domain)&&t.exit();r;){n=r.fn,r=r.next;try{n()}catch(t){throw r?i():e=void 0,t}}e=void 0,t&&t.enter()}var r,e,i;if(l)i=function(){f.nextTick(Qp)};else if(!a||u.navigator&&u.navigator.standalone)if(s&&s.resolve){var t=s.resolve(void 0);i=function(){t.then(Qp)}}else i=function(){c.call(u,Qp)};else{var n=!0,o=document.createTextNode("");new a(Qp).observe(o,{characterData:!0}),i=function(){o.data=n=!n}}return function(t){var n={fn:t,next:void 0};e&&(e.next=n),r||(r=n,i()),e=n}}},{136:136,48:48,70:70}],96:[function(t,n,r){"use strict";var i=t(33);function PromiseCapability(t){var r,e;this.promise=new t(function(t,n){if(void 0!==r||void 0!==e)throw TypeError("Bad Promise constructor");r=t,e=n}),this.resolve=i(r),this.reject=i(e)}n.exports.f=function(t){return new PromiseCapability(t)}},{33:33}],97:[function(t,n,r){"use strict";var h=t(58),p=t(107),v=t(104),g=t(108),y=t(142),d=t(77),i=Object.assign;n.exports=!i||t(64)(function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach(function(t){n[t]=t}),7!=i({},t)[r]||Object.keys(i({},n)).join("")!=e})?function assign(t,n){for(var r=y(t),e=arguments.length,i=1,o=v.f,u=g.f;i<e;)for(var c,a=d(arguments[i++]),f=o?p(a).concat(o(a)):p(a),s=f.length,l=0;l<s;)c=f[l++],h&&!u.call(a,c)||(r[c]=a[c]);return r}:i},{104:104,107:107,108:108,142:142,58:58,64:64,77:77}],98:[function(e,t,n){function Pq(){}var i=e(38),o=e(100),u=e(60),c=e(125)("IE_PROTO"),a="prototype",f=function(){var t,n=e(59)("iframe"),r=u.length;for(n.style.display="none",e(73).appendChild(n),n.src="javascript:",(t=n.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),f=t.F;r--;)delete f[a][u[r]];return f()};t.exports=Object.create||function create(t,n){var r;return null!==t?(Pq[a]=i(t),r=new Pq,Pq[a]=null,r[c]=t):r=f(),void 0===n?r:o(r,n)}},{100:100,125:125,38:38,59:59,60:60,73:73}],99:[function(t,n,r){arguments[4][29][0].apply(r,arguments)},{143:143,29:29,38:38,58:58,74:74}],100:[function(t,n,r){var u=t(99),c=t(38),a=t(107);n.exports=t(58)?Object.defineProperties:function defineProperties(t,n){c(t);for(var r,e=a(n),i=e.length,o=0;o<i;)u.f(t,r=e[o++],n[r]);return t}},{107:107,38:38,58:58,99:99}],101:[function(t,n,r){var e=t(108),i=t(116),o=t(140),u=t(143),c=t(71),a=t(74),f=Object.getOwnPropertyDescriptor;r.f=t(58)?f:function getOwnPropertyDescriptor(t,n){if(t=o(t),n=u(n,!0),a)try{return f(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},{108:108,116:116,140:140,143:143,58:58,71:71,74:74}],102:[function(t,n,r){var e=t(140),i=t(103).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];n.exports.f=function getOwnPropertyNames(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(e(t))}},{103:103,140:140}],103:[function(t,n,r){var e=t(106),i=t(60).concat("length","prototype");r.f=Object.getOwnPropertyNames||function getOwnPropertyNames(t){return e(t,i)}},{106:106,60:60}],104:[function(t,n,r){r.f=Object.getOwnPropertySymbols},{}],105:[function(t,n,r){var e=t(71),i=t(142),o=t(125)("IE_PROTO"),u=Object.prototype;n.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},{125:125,142:142,71:71}],106:[function(t,n,r){var u=t(71),c=t(140),a=t(41)(!1),f=t(125)("IE_PROTO");n.exports=function(t,n){var r,e=c(t),i=0,o=[];for(r in e)r!=f&&u(e,r)&&o.push(r);for(;n.length>i;)u(e,r=n[i++])&&(~a(o,r)||o.push(r));return o}},{125:125,140:140,41:41,71:71}],107:[function(t,n,r){var e=t(106),i=t(60);n.exports=Object.keys||function keys(t){return e(t,i)}},{106:106,60:60}],108:[function(t,n,r){r.f={}.propertyIsEnumerable},{}],109:[function(t,n,r){var i=t(62),o=t(52),u=t(64);n.exports=function(t,n){var r=(o.Object||{})[t]||Object[t],e={};e[t]=n(r),i(i.S+i.F*u(function(){r(1)}),"Object",e)}},{52:52,62:62,64:64}],110:[function(t,n,r){var a=t(58),f=t(107),s=t(140),l=t(108).f;n.exports=function(c){return function(t){for(var n,r=s(t),e=f(r),i=e.length,o=0,u=[];o<i;)n=e[o++],a&&!l.call(r,n)||u.push(c?[n,r[n]]:r[n]);return u}}},{107:107,108:108,140:140,58:58}],111:[function(t,n,r){var e=t(103),i=t(104),o=t(38),u=t(70).Reflect;n.exports=u&&u.ownKeys||function ownKeys(t){var n=e.f(o(t)),r=i.f;return r?n.concat(r(t)):n}},{103:103,104:104,38:38,70:70}],112:[function(t,n,r){var e=t(70).parseFloat,i=t(134).trim;n.exports=1/e(t(135)+"-0")!=-1/0?function parseFloat(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},{134:134,135:135,70:70}],113:[function(t,n,r){var e=t(70).parseInt,i=t(134).trim,o=t(135),u=/^[-+]?0[xX]/;n.exports=8!==e(o+"08")||22!==e(o+"0x16")?function parseInt(t,n){var r=i(String(t),3);return e(r,n>>>0||(u.test(r)?16:10))}:e},{134:134,135:135,70:70}],114:[function(t,n,r){n.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},{}],115:[function(t,n,r){var e=t(38),i=t(81),o=t(96);n.exports=function(t,n){if(e(t),i(n)&&n.constructor===t)return n;var r=o.f(t);return(0,r.resolve)(n),r.promise}},{38:38,81:81,96:96}],116:[function(t,n,r){arguments[4][30][0].apply(r,arguments)},{30:30}],117:[function(t,n,r){var i=t(118);n.exports=function(t,n,r){for(var e in n)i(t,e,n[e],r);return t}},{118:118}],118:[function(t,n,r){var o=t(70),u=t(72),c=t(71),a=t(147)("src"),e=t(69),i="toString",f=(""+e).split(i);t(52).inspectSource=function(t){return e.call(t)},(n.exports=function(t,n,r,e){var i="function"==typeof r;i&&(c(r,"name")||u(r,"name",n)),t[n]!==r&&(i&&(c(r,a)||u(r,a,t[n]?""+t[n]:f.join(String(n)))),t===o?t[n]=r:e?t[n]?t[n]=r:u(t,n,r):(delete t[n],u(t,n,r)))})(Function.prototype,i,function toString(){return"function"==typeof this&&this[a]||e.call(this)})},{147:147,52:52,69:69,70:70,71:71,72:72}],119:[function(t,n,r){"use strict";var i=t(47),o=RegExp.prototype.exec;n.exports=function(t,n){var r=t.exec;if("function"==typeof r){var e=r.call(t,n);if("object"!=typeof e)throw new TypeError("RegExp exec method returned something other than an Object or null");return e}if("RegExp"!==i(t))throw new TypeError("RegExp#exec called on incompatible receiver");return o.call(t,n)}},{47:47}],120:[function(t,n,r){"use strict";var e,i,u=t(66),c=RegExp.prototype.exec,a=String.prototype.replace,o=c,f="lastIndex",s=(e=/a/,i=/b*/g,c.call(e,"a"),c.call(i,"a"),0!==e[f]||0!==i[f]),l=void 0!==/()??/.exec("")[1];(s||l)&&(o=function exec(t){var n,r,e,i,o=this;return l&&(r=new RegExp("^"+o.source+"$(?!\\s)",u.call(o))),s&&(n=o[f]),e=c.call(o,t),s&&e&&(o[f]=o.global?e.index+e[0].length:n),l&&e&&1<e.length&&a.call(e[0],r,function(){for(i=1;i<arguments.length-2;i++)void 0===arguments[i]&&(e[i]=void 0)}),e}),n.exports=o},{66:66}],121:[function(t,n,r){n.exports=Object.is||function is(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}},{}],122:[function(n,t,r){function Wu(t,n){if(i(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")}var e=n(81),i=n(38);t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,r,e){try{(e=n(54)(Function.call,n(101).f(Object.prototype,"__proto__").set,2))(t,[]),r=!(t instanceof Array)}catch(t){r=!0}return function setPrototypeOf(t,n){return Wu(t,n),r?t.__proto__=n:e(t,n),t}}({},!1):void 0),check:Wu}},{101:101,38:38,54:54,81:81}],123:[function(t,n,r){"use strict";var e=t(70),i=t(99),o=t(58),u=t(152)("species");n.exports=function(t){var n=e[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},{152:152,58:58,70:70,99:99}],124:[function(t,n,r){var e=t(99).f,i=t(71),o=t(152)("toStringTag");n.exports=function(t,n,r){t&&!i(t=r?t:t.prototype,o)&&e(t,o,{configurable:!0,value:n})}},{152:152,71:71,99:99}],125:[function(t,n,r){var e=t(126)("keys"),i=t(147);n.exports=function(t){return e[t]||(e[t]=i(t))}},{126:126,147:147}],126:[function(t,n,r){var e=t(52),i=t(70),o="__core-js_shared__",u=i[o]||(i[o]={});(n.exports=function(t,n){return u[t]||(u[t]=void 0!==n?n:{})})("versions",[]).push({version:e.version,mode:t(89)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},{52:52,70:70,89:89}],127:[function(t,n,r){var i=t(38),o=t(33),u=t(152)("species");n.exports=function(t,n){var r,e=i(t).constructor;return void 0===e||null==(r=i(e)[u])?n:o(r)}},{152:152,33:33,38:38}],128:[function(t,n,r){"use strict";var e=t(64);n.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},{64:64}],129:[function(t,n,r){var a=t(139),f=t(57);n.exports=function(c){return function(t,n){var r,e,i=String(f(t)),o=a(n),u=i.length;return o<0||u<=o?c?"":void 0:(r=i.charCodeAt(o))<55296||56319<r||o+1===u||(e=i.charCodeAt(o+1))<56320||57343<e?c?i.charAt(o):r:c?i.slice(o,o+2):e-56320+(r-55296<<10)+65536}}},{139:139,57:57}],130:[function(t,n,r){var e=t(82),i=t(57);n.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},{57:57,82:82}],131:[function(t,n,r){function Aw(t,n,r,e){var i=String(u(t)),o="<"+n;return""!==r&&(o+=" "+r+'="'+String(e).replace(c,""")+'"'),o+">"+i+"</"+n+">"}var e=t(62),i=t(64),u=t(57),c=/"/g;n.exports=function(n,t){var r={};r[n]=t(Aw),e(e.P+e.F*i(function(){var t=""[n]('"');return t!==t.toLowerCase()||3<t.split('"').length}),"String",r)}},{57:57,62:62,64:64}],132:[function(t,n,r){var s=t(141),l=t(133),h=t(57);n.exports=function(t,n,r,e){var i=String(h(t)),o=i.length,u=void 0===r?" ":String(r),c=s(n);if(c<=o||""==u)return i;var a=c-o,f=l.call(u,Math.ceil(a/u.length));return f.length>a&&(f=f.slice(0,a)),e?f+i:i+f}},{133:133,141:141,57:57}],133:[function(t,n,r){"use strict";var i=t(139),o=t(57);n.exports=function repeat(t){var n=String(o(this)),r="",e=i(t);if(e<0||e==1/0)throw RangeError("Count can't be negative");for(;0<e;(e>>>=1)&&(n+=n))1&e&&(r+=n);return r}},{139:139,57:57}],134:[function(t,n,r){function tx(t,n,r){var e={},i=c(function(){return!!a[t]()||"​…"!="​…"[t]()}),o=e[t]=i?n(s):a[t];r&&(e[r]=o),u(u.P+u.F*i,"String",e)}var u=t(62),e=t(57),c=t(64),a=t(135),i="["+a+"]",o=RegExp("^"+i+i+"*"),f=RegExp(i+i+"*$"),s=tx.trim=function(t,n){return t=String(e(t)),1&n&&(t=t.replace(o,"")),2&n&&(t=t.replace(f,"")),t};n.exports=tx},{135:135,57:57,62:62,64:64}],135:[function(t,n,r){n.exports="\t\n\v\f\r Â áš€á Žâ€€â€â€‚         âŸã€€\u2028\u2029\ufeff"},{}],136:[function(t,n,r){function Zx(){var t=+this;if(d.hasOwnProperty(t)){var n=d[t];delete d[t],n()}}function $x(t){Zx.call(t.data)}var e,i,o,u=t(54),c=t(76),a=t(73),f=t(59),s=t(70),l=s.process,h=s.setImmediate,p=s.clearImmediate,v=s.MessageChannel,g=s.Dispatch,y=0,d={},x="onreadystatechange";h&&p||(h=function setImmediate(t){for(var n=[],r=1;r<arguments.length;)n.push(arguments[r++]);return d[++y]=function(){c("function"==typeof t?t:Function(t),n)},e(y),y},p=function clearImmediate(t){delete d[t]},"process"==t(48)(l)?e=function(t){l.nextTick(u(Zx,t,1))}:g&&g.now?e=function(t){g.now(u(Zx,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=$x,e=u(o.postMessage,o,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(e=function(t){s.postMessage(t+"","*")},s.addEventListener("message",$x,!1)):e=x in f("script")?function(t){a.appendChild(f("script"))[x]=function(){a.removeChild(this),Zx.call(t)}}:function(t){setTimeout(u(Zx,t,1),0)}),n.exports={set:h,clear:p}},{48:48,54:54,59:59,70:70,73:73,76:76}],137:[function(t,n,r){var e=t(139),i=Math.max,o=Math.min;n.exports=function(t,n){return(t=e(t))<0?i(t+n,0):o(t,n)}},{139:139}],138:[function(t,n,r){var e=t(139),i=t(141);n.exports=function(t){if(void 0===t)return 0;var n=e(t),r=i(n);if(n!==r)throw RangeError("Wrong length!");return r}},{139:139,141:141}],139:[function(t,n,r){var e=Math.ceil,i=Math.floor;n.exports=function(t){return isNaN(t=+t)?0:(0<t?i:e)(t)}},{}],140:[function(t,n,r){var e=t(77),i=t(57);n.exports=function(t){return e(i(t))}},{57:57,77:77}],141:[function(t,n,r){var e=t(139),i=Math.min;n.exports=function(t){return 0<t?i(e(t),9007199254740991):0}},{139:139}],142:[function(t,n,r){var e=t(57);n.exports=function(t){return Object(e(t))}},{57:57}],143:[function(t,n,r){arguments[4][31][0].apply(r,arguments)},{31:31,81:81}],144:[function(t,n,r){"use strict";if(t(58)){var y=t(89),d=t(70),x=t(64),m=t(62),S=t(146),e=t(145),h=t(54),b=t(37),i=t(116),w=t(72),o=t(117),u=t(139),_=t(141),E=t(138),c=t(137),a=t(143),f=t(71),O=t(47),F=t(81),p=t(142),v=t(78),I=t(98),P=t(105),A=t(103).f,g=t(153),s=t(147),l=t(152),M=t(42),k=t(41),N=t(127),j=t(164),R=t(88),T=t(86),L=t(123),C=t(40),G=t(39),D=t(99),U=t(101),W=D.f,V=U.f,B=d.RangeError,q=d.TypeError,Y=d.Uint8Array,z="ArrayBuffer",X="Shared"+z,$="BYTES_PER_ELEMENT",Q="prototype",Z=Array[Q],J=e.ArrayBuffer,H=e.DataView,K=M(0),tt=M(2),nt=M(3),rt=M(4),et=M(5),it=M(6),ot=k(!0),ut=k(!1),ct=j.values,at=j.keys,ft=j.entries,st=Z.lastIndexOf,lt=Z.reduce,ht=Z.reduceRight,pt=Z.join,vt=Z.sort,gt=Z.slice,yt=Z.toString,dt=Z.toLocaleString,xt=l("iterator"),mt=l("toStringTag"),St=s("typed_constructor"),bt=s("def_constructor"),wt=S.CONSTR,_t=S.TYPED,Et=S.VIEW,Ot="Wrong length!",Ft=M(1,function(t,n){return kt(N(t,t[bt]),n)}),It=x(function(){return 1===new Y(new Uint16Array([1]).buffer)[0]}),Pt=!!Y&&!!Y[Q].set&&x(function(){new Y(1).set({})}),At=function(t,n){var r=u(t);if(r<0||r%n)throw B("Wrong offset!");return r},Mt=function(t){if(F(t)&&_t in t)return t;throw q(t+" is not a typed array!")},kt=function(t,n){if(!(F(t)&&St in t))throw q("It is not a typed array constructor!");return new t(n)},Nt=function(t,n){return jt(N(t,t[bt]),n)},jt=function(t,n){for(var r=0,e=n.length,i=kt(t,e);r<e;)i[r]=n[r++];return i},Rt=function(t,n,r){W(t,n,{get:function(){return this._d[r]}})},Tt=function from(t){var n,r,e,i,o,u,c=p(t),a=arguments.length,f=1<a?arguments[1]:void 0,s=void 0!==f,l=g(c);if(null!=l&&!v(l)){for(u=l.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(s&&2<a&&(f=h(f,arguments[2],2)),n=0,r=_(c.length),i=kt(this,r);n<r;n++)i[n]=s?f(c[n],n):c[n];return i},Lt=function of(){for(var t=0,n=arguments.length,r=kt(this,n);t<n;)r[t]=arguments[t++];return r},Ct=!!Y&&x(function(){dt.call(new Y(1))}),Gt=function toLocaleString(){return dt.apply(Ct?gt.call(Mt(this)):Mt(this),arguments)},Dt={copyWithin:function copyWithin(t,n){return G.call(Mt(this),t,n,2<arguments.length?arguments[2]:void 0)},every:function every(t){return rt(Mt(this),t,1<arguments.length?arguments[1]:void 0)},fill:function fill(t){return C.apply(Mt(this),arguments)},filter:function filter(t){return Nt(this,tt(Mt(this),t,1<arguments.length?arguments[1]:void 0))},find:function find(t){return et(Mt(this),t,1<arguments.length?arguments[1]:void 0)},findIndex:function findIndex(t){return it(Mt(this),t,1<arguments.length?arguments[1]:void 0)},forEach:function forEach(t){K(Mt(this),t,1<arguments.length?arguments[1]:void 0)},indexOf:function indexOf(t){return ut(Mt(this),t,1<arguments.length?arguments[1]:void 0)},includes:function includes(t){return ot(Mt(this),t,1<arguments.length?arguments[1]:void 0)},join:function join(t){return pt.apply(Mt(this),arguments)},lastIndexOf:function lastIndexOf(t){return st.apply(Mt(this),arguments)},map:function map(t){return Ft(Mt(this),t,1<arguments.length?arguments[1]:void 0)},reduce:function reduce(t){return lt.apply(Mt(this),arguments)},reduceRight:function reduceRight(t){return ht.apply(Mt(this),arguments)},reverse:function reverse(){for(var t,n=this,r=Mt(n).length,e=Math.floor(r/2),i=0;i<e;)t=n[i],n[i++]=n[--r],n[r]=t;return n},some:function some(t){return nt(Mt(this),t,1<arguments.length?arguments[1]:void 0)},sort:function sort(t){return vt.call(Mt(this),t)},subarray:function subarray(t,n){var r=Mt(this),e=r.length,i=c(t,e);return new(N(r,r[bt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,_((void 0===n?e:c(n,e))-i))}},Ut=function slice(t,n){return Nt(this,gt.call(Mt(this),t,n))},Wt=function set(t){Mt(this);var n=At(arguments[1],1),r=this.length,e=p(t),i=_(e.length),o=0;if(r<i+n)throw B(Ot);for(;o<i;)this[n+o]=e[o++]},Vt={entries:function entries(){return ft.call(Mt(this))},keys:function keys(){return at.call(Mt(this))},values:function values(){return ct.call(Mt(this))}},Bt=function(t,n){return F(t)&&t[_t]&&"symbol"!=typeof n&&n in t&&String(+n)==String(n)},qt=function getOwnPropertyDescriptor(t,n){return Bt(t,n=a(n,!0))?i(2,t[n]):V(t,n)},Yt=function defineProperty(t,n,r){return!(Bt(t,n=a(n,!0))&&F(r)&&f(r,"value"))||f(r,"get")||f(r,"set")||r.configurable||f(r,"writable")&&!r.writable||f(r,"enumerable")&&!r.enumerable?W(t,n,r):(t[n]=r.value,t)};wt||(U.f=qt,D.f=Yt),m(m.S+m.F*!wt,"Object",{getOwnPropertyDescriptor:qt,defineProperty:Yt}),x(function(){yt.call({})})&&(yt=dt=function toString(){return pt.call(this)});var zt=o({},Dt);o(zt,Vt),w(zt,xt,Vt.values),o(zt,{slice:Ut,set:Wt,constructor:function(){},toString:yt,toLocaleString:Gt}),Rt(zt,"buffer","b"),Rt(zt,"byteOffset","o"),Rt(zt,"byteLength","l"),Rt(zt,"length","e"),W(zt,mt,{get:function(){return this[_t]}}),n.exports=function(t,l,n,i){function CC(t,n){W(t,n,{get:function(){return function(t,n){var r=t._d;return r.v[e](n*l+r.o,It)}(this,n)},set:function(t){return function(t,n,r){var e=t._d;i&&(r=(r=Math.round(r))<0?0:255<r?255:255&r),e.v[o](n*l+e.o,r,It)}(this,n,t)},enumerable:!0})}var h=t+((i=!!i)?"Clamped":"")+"Array",e="get"+t,o="set"+t,p=d[h],u=p||{},r=p&&P(p),c=!p||!S.ABV,a={},f=p&&p[Q];c?(p=n(function(t,n,r,e){b(t,p,h,"_d");var i,o,u,c,a=0,f=0;if(F(n)){if(!(n instanceof J||(c=O(n))==z||c==X))return _t in n?jt(p,n):Tt.call(p,n);i=n,f=At(r,l);var s=n.byteLength;if(void 0===e){if(s%l)throw B(Ot);if((o=s-f)<0)throw B(Ot)}else if(s<(o=_(e)*l)+f)throw B(Ot);u=o/l}else u=E(n),i=new J(o=u*l);for(w(t,"_d",{b:i,o:f,l:o,e:u,v:new H(i)});a<u;)CC(t,a++)}),f=p[Q]=I(zt),w(f,"constructor",p)):x(function(){p(1)})&&x(function(){new p(-1)})&&T(function(t){new p,new p(null),new p(1.5),new p(t)},!0)||(p=n(function(t,n,r,e){var i;return b(t,p,h),F(n)?n instanceof J||(i=O(n))==z||i==X?void 0!==e?new u(n,At(r,l),e):void 0!==r?new u(n,At(r,l)):new u(n):_t in n?jt(p,n):Tt.call(p,n):new u(E(n))}),K(r!==Function.prototype?A(u).concat(A(r)):A(u),function(t){t in p||w(p,t,u[t])}),p[Q]=f,y||(f.constructor=p));var s=f[xt],v=!!s&&("values"==s.name||null==s.name),g=Vt.values;w(p,St,!0),w(f,_t,h),w(f,Et,!0),w(f,bt,p),(i?new p(1)[mt]==h:mt in f)||W(f,mt,{get:function(){return h}}),a[h]=p,m(m.G+m.W+m.F*(p!=u),a),m(m.S,h,{BYTES_PER_ELEMENT:l}),m(m.S+m.F*x(function(){u.of.call(p,1)}),h,{from:Tt,of:Lt}),$ in f||w(f,$,l),m(m.P,h,Dt),L(h),m(m.P+m.F*Pt,h,{set:Wt}),m(m.P+m.F*!v,h,Vt),y||f.toString==yt||(f.toString=yt),m(m.P+m.F*x(function(){new p(1).slice()}),h,{slice:Ut}),m(m.P+m.F*(x(function(){return[1,2].toLocaleString()!=new p([1,2]).toLocaleString()})||!x(function(){f.toLocaleString.call([1,2])})),h,{toLocaleString:Gt}),R[h]=v?s:g,y||v||w(f,xt,g)}}else n.exports=function(){}},{101:101,103:103,105:105,116:116,117:117,123:123,127:127,137:137,138:138,139:139,141:141,142:142,143:143,145:145,146:146,147:147,152:152,153:153,164:164,37:37,39:39,40:40,41:41,42:42,47:47,54:54,58:58,62:62,64:64,70:70,71:71,72:72,78:78,81:81,86:86,88:88,89:89,98:98,99:99}],145:[function(t,n,r){"use strict";var e=t(70),i=t(58),o=t(89),u=t(146),c=t(72),a=t(117),f=t(64),s=t(37),l=t(139),h=t(141),p=t(138),v=t(103).f,g=t(99).f,y=t(40),d=t(124),x="ArrayBuffer",m="DataView",S="prototype",b="Wrong index!",w=e[x],_=e[m],E=e.Math,O=e.RangeError,F=e.Infinity,I=w,P=E.abs,A=E.pow,M=E.floor,k=E.log,N=E.LN2,j="byteLength",R="byteOffset",T=i?"_b":"buffer",L=i?"_l":j,C=i?"_o":R;function packIEEE754(t,n,r){var e,i,o,u=new Array(r),c=8*r-n-1,a=(1<<c)-1,f=a>>1,s=23===n?A(2,-24)-A(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=P(t))!=t||t===F?(i=t!=t?1:0,e=a):(e=M(k(t)/N),t*(o=A(2,-e))<1&&(e--,o*=2),2<=(t+=1<=e+f?s/o:s*A(2,1-f))*o&&(e++,o/=2),a<=e+f?(i=0,e=a):1<=e+f?(i=(t*o-1)*A(2,n),e+=f):(i=t*A(2,f-1)*A(2,n),e=0));8<=n;u[l++]=255&i,i/=256,n-=8);for(e=e<<n|i,c+=n;0<c;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u}function unpackIEEE754(t,n,r){var e,i=8*r-n-1,o=(1<<i)-1,u=o>>1,c=i-7,a=r-1,f=t[a--],s=127&f;for(f>>=7;0<c;s=256*s+t[a],a--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;0<c;e=256*e+t[a],a--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:f?-F:F;e+=A(2,n),s-=u}return(f?-1:1)*e*A(2,s-n)}function unpackI32(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function packI8(t){return[255&t]}function packI16(t){return[255&t,t>>8&255]}function packI32(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function packF64(t){return packIEEE754(t,52,8)}function packF32(t){return packIEEE754(t,23,4)}function addGetter(t,n,r){g(t[S],n,{get:function(){return this[r]}})}function get(t,n,r,e){var i=p(+r);if(i+n>t[L])throw O(b);var o=t[T]._b,u=i+t[C],c=o.slice(u,u+n);return e?c:c.reverse()}function set(t,n,r,e,i,o){var u=p(+r);if(u+n>t[L])throw O(b);for(var c=t[T]._b,a=u+t[C],f=e(+i),s=0;s<n;s++)c[a+s]=f[o?s:n-s-1]}if(u.ABV){if(!f(function(){w(1)})||!f(function(){new w(-1)})||f(function(){return new w,new w(1.5),new w(NaN),w.name!=x})){for(var G,D=(w=function ArrayBuffer(t){return s(this,w),new I(p(t))})[S]=I[S],U=v(I),W=0;U.length>W;)(G=U[W++])in w||c(w,G,I[G]);o||(D.constructor=w)}var V=new _(new w(2)),B=_[S].setInt8;V.setInt8(0,2147483648),V.setInt8(1,2147483649),!V.getInt8(0)&&V.getInt8(1)||a(_[S],{setInt8:function setInt8(t,n){B.call(this,t,n<<24>>24)},setUint8:function setUint8(t,n){B.call(this,t,n<<24>>24)}},!0)}else w=function ArrayBuffer(t){s(this,w,x);var n=p(t);this._b=y.call(new Array(n),0),this[L]=n},_=function DataView(t,n,r){s(this,_,m),s(t,w,m);var e=t[L],i=l(n);if(i<0||e<i)throw O("Wrong offset!");if(e<i+(r=void 0===r?e-i:h(r)))throw O("Wrong length!");this[T]=t,this[C]=i,this[L]=r},i&&(addGetter(w,j,"_l"),addGetter(_,"buffer","_b"),addGetter(_,j,"_l"),addGetter(_,R,"_o")),a(_[S],{getInt8:function getInt8(t){return get(this,1,t)[0]<<24>>24},getUint8:function getUint8(t){return get(this,1,t)[0]},getInt16:function getInt16(t){var n=get(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function getUint16(t){var n=get(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function getInt32(t){return unpackI32(get(this,4,t,arguments[1]))},getUint32:function getUint32(t){return unpackI32(get(this,4,t,arguments[1]))>>>0},getFloat32:function getFloat32(t){return unpackIEEE754(get(this,4,t,arguments[1]),23,4)},getFloat64:function getFloat64(t){return unpackIEEE754(get(this,8,t,arguments[1]),52,8)},setInt8:function setInt8(t,n){set(this,1,t,packI8,n)},setUint8:function setUint8(t,n){set(this,1,t,packI8,n)},setInt16:function setInt16(t,n){set(this,2,t,packI16,n,arguments[2])},setUint16:function setUint16(t,n){set(this,2,t,packI16,n,arguments[2])},setInt32:function setInt32(t,n){set(this,4,t,packI32,n,arguments[2])},setUint32:function setUint32(t,n){set(this,4,t,packI32,n,arguments[2])},setFloat32:function setFloat32(t,n){set(this,4,t,packF32,n,arguments[2])},setFloat64:function setFloat64(t,n){set(this,8,t,packF64,n,arguments[2])}});d(w,x),d(_,m),c(_[S],u.VIEW,!0),r[x]=w,r[m]=_},{103:103,117:117,124:124,138:138,139:139,141:141,146:146,37:37,40:40,58:58,64:64,70:70,72:72,89:89,99:99}],146:[function(t,n,r){for(var e,i=t(70),o=t(72),u=t(147),c=u("typed_array"),a=u("view"),f=!(!i.ArrayBuffer||!i.DataView),s=f,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=i[h[l++]])?(o(e.prototype,c,!0),o(e.prototype,a,!0)):s=!1;n.exports={ABV:f,CONSTR:s,TYPED:c,VIEW:a}},{147:147,70:70,72:72}],147:[function(t,n,r){var e=0,i=Math.random();n.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+i).toString(36))}},{}],148:[function(t,n,r){var e=t(70).navigator;n.exports=e&&e.userAgent||""},{70:70}],149:[function(t,n,r){var e=t(81);n.exports=function(t,n){if(!e(t)||t._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return t}},{81:81}],150:[function(t,n,r){var e=t(70),i=t(52),o=t(89),u=t(151),c=t(99).f;n.exports=function(t){var n=i.Symbol||(i.Symbol=o?{}:e.Symbol||{});"_"==t.charAt(0)||t in n||c(n,t,{value:u.f(t)})}},{151:151,52:52,70:70,89:89,99:99}],151:[function(t,n,r){r.f=t(152)},{152:152}],152:[function(t,n,r){var e=t(126)("wks"),i=t(147),o=t(70).Symbol,u="function"==typeof o;(n.exports=function(t){return e[t]||(e[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=e},{126:126,147:147,70:70}],153:[function(t,n,r){var e=t(47),i=t(152)("iterator"),o=t(88);n.exports=t(52).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[e(t)]}},{152:152,47:47,52:52,88:88}],154:[function(t,n,r){var e=t(62);e(e.P,"Array",{copyWithin:t(39)}),t(35)("copyWithin")},{35:35,39:39,62:62}],155:[function(t,n,r){"use strict";var e=t(62),i=t(42)(4);e(e.P+e.F*!t(128)([].every,!0),"Array",{every:function every(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],156:[function(t,n,r){var e=t(62);e(e.P,"Array",{fill:t(40)}),t(35)("fill")},{35:35,40:40,62:62}],157:[function(t,n,r){"use strict";var e=t(62),i=t(42)(2);e(e.P+e.F*!t(128)([].filter,!0),"Array",{filter:function filter(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],158:[function(t,n,r){"use strict";var e=t(62),i=t(42)(6),o="findIndex",u=!0;o in[]&&Array(1)[o](function(){u=!1}),e(e.P+e.F*u,"Array",{findIndex:function findIndex(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)(o)},{35:35,42:42,62:62}],159:[function(t,n,r){"use strict";var e=t(62),i=t(42)(5),o="find",u=!0;o in[]&&Array(1)[o](function(){u=!1}),e(e.P+e.F*u,"Array",{find:function find(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)(o)},{35:35,42:42,62:62}],160:[function(t,n,r){"use strict";var e=t(62),i=t(42)(0),o=t(128)([].forEach,!0);e(e.P+e.F*!o,"Array",{forEach:function forEach(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],161:[function(t,n,r){"use strict";var h=t(54),e=t(62),p=t(142),v=t(83),g=t(78),y=t(141),d=t(53),x=t(153);e(e.S+e.F*!t(86)(function(t){Array.from(t)}),"Array",{from:function from(t){var n,r,e,i,o=p(t),u="function"==typeof this?this:Array,c=arguments.length,a=1<c?arguments[1]:void 0,f=void 0!==a,s=0,l=x(o);if(f&&(a=h(a,2<c?arguments[2]:void 0,2)),null==l||u==Array&&g(l))for(r=new u(n=y(o.length));s<n;s++)d(r,s,f?a(o[s],s):o[s]);else for(i=l.call(o),r=new u;!(e=i.next()).done;s++)d(r,s,f?v(i,a,[e.value,s],!0):e.value);return r.length=s,r}})},{141:141,142:142,153:153,53:53,54:54,62:62,78:78,83:83,86:86}],162:[function(t,n,r){"use strict";var e=t(62),i=t(41)(!1),o=[].indexOf,u=!!o&&1/[1].indexOf(1,-0)<0;e(e.P+e.F*(u||!t(128)(o)),"Array",{indexOf:function indexOf(t){return u?o.apply(this,arguments)||0:i(this,t,arguments[1])}})},{128:128,41:41,62:62}],163:[function(t,n,r){var e=t(62);e(e.S,"Array",{isArray:t(79)})},{62:62,79:79}],164:[function(t,n,r){"use strict";var e=t(35),i=t(87),o=t(88),u=t(140);n.exports=t(85)(Array,"Array",function(t,n){this._t=u(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==n?r:"values"==n?t[r]:[r,t[r]])},"values"),o.Arguments=o.Array,e("keys"),e("values"),e("entries")},{140:140,35:35,85:85,87:87,88:88}],165:[function(t,n,r){"use strict";var e=t(62),i=t(140),o=[].join;e(e.P+e.F*(t(77)!=Object||!t(128)(o)),"Array",{join:function join(t){return o.call(i(this),void 0===t?",":t)}})},{128:128,140:140,62:62,77:77}],166:[function(t,n,r){"use strict";var e=t(62),i=t(140),o=t(139),u=t(141),c=[].lastIndexOf,a=!!c&&1/[1].lastIndexOf(1,-0)<0;e(e.P+e.F*(a||!t(128)(c)),"Array",{lastIndexOf:function lastIndexOf(t){if(a)return c.apply(this,arguments)||0;var n=i(this),r=u(n.length),e=r-1;for(1<arguments.length&&(e=Math.min(e,o(arguments[1]))),e<0&&(e=r+e);0<=e;e--)if(e in n&&n[e]===t)return e||0;return-1}})},{128:128,139:139,140:140,141:141,62:62}],167:[function(t,n,r){"use strict";var e=t(62),i=t(42)(1);e(e.P+e.F*!t(128)([].map,!0),"Array",{map:function map(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],168:[function(t,n,r){"use strict";var e=t(62),i=t(53);e(e.S+e.F*t(64)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);t<n;)i(r,t,arguments[t++]);return r.length=n,r}})},{53:53,62:62,64:64}],169:[function(t,n,r){"use strict";var e=t(62),i=t(43);e(e.P+e.F*!t(128)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(t){return i(this,t,arguments.length,arguments[1],!0)}})},{128:128,43:43,62:62}],170:[function(t,n,r){"use strict";var e=t(62),i=t(43);e(e.P+e.F*!t(128)([].reduce,!0),"Array",{reduce:function reduce(t){return i(this,t,arguments.length,arguments[1],!1)}})},{128:128,43:43,62:62}],171:[function(t,n,r){"use strict";var e=t(62),i=t(73),f=t(48),s=t(137),l=t(141),h=[].slice;e(e.P+e.F*t(64)(function(){i&&h.call(i)}),"Array",{slice:function slice(t,n){var r=l(this.length),e=f(this);if(n=void 0===n?r:n,"Array"==e)return h.call(this,t,n);for(var i=s(t,r),o=s(n,r),u=l(o-i),c=new Array(u),a=0;a<u;a++)c[a]="String"==e?this.charAt(i+a):this[i+a];return c}})},{137:137,141:141,48:48,62:62,64:64,73:73}],172:[function(t,n,r){"use strict";var e=t(62),i=t(42)(3);e(e.P+e.F*!t(128)([].some,!0),"Array",{some:function some(t){return i(this,t,arguments[1])}})},{128:128,42:42,62:62}],173:[function(t,n,r){"use strict";var e=t(62),i=t(33),o=t(142),u=t(64),c=[].sort,a=[1,2,3];e(e.P+e.F*(u(function(){a.sort(void 0)})||!u(function(){a.sort(null)})||!t(128)(c)),"Array",{sort:function sort(t){return void 0===t?c.call(o(this)):c.call(o(this),i(t))}})},{128:128,142:142,33:33,62:62,64:64}],174:[function(t,n,r){t(123)("Array")},{123:123}],175:[function(t,n,r){var e=t(62);e(e.S,"Date",{now:function(){return(new Date).getTime()}})},{62:62}],176:[function(t,n,r){var e=t(62),i=t(55);e(e.P+e.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},{55:55,62:62}],177:[function(t,n,r){"use strict";var e=t(62),i=t(142),o=t(143);e(e.P+e.F*t(64)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(t){var n=i(this),r=o(n);return"number"!=typeof r||isFinite(r)?n.toISOString():null}})},{142:142,143:143,62:62,64:64}],178:[function(t,n,r){var e=t(152)("toPrimitive"),i=Date.prototype;e in i||t(72)(i,e,t(56))},{152:152,56:56,72:72}],179:[function(t,n,r){var e=Date.prototype,i="Invalid Date",o="toString",u=e[o],c=e.getTime;new Date(NaN)+""!=i&&t(118)(e,o,function toString(){var t=c.call(this);return t==t?u.call(this):i})},{118:118}],180:[function(t,n,r){var e=t(62);e(e.P,"Function",{bind:t(46)})},{46:46,62:62}],181:[function(t,n,r){"use strict";var e=t(81),i=t(105),o=t(152)("hasInstance"),u=Function.prototype;o in u||t(99).f(u,o,{value:function(t){if("function"!=typeof this||!e(t))return!1;if(!e(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},{105:105,152:152,81:81,99:99}],182:[function(t,n,r){var e=t(99).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||t(58)&&e(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},{58:58,99:99}],183:[function(t,n,r){"use strict";var e=t(49),i=t(149);n.exports=t(51)("Map",function(t){return function Map(){return t(this,0<arguments.length?arguments[0]:void 0)}},{get:function get(t){var n=e.getEntry(i(this,"Map"),t);return n&&n.v},set:function set(t,n){return e.def(i(this,"Map"),0===t?0:t,n)}},e,!0)},{149:149,49:49,51:51}],184:[function(t,n,r){var e=t(62),i=t(92),o=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function acosh(t){return(t=+t)<1?NaN:94906265.62425156<t?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},{62:62,92:92}],185:[function(t,n,r){var e=t(62),i=Math.asinh;e(e.S+e.F*!(i&&0<1/i(0)),"Math",{asinh:function asinh(t){return isFinite(t=+t)&&0!=t?t<0?-asinh(-t):Math.log(t+Math.sqrt(t*t+1)):t}})},{62:62}],186:[function(t,n,r){var e=t(62),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function atanh(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},{62:62}],187:[function(t,n,r){var e=t(62),i=t(93);e(e.S,"Math",{cbrt:function cbrt(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},{62:62,93:93}],188:[function(t,n,r){var e=t(62);e(e.S,"Math",{clz32:function clz32(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},{62:62}],189:[function(t,n,r){var e=t(62),i=Math.exp;e(e.S,"Math",{cosh:function cosh(t){return(i(t=+t)+i(-t))/2}})},{62:62}],190:[function(t,n,r){var e=t(62),i=t(90);e(e.S+e.F*(i!=Math.expm1),"Math",{expm1:i})},{62:62,90:90}],191:[function(t,n,r){var e=t(62);e(e.S,"Math",{fround:t(91)})},{62:62,91:91}],192:[function(t,n,r){var e=t(62),a=Math.abs;e(e.S,"Math",{hypot:function hypot(t,n){for(var r,e,i=0,o=0,u=arguments.length,c=0;o<u;)c<(r=a(arguments[o++]))?(i=i*(e=c/r)*e+1,c=r):i+=0<r?(e=r/c)*e:r;return c===1/0?1/0:c*Math.sqrt(i)}})},{62:62}],193:[function(t,n,r){var e=t(62),i=Math.imul;e(e.S+e.F*t(64)(function(){return-5!=i(4294967295,5)||2!=i.length}),"Math",{imul:function imul(t,n){var r=65535,e=+t,i=+n,o=r&e,u=r&i;return 0|o*u+((r&e>>>16)*u+o*(r&i>>>16)<<16>>>0)}})},{62:62,64:64}],194:[function(t,n,r){var e=t(62);e(e.S,"Math",{log10:function log10(t){return Math.log(t)*Math.LOG10E}})},{62:62}],195:[function(t,n,r){var e=t(62);e(e.S,"Math",{log1p:t(92)})},{62:62,92:92}],196:[function(t,n,r){var e=t(62);e(e.S,"Math",{log2:function log2(t){return Math.log(t)/Math.LN2}})},{62:62}],197:[function(t,n,r){var e=t(62);e(e.S,"Math",{sign:t(93)})},{62:62,93:93}],198:[function(t,n,r){var e=t(62),i=t(90),o=Math.exp;e(e.S+e.F*t(64)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function sinh(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},{62:62,64:64,90:90}],199:[function(t,n,r){var e=t(62),i=t(90),o=Math.exp;e(e.S,"Math",{tanh:function tanh(t){var n=i(t=+t),r=i(-t);return n==1/0?1:r==1/0?-1:(n-r)/(o(t)+o(-t))}})},{62:62,90:90}],200:[function(t,n,r){var e=t(62);e(e.S,"Math",{trunc:function trunc(t){return(0<t?Math.floor:Math.ceil)(t)}})},{62:62}],201:[function(t,n,r){"use strict";function EN(t){var n=s(t,!1);if("string"==typeof n&&2<n.length){var r,e,i,o=(n=x?n.trim():h(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(r=n.charCodeAt(2))||120===r)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:e=2,i=49;break;case 79:case 111:e=8,i=55;break;default:return+n}for(var u,c=n.slice(2),a=0,f=c.length;a<f;a++)if((u=c.charCodeAt(a))<48||i<u)return NaN;return parseInt(c,e)}}return+n}var e=t(70),i=t(71),o=t(48),u=t(75),s=t(143),c=t(64),a=t(103).f,f=t(101).f,l=t(99).f,h=t(134).trim,p="Number",v=e[p],g=v,y=v.prototype,d=o(t(98)(y))==p,x="trim"in String.prototype;if(!v(" 0o1")||!v("0b1")||v("+0x1")){v=function Number(t){var n=arguments.length<1?0:t,r=this;return r instanceof v&&(d?c(function(){y.valueOf.call(r)}):o(r)!=p)?u(new g(EN(n)),r,v):EN(n)};for(var m,S=t(58)?a(g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),b=0;S.length>b;b++)i(g,m=S[b])&&!i(v,m)&&l(v,m,f(g,m));(v.prototype=y).constructor=v,t(118)(e,p,v)}},{101:101,103:103,118:118,134:134,143:143,48:48,58:58,64:64,70:70,71:71,75:75,98:98,99:99}],202:[function(t,n,r){var e=t(62);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},{62:62}],203:[function(t,n,r){var e=t(62),i=t(70).isFinite;e(e.S,"Number",{isFinite:function isFinite(t){return"number"==typeof t&&i(t)}})},{62:62,70:70}],204:[function(t,n,r){var e=t(62);e(e.S,"Number",{isInteger:t(80)})},{62:62,80:80}],205:[function(t,n,r){var e=t(62);e(e.S,"Number",{isNaN:function isNaN(t){return t!=t}})},{62:62}],206:[function(t,n,r){var e=t(62),i=t(80),o=Math.abs;e(e.S,"Number",{isSafeInteger:function isSafeInteger(t){return i(t)&&o(t)<=9007199254740991}})},{62:62,80:80}],207:[function(t,n,r){var e=t(62);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{62:62}],208:[function(t,n,r){var e=t(62);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},{62:62}],209:[function(t,n,r){var e=t(62),i=t(112);e(e.S+e.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},{112:112,62:62}],210:[function(t,n,r){var e=t(62),i=t(113);e(e.S+e.F*(Number.parseInt!=i),"Number",{parseInt:i})},{113:113,62:62}],211:[function(t,n,r){"use strict";function XO(t,n){for(var r=-1,e=n;++r<6;)e+=t*u[r],u[r]=e%1e7,e=o(e/1e7)}function YO(t){for(var n=6,r=0;0<=--n;)r+=u[n],u[n]=o(r/t),r=r%t*1e7}function ZO(){for(var t=6,n="";0<=--t;)if(""!==n||0===t||0!==u[t]){var r=String(u[t]);n=""===n?r:n+l.call("0",7-r.length)+r}return n}var e=t(62),f=t(139),s=t(34),l=t(133),i=1..toFixed,o=Math.floor,u=[0,0,0,0,0,0],h="Number.toFixed: incorrect invocation!",p=function(t,n,r){return 0===n?r:n%2==1?p(t,n-1,r*t):p(t*t,n/2,r)};e(e.P+e.F*(!!i&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!t(64)(function(){i.call({})})),"Number",{toFixed:function toFixed(t){var n,r,e,i,o=s(this,h),u=f(t),c="",a="0";if(u<0||20<u)throw RangeError(h);if(o!=o)return"NaN";if(o<=-1e21||1e21<=o)return String(o);if(o<0&&(c="-",o=-o),1e-21<o)if(r=(n=function(t){for(var n=0,r=t;4096<=r;)n+=12,r/=4096;for(;2<=r;)n+=1,r/=2;return n}(o*p(2,69,1))-69)<0?o*p(2,-n,1):o/p(2,n,1),r*=4503599627370496,0<(n=52-n)){for(XO(0,r),e=u;7<=e;)XO(1e7,0),e-=7;for(XO(p(10,e,1),0),e=n-1;23<=e;)YO(1<<23),e-=23;YO(1<<e),XO(1,1),YO(2),a=ZO()}else XO(0,r),XO(1<<-n,0),a=ZO()+l.call("0",u);return a=0<u?c+((i=a.length)<=u?"0."+l.call("0",u-i)+a:a.slice(0,i-u)+"."+a.slice(i-u)):c+a}})},{133:133,139:139,34:34,62:62,64:64}],212:[function(t,n,r){"use strict";var e=t(62),i=t(64),o=t(34),u=1..toPrecision;e(e.P+e.F*(i(function(){return"1"!==u.call(1,void 0)})||!i(function(){u.call({})})),"Number",{toPrecision:function toPrecision(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},{34:34,62:62,64:64}],213:[function(t,n,r){var e=t(62);e(e.S+e.F,"Object",{assign:t(97)})},{62:62,97:97}],214:[function(t,n,r){var e=t(62);e(e.S,"Object",{create:t(98)})},{62:62,98:98}],215:[function(t,n,r){var e=t(62);e(e.S+e.F*!t(58),"Object",{defineProperties:t(100)})},{100:100,58:58,62:62}],216:[function(t,n,r){var e=t(62);e(e.S+e.F*!t(58),"Object",{defineProperty:t(99).f})},{58:58,62:62,99:99}],217:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("freeze",function(n){return function freeze(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],218:[function(t,n,r){var e=t(140),i=t(101).f;t(109)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(t,n){return i(e(t),n)}})},{101:101,109:109,140:140}],219:[function(t,n,r){t(109)("getOwnPropertyNames",function(){return t(102).f})},{102:102,109:109}],220:[function(t,n,r){var e=t(142),i=t(105);t(109)("getPrototypeOf",function(){return function getPrototypeOf(t){return i(e(t))}})},{105:105,109:109,142:142}],221:[function(t,n,r){var e=t(81);t(109)("isExtensible",function(n){return function isExtensible(t){return!!e(t)&&(!n||n(t))}})},{109:109,81:81}],222:[function(t,n,r){var e=t(81);t(109)("isFrozen",function(n){return function isFrozen(t){return!e(t)||!!n&&n(t)}})},{109:109,81:81}],223:[function(t,n,r){var e=t(81);t(109)("isSealed",function(n){return function isSealed(t){return!e(t)||!!n&&n(t)}})},{109:109,81:81}],224:[function(t,n,r){var e=t(62);e(e.S,"Object",{is:t(121)})},{121:121,62:62}],225:[function(t,n,r){var e=t(142),i=t(107);t(109)("keys",function(){return function keys(t){return i(e(t))}})},{107:107,109:109,142:142}],226:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("preventExtensions",function(n){return function preventExtensions(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],227:[function(t,n,r){var e=t(81),i=t(94).onFreeze;t(109)("seal",function(n){return function seal(t){return n&&e(t)?n(i(t)):t}})},{109:109,81:81,94:94}],228:[function(t,n,r){var e=t(62);e(e.S,"Object",{setPrototypeOf:t(122).set})},{122:122,62:62}],229:[function(t,n,r){"use strict";var e=t(47),i={};i[t(152)("toStringTag")]="z",i+""!="[object z]"&&t(118)(Object.prototype,"toString",function toString(){return"[object "+e(this)+"]"},!0)},{118:118,152:152,47:47}],230:[function(t,n,r){var e=t(62),i=t(112);e(e.G+e.F*(parseFloat!=i),{parseFloat:i})},{112:112,62:62}],231:[function(t,n,r){var e=t(62),i=t(113);e(e.G+e.F*(parseInt!=i),{parseInt:i})},{113:113,62:62}],232:[function(r,t,n){"use strict";function $R(){}function fS(t){var n;return!(!h(t)||"function"!=typeof(n=t.then))&&n}function gS(s,r){if(!s._n){s._n=!0;var e=s._c;x(function(){for(var a=s._v,f=1==s._s,t=0,n=function(t){var n,r,e,i=f?t.ok:t.fail,o=t.resolve,u=t.reject,c=t.domain;try{i?(f||(2==s._h&&R(s),s._h=1),!0===i?n=a:(c&&c.enter(),n=i(a),c&&(c.exit(),e=!0)),n===t.promise?u(E("Promise-chain cycle")):(r=fS(n))?r.call(n,o,u):o(n)):u(a)}catch(t){c&&!e&&c.exit(),u(t)}};e.length>t;)n(e[t++]);s._c=[],s._n=!1,r&&!s._h&&N(s)})}}function kS(t){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=t,n._s=2,n._a||(n._a=n._c.slice()),gS(n,!0))}var e,i,o,u,c=r(89),a=r(70),f=r(54),s=r(47),l=r(62),h=r(81),p=r(33),v=r(37),g=r(68),y=r(127),d=r(136).set,x=r(95)(),m=r(96),S=r(114),b=r(148),w=r(115),_="Promise",E=a.TypeError,O=a.process,F=O&&O.versions,I=F&&F.v8||"",P=a[_],A="process"==s(O),M=i=m.f,k=!!function(){try{var t=P.resolve(1),n=(t.constructor={})[r(152)("species")]=function(t){t($R,$R)};return(A||"function"==typeof PromiseRejectionEvent)&&t.then($R)instanceof n&&0!==I.indexOf("6.6")&&-1===b.indexOf("Chrome/66")}catch(t){}}(),N=function(o){d.call(a,function(){var t,n,r,e=o._v,i=j(o);if(i&&(t=S(function(){A?O.emit("unhandledRejection",e,o):(n=a.onunhandledrejection)?n({promise:o,reason:e}):(r=a.console)&&r.error&&r.error("Unhandled promise rejection",e)}),o._h=A||j(o)?2:1),o._a=void 0,i&&t.e)throw t.v})},j=function(t){return 1!==t._h&&0===(t._a||t._c).length},R=function(n){d.call(a,function(){var t;A?O.emit("rejectionHandled",n):(t=a.onrejectionhandled)&&t({promise:n,reason:n._v})})},T=function(t){var r,e=this;if(!e._d){e._d=!0,e=e._w||e;try{if(e===t)throw E("Promise can't be resolved itself");(r=fS(t))?x(function(){var n={_w:e,_d:!1};try{r.call(t,f(T,n,1),f(kS,n,1))}catch(t){kS.call(n,t)}}):(e._v=t,e._s=1,gS(e,!1))}catch(t){kS.call({_w:e,_d:!1},t)}}};k||(P=function Promise(t){v(this,P,_,"_h"),p(t),e.call(this);try{t(f(T,this,1),f(kS,this,1))}catch(t){kS.call(this,t)}},(e=function Promise(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(117)(P.prototype,{then:function then(t,n){var r=M(y(this,P));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=A?O.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&gS(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new e;this.promise=t,this.resolve=f(T,t,1),this.reject=f(kS,t,1)},m.f=M=function(t){return t===P||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!k,{Promise:P}),r(124)(P,_),r(123)(_),u=r(52)[_],l(l.S+l.F*!k,_,{reject:function reject(t){var n=M(this);return(0,n.reject)(t),n.promise}}),l(l.S+l.F*(c||!k),_,{resolve:function resolve(t){return w(c&&this===u?P:this,t)}}),l(l.S+l.F*!(k&&r(86)(function(t){P.all(t).catch($R)})),_,{all:function all(t){var u=this,n=M(u),c=n.resolve,a=n.reject,r=S(function(){var e=[],i=0,o=1;g(t,!1,function(t){var n=i++,r=!1;e.push(void 0),o++,u.resolve(t).then(function(t){r||(r=!0,e[n]=t,--o||c(e))},a)}),--o||c(e)});return r.e&&a(r.v),n.promise},race:function race(t){var n=this,r=M(n),e=r.reject,i=S(function(){g(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return i.e&&e(i.v),r.promise}})},{114:114,115:115,117:117,123:123,124:124,127:127,136:136,148:148,152:152,33:33,37:37,47:47,52:52,54:54,62:62,68:68,70:70,81:81,86:86,89:89,95:95,96:96}],233:[function(t,n,r){var e=t(62),o=t(33),u=t(38),c=(t(70).Reflect||{}).apply,a=Function.apply;e(e.S+e.F*!t(64)(function(){c(function(){})}),"Reflect",{apply:function apply(t,n,r){var e=o(t),i=u(r);return c?c(e,n,i):a.call(e,n,i)}})},{33:33,38:38,62:62,64:64,70:70}],234:[function(t,n,r){var e=t(62),c=t(98),a=t(33),f=t(38),s=t(81),i=t(64),l=t(46),h=(t(70).Reflect||{}).construct,p=i(function(){function F(){}return!(h(function(){},[],F)instanceof F)}),v=!i(function(){h(function(){})});e(e.S+e.F*(p||v),"Reflect",{construct:function construct(t,n){a(t),f(n);var r=arguments.length<3?t:a(arguments[2]);if(v&&!p)return h(t,n,r);if(t==r){switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3])}var e=[null];return e.push.apply(e,n),new(l.apply(t,e))}var i=r.prototype,o=c(s(i)?i:Object.prototype),u=Function.apply.call(t,o,n);return s(u)?u:o}})},{33:33,38:38,46:46,62:62,64:64,70:70,81:81,98:98}],235:[function(t,n,r){var e=t(99),i=t(62),o=t(38),u=t(143);i(i.S+i.F*t(64)(function(){Reflect.defineProperty(e.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(t,n,r){o(t),n=u(n,!0),o(r);try{return e.f(t,n,r),!0}catch(t){return!1}}})},{143:143,38:38,62:62,64:64,99:99}],236:[function(t,n,r){var e=t(62),i=t(101).f,o=t(38);e(e.S,"Reflect",{deleteProperty:function deleteProperty(t,n){var r=i(o(t),n);return!(r&&!r.configurable)&&delete t[n]}})},{101:101,38:38,62:62}],237:[function(t,n,r){"use strict";function IU(t){this._t=i(t),this._i=0;var n,r=this._k=[];for(n in t)r.push(n)}var e=t(62),i=t(38);t(84)(IU,"Object",function(){var t,n=this._k;do{if(this._i>=n.length)return{value:void 0,done:!0}}while(!((t=n[this._i++])in this._t));return{value:t,done:!1}}),e(e.S,"Reflect",{enumerate:function enumerate(t){return new IU(t)}})},{38:38,62:62,84:84}],238:[function(t,n,r){var e=t(101),i=t(62),o=t(38);i(i.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(t,n){return e.f(o(t),n)}})},{101:101,38:38,62:62}],239:[function(t,n,r){var e=t(62),i=t(105),o=t(38);e(e.S,"Reflect",{getPrototypeOf:function getPrototypeOf(t){return i(o(t))}})},{105:105,38:38,62:62}],240:[function(t,n,r){var o=t(101),u=t(105),c=t(71),e=t(62),a=t(81),f=t(38);e(e.S,"Reflect",{get:function get(t,n){var r,e,i=arguments.length<3?t:arguments[2];return f(t)===i?t[n]:(r=o.f(t,n))?c(r,"value")?r.value:void 0!==r.get?r.get.call(i):void 0:a(e=u(t))?get(e,n,i):void 0}})},{101:101,105:105,38:38,62:62,71:71,81:81}],241:[function(t,n,r){var e=t(62);e(e.S,"Reflect",{has:function has(t,n){return n in t}})},{62:62}],242:[function(t,n,r){var e=t(62),i=t(38),o=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function isExtensible(t){return i(t),!o||o(t)}})},{38:38,62:62}],243:[function(t,n,r){var e=t(62);e(e.S,"Reflect",{ownKeys:t(111)})},{111:111,62:62}],244:[function(t,n,r){var e=t(62),i=t(38),o=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function preventExtensions(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},{38:38,62:62}],245:[function(t,n,r){var e=t(62),i=t(122);i&&e(e.S,"Reflect",{setPrototypeOf:function setPrototypeOf(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},{122:122,62:62}],246:[function(t,n,r){var c=t(99),a=t(101),f=t(105),s=t(71),e=t(62),l=t(116),h=t(38),p=t(81);e(e.S,"Reflect",{set:function set(t,n,r){var e,i,o=arguments.length<4?t:arguments[3],u=a.f(h(t),n);if(!u){if(p(i=f(t)))return set(i,n,r,o);u=l(0)}if(s(u,"value")){if(!1===u.writable||!p(o))return!1;if(e=a.f(o,n)){if(e.get||e.set||!1===e.writable)return!1;e.value=r,c.f(o,n,e)}else c.f(o,n,l(0,r));return!0}return void 0!==u.set&&(u.set.call(o,r),!0)}})},{101:101,105:105,116:116,38:38,62:62,71:71,81:81,99:99}],247:[function(t,n,r){var e=t(70),o=t(75),i=t(99).f,u=t(103).f,c=t(82),a=t(66),f=e.RegExp,s=f,l=f.prototype,h=/a/g,p=/a/g,v=new f(h)!==h;if(t(58)&&(!v||t(64)(function(){return p[t(152)("match")]=!1,f(h)!=h||f(p)==p||"/a/i"!=f(h,"i")}))){f=function RegExp(t,n){var r=this instanceof f,e=c(t),i=void 0===n;return!r&&e&&t.constructor===f&&i?t:o(v?new s(e&&!i?t.source:t,n):s((e=t instanceof f)?t.source:t,e&&i?a.call(t):n),r?this:l,f)};function DW(n){n in f||i(f,n,{configurable:!0,get:function(){return s[n]},set:function(t){s[n]=t}})}for(var g=u(s),y=0;g.length>y;)DW(g[y++]);(l.constructor=f).prototype=l,t(118)(e,"RegExp",f)}t(123)("RegExp")},{103:103,118:118,123:123,152:152,58:58,64:64,66:66,70:70,75:75,82:82,99:99}],248:[function(t,n,r){"use strict";var e=t(120);t(62)({target:"RegExp",proto:!0,forced:e!==/./.exec},{exec:e})},{120:120,62:62}],249:[function(t,n,r){t(58)&&"g"!=/./g.flags&&t(99).f(RegExp.prototype,"flags",{configurable:!0,get:t(66)})},{58:58,66:66,99:99}],250:[function(t,n,r){"use strict";var l=t(38),h=t(141),p=t(36),v=t(119);t(65)("match",1,function(e,i,f,s){return[function match(t){var n=e(this),r=null==t?void 0:t[i];return void 0!==r?r.call(t,n):new RegExp(t)[i](String(n))},function(t){var n=s(f,t,this);if(n.done)return n.value;var r=l(t),e=String(this);if(!r.global)return v(r,e);for(var i,o=r.unicode,u=[],c=r.lastIndex=0;null!==(i=v(r,e));){var a=String(i[0]);""===(u[c]=a)&&(r.lastIndex=p(e,h(r.lastIndex),o)),c++}return 0===c?null:u}]})},{119:119,141:141,36:36,38:38,65:65}],251:[function(t,n,r){"use strict";var _=t(38),e=t(142),E=t(141),O=t(139),F=t(36),I=t(119),P=Math.max,A=Math.min,h=Math.floor,p=/\$([$&`']|\d\d?|<[^>]*>)/g,v=/\$([$&`']|\d\d?)/g;t(65)("replace",2,function(i,o,b,w){return[function replace(t,n){var r=i(this),e=null==t?void 0:t[o];return void 0!==e?e.call(t,r,n):b.call(String(r),t,n)},function(t,n){var r=w(b,t,this,n);if(r.done)return r.value;var e=_(t),i=String(this),o="function"==typeof n;o||(n=String(n));var u=e.global;if(u){var c=e.unicode;e.lastIndex=0}for(var a=[];;){var f=I(e,i);if(null===f)break;if(a.push(f),!u)break;""===String(f[0])&&(e.lastIndex=F(i,E(e.lastIndex),c))}for(var s,l="",h=0,p=0;p<a.length;p++){f=a[p];for(var v=String(f[0]),g=P(A(O(f.index),i.length),0),y=[],d=1;d<f.length;d++)y.push(void 0===(s=f[d])?s:String(s));var x=f.groups;if(o){var m=[v].concat(y,g,i);void 0!==x&&m.push(x);var S=String(n.apply(void 0,m))}else S=getSubstitution(v,i,g,y,x,n);h<=g&&(l+=i.slice(h,g)+S,h=g+v.length)}return l+i.slice(h)}];function getSubstitution(o,u,c,a,f,t){var s=c+o.length,l=a.length,n=v;return void 0!==f&&(f=e(f),n=p),b.call(t,n,function(t,n){var r;switch(n.charAt(0)){case"$":return"$";case"&":return o;case"`":return u.slice(0,c);case"'":return u.slice(s);case"<":r=f[n.slice(1,-1)];break;default:var e=+n;if(0==e)return t;if(l<e){var i=h(e/10);return 0===i?t:i<=l?void 0===a[i-1]?n.charAt(1):a[i-1]+n.charAt(1):t}r=a[e-1]}return void 0===r?"":r})}})},{119:119,139:139,141:141,142:142,36:36,38:38,65:65}],252:[function(t,n,r){"use strict";var a=t(38),f=t(121),s=t(119);t(65)("search",1,function(e,i,u,c){return[function search(t){var n=e(this),r=null==t?void 0:t[i];return void 0!==r?r.call(t,n):new RegExp(t)[i](String(n))},function(t){var n=c(u,t,this);if(n.done)return n.value;var r=a(t),e=String(this),i=r.lastIndex;f(i,0)||(r.lastIndex=0);var o=s(r,e);return f(r.lastIndex,i)||(r.lastIndex=i),null===o?-1:o.index}]})},{119:119,121:121,38:38,65:65}],253:[function(t,n,r){"use strict";var l=t(82),m=t(38),S=t(127),b=t(36),w=t(141),_=t(119),h=t(120),e=t(64),E=Math.min,p=[].push,u="split",v="length",g="lastIndex",O=4294967295,F=!e(function(){RegExp(O,"y")});t(65)("split",2,function(i,o,y,d){var x;return x="c"=="abbc"[u](/(b)*/)[1]||4!="test"[u](/(?:)/,-1)[v]||2!="ab"[u](/(?:ab)*/)[v]||4!="."[u](/(.?)(.?)/)[v]||1<"."[u](/()()/)[v]||""[u](/.?/)[v]?function(t,n){var r=String(this);if(void 0===t&&0===n)return[];if(!l(t))return y.call(r,t,n);for(var e,i,o,u=[],c=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),a=0,f=void 0===n?O:n>>>0,s=new RegExp(t.source,c+"g");(e=h.call(s,r))&&!(a<(i=s[g])&&(u.push(r.slice(a,e.index)),1<e[v]&&e.index<r[v]&&p.apply(u,e.slice(1)),o=e[0][v],a=i,u[v]>=f));)s[g]===e.index&&s[g]++;return a===r[v]?!o&&s.test("")||u.push(""):u.push(r.slice(a)),u[v]>f?u.slice(0,f):u}:"0"[u](void 0,0)[v]?function(t,n){return void 0===t&&0===n?[]:y.call(this,t,n)}:y,[function split(t,n){var r=i(this),e=null==t?void 0:t[o];return void 0!==e?e.call(t,r,n):x.call(String(r),t,n)},function(t,n){var r=d(x,t,this,n,x!==y);if(r.done)return r.value;var e=m(t),i=String(this),o=S(e,RegExp),u=e.unicode,c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(F?"y":"g"),a=new o(F?e:"^(?:"+e.source+")",c),f=void 0===n?O:n>>>0;if(0==f)return[];if(0===i.length)return null===_(a,i)?[i]:[];for(var s=0,l=0,h=[];l<i.length;){a.lastIndex=F?l:0;var p,v=_(a,F?i:i.slice(l));if(null===v||(p=E(w(a.lastIndex+(F?0:l)),i.length))===s)l=b(i,l,u);else{if(h.push(i.slice(s,l)),h.length===f)return h;for(var g=1;g<=v.length-1;g++)if(h.push(v[g]),h.length===f)return h;l=s=p}}return h.push(i.slice(s)),h}]})},{119:119,120:120,127:127,141:141,36:36,38:38,64:64,65:65,82:82}],254:[function(n,t,r){"use strict";n(249);function XZ(t){n(118)(RegExp.prototype,u,t,!0)}var e=n(38),i=n(66),o=n(58),u="toString",c=/./[u];n(64)(function(){return"/a/b"!=c.call({source:"a",flags:"b"})})?XZ(function toString(){var t=e(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)}):c.name!=u&&XZ(function toString(){return c.call(this)})},{118:118,249:249,38:38,58:58,64:64,66:66}],255:[function(t,n,r){"use strict";var e=t(49),i=t(149);n.exports=t(51)("Set",function(t){return function Set(){return t(this,0<arguments.length?arguments[0]:void 0)}},{add:function add(t){return e.def(i(this,"Set"),t=0===t?0:t,t)}},e)},{149:149,49:49,51:51}],256:[function(t,n,r){"use strict";t(131)("anchor",function(n){return function anchor(t){return n(this,"a","name",t)}})},{131:131}],257:[function(t,n,r){"use strict";t(131)("big",function(t){return function big(){return t(this,"big","","")}})},{131:131}],258:[function(t,n,r){"use strict";t(131)("blink",function(t){return function blink(){return t(this,"blink","","")}})},{131:131}],259:[function(t,n,r){"use strict";t(131)("bold",function(t){return function bold(){return t(this,"b","","")}})},{131:131}],260:[function(t,n,r){"use strict";var e=t(62),i=t(129)(!1);e(e.P,"String",{codePointAt:function codePointAt(t){return i(this,t)}})},{129:129,62:62}],261:[function(t,n,r){"use strict";var e=t(62),u=t(141),c=t(130),a="endsWith",f=""[a];e(e.P+e.F*t(63)(a),"String",{endsWith:function endsWith(t){var n=c(this,t,a),r=1<arguments.length?arguments[1]:void 0,e=u(n.length),i=void 0===r?e:Math.min(u(r),e),o=String(t);return f?f.call(n,o,i):n.slice(i-o.length,i)===o}})},{130:130,141:141,62:62,63:63}],262:[function(t,n,r){"use strict";t(131)("fixed",function(t){return function fixed(){return t(this,"tt","","")}})},{131:131}],263:[function(t,n,r){"use strict";t(131)("fontcolor",function(n){return function fontcolor(t){return n(this,"font","color",t)}})},{131:131}],264:[function(t,n,r){"use strict";t(131)("fontsize",function(n){return function fontsize(t){return n(this,"font","size",t)}})},{131:131}],265:[function(t,n,r){var e=t(62),o=t(137),u=String.fromCharCode,i=String.fromCodePoint;e(e.S+e.F*(!!i&&1!=i.length),"String",{fromCodePoint:function fromCodePoint(t){for(var n,r=[],e=arguments.length,i=0;i<e;){if(n=+arguments[i++],o(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(n<65536?u(n):u(55296+((n-=65536)>>10),n%1024+56320))}return r.join("")}})},{137:137,62:62}],266:[function(t,n,r){"use strict";var e=t(62),i=t(130),o="includes";e(e.P+e.F*t(63)(o),"String",{includes:function includes(t){return!!~i(this,t,o).indexOf(t,1<arguments.length?arguments[1]:void 0)}})},{130:130,62:62,63:63}],267:[function(t,n,r){"use strict";t(131)("italics",function(t){return function italics(){return t(this,"i","","")}})},{131:131}],268:[function(t,n,r){"use strict";var e=t(129)(!0);t(85)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},{129:129,85:85}],269:[function(t,n,r){"use strict";t(131)("link",function(n){return function link(t){return n(this,"a","href",t)}})},{131:131}],270:[function(t,n,r){var e=t(62),u=t(140),c=t(141);e(e.S,"String",{raw:function raw(t){for(var n=u(t.raw),r=c(n.length),e=arguments.length,i=[],o=0;o<r;)i.push(String(n[o++])),o<e&&i.push(String(arguments[o]));return i.join("")}})},{140:140,141:141,62:62}],271:[function(t,n,r){var e=t(62);e(e.P,"String",{repeat:t(133)})},{133:133,62:62}],272:[function(t,n,r){"use strict";t(131)("small",function(t){return function small(){return t(this,"small","","")}})},{131:131}],273:[function(t,n,r){"use strict";var e=t(62),i=t(141),o=t(130),u="startsWith",c=""[u];e(e.P+e.F*t(63)(u),"String",{startsWith:function startsWith(t){var n=o(this,t,u),r=i(Math.min(1<arguments.length?arguments[1]:void 0,n.length)),e=String(t);return c?c.call(n,e,r):n.slice(r,r+e.length)===e}})},{130:130,141:141,62:62,63:63}],274:[function(t,n,r){"use strict";t(131)("strike",function(t){return function strike(){return t(this,"strike","","")}})},{131:131}],275:[function(t,n,r){"use strict";t(131)("sub",function(t){return function sub(){return t(this,"sub","","")}})},{131:131}],276:[function(t,n,r){"use strict";t(131)("sup",function(t){return function sup(){return t(this,"sup","","")}})},{131:131}],277:[function(t,n,r){"use strict";t(134)("trim",function(t){return function trim(){return t(this,3)}})},{134:134}],278:[function(t,n,r){"use strict";function B1(t){var n=W[t]=E(j[L]);return n._k=t,n}function E1(t,n){x(t);for(var r,e=y(n=b(n)),i=0,o=e.length;i<o;)Q(t,r=e[i++],n[r]);return t}function G1(t){var n=D.call(this,t=w(t,!0));return!(this===B&&u(W,t)&&!u(V,t))&&(!(n||!u(this,t)||!u(W,t)||u(this,C)&&this[C][t])||n)}function H1(t,n){if(t=b(t),n=w(n,!0),t!==B||!u(W,n)||u(V,n)){var r=M(t,n);return!r||!u(W,n)||u(t,C)&&t[C][n]||(r.enumerable=!0),r}}function I1(t){for(var n,r=N(b(t)),e=[],i=0;r.length>i;)u(W,n=r[i++])||n==C||n==a||e.push(n);return e}function J1(t){for(var n,r=t===B,e=N(r?V:b(t)),i=[],o=0;e.length>o;)!u(W,n=e[o++])||r&&!u(B,n)||i.push(W[n]);return i}var e=t(70),u=t(71),i=t(58),o=t(62),c=t(118),a=t(94).KEY,f=t(64),s=t(126),l=t(124),h=t(147),p=t(152),v=t(151),g=t(150),y=t(61),d=t(79),x=t(38),m=t(81),S=t(142),b=t(140),w=t(143),_=t(116),E=t(98),O=t(102),F=t(101),I=t(104),P=t(99),A=t(107),M=F.f,k=P.f,N=O.f,j=e.Symbol,R=e.JSON,T=R&&R.stringify,L="prototype",C=p("_hidden"),G=p("toPrimitive"),D={}.propertyIsEnumerable,U=s("symbol-registry"),W=s("symbols"),V=s("op-symbols"),B=Object[L],q="function"==typeof j&&!!I.f,Y=e.QObject,z=!Y||!Y[L]||!Y[L].findChild,X=i&&f(function(){return 7!=E(k({},"a",{get:function(){return k(this,"a",{value:7}).a}})).a})?function(t,n,r){var e=M(B,n);e&&delete B[n],k(t,n,r),e&&t!==B&&k(B,n,e)}:k,$=q&&"symbol"==typeof j.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof j},Q=function defineProperty(t,n,r){return t===B&&Q(V,n,r),x(t),n=w(n,!0),x(r),u(W,n)?(r.enumerable?(u(t,C)&&t[C][n]&&(t[C][n]=!1),r=E(r,{enumerable:_(0,!1)})):(u(t,C)||k(t,C,_(1,{})),t[C][n]=!0),X(t,n,r)):k(t,n,r)};q||(c((j=function Symbol(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var n=h(0<arguments.length?arguments[0]:void 0),r=function(t){this===B&&r.call(V,t),u(this,C)&&u(this[C],n)&&(this[C][n]=!1),X(this,n,_(1,t))};return i&&z&&X(B,n,{configurable:!0,set:r}),B1(n)})[L],"toString",function toString(){return this._k}),F.f=H1,P.f=Q,t(103).f=O.f=I1,t(108).f=G1,I.f=J1,i&&!t(89)&&c(B,"propertyIsEnumerable",G1,!0),v.f=function(t){return B1(p(t))}),o(o.G+o.W+o.F*!q,{Symbol:j});for(var Z="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),J=0;Z.length>J;)p(Z[J++]);for(var H=A(p.store),K=0;H.length>K;)g(H[K++]);o(o.S+o.F*!q,"Symbol",{for:function(t){return u(U,t+="")?U[t]:U[t]=j(t)},keyFor:function keyFor(t){if(!$(t))throw TypeError(t+" is not a symbol!");for(var n in U)if(U[n]===t)return n},useSetter:function(){z=!0},useSimple:function(){z=!1}}),o(o.S+o.F*!q,"Object",{create:function create(t,n){return void 0===n?E(t):E1(E(t),n)},defineProperty:Q,defineProperties:E1,getOwnPropertyDescriptor:H1,getOwnPropertyNames:I1,getOwnPropertySymbols:J1});var tt=f(function(){I.f(1)});o(o.S+o.F*tt,"Object",{getOwnPropertySymbols:function getOwnPropertySymbols(t){return I.f(S(t))}}),R&&o(o.S+o.F*(!q||f(function(){var t=j();return"[null]"!=T([t])||"{}"!=T({a:t})||"{}"!=T(Object(t))})),"JSON",{stringify:function stringify(t){for(var n,r,e=[t],i=1;i<arguments.length;)e.push(arguments[i++]);if(r=n=e[1],(m(n)||void 0!==t)&&!$(t))return d(n)||(n=function(t,n){if("function"==typeof r&&(n=r.call(this,t,n)),!$(n))return n}),e[1]=n,T.apply(R,e)}}),j[L][G]||t(72)(j[L],G,j[L].valueOf),l(j,"Symbol"),l(Math,"Math",!0),l(e.JSON,"JSON",!0)},{101:101,102:102,103:103,104:104,107:107,108:108,116:116,118:118,124:124,126:126,140:140,142:142,143:143,147:147,150:150,151:151,152:152,38:38,58:58,61:61,62:62,64:64,70:70,71:71,72:72,79:79,81:81,89:89,94:94,98:98,99:99}],279:[function(t,n,r){"use strict";var e=t(62),i=t(146),o=t(145),f=t(38),s=t(137),l=t(141),u=t(81),c=t(70).ArrayBuffer,h=t(127),p=o.ArrayBuffer,v=o.DataView,a=i.ABV&&c.isView,g=p.prototype.slice,y=i.VIEW,d="ArrayBuffer";e(e.G+e.W+e.F*(c!==p),{ArrayBuffer:p}),e(e.S+e.F*!i.CONSTR,d,{isView:function isView(t){return a&&a(t)||u(t)&&y in t}}),e(e.P+e.U+e.F*t(64)(function(){return!new p(2).slice(1,void 0).byteLength}),d,{slice:function slice(t,n){if(void 0!==g&&void 0===n)return g.call(f(this),t);for(var r=f(this).byteLength,e=s(t,r),i=s(void 0===n?r:n,r),o=new(h(this,p))(l(i-e)),u=new v(this),c=new v(o),a=0;e<i;)c.setUint8(a++,u.getUint8(e++));return o}}),t(123)(d)},{123:123,127:127,137:137,141:141,145:145,146:146,38:38,62:62,64:64,70:70,81:81}],280:[function(t,n,r){var e=t(62);e(e.G+e.W+e.F*!t(146).ABV,{DataView:t(145).DataView})},{145:145,146:146,62:62}],281:[function(t,n,r){t(144)("Float32",4,function(e){return function Float32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],282:[function(t,n,r){t(144)("Float64",8,function(e){return function Float64Array(t,n,r){return e(this,t,n,r)}})},{144:144}],283:[function(t,n,r){t(144)("Int16",2,function(e){return function Int16Array(t,n,r){return e(this,t,n,r)}})},{144:144}],284:[function(t,n,r){t(144)("Int32",4,function(e){return function Int32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],285:[function(t,n,r){t(144)("Int8",1,function(e){return function Int8Array(t,n,r){return e(this,t,n,r)}})},{144:144}],286:[function(t,n,r){t(144)("Uint16",2,function(e){return function Uint16Array(t,n,r){return e(this,t,n,r)}})},{144:144}],287:[function(t,n,r){t(144)("Uint32",4,function(e){return function Uint32Array(t,n,r){return e(this,t,n,r)}})},{144:144}],288:[function(t,n,r){t(144)("Uint8",1,function(e){return function Uint8Array(t,n,r){return e(this,t,n,r)}})},{144:144}],289:[function(t,n,r){t(144)("Uint8",1,function(e){return function Uint8ClampedArray(t,n,r){return e(this,t,n,r)}},!0)},{144:144}],290:[function(t,n,r){"use strict";function R4(t){return function WeakMap(){return t(this,0<arguments.length?arguments[0]:void 0)}}var o,e=t(70),i=t(42)(0),u=t(118),c=t(94),a=t(97),f=t(50),s=t(81),l=t(149),h=t(149),p=!e.ActiveXObject&&"ActiveXObject"in e,v="WeakMap",g=c.getWeak,y=Object.isExtensible,d=f.ufstore,x={get:function get(t){if(s(t)){var n=g(t);return!0===n?d(l(this,v)).get(t):n?n[this._i]:void 0}},set:function set(t,n){return f.def(l(this,v),t,n)}},m=n.exports=t(51)(v,R4,x,f,!0,!0);h&&p&&(a((o=f.getConstructor(R4,v)).prototype,x),c.NEED=!0,i(["delete","has","get","set"],function(e){var t=m.prototype,i=t[e];u(t,e,function(t,n){if(!s(t)||y(t))return i.call(this,t,n);this._f||(this._f=new o);var r=this._f[e](t,n);return"set"==e?this:r})}))},{118:118,149:149,42:42,50:50,51:51,70:70,81:81,94:94,97:97}],291:[function(t,n,r){"use strict";var e=t(50),i=t(149),o="WeakSet";t(51)(o,function(t){return function WeakSet(){return t(this,0<arguments.length?arguments[0]:void 0)}},{add:function add(t){return e.def(i(this,o),t,!0)}},e,!1,!0)},{149:149,50:50,51:51}],292:[function(t,n,r){"use strict";var e=t(62),i=t(67),o=t(142),u=t(141),c=t(33),a=t(45);e(e.P,"Array",{flatMap:function flatMap(t){var n,r,e=o(this);return c(t),n=u(e.length),r=a(e,0),i(r,e,e,n,0,1,t,arguments[1]),r}}),t(35)("flatMap")},{141:141,142:142,33:33,35:35,45:45,62:62,67:67}],293:[function(t,n,r){"use strict";var e=t(62),i=t(41)(!0);e(e.P,"Array",{includes:function includes(t){return i(this,t,1<arguments.length?arguments[1]:void 0)}}),t(35)("includes")},{35:35,41:41,62:62}],294:[function(t,n,r){var e=t(62),i=t(110)(!0);e(e.S,"Object",{entries:function entries(t){return i(t)}})},{110:110,62:62}],295:[function(t,n,r){var e=t(62),a=t(111),f=t(140),s=t(101),l=t(53);e(e.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(t){for(var n,r,e=f(t),i=s.f,o=a(e),u={},c=0;o.length>c;)void 0!==(r=i(e,n=o[c++]))&&l(u,n,r);return u}})},{101:101,111:111,140:140,53:53,62:62}],296:[function(t,n,r){var e=t(62),i=t(110)(!1);e(e.S,"Object",{values:function values(t){return i(t)}})},{110:110,62:62}],297:[function(t,n,r){"use strict";var e=t(62),i=t(52),o=t(70),u=t(127),c=t(115);e(e.P+e.R,"Promise",{finally:function(n){var r=u(this,i.Promise||o.Promise),t="function"==typeof n;return this.then(t?function(t){return c(r,n()).then(function(){return t})}:n,t?function(t){return c(r,n()).then(function(){throw t})}:n)}})},{115:115,127:127,52:52,62:62,70:70}],298:[function(t,n,r){"use strict";var e=t(62),i=t(132),o=t(148),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padEnd:function padEnd(t){return i(this,t,1<arguments.length?arguments[1]:void 0,!1)}})},{132:132,148:148,62:62}],299:[function(t,n,r){"use strict";var e=t(62),i=t(132),o=t(148),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padStart:function padStart(t){return i(this,t,1<arguments.length?arguments[1]:void 0,!0)}})},{132:132,148:148,62:62}],300:[function(t,n,r){"use strict";t(134)("trimLeft",function(t){return function trimLeft(){return t(this,1)}},"trimStart")},{134:134}],301:[function(t,n,r){"use strict";t(134)("trimRight",function(t){return function trimRight(){return t(this,2)}},"trimEnd")},{134:134}],302:[function(t,n,r){t(150)("asyncIterator")},{150:150}],303:[function(t,n,r){for(var e=t(164),i=t(107),o=t(118),u=t(70),c=t(72),a=t(88),f=t(152),s=f("iterator"),l=f("toStringTag"),h=a.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(p),g=0;g<v.length;g++){var y,d=v[g],x=p[d],m=u[d],S=m&&m.prototype;if(S&&(S[s]||c(S,s,h),S[l]||c(S,l,d),a[d]=h,x))for(y in e)S[y]||o(S,y,e[y],!0)}},{107:107,118:118,152:152,164:164,70:70,72:72,88:88}],304:[function(t,n,r){var e=t(62),i=t(136);e(e.G+e.B,{setImmediate:i.set,clearImmediate:i.clear})},{136:136,62:62}],305:[function(t,n,r){function y7(i){return function(t,n){var r=2<arguments.length,e=r&&u.call(arguments,2);return i(r?function(){("function"==typeof t?t:Function(t)).apply(this,e)}:t,n)}}var e=t(70),i=t(62),o=t(148),u=[].slice,c=/MSIE .\./.test(o);i(i.G+i.B+i.F*c,{setTimeout:y7(e.setTimeout),setInterval:y7(e.setInterval)})},{148:148,62:62,70:70}],306:[function(t,n,r){t(305),t(304),t(303),n.exports=t(52)},{303:303,304:304,305:305,52:52}],307:[function(t,n,r){var e=function(o){"use strict";var c,t=Object.prototype,a=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",r=n.asyncIterator||"@@asyncIterator",e=n.toStringTag||"@@toStringTag";function wrap(t,n,r,e){var i=n&&n.prototype instanceof Generator?n:Generator,o=Object.create(i.prototype),u=new Context(e||[]);return o._invoke=function makeInvokeMethod(o,u,c){var a=f;return function invoke(t,n){if(a===l)throw new Error("Generator is already running");if(a===h){if("throw"===t)throw n;return doneResult()}for(c.method=t,c.arg=n;;){var r=c.delegate;if(r){var e=maybeInvokeDelegate(r,c);if(e){if(e===p)continue;return e}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if(a===f)throw a=h,c.arg;c.dispatchException(c.arg)}else"return"===c.method&&c.abrupt("return",c.arg);a=l;var i=tryCatch(o,u,c);if("normal"===i.type){if(a=c.done?h:s,i.arg===p)continue;return{value:i.arg,done:c.done}}"throw"===i.type&&(a=h,c.method="throw",c.arg=i.arg)}}}(t,r,u),o}function tryCatch(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(t){return{type:"throw",arg:t}}}o.wrap=wrap;var f="suspendedStart",s="suspendedYield",l="executing",h="completed",p={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var u={};u[i]=function(){return this};var v=Object.getPrototypeOf,g=v&&v(v(values([])));g&&g!==t&&a.call(g,i)&&(u=g);var y=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function defineIteratorMethods(t){["next","throw","return"].forEach(function(n){t[n]=function(t){return this._invoke(n,t)}})}function AsyncIterator(c){var t;this._invoke=function enqueue(r,e){function callInvokeWithMethodAndArg(){return new Promise(function(t,n){!function invoke(t,n,r,e){var i=tryCatch(c[t],c,n);if("throw"!==i.type){var o=i.arg,u=o.value;return u&&"object"==typeof u&&a.call(u,"__await")?Promise.resolve(u.__await).then(function(t){invoke("next",t,r,e)},function(t){invoke("throw",t,r,e)}):Promise.resolve(u).then(function(t){o.value=t,r(o)},function(t){return invoke("throw",t,r,e)})}e(i.arg)}(r,e,t,n)})}return t=t?t.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}}function maybeInvokeDelegate(t,n){var r=t.iterator[n.method];if(r===c){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=c,maybeInvokeDelegate(t,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var e=tryCatch(r,t.iterator,n.arg);if("throw"===e.type)return n.method="throw",n.arg=e.arg,n.delegate=null,p;var i=e.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=c),n.delegate=null,p):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function pushTryEntry(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function resetTryEntry(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,e=function next(){for(;++r<t.length;)if(a.call(t,r))return next.value=t[r],next.done=!1,next;return next.value=c,next.done=!0,next};return e.next=e}}return{next:doneResult}}function doneResult(){return{value:c,done:!0}}return GeneratorFunction.prototype=y.constructor=GeneratorFunctionPrototype,GeneratorFunctionPrototype.constructor=GeneratorFunction,GeneratorFunctionPrototype[e]=GeneratorFunction.displayName="GeneratorFunction",o.isGeneratorFunction=function(t){var n="function"==typeof t&&t.constructor;return!!n&&(n===GeneratorFunction||"GeneratorFunction"===(n.displayName||n.name))},o.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,e in t||(t[e]="GeneratorFunction")),t.prototype=Object.create(y),t},o.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),AsyncIterator.prototype[r]=function(){return this},o.AsyncIterator=AsyncIterator,o.async=function(t,n,r,e){var i=new AsyncIterator(wrap(t,n,r,e));return o.isGeneratorFunction(n)?i:i.next().then(function(t){return t.done?t.value:i.next()})},defineIteratorMethods(y),y[e]="Generator",y[i]=function(){return this},y.toString=function(){return"[object Generator]"},o.keys=function(n){var r=[];for(var t in n)r.push(t);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in n)return next.value=t,next.done=!1,next}return next.done=!0,next}},o.values=values,Context.prototype={constructor:Context,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=c,this.done=!1,this.delegate=null,this.method="next",this.arg=c,this.tryEntries.forEach(resetTryEntry),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=c)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var e=this;function handle(t,n){return i.type="throw",i.arg=r,e.next=t,n&&(e.method="next",e.arg=c),!!n}for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t],i=n.completion;if("root"===n.tryLoc)return handle("end");if(n.tryLoc<=this.prev){var o=a.call(n,"catchLoc"),u=a.call(n,"finallyLoc");if(o&&u){if(this.prev<n.catchLoc)return handle(n.catchLoc,!0);if(this.prev<n.finallyLoc)return handle(n.finallyLoc)}else if(o){if(this.prev<n.catchLoc)return handle(n.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<n.finallyLoc)return handle(n.finallyLoc)}}}},abrupt:function(t,n){for(var r=this.tryEntries.length-1;0<=r;--r){var e=this.tryEntries[r];if(e.tryLoc<=this.prev&&a.call(e,"finallyLoc")&&this.prev<e.finallyLoc){var i=e;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=n&&n<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=t,o.arg=n,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(o)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),p},finish:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),p}},catch:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var i=e.arg;resetTryEntry(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:values(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=c),p}},o}("object"==typeof n?n.exports:{});try{regeneratorRuntime=e}catch(t){Function("r","regeneratorRuntime = r")(e)}},{}]},{},[1]); diff --git a/src/main/webapp/static/js/paella/player/javascript/require.js b/src/main/webapp/static/js/paella/player/javascript/require.js new file mode 100644 index 0000000000000000000000000000000000000000..78490f91d525e640d0b49deda7174e55f103ef02 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/require.js @@ -0,0 +1,2145 @@ +/** vim: et:ts=4:sw=4:sts=4 + * @license RequireJS 2.3.6 Copyright jQuery Foundation and other contributors. + * Released under MIT license, https://github.com/requirejs/requirejs/blob/master/LICENSE + */ +//Not using strict: uneven strict support in browsers, #392, and causes +//problems with requirejs.exec()/transpiler plugins that may not be strict. +/*jslint regexp: true, nomen: true, sloppy: true */ +/*global window, navigator, document, importScripts, setTimeout, opera */ + +var requirejs, require, define; +(function (global, setTimeout) { + var req, s, head, baseElement, dataMain, src, + interactiveScript, currentlyAddingScript, mainScript, subPath, + version = '2.3.6', + commentRegExp = /\/\*[\s\S]*?\*\/|([^:"'=]|^)\/\/.*$/mg, + cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g, + jsSuffixRegExp = /\.js$/, + currDirRegExp = /^\.\//, + op = Object.prototype, + ostring = op.toString, + hasOwn = op.hasOwnProperty, + isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document), + isWebWorker = !isBrowser && typeof importScripts !== 'undefined', + //PS3 indicates loaded and complete, but need to wait for complete + //specifically. Sequence is 'loading', 'loaded', execution, + // then 'complete'. The UA check is unfortunate, but not sure how + //to feature test w/o causing perf issues. + readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? + /^complete$/ : /^(complete|loaded)$/, + defContextName = '_', + //Oh the tragedy, detecting opera. See the usage of isOpera for reason. + isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]', + contexts = {}, + cfg = {}, + globalDefQueue = [], + useInteractive = false; + + //Could match something like ')//comment', do not lose the prefix to comment. + function commentReplace(match, singlePrefix) { + return singlePrefix || ''; + } + + function isFunction(it) { + return ostring.call(it) === '[object Function]'; + } + + function isArray(it) { + return ostring.call(it) === '[object Array]'; + } + + /** + * Helper function for iterating over an array. If the func returns + * a true value, it will break out of the loop. + */ + function each(ary, func) { + if (ary) { + var i; + for (i = 0; i < ary.length; i += 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + /** + * Helper function for iterating over an array backwards. If the func + * returns a true value, it will break out of the loop. + */ + function eachReverse(ary, func) { + if (ary) { + var i; + for (i = ary.length - 1; i > -1; i -= 1) { + if (ary[i] && func(ary[i], i, ary)) { + break; + } + } + } + } + + function hasProp(obj, prop) { + return hasOwn.call(obj, prop); + } + + function getOwn(obj, prop) { + return hasProp(obj, prop) && obj[prop]; + } + + /** + * Cycles over properties in an object and calls a function for each + * property value. If the function returns a truthy value, then the + * iteration is stopped. + */ + function eachProp(obj, func) { + var prop; + for (prop in obj) { + if (hasProp(obj, prop)) { + if (func(obj[prop], prop)) { + break; + } + } + } + } + + /** + * Simple function to mix in properties from source into target, + * but only if target does not already have a property of the same name. + */ + function mixin(target, source, force, deepStringMixin) { + if (source) { + eachProp(source, function (value, prop) { + if (force || !hasProp(target, prop)) { + if (deepStringMixin && typeof value === 'object' && value && + !isArray(value) && !isFunction(value) && + !(value instanceof RegExp)) { + + if (!target[prop]) { + target[prop] = {}; + } + mixin(target[prop], value, force, deepStringMixin); + } else { + target[prop] = value; + } + } + }); + } + return target; + } + + //Similar to Function.prototype.bind, but the 'this' object is specified + //first, since it is easier to read/figure out what 'this' will be. + function bind(obj, fn) { + return function () { + return fn.apply(obj, arguments); + }; + } + + function scripts() { + return document.getElementsByTagName('script'); + } + + function defaultOnError(err) { + throw err; + } + + //Allow getting a global that is expressed in + //dot notation, like 'a.b.c'. + function getGlobal(value) { + if (!value) { + return value; + } + var g = global; + each(value.split('.'), function (part) { + g = g[part]; + }); + return g; + } + + /** + * Constructs an error with a pointer to an URL with more information. + * @param {String} id the error ID that maps to an ID on a web page. + * @param {String} message human readable error. + * @param {Error} [err] the original error, if there is one. + * + * @returns {Error} + */ + function makeError(id, msg, err, requireModules) { + var e = new Error(msg + '\nhttps://requirejs.org/docs/errors.html#' + id); + e.requireType = id; + e.requireModules = requireModules; + if (err) { + e.originalError = err; + } + return e; + } + + if (typeof define !== 'undefined') { + //If a define is already in play via another AMD loader, + //do not overwrite. + return; + } + + if (typeof requirejs !== 'undefined') { + if (isFunction(requirejs)) { + //Do not overwrite an existing requirejs instance. + return; + } + cfg = requirejs; + requirejs = undefined; + } + + //Allow for a require config object + if (typeof require !== 'undefined' && !isFunction(require)) { + //assume it is a config object. + cfg = require; + require = undefined; + } + + function newContext(contextName) { + var inCheckLoaded, Module, context, handlers, + checkLoadedTimeoutId, + config = { + //Defaults. Do not set a default for map + //config to speed up normalize(), which + //will run faster if there is no default. + waitSeconds: 7, + baseUrl: './', + paths: {}, + bundles: {}, + pkgs: {}, + shim: {}, + config: {} + }, + registry = {}, + //registry of just enabled modules, to speed + //cycle breaking code when lots of modules + //are registered, but not activated. + enabledRegistry = {}, + undefEvents = {}, + defQueue = [], + defined = {}, + urlFetched = {}, + bundlesMap = {}, + requireCounter = 1, + unnormalizedCounter = 1; + + /** + * Trims the . and .. from an array of path segments. + * It will keep a leading path segment if a .. will become + * the first path segment, to help with module name lookups, + * which act like paths, but can be remapped. But the end result, + * all paths that use this function should look normalized. + * NOTE: this method MODIFIES the input array. + * @param {Array} ary the array of path segments. + */ + function trimDots(ary) { + var i, part; + for (i = 0; i < ary.length; i++) { + part = ary[i]; + if (part === '.') { + ary.splice(i, 1); + i -= 1; + } else if (part === '..') { + // If at the start, or previous value is still .., + // keep them so that when converted to a path it may + // still work when converted to a path, even though + // as an ID it is less than ideal. In larger point + // releases, may be better to just kick out an error. + if (i === 0 || (i === 1 && ary[2] === '..') || ary[i - 1] === '..') { + continue; + } else if (i > 0) { + ary.splice(i - 1, 2); + i -= 2; + } + } + } + } + + /** + * Given a relative module name, like ./something, normalize it to + * a real name that can be mapped to a path. + * @param {String} name the relative name + * @param {String} baseName a real name that the name arg is relative + * to. + * @param {Boolean} applyMap apply the map config to the value. Should + * only be done if this normalization is for a dependency ID. + * @returns {String} normalized name + */ + function normalize(name, baseName, applyMap) { + var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex, + foundMap, foundI, foundStarMap, starI, normalizedBaseParts, + baseParts = (baseName && baseName.split('/')), + map = config.map, + starMap = map && map['*']; + + //Adjust any relative paths. + if (name) { + name = name.split('/'); + lastIndex = name.length - 1; + + // If wanting node ID compatibility, strip .js from end + // of IDs. Have to do this here, and not in nameToUrl + // because node allows either .js or non .js to map + // to same file. + if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { + name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); + } + + // Starts with a '.' so need the baseName + if (name[0].charAt(0) === '.' && baseParts) { + //Convert baseName to array, and lop off the last part, + //so that . matches that 'directory' and not name of the baseName's + //module. For instance, baseName of 'one/two/three', maps to + //'one/two/three.js', but we want the directory, 'one/two' for + //this normalization. + normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); + name = normalizedBaseParts.concat(name); + } + + trimDots(name); + name = name.join('/'); + } + + //Apply map config if available. + if (applyMap && map && (baseParts || starMap)) { + nameParts = name.split('/'); + + outerLoop: for (i = nameParts.length; i > 0; i -= 1) { + nameSegment = nameParts.slice(0, i).join('/'); + + if (baseParts) { + //Find the longest baseName segment match in the config. + //So, do joins on the biggest to smallest lengths of baseParts. + for (j = baseParts.length; j > 0; j -= 1) { + mapValue = getOwn(map, baseParts.slice(0, j).join('/')); + + //baseName segment has config, find if it has one for + //this name. + if (mapValue) { + mapValue = getOwn(mapValue, nameSegment); + if (mapValue) { + //Match, update name to the new value. + foundMap = mapValue; + foundI = i; + break outerLoop; + } + } + } + } + + //Check for a star map match, but just hold on to it, + //if there is a shorter segment match later in a matching + //config, then favor over this star map. + if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) { + foundStarMap = getOwn(starMap, nameSegment); + starI = i; + } + } + + if (!foundMap && foundStarMap) { + foundMap = foundStarMap; + foundI = starI; + } + + if (foundMap) { + nameParts.splice(0, foundI, foundMap); + name = nameParts.join('/'); + } + } + + // If the name points to a package's name, use + // the package main instead. + pkgMain = getOwn(config.pkgs, name); + + return pkgMain ? pkgMain : name; + } + + function removeScript(name) { + if (isBrowser) { + each(scripts(), function (scriptNode) { + if (scriptNode.getAttribute('data-requiremodule') === name && + scriptNode.getAttribute('data-requirecontext') === context.contextName) { + scriptNode.parentNode.removeChild(scriptNode); + return true; + } + }); + } + } + + function hasPathFallback(id) { + var pathConfig = getOwn(config.paths, id); + if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) { + //Pop off the first array value, since it failed, and + //retry + pathConfig.shift(); + context.require.undef(id); + + //Custom require that does not do map translation, since + //ID is "absolute", already mapped/resolved. + context.makeRequire(null, { + skipMap: true + })([id]); + + return true; + } + } + + //Turns a plugin!resource to [plugin, resource] + //with the plugin being undefined if the name + //did not have a plugin prefix. + function splitPrefix(name) { + var prefix, + index = name ? name.indexOf('!') : -1; + if (index > -1) { + prefix = name.substring(0, index); + name = name.substring(index + 1, name.length); + } + return [prefix, name]; + } + + /** + * Creates a module mapping that includes plugin prefix, module + * name, and path. If parentModuleMap is provided it will + * also normalize the name via require.normalize() + * + * @param {String} name the module name + * @param {String} [parentModuleMap] parent module map + * for the module name, used to resolve relative names. + * @param {Boolean} isNormalized: is the ID already normalized. + * This is true if this call is done for a define() module ID. + * @param {Boolean} applyMap: apply the map config to the ID. + * Should only be true if this map is for a dependency. + * + * @returns {Object} + */ + function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) { + var url, pluginModule, suffix, nameParts, + prefix = null, + parentName = parentModuleMap ? parentModuleMap.name : null, + originalName = name, + isDefine = true, + normalizedName = ''; + + //If no name, then it means it is a require call, generate an + //internal name. + if (!name) { + isDefine = false; + name = '_@r' + (requireCounter += 1); + } + + nameParts = splitPrefix(name); + prefix = nameParts[0]; + name = nameParts[1]; + + if (prefix) { + prefix = normalize(prefix, parentName, applyMap); + pluginModule = getOwn(defined, prefix); + } + + //Account for relative paths if there is a base name. + if (name) { + if (prefix) { + if (isNormalized) { + normalizedName = name; + } else if (pluginModule && pluginModule.normalize) { + //Plugin is loaded, use its normalize method. + normalizedName = pluginModule.normalize(name, function (name) { + return normalize(name, parentName, applyMap); + }); + } else { + // If nested plugin references, then do not try to + // normalize, as it will not normalize correctly. This + // places a restriction on resourceIds, and the longer + // term solution is not to normalize until plugins are + // loaded and all normalizations to allow for async + // loading of a loader plugin. But for now, fixes the + // common uses. Details in #1131 + normalizedName = name.indexOf('!') === -1 ? + normalize(name, parentName, applyMap) : + name; + } + } else { + //A regular module. + normalizedName = normalize(name, parentName, applyMap); + + //Normalized name may be a plugin ID due to map config + //application in normalize. The map config values must + //already be normalized, so do not need to redo that part. + nameParts = splitPrefix(normalizedName); + prefix = nameParts[0]; + normalizedName = nameParts[1]; + isNormalized = true; + + url = context.nameToUrl(normalizedName); + } + } + + //If the id is a plugin id that cannot be determined if it needs + //normalization, stamp it with a unique ID so two matching relative + //ids that may conflict can be separate. + suffix = prefix && !pluginModule && !isNormalized ? + '_unnormalized' + (unnormalizedCounter += 1) : + ''; + + return { + prefix: prefix, + name: normalizedName, + parentMap: parentModuleMap, + unnormalized: !!suffix, + url: url, + originalName: originalName, + isDefine: isDefine, + id: (prefix ? + prefix + '!' + normalizedName : + normalizedName) + suffix + }; + } + + function getModule(depMap) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (!mod) { + mod = registry[id] = new context.Module(depMap); + } + + return mod; + } + + function on(depMap, name, fn) { + var id = depMap.id, + mod = getOwn(registry, id); + + if (hasProp(defined, id) && + (!mod || mod.defineEmitComplete)) { + if (name === 'defined') { + fn(defined[id]); + } + } else { + mod = getModule(depMap); + if (mod.error && name === 'error') { + fn(mod.error); + } else { + mod.on(name, fn); + } + } + } + + function onError(err, errback) { + var ids = err.requireModules, + notified = false; + + if (errback) { + errback(err); + } else { + each(ids, function (id) { + var mod = getOwn(registry, id); + if (mod) { + //Set error on module, so it skips timeout checks. + mod.error = err; + if (mod.events.error) { + notified = true; + mod.emit('error', err); + } + } + }); + + if (!notified) { + req.onError(err); + } + } + } + + /** + * Internal method to transfer globalQueue items to this context's + * defQueue. + */ + function takeGlobalQueue() { + //Push all the globalDefQueue items into the context's defQueue + if (globalDefQueue.length) { + each(globalDefQueue, function(queueItem) { + var id = queueItem[0]; + if (typeof id === 'string') { + context.defQueueMap[id] = true; + } + defQueue.push(queueItem); + }); + globalDefQueue = []; + } + } + + handlers = { + 'require': function (mod) { + if (mod.require) { + return mod.require; + } else { + return (mod.require = context.makeRequire(mod.map)); + } + }, + 'exports': function (mod) { + mod.usingExports = true; + if (mod.map.isDefine) { + if (mod.exports) { + return (defined[mod.map.id] = mod.exports); + } else { + return (mod.exports = defined[mod.map.id] = {}); + } + } + }, + 'module': function (mod) { + if (mod.module) { + return mod.module; + } else { + return (mod.module = { + id: mod.map.id, + uri: mod.map.url, + config: function () { + return getOwn(config.config, mod.map.id) || {}; + }, + exports: mod.exports || (mod.exports = {}) + }); + } + } + }; + + function cleanRegistry(id) { + //Clean up machinery used for waiting modules. + delete registry[id]; + delete enabledRegistry[id]; + } + + function breakCycle(mod, traced, processed) { + var id = mod.map.id; + + if (mod.error) { + mod.emit('error', mod.error); + } else { + traced[id] = true; + each(mod.depMaps, function (depMap, i) { + var depId = depMap.id, + dep = getOwn(registry, depId); + + //Only force things that have not completed + //being defined, so still in the registry, + //and only if it has not been matched up + //in the module already. + if (dep && !mod.depMatched[i] && !processed[depId]) { + if (getOwn(traced, depId)) { + mod.defineDep(i, defined[depId]); + mod.check(); //pass false? + } else { + breakCycle(dep, traced, processed); + } + } + }); + processed[id] = true; + } + } + + function checkLoaded() { + var err, usingPathFallback, + waitInterval = config.waitSeconds * 1000, + //It is possible to disable the wait interval by using waitSeconds of 0. + expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), + noLoads = [], + reqCalls = [], + stillLoading = false, + needCycleCheck = true; + + //Do not bother if this call was a result of a cycle break. + if (inCheckLoaded) { + return; + } + + inCheckLoaded = true; + + //Figure out the state of all the modules. + eachProp(enabledRegistry, function (mod) { + var map = mod.map, + modId = map.id; + + //Skip things that are not enabled or in error state. + if (!mod.enabled) { + return; + } + + if (!map.isDefine) { + reqCalls.push(mod); + } + + if (!mod.error) { + //If the module should be executed, and it has not + //been inited and time is up, remember it. + if (!mod.inited && expired) { + if (hasPathFallback(modId)) { + usingPathFallback = true; + stillLoading = true; + } else { + noLoads.push(modId); + removeScript(modId); + } + } else if (!mod.inited && mod.fetched && map.isDefine) { + stillLoading = true; + if (!map.prefix) { + //No reason to keep looking for unfinished + //loading. If the only stillLoading is a + //plugin resource though, keep going, + //because it may be that a plugin resource + //is waiting on a non-plugin cycle. + return (needCycleCheck = false); + } + } + } + }); + + if (expired && noLoads.length) { + //If wait time expired, throw error of unloaded modules. + err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads); + err.contextName = context.contextName; + return onError(err); + } + + //Not expired, check for a cycle. + if (needCycleCheck) { + each(reqCalls, function (mod) { + breakCycle(mod, {}, {}); + }); + } + + //If still waiting on loads, and the waiting load is something + //other than a plugin resource, or there are still outstanding + //scripts, then just try back later. + if ((!expired || usingPathFallback) && stillLoading) { + //Something is still waiting to load. Wait for it, but only + //if a timeout is not already in effect. + if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) { + checkLoadedTimeoutId = setTimeout(function () { + checkLoadedTimeoutId = 0; + checkLoaded(); + }, 50); + } + } + + inCheckLoaded = false; + } + + Module = function (map) { + this.events = getOwn(undefEvents, map.id) || {}; + this.map = map; + this.shim = getOwn(config.shim, map.id); + this.depExports = []; + this.depMaps = []; + this.depMatched = []; + this.pluginMaps = {}; + this.depCount = 0; + + /* this.exports this.factory + this.depMaps = [], + this.enabled, this.fetched + */ + }; + + Module.prototype = { + init: function (depMaps, factory, errback, options) { + options = options || {}; + + //Do not do more inits if already done. Can happen if there + //are multiple define calls for the same module. That is not + //a normal, common case, but it is also not unexpected. + if (this.inited) { + return; + } + + this.factory = factory; + + if (errback) { + //Register for errors on this module. + this.on('error', errback); + } else if (this.events.error) { + //If no errback already, but there are error listeners + //on this module, set up an errback to pass to the deps. + errback = bind(this, function (err) { + this.emit('error', err); + }); + } + + //Do a copy of the dependency array, so that + //source inputs are not modified. For example + //"shim" deps are passed in here directly, and + //doing a direct modification of the depMaps array + //would affect that config. + this.depMaps = depMaps && depMaps.slice(0); + + this.errback = errback; + + //Indicate this module has be initialized + this.inited = true; + + this.ignore = options.ignore; + + //Could have option to init this module in enabled mode, + //or could have been previously marked as enabled. However, + //the dependencies are not known until init is called. So + //if enabled previously, now trigger dependencies as enabled. + if (options.enabled || this.enabled) { + //Enable this module and dependencies. + //Will call this.check() + this.enable(); + } else { + this.check(); + } + }, + + defineDep: function (i, depExports) { + //Because of cycles, defined callback for a given + //export can be called more than once. + if (!this.depMatched[i]) { + this.depMatched[i] = true; + this.depCount -= 1; + this.depExports[i] = depExports; + } + }, + + fetch: function () { + if (this.fetched) { + return; + } + this.fetched = true; + + context.startTime = (new Date()).getTime(); + + var map = this.map; + + //If the manager is for a plugin managed resource, + //ask the plugin to load it now. + if (this.shim) { + context.makeRequire(this.map, { + enableBuildCallback: true + })(this.shim.deps || [], bind(this, function () { + return map.prefix ? this.callPlugin() : this.load(); + })); + } else { + //Regular dependency. + return map.prefix ? this.callPlugin() : this.load(); + } + }, + + load: function () { + var url = this.map.url; + + //Regular dependency. + if (!urlFetched[url]) { + urlFetched[url] = true; + context.load(this.map.id, url); + } + }, + + /** + * Checks if the module is ready to define itself, and if so, + * define it. + */ + check: function () { + if (!this.enabled || this.enabling) { + return; + } + + var err, cjsModule, + id = this.map.id, + depExports = this.depExports, + exports = this.exports, + factory = this.factory; + + if (!this.inited) { + // Only fetch if not already in the defQueue. + if (!hasProp(context.defQueueMap, id)) { + this.fetch(); + } + } else if (this.error) { + this.emit('error', this.error); + } else if (!this.defining) { + //The factory could trigger another require call + //that would result in checking this module to + //define itself again. If already in the process + //of doing that, skip this work. + this.defining = true; + + if (this.depCount < 1 && !this.defined) { + if (isFunction(factory)) { + //If there is an error listener, favor passing + //to that instead of throwing an error. However, + //only do it for define()'d modules. require + //errbacks should not be called for failures in + //their callbacks (#699). However if a global + //onError is set, use that. + if ((this.events.error && this.map.isDefine) || + req.onError !== defaultOnError) { + try { + exports = context.execCb(id, factory, depExports, exports); + } catch (e) { + err = e; + } + } else { + exports = context.execCb(id, factory, depExports, exports); + } + + // Favor return value over exports. If node/cjs in play, + // then will not have a return value anyway. Favor + // module.exports assignment over exports object. + if (this.map.isDefine && exports === undefined) { + cjsModule = this.module; + if (cjsModule) { + exports = cjsModule.exports; + } else if (this.usingExports) { + //exports already set the defined value. + exports = this.exports; + } + } + + if (err) { + err.requireMap = this.map; + err.requireModules = this.map.isDefine ? [this.map.id] : null; + err.requireType = this.map.isDefine ? 'define' : 'require'; + return onError((this.error = err)); + } + + } else { + //Just a literal value + exports = factory; + } + + this.exports = exports; + + if (this.map.isDefine && !this.ignore) { + defined[id] = exports; + + if (req.onResourceLoad) { + var resLoadMaps = []; + each(this.depMaps, function (depMap) { + resLoadMaps.push(depMap.normalizedMap || depMap); + }); + req.onResourceLoad(context, this.map, resLoadMaps); + } + } + + //Clean up + cleanRegistry(id); + + this.defined = true; + } + + //Finished the define stage. Allow calling check again + //to allow define notifications below in the case of a + //cycle. + this.defining = false; + + if (this.defined && !this.defineEmitted) { + this.defineEmitted = true; + this.emit('defined', this.exports); + this.defineEmitComplete = true; + } + + } + }, + + callPlugin: function () { + var map = this.map, + id = map.id, + //Map already normalized the prefix. + pluginMap = makeModuleMap(map.prefix); + + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(pluginMap); + + on(pluginMap, 'defined', bind(this, function (plugin) { + var load, normalizedMap, normalizedMod, + bundleId = getOwn(bundlesMap, this.map.id), + name = this.map.name, + parentName = this.map.parentMap ? this.map.parentMap.name : null, + localRequire = context.makeRequire(map.parentMap, { + enableBuildCallback: true + }); + + //If current map is not normalized, wait for that + //normalized name to load instead of continuing. + if (this.map.unnormalized) { + //Normalize the ID if the plugin allows it. + if (plugin.normalize) { + name = plugin.normalize(name, function (name) { + return normalize(name, parentName, true); + }) || ''; + } + + //prefix and name should already be normalized, no need + //for applying map config again either. + normalizedMap = makeModuleMap(map.prefix + '!' + name, + this.map.parentMap, + true); + on(normalizedMap, + 'defined', bind(this, function (value) { + this.map.normalizedMap = normalizedMap; + this.init([], function () { return value; }, null, { + enabled: true, + ignore: true + }); + })); + + normalizedMod = getOwn(registry, normalizedMap.id); + if (normalizedMod) { + //Mark this as a dependency for this plugin, so it + //can be traced for cycles. + this.depMaps.push(normalizedMap); + + if (this.events.error) { + normalizedMod.on('error', bind(this, function (err) { + this.emit('error', err); + })); + } + normalizedMod.enable(); + } + + return; + } + + //If a paths config, then just load that file instead to + //resolve the plugin, as it is built into that paths layer. + if (bundleId) { + this.map.url = context.nameToUrl(bundleId); + this.load(); + return; + } + + load = bind(this, function (value) { + this.init([], function () { return value; }, null, { + enabled: true + }); + }); + + load.error = bind(this, function (err) { + this.inited = true; + this.error = err; + err.requireModules = [id]; + + //Remove temp unnormalized modules for this module, + //since they will never be resolved otherwise now. + eachProp(registry, function (mod) { + if (mod.map.id.indexOf(id + '_unnormalized') === 0) { + cleanRegistry(mod.map.id); + } + }); + + onError(err); + }); + + //Allow plugins to load other code without having to know the + //context or how to 'complete' the load. + load.fromText = bind(this, function (text, textAlt) { + /*jslint evil: true */ + var moduleName = map.name, + moduleMap = makeModuleMap(moduleName), + hasInteractive = useInteractive; + + //As of 2.1.0, support just passing the text, to reinforce + //fromText only being called once per resource. Still + //support old style of passing moduleName but discard + //that moduleName in favor of the internal ref. + if (textAlt) { + text = textAlt; + } + + //Turn off interactive script matching for IE for any define + //calls in the text, then turn it back on at the end. + if (hasInteractive) { + useInteractive = false; + } + + //Prime the system by creating a module instance for + //it. + getModule(moduleMap); + + //Transfer any config to this other module. + if (hasProp(config.config, id)) { + config.config[moduleName] = config.config[id]; + } + + try { + req.exec(text); + } catch (e) { + return onError(makeError('fromtexteval', + 'fromText eval for ' + id + + ' failed: ' + e, + e, + [id])); + } + + if (hasInteractive) { + useInteractive = true; + } + + //Mark this as a dependency for the plugin + //resource + this.depMaps.push(moduleMap); + + //Support anonymous modules. + context.completeLoad(moduleName); + + //Bind the value of that module to the value for this + //resource ID. + localRequire([moduleName], load); + }); + + //Use parentName here since the plugin's name is not reliable, + //could be some weird string with no path that actually wants to + //reference the parentName's path. + plugin.load(map.name, localRequire, load, config); + })); + + context.enable(pluginMap, this); + this.pluginMaps[pluginMap.id] = pluginMap; + }, + + enable: function () { + enabledRegistry[this.map.id] = this; + this.enabled = true; + + //Set flag mentioning that the module is enabling, + //so that immediate calls to the defined callbacks + //for dependencies do not trigger inadvertent load + //with the depCount still being zero. + this.enabling = true; + + //Enable each dependency + each(this.depMaps, bind(this, function (depMap, i) { + var id, mod, handler; + + if (typeof depMap === 'string') { + //Dependency needs to be converted to a depMap + //and wired up to this module. + depMap = makeModuleMap(depMap, + (this.map.isDefine ? this.map : this.map.parentMap), + false, + !this.skipMap); + this.depMaps[i] = depMap; + + handler = getOwn(handlers, depMap.id); + + if (handler) { + this.depExports[i] = handler(this); + return; + } + + this.depCount += 1; + + on(depMap, 'defined', bind(this, function (depExports) { + if (this.undefed) { + return; + } + this.defineDep(i, depExports); + this.check(); + })); + + if (this.errback) { + on(depMap, 'error', bind(this, this.errback)); + } else if (this.events.error) { + // No direct errback on this module, but something + // else is listening for errors, so be sure to + // propagate the error correctly. + on(depMap, 'error', bind(this, function(err) { + this.emit('error', err); + })); + } + } + + id = depMap.id; + mod = registry[id]; + + //Skip special modules like 'require', 'exports', 'module' + //Also, don't call enable if it is already enabled, + //important in circular dependency cases. + if (!hasProp(handlers, id) && mod && !mod.enabled) { + context.enable(depMap, this); + } + })); + + //Enable each plugin that is used in + //a dependency + eachProp(this.pluginMaps, bind(this, function (pluginMap) { + var mod = getOwn(registry, pluginMap.id); + if (mod && !mod.enabled) { + context.enable(pluginMap, this); + } + })); + + this.enabling = false; + + this.check(); + }, + + on: function (name, cb) { + var cbs = this.events[name]; + if (!cbs) { + cbs = this.events[name] = []; + } + cbs.push(cb); + }, + + emit: function (name, evt) { + each(this.events[name], function (cb) { + cb(evt); + }); + if (name === 'error') { + //Now that the error handler was triggered, remove + //the listeners, since this broken Module instance + //can stay around for a while in the registry. + delete this.events[name]; + } + } + }; + + function callGetModule(args) { + //Skip modules already defined. + if (!hasProp(defined, args[0])) { + getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]); + } + } + + function removeListener(node, func, name, ieName) { + //Favor detachEvent because of IE9 + //issue, see attachEvent/addEventListener comment elsewhere + //in this file. + if (node.detachEvent && !isOpera) { + //Probably IE. If not it will throw an error, which will be + //useful to know. + if (ieName) { + node.detachEvent(ieName, func); + } + } else { + node.removeEventListener(name, func, false); + } + } + + /** + * Given an event from a script node, get the requirejs info from it, + * and then removes the event listeners on the node. + * @param {Event} evt + * @returns {Object} + */ + function getScriptData(evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + var node = evt.currentTarget || evt.srcElement; + + //Remove the listeners once here. + removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange'); + removeListener(node, context.onScriptError, 'error'); + + return { + node: node, + id: node && node.getAttribute('data-requiremodule') + }; + } + + function intakeDefines() { + var args; + + //Any defined modules in the global queue, intake them now. + takeGlobalQueue(); + + //Make sure any remaining defQueue items get properly processed. + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + + args[args.length - 1])); + } else { + //args are id, deps, factory. Should be normalized by the + //define() function. + callGetModule(args); + } + } + context.defQueueMap = {}; + } + + context = { + config: config, + contextName: contextName, + registry: registry, + defined: defined, + urlFetched: urlFetched, + defQueue: defQueue, + defQueueMap: {}, + Module: Module, + makeModuleMap: makeModuleMap, + nextTick: req.nextTick, + onError: onError, + + /** + * Set a configuration for the context. + * @param {Object} cfg config object to integrate. + */ + configure: function (cfg) { + //Make sure the baseUrl ends in a slash. + if (cfg.baseUrl) { + if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') { + cfg.baseUrl += '/'; + } + } + + // Convert old style urlArgs string to a function. + if (typeof cfg.urlArgs === 'string') { + var urlArgs = cfg.urlArgs; + cfg.urlArgs = function(id, url) { + return (url.indexOf('?') === -1 ? '?' : '&') + urlArgs; + }; + } + + //Save off the paths since they require special processing, + //they are additive. + var shim = config.shim, + objs = { + paths: true, + bundles: true, + config: true, + map: true + }; + + eachProp(cfg, function (value, prop) { + if (objs[prop]) { + if (!config[prop]) { + config[prop] = {}; + } + mixin(config[prop], value, true, true); + } else { + config[prop] = value; + } + }); + + //Reverse map the bundles + if (cfg.bundles) { + eachProp(cfg.bundles, function (value, prop) { + each(value, function (v) { + if (v !== prop) { + bundlesMap[v] = prop; + } + }); + }); + } + + //Merge shim + if (cfg.shim) { + eachProp(cfg.shim, function (value, id) { + //Normalize the structure + if (isArray(value)) { + value = { + deps: value + }; + } + if ((value.exports || value.init) && !value.exportsFn) { + value.exportsFn = context.makeShimExports(value); + } + shim[id] = value; + }); + config.shim = shim; + } + + //Adjust packages if necessary. + if (cfg.packages) { + each(cfg.packages, function (pkgObj) { + var location, name; + + pkgObj = typeof pkgObj === 'string' ? {name: pkgObj} : pkgObj; + + name = pkgObj.name; + location = pkgObj.location; + if (location) { + config.paths[name] = pkgObj.location; + } + + //Save pointer to main module ID for pkg name. + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, ''); + }); + } + + //If there are any "waiting to execute" modules in the registry, + //update the maps for them, since their info, like URLs to load, + //may have changed. + eachProp(registry, function (mod, id) { + //If module already has init called, since it is too + //late to modify them, and ignore unnormalized ones + //since they are transient. + if (!mod.inited && !mod.map.unnormalized) { + mod.map = makeModuleMap(id, null, true); + } + }); + + //If a deps array or a config callback is specified, then call + //require with those args. This is useful when require is defined as a + //config object before require.js is loaded. + if (cfg.deps || cfg.callback) { + context.require(cfg.deps || [], cfg.callback); + } + }, + + makeShimExports: function (value) { + function fn() { + var ret; + if (value.init) { + ret = value.init.apply(global, arguments); + } + return ret || (value.exports && getGlobal(value.exports)); + } + return fn; + }, + + makeRequire: function (relMap, options) { + options = options || {}; + + function localRequire(deps, callback, errback) { + var id, map, requireMod; + + if (options.enableBuildCallback && callback && isFunction(callback)) { + callback.__requireJsBuild = true; + } + + if (typeof deps === 'string') { + if (isFunction(callback)) { + //Invalid call + return onError(makeError('requireargs', 'Invalid require call'), errback); + } + + //If require|exports|module are requested, get the + //value for them from the special handlers. Caveat: + //this only works while module is being defined. + if (relMap && hasProp(handlers, deps)) { + return handlers[deps](registry[relMap.id]); + } + + //Synchronous access to one module. If require.get is + //available (as in the Node adapter), prefer that. + if (req.get) { + return req.get(context, deps, relMap, localRequire); + } + + //Normalize module name, if it contains . or .. + map = makeModuleMap(deps, relMap, false, true); + id = map.id; + + if (!hasProp(defined, id)) { + return onError(makeError('notloaded', 'Module name "' + + id + + '" has not been loaded yet for context: ' + + contextName + + (relMap ? '' : '. Use require([])'))); + } + return defined[id]; + } + + //Grab defines waiting in the global queue. + intakeDefines(); + + //Mark all the dependencies as needing to be loaded. + context.nextTick(function () { + //Some defines could have been added since the + //require call, collect them. + intakeDefines(); + + requireMod = getModule(makeModuleMap(null, relMap)); + + //Store if map config should be applied to this require + //call for dependencies. + requireMod.skipMap = options.skipMap; + + requireMod.init(deps, callback, errback, { + enabled: true + }); + + checkLoaded(); + }); + + return localRequire; + } + + mixin(localRequire, { + isBrowser: isBrowser, + + /** + * Converts a module name + .extension into an URL path. + * *Requires* the use of a module name. It does not support using + * plain URLs like nameToUrl. + */ + toUrl: function (moduleNamePlusExt) { + var ext, + index = moduleNamePlusExt.lastIndexOf('.'), + segment = moduleNamePlusExt.split('/')[0], + isRelative = segment === '.' || segment === '..'; + + //Have a file extension alias, and it is not the + //dots from a relative path. + if (index !== -1 && (!isRelative || index > 1)) { + ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); + moduleNamePlusExt = moduleNamePlusExt.substring(0, index); + } + + return context.nameToUrl(normalize(moduleNamePlusExt, + relMap && relMap.id, true), ext, true); + }, + + defined: function (id) { + return hasProp(defined, makeModuleMap(id, relMap, false, true).id); + }, + + specified: function (id) { + id = makeModuleMap(id, relMap, false, true).id; + return hasProp(defined, id) || hasProp(registry, id); + } + }); + + //Only allow undef on top level require calls + if (!relMap) { + localRequire.undef = function (id) { + //Bind any waiting define() calls to this context, + //fix for #408 + takeGlobalQueue(); + + var map = makeModuleMap(id, relMap, true), + mod = getOwn(registry, id); + + mod.undefed = true; + removeScript(id); + + delete defined[id]; + delete urlFetched[map.url]; + delete undefEvents[id]; + + //Clean queued defines too. Go backwards + //in array so that the splices do not + //mess up the iteration. + eachReverse(defQueue, function(args, i) { + if (args[0] === id) { + defQueue.splice(i, 1); + } + }); + delete context.defQueueMap[id]; + + if (mod) { + //Hold on to listeners in case the + //module will be attempted to be reloaded + //using a different config. + if (mod.events.defined) { + undefEvents[id] = mod.events; + } + + cleanRegistry(id); + } + }; + } + + return localRequire; + }, + + /** + * Called to enable a module if it is still in the registry + * awaiting enablement. A second arg, parent, the parent module, + * is passed in for context, when this method is overridden by + * the optimizer. Not shown here to keep code compact. + */ + enable: function (depMap) { + var mod = getOwn(registry, depMap.id); + if (mod) { + getModule(depMap).enable(); + } + }, + + /** + * Internal method used by environment adapters to complete a load event. + * A load event could be a script load or just a load pass from a synchronous + * load call. + * @param {String} moduleName the name of the module to potentially complete. + */ + completeLoad: function (moduleName) { + var found, args, mod, + shim = getOwn(config.shim, moduleName) || {}, + shExports = shim.exports; + + takeGlobalQueue(); + + while (defQueue.length) { + args = defQueue.shift(); + if (args[0] === null) { + args[0] = moduleName; + //If already found an anonymous module and bound it + //to this name, then this is some other anon module + //waiting for its completeLoad to fire. + if (found) { + break; + } + found = true; + } else if (args[0] === moduleName) { + //Found matching define call for this script! + found = true; + } + + callGetModule(args); + } + context.defQueueMap = {}; + + //Do this after the cycle of callGetModule in case the result + //of those calls/init calls changes the registry. + mod = getOwn(registry, moduleName); + + if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) { + if (config.enforceDefine && (!shExports || !getGlobal(shExports))) { + if (hasPathFallback(moduleName)) { + return; + } else { + return onError(makeError('nodefine', + 'No define call for ' + moduleName, + null, + [moduleName])); + } + } else { + //A script that does not call define(), so just simulate + //the call for it. + callGetModule([moduleName, (shim.deps || []), shim.exportsFn]); + } + } + + checkLoaded(); + }, + + /** + * Converts a module name to a file path. Supports cases where + * moduleName may actually be just an URL. + * Note that it **does not** call normalize on the moduleName, + * it is assumed to have already been normalized. This is an + * internal API, not a public one. Use toUrl for the public API. + */ + nameToUrl: function (moduleName, ext, skipExt) { + var paths, syms, i, parentModule, url, + parentPath, bundleId, + pkgMain = getOwn(config.pkgs, moduleName); + + if (pkgMain) { + moduleName = pkgMain; + } + + bundleId = getOwn(bundlesMap, moduleName); + + if (bundleId) { + return context.nameToUrl(bundleId, ext, skipExt); + } + + //If a colon is in the URL, it indicates a protocol is used and it is just + //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) + //or ends with .js, then assume the user meant to use an url and not a module id. + //The slash is important for protocol-less URLs as well as full paths. + if (req.jsExtRegExp.test(moduleName)) { + //Just a plain path, not module name lookup, so just return it. + //Add extension if it is included. This is a bit wonky, only non-.js things pass + //an extension, this method probably needs to be reworked. + url = moduleName + (ext || ''); + } else { + //A module that needs to be converted to a path. + paths = config.paths; + + syms = moduleName.split('/'); + //For each module name segment, see if there is a path + //registered for it. Start with most specific name + //and work up from it. + for (i = syms.length; i > 0; i -= 1) { + parentModule = syms.slice(0, i).join('/'); + + parentPath = getOwn(paths, parentModule); + if (parentPath) { + //If an array, it means there are a few choices, + //Choose the one that is desired + if (isArray(parentPath)) { + parentPath = parentPath[0]; + } + syms.splice(0, i, parentPath); + break; + } + } + + //Join the path parts together, then figure out if baseUrl is needed. + url = syms.join('/'); + url += (ext || (/^data\:|^blob\:|\?/.test(url) || skipExt ? '' : '.js')); + url = (url.charAt(0) === '/' || url.match(/^[\w\+\.\-]+:/) ? '' : config.baseUrl) + url; + } + + return config.urlArgs && !/^blob\:/.test(url) ? + url + config.urlArgs(moduleName, url) : url; + }, + + //Delegates to req.load. Broken out as a separate function to + //allow overriding in the optimizer. + load: function (id, url) { + req.load(context, id, url); + }, + + /** + * Executes a module callback function. Broken out as a separate function + * solely to allow the build system to sequence the files in the built + * layer in the right sequence. + * + * @private + */ + execCb: function (name, callback, args, exports) { + return callback.apply(exports, args); + }, + + /** + * callback for script loads, used to check status of loading. + * + * @param {Event} evt the event from the browser for the script + * that was loaded. + */ + onScriptLoad: function (evt) { + //Using currentTarget instead of target for Firefox 2.0's sake. Not + //all old browsers will be supported, but this one was easy enough + //to support and still makes sense. + if (evt.type === 'load' || + (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) { + //Reset interactive script so a script node is not held onto for + //to long. + interactiveScript = null; + + //Pull out the name of the module and the context. + var data = getScriptData(evt); + context.completeLoad(data.id); + } + }, + + /** + * Callback for script errors. + */ + onScriptError: function (evt) { + var data = getScriptData(evt); + if (!hasPathFallback(data.id)) { + var parents = []; + eachProp(registry, function(value, key) { + if (key.indexOf('_@r') !== 0) { + each(value.depMaps, function(depMap) { + if (depMap.id === data.id) { + parents.push(key); + return true; + } + }); + } + }); + return onError(makeError('scripterror', 'Script error for "' + data.id + + (parents.length ? + '", needed by: ' + parents.join(', ') : + '"'), evt, [data.id])); + } + } + }; + + context.require = context.makeRequire(); + return context; + } + + /** + * Main entry point. + * + * If the only argument to require is a string, then the module that + * is represented by that string is fetched for the appropriate context. + * + * If the first argument is an array, then it will be treated as an array + * of dependency string names to fetch. An optional function callback can + * be specified to execute when all of those dependencies are available. + * + * Make a local req variable to help Caja compliance (it assumes things + * on a require that are not standardized), and to give a short + * name for minification/local scope use. + */ + req = requirejs = function (deps, callback, errback, optional) { + + //Find the right context, use default + var context, config, + contextName = defContextName; + + // Determine if have config object in the call. + if (!isArray(deps) && typeof deps !== 'string') { + // deps is a config object + config = deps; + if (isArray(callback)) { + // Adjust args if there are dependencies + deps = callback; + callback = errback; + errback = optional; + } else { + deps = []; + } + } + + if (config && config.context) { + contextName = config.context; + } + + context = getOwn(contexts, contextName); + if (!context) { + context = contexts[contextName] = req.s.newContext(contextName); + } + + if (config) { + context.configure(config); + } + + return context.require(deps, callback, errback); + }; + + /** + * Support require.config() to make it easier to cooperate with other + * AMD loaders on globally agreed names. + */ + req.config = function (config) { + return req(config); + }; + + /** + * Execute something after the current tick + * of the event loop. Override for other envs + * that have a better solution than setTimeout. + * @param {Function} fn function to execute later. + */ + req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) { + setTimeout(fn, 4); + } : function (fn) { fn(); }; + + /** + * Export require as a global, but only if it does not already exist. + */ + if (!require) { + require = req; + } + + req.version = version; + + //Used to filter out dependencies that are already paths. + req.jsExtRegExp = /^\/|:|\?|\.js$/; + req.isBrowser = isBrowser; + s = req.s = { + contexts: contexts, + newContext: newContext + }; + + //Create default context. + req({}); + + //Exports some context-sensitive methods on global require. + each([ + 'toUrl', + 'undef', + 'defined', + 'specified' + ], function (prop) { + //Reference from contexts instead of early binding to default context, + //so that during builds, the latest instance of the default context + //with its config gets used. + req[prop] = function () { + var ctx = contexts[defContextName]; + return ctx.require[prop].apply(ctx, arguments); + }; + }); + + if (isBrowser) { + head = s.head = document.getElementsByTagName('head')[0]; + //If BASE tag is in play, using appendChild is a problem for IE6. + //When that browser dies, this can be removed. Details in this jQuery bug: + //http://dev.jquery.com/ticket/2709 + baseElement = document.getElementsByTagName('base')[0]; + if (baseElement) { + head = s.head = baseElement.parentNode; + } + } + + /** + * Any errors that require explicitly generates will be passed to this + * function. Intercept/override it if you want custom error handling. + * @param {Error} err the error object. + */ + req.onError = defaultOnError; + + /** + * Creates the node for the load command. Only used in browser envs. + */ + req.createNode = function (config, moduleName, url) { + var node = config.xhtml ? + document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') : + document.createElement('script'); + node.type = config.scriptType || 'text/javascript'; + node.charset = 'utf-8'; + node.async = true; + return node; + }; + + /** + * Does the request to load a module for the browser case. + * Make this a separate function to allow other environments + * to override it. + * + * @param {Object} context the require context to find state. + * @param {String} moduleName the name of the module. + * @param {Object} url the URL to the module. + */ + req.load = function (context, moduleName, url) { + var config = (context && context.config) || {}, + node; + if (isBrowser) { + //In the browser so use a script tag + node = req.createNode(config, moduleName, url); + + node.setAttribute('data-requirecontext', context.contextName); + node.setAttribute('data-requiremodule', moduleName); + + //Set up load listener. Test attachEvent first because IE9 has + //a subtle issue in its addEventListener and script onload firings + //that do not match the behavior of all other browsers with + //addEventListener support, which fire the onload event for a + //script right after the script execution. See: + //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution + //UNFORTUNATELY Opera implements attachEvent but does not follow the script + //script execution mode. + if (node.attachEvent && + //Check if node.attachEvent is artificially added by custom script or + //natively supported by browser + //read https://github.com/requirejs/requirejs/issues/187 + //if we can NOT find [native code] then it must NOT natively supported. + //in IE8, node.attachEvent does not have toString() + //Note the test for "[native code" with no closing brace, see: + //https://github.com/requirejs/requirejs/issues/273 + !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) && + !isOpera) { + //Probably IE. IE (at least 6-8) do not fire + //script onload right after executing the script, so + //we cannot tie the anonymous define call to a name. + //However, IE reports the script as being in 'interactive' + //readyState at the time of the define call. + useInteractive = true; + + node.attachEvent('onreadystatechange', context.onScriptLoad); + //It would be great to add an error handler here to catch + //404s in IE9+. However, onreadystatechange will fire before + //the error handler, so that does not help. If addEventListener + //is used, then IE will fire error before load, but we cannot + //use that pathway given the connect.microsoft.com issue + //mentioned above about not doing the 'script execute, + //then fire the script load event listener before execute + //next script' that other browsers do. + //Best hope: IE10 fixes the issues, + //and then destroys all installs of IE 6-9. + //node.attachEvent('onerror', context.onScriptError); + } else { + node.addEventListener('load', context.onScriptLoad, false); + node.addEventListener('error', context.onScriptError, false); + } + node.src = url; + + //Calling onNodeCreated after all properties on the node have been + //set, but before it is placed in the DOM. + if (config.onNodeCreated) { + config.onNodeCreated(node, config, moduleName, url); + } + + //For some cache cases in IE 6-8, the script executes before the end + //of the appendChild execution, so to tie an anonymous define + //call to the module name (which is stored on the node), hold on + //to a reference to this node, but clear after the DOM insertion. + currentlyAddingScript = node; + if (baseElement) { + head.insertBefore(node, baseElement); + } else { + head.appendChild(node); + } + currentlyAddingScript = null; + + return node; + } else if (isWebWorker) { + try { + //In a web worker, use importScripts. This is not a very + //efficient use of importScripts, importScripts will block until + //its script is downloaded and evaluated. However, if web workers + //are in play, the expectation is that a build has been done so + //that only one script needs to be loaded anyway. This may need + //to be reevaluated if other use cases become common. + + // Post a task to the event loop to work around a bug in WebKit + // where the worker gets garbage-collected after calling + // importScripts(): https://webkit.org/b/153317 + setTimeout(function() {}, 0); + importScripts(url); + + //Account for anonymous modules + context.completeLoad(moduleName); + } catch (e) { + context.onError(makeError('importscripts', + 'importScripts failed for ' + + moduleName + ' at ' + url, + e, + [moduleName])); + } + } + }; + + function getInteractiveScript() { + if (interactiveScript && interactiveScript.readyState === 'interactive') { + return interactiveScript; + } + + eachReverse(scripts(), function (script) { + if (script.readyState === 'interactive') { + return (interactiveScript = script); + } + }); + return interactiveScript; + } + + //Look for a data-main script attribute, which could also adjust the baseUrl. + if (isBrowser && !cfg.skipDataMain) { + //Figure out baseUrl. Get it from the script tag with require.js in it. + eachReverse(scripts(), function (script) { + //Set the 'head' where we can append children by + //using the script's parent. + if (!head) { + head = script.parentNode; + } + + //Look for a data-main attribute to set main script for the page + //to load. If it is there, the path to data main becomes the + //baseUrl, if it is not already set. + dataMain = script.getAttribute('data-main'); + if (dataMain) { + //Preserve dataMain in case it is a path (i.e. contains '?') + mainScript = dataMain; + + //Set final baseUrl if there is not already an explicit one, + //but only do so if the data-main value is not a loader plugin + //module ID. + if (!cfg.baseUrl && mainScript.indexOf('!') === -1) { + //Pull off the directory of data-main for use as the + //baseUrl. + src = mainScript.split('/'); + mainScript = src.pop(); + subPath = src.length ? src.join('/') + '/' : './'; + + cfg.baseUrl = subPath; + } + + //Strip off any trailing .js since mainScript is now + //like a module name. + mainScript = mainScript.replace(jsSuffixRegExp, ''); + + //If mainScript is still a path, fall back to dataMain + if (req.jsExtRegExp.test(mainScript)) { + mainScript = dataMain; + } + + //Put the data-main script in the files to load. + cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript]; + + return true; + } + }); + } + + /** + * The function that handles definitions of modules. Differs from + * require() in that a string for the module should be the first argument, + * and the function to execute after dependencies are loaded should + * return a value to define the module corresponding to the first argument's + * name. + */ + define = function (name, deps, callback) { + var node, context; + + //Allow for anonymous modules + if (typeof name !== 'string') { + //Adjust args appropriately + callback = deps; + deps = name; + name = null; + } + + //This module may not have dependencies + if (!isArray(deps)) { + callback = deps; + deps = null; + } + + //If no name, and callback is a function, then figure out if it a + //CommonJS thing with dependencies. + if (!deps && isFunction(callback)) { + deps = []; + //Remove comments from the callback string, + //look for require calls, and pull them into the dependencies, + //but only if there are function args. + if (callback.length) { + callback + .toString() + .replace(commentRegExp, commentReplace) + .replace(cjsRequireRegExp, function (match, dep) { + deps.push(dep); + }); + + //May be a CommonJS thing even without require calls, but still + //could use exports, and module. Avoid doing exports and module + //work though if it just needs require. + //REQUIRES the function to expect the CommonJS variables in the + //order listed below. + deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps); + } + } + + //If in IE 6-8 and hit an anonymous define() call, do the interactive + //work. + if (useInteractive) { + node = currentlyAddingScript || getInteractiveScript(); + if (node) { + if (!name) { + name = node.getAttribute('data-requiremodule'); + } + context = contexts[node.getAttribute('data-requirecontext')]; + } + } + + //Always save off evaluating the def call until the script onload handler. + //This allows multiple modules to be in a file without prematurely + //tracing dependencies, and allows for anonymous module support, + //where the module name is not known until the script onload event + //occurs. If no context, use the global queue, and get it processed + //in the onscript load callback. + if (context) { + context.defQueue.push([name, deps, callback]); + context.defQueueMap[name] = true; + } else { + globalDefQueue.push([name, deps, callback]); + } + }; + + define.amd = { + jQuery: true + }; + + /** + * Executes the text. Normally just uses eval, but can be modified + * to use a better, environment-specific call. Only used for transpiling + * loader plugins, not for plain JS modules. + * @param {String} text the text to execute/evaluate. + */ + req.exec = function (text) { + /*jslint evil: true */ + return eval(text); + }; + + //Set up with config info. + req(cfg); +}(this, (typeof setTimeout === 'undefined' ? undefined : setTimeout))); diff --git a/src/main/webapp/static/js/paella/player/javascript/swfobject.js b/src/main/webapp/static/js/paella/player/javascript/swfobject.js new file mode 100644 index 0000000000000000000000000000000000000000..8eafe9dd83f91b52c2decd532db81527bb98e488 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/javascript/swfobject.js @@ -0,0 +1,4 @@ +/* SWFObject v2.2 <http://code.google.com/p/swfobject/> + is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> +*/ +var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}(); \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_de.json b/src/main/webapp/static/js/paella/player/localization/paella_de.json new file mode 100644 index 0000000000000000000000000000000000000000..c82f652158d8a32b1f5fd1fe754886136370e667 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_de.json @@ -0,0 +1,59 @@ +{ + "Your browser is not compatible with the required video codec": "Ihr Browser ist mit dem erforderlichen Videocodec nicht kompatibel", + "It seems that your browser is not HTML 5 compatible": "Ihr Browser ist anscheinend nicht HTML 5 kompatibel", + "The specified video identifier does not exist": "Der spezifizierte Video Identifikator existiert nicht", + "This video is not published": "Dieses Video ist nicht veröffentlicht", + "You are not authorized to view this resource": "Sie sind nicht autorisiert diese Ressource zu betrachten", + "You are not logged in": "Sie sind nicht eingeloggt", + "Continue anyway": "Dennoch fortfahren", + "1 second ago": "vor 1 Sekunde", + "1 minute ago": "vor 1 Minute", + "1 hour ago": "vor 1 Stunde", + "1 day ago": "vor 1 Tag", + "1 month ago": "vor 1 Monat", + "1 year ago": "vor 1 Jahr", + "{0} seconds ago": "vor {0} Sekunden", + "{0} minutes ago": "vor {0} Minuten", + "{0} hours ago": "vor {0} Stunden", + "{0} days ago": "vor {0} Tagen", + "{0} months ago": "vor {0} Monaten", + "{0} years ago": "vor {0} Jahren", + "Searching...": "Suchen...", + "Search in this recording": "In dieser Aufnahme suchen", + "Previous": "Vorheriges", + "Page:": "Seite:", + "Next": "Nächstes", + "Description": "Beschreibung", + "Videos in this series:": "Videos in dieser Serie:", + "Title:": "Titel:", + "Presenter:": "Vortragender:", + "Series:": "Serie:", + "Date:": "Datum:", + "Views:": "Ansichten:", + "Contributor:": "Mitarbeiter:", + "Subject:": "Thema:", + "Language:": "Sprache:", + "Description:": "Beschreibung:", + "Search": "Suche", + "Search Relevance:": "Relevante Suche:", + "Results for '{0}'": "Ergebnisse für '{0}'", + "Results for '{0}; (no actual results for '{1}' found)": "Ergebnisse für '{0}'; (aktuell keine Ergebnisse für '{1}' gefunden)", + "Comments": "Kommentare", + "Publish": "Veröffentlichen", + "Publish at {0}": "Veröffentlichen bei {0}", + "Reply": "Antworten", + "Results {0}-{1} of {2}": "Ergebnisse {0}-{1} von {2}", + "Results {0}-{1} of {2} for \"{3}\"": "Ergebnisse {0}-{1} von {2} für \"{3}\"", + "No recordings found": "Keine Aufnahmen gefunden", + "No recordings found: \"{0}\"": "Keine Aufnahmen gefunden: \"{0}\"", + "There are unsaved changes": "Es liegen ungespeicherte Veränderungen vor", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "Live Streaming Modus: Da dies ein Live Video ist, sind einige Funktionen des Players deaktiviert", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Sie benutzen Firefox version, einige benötigte Funktionen zum Abspielen des Videos sind vor min_version nicht verfügbar. Bitte aktualisieren Sie Ihren Browser und versuchen Sie es erneut.", + "This video is not compatible with any codec installed in your system": "Dieses Video ist mit keinem Codec kompatibel, der auf Ihrem System installiert ist", + "Could not load the video": "Das Video konnte nicht geladen werden", + "x5_message": "Auf dieser Seite kann der Dienst X5gon eingebunden werden, um Empfehlungen für freie Bildungsressourcen zu erstellen.", + "x5_more_info": "Mehr erfahren", + "x5_accept": "Erlauben", + "x5_deny": "Ablehnen", + "x5_policy": "Cookie-Richtlinie" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_en.json b/src/main/webapp/static/js/paella/player/localization/paella_en.json new file mode 100644 index 0000000000000000000000000000000000000000..9e26dfeeb6e641a33dae4961196235bdb965b21b --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_en.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_es.json b/src/main/webapp/static/js/paella/player/localization/paella_es.json new file mode 100644 index 0000000000000000000000000000000000000000..e6af08a3c4413efe496a3715dd14b6bd3737f001 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_es.json @@ -0,0 +1,101 @@ +{ + "Your browser is not compatible with the required video codec": "Tu navegador no dispone de los codecs de vÃdeo necesarios.", + "It seems that your browser is not HTML 5 compatible": "Parece que tu navegador no es compatible con HTML 5. Puedes utilizar cualquiera de los siguientes navegadores:", + "The specified video identifier does not exist": "El vÃdeo solicitado no existe", + "This video is not published": "Este vÃdeo no está publicado", + "You are not authorized to view this resource": "No estás autorizado a ver este recurso", + "You are not logged in": "No estás identificado en el sistema", + "Continue anyway": "Continuar de todos modos", + "1 second ago": "hace 1 segundo", + "1 minute ago": "hace 1 minuto", + "1 hour ago": "hace 1 hora", + "1 day ago": "hace 1 dia", + "1 month ago": "hace 1 mes", + "1 year ago": "hace 1 año", + "{0} seconds ago": "hace {0} segundos", + "{0} minutes ago": "hace {0} minutos", + "{0} hours ago": "hace {0} horas", + "{0} days ago": "hace {0} dias", + "{0} months ago": "hace {0} meses", + "{0} years ago": "hace {0} años", + "Searching...": "Buscando...", + "Search in this recording": "Buscar en este video", + "Previous": "Anterior", + "Page:": "Página:", + "Next": "Siguiente", + "Description": "Descripción", + "Videos in this series:": "Videos en esta serie:", + "Title:": "TÃtulo:", + "Presenter:": "Ponente:", + "Series:": "Serie:", + "Date:": "Fecha:", + "Views:": "Visitas:", + "Contributor:": "Contribuyente:", + "Subject:": "Asignatura:", + "Language:": "Idioma:", + "Description:": "Descripción:", + "Search": "Busqueda", + "Search Relevance:": "Relevancia:", + "Results for '{0}'": "Resultados para '{0}'", + "Results for '{0}; (no actual results for '{1}' found)": "No se encontraron resultados para '{1}'. Mostrando resultador para '{0}'", + "Comments": "Comentarios", + "Publish": "Publicar", + "Publish at {0}": "Publicar en {0}", + "Reply": "Responder", + "Results {0}-{1} of {2}": "Resultados {0}-{1} de {2}", + "Results {0}-{1} of {2} for \"{3}\"": "Resultados {0}-{1} de {2} para \"{3}\"", + "No recordings found": "No se han encontrado videos", + "No recordings found: \"{0}\"": "No se han encontrado videos para: \"{0}\"", + "There are unsaved changes": "Hay cambios sin guardar", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "Emisión en directo: Este vÃdeo es una emisión en directo. Por tanto, algunas caracterÃsticas del reproductor están desactivadas", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Estás utilizando Firefox version, y algunas capacidades de vÃdeo necesarias no están disponibles hasta Firefox min_version. Por favor, actualiza tu navegador y prueba otra vez.", + "This video is not compatible with any codec installed in your system": "Este vÃdeo no es compatible con ningún codec instalado en su sistema", + "Could not load the video": "No se ha podido cargar el vÃdeo", + "Error! Captions format not supported.": "Error! El formato de los subtitulos no está soportado.", + "Trimming": "Ajuste de inicio y fin", + "Breaks": "Descansos", + "Break": "Descanso", + "Create a new break in the current position": "Añade un descanso en el instante actual", + "Delete selected break": "Borra el descanso seleccionado", + "Use this tool to create, delete and edit breaks. To create a break, select the time instant clicking the timeline's background and press 'create' button. Use this tab to edit the break text.": "Utiliza esta herramienta para crear, borrar y editar descansos. Para crear un descanso, selecciona el instante de tiempo haciendo clic en el fondo de la lÃnea de tiempo, y pulsa el botón 'Crear'. Utiliza esta pestaña para editar el texto de los descansos", + "Subtitles": "SubtÃtulos", + "Search captions": "Buscar SubtÃtulos", + "None": "Ninguno", + "Show statistics": "Mostrar las estadÃsticas", + "Navigate by slides": "Navegar por las diapositivas", + "Go Fullscreen": "Ir a pantalla completa", + "Exit Fullscreen": "Salir de pantalla completa", + "Your browser does not support fullscreen mode": "Tu navegador no soporta la pantalla completa", + "Show help": "Mostrar ayuda", + "Paella version:": "Versión de paella:", + "This video is a live stream": "Este video es una emisión en directo", + "Presenter": "Presentador", + "Slide": "Diapositiva", + "Change video quality": "Cambiar la calidad del video", + "Play": "Reproducir", + "Pause": "Pausar", + "Video score": "Puntuación del vÃdeo", + "Not rated": "No puntuado", + "Vote": "Votar", + "Login to vote": "Inicia sesión para votar", + "Searching": "Realizando búsqueda", + "Sorry! No results found.": "Lo sentimos, No se encontraron resultados.", + "Enter editor mode": "Entrar en el editor", + "Share this video": "Comparte este video", + "Custom size:": "Tamaño personalizado:", + "Choose your embed size. Copy the text and paste it in your html page.": "Elija el tamaño del video a embeber. Copie el texto y péguelo en su página html.", + "Width:": "Ancho:", + "Height:": "Alto:", + "Change theme": "Cambiar el tema", + "You are trying to modify the transcriptions, but you are not Logged in!": "Has seleccionado editar las transcripciones, pero no estás identificado!", + "Continue editing the transcriptions anonymously": "Editar las transcripciones de forma anónima", + "Log in and edit the transcriptions": "Identificarse y editar las transcripciones", + "Under review": "Revisando", + "Change video layout": "Modificar el diseño del video", + "Volume": "Volumen", + "x5_message": "Este sitio web utiliza cookies con fines funcionales y analÃticos. Además, utilizamos cookies para ofrecer servicios personalizados y receptivos y para mejorar el sitio. Esto se hace en colaboración con el proyecto X5GON.", + "x5_more_info": "Conozca más", + "x5_accept": "Permitir", + "x5_deny": "Declive", + "x5_policy": "PolÃtica de cookies" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_eu.json b/src/main/webapp/static/js/paella/player/localization/paella_eu.json new file mode 100644 index 0000000000000000000000000000000000000000..8856765ddfc7f75d609045e9b9348f55b7c8a7be --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_eu.json @@ -0,0 +1,96 @@ +{ + "Your browser is not compatible with the required video codec": "Zure nabigatzaileak ez du beharrezko bideo kodek-ik.", + "It seems that your browser is not HTML 5 compatible": "Badirudi zure nabigatzailea ez dela bateragarria HTML 5ekin. Nabigatzaile hauetako edozein erabil dezakezu:", + "The specified video identifier does not exist": "Eskatutako bideoa ez dago", + "This video is not published": "Bideo hau ez dago argitaratuta", + "You are not authorized to view this resource": "Ez daukazu baimenik baliabide hau ikusteko", + "You are not logged in": "Ez zaude sisteman identifikatuta", + "Continue anyway": "Jarraitu edonola ere", + "1 second ago": "duela 1 segundo", + "1 minute ago": "duela 1 minutu", + "1 hour ago": "duela 1 ordu", + "1 day ago": "duela 1 egun", + "1 month ago": "duela hilabete bat", + "1 year ago": "duela 1 urte", + "{0} seconds ago": "duela {0} segundo", + "{0} minutes ago": "duela {0} minutu", + "{0} hours ago": "duela {0} ordu", + "{0} days ago": "duela {0} egun", + "{0} months ago": "duela {0} hilabete", + "{0} years ago": "duela {0} urte", + "Searching...": "Bilatzen…", + "Search in this recording": "Bilatu bideo honetan", + "Previous": "Aurrekoa", + "Page:": "Orrialdea:", + "Next": "Hurrengoa", + "Description": "Deskribapena", + "Videos in this series:": "Bideoak sail honetan:", + "Title:": "Izenburua:", + "Presenter:": "Hizlaria:", + "Series:": "Saila:", + "Date:": "Data:", + "Views:": "Bisitak:", + "Contributor:": "Laguntzailea:", + "Subject:": "Irakasgaia:", + "Language:": "Hizkuntza:", + "Description:": "Deskribapena:", + "Search": "Bilaketa", + "Search Relevance:": "Garrantzia:", + "Results for '{0}'": "'{0}'-rentzako emaitzak", + "Results for '{0}; (no actual results for '{1}' found)": "Ez da emaitzarik aurkitu '{1}'-rentzat. '{0}'-rentzako emaitzak erakusten", + "Comments": "Comentarios", + "Publish": "Publicar", + "Publish at {0}": "Argitaratu {0}-en", + "Reply": "Responder", + "Results {0}-{1} of {2}": " {2}-ren {0}-{1} emaitzak", + "Results {0}-{1} of {2} for \"{3}\"": "\"{3}\"-rentzako {2}-ko {0}-{1} emaitzak ", + "No recordings found": "Ez da bideorik aurkitu", + "No recordings found: \"{0}\"": "Ez da bideorik aurkitu honentzat: \"{0}\"", + "There are unsaved changes": "Gorde gabeko aldaketak daude", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "Emisión en directo: Este vÃdeo es una emisión en directo. Por tanto, algunas caracterÃsticas del reproductor están desactivadas", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Firefox bertsioa erabiltzen ari zara, eta beharrezkoak diren zenbait bideo-gaitasun ez daude erabilgarri Firefoxen gutxieneko _ bertsiora arte. Mesedez, eguneratu zure nabigatzailea eta probatu berriz.", + "This video is not compatible with any codec installed in your system": "Bideo hau ez da bateragarria zure sisteman instalatutako ezein kodek-ekin", + "Could not load the video": "Ezin izan da bideoa kargatu", + "Error! Captions format not supported.": "Error! El formato de los subtitulos no está soportado.", + "Trimming": "Hasierako eta bukaerako doikuntza", + "Breaks": "Atsedenaldiak", + "Break": "Atsedenaldia", + "Create a new break in the current position": "Gehitu atsedenaldi bat oraintxe", + "Delete selected break": "Ezabatu hautatutako atsedenaldia", + "Use this tool to create, delete and edit breaks. To create a break, select the time instant clicking the timeline's background and press 'create' button. Use this tab to edit the break text.": "Erabili tresna hau atsedenaldiak sortu, ezabatu eta editatzeko. Atsedenaldi bat sortzeko, hautatu denbora istanta, denbora lerroaren atzealdean klik eginez, eta sakatu ‘sortu’ botoia. Erabili erlaitz hau atsedenaldien testua editatzeko", + "Subtitles": "Azpidatziak", + "Search captions": "Bilatu azpidatziak", + "None": "Batere ez", + "Show statistics": "Erakutsi estatistikak", + "Navigate by slides": "Nabigatu diapositibetan", + "Go Fullscreen": "Joan pantaila osora", + "Exit Fullscreen": "Atera pantaila osotik", + "Your browser does not support fullscreen mode": "Zure nabigatzaileak ez du eusten pantaila osoa", + "Show help": "Erakutsi laguntza", + "Paella version:": "Paella bertsioa:", + "This video is a live stream": "Bideo hau zuzeneko emanaldi bat da", + "Presenter": "Aurkezlea", + "Slide": "Diapositiba", + "Change video quality": "Aldatu bideoaren kalitatea", + "Play": "Erreproduzitu", + "Pause": "Gelditu", + "Video score": "Bideoaren puntuazioa", + "Not rated": "Puntuatu gabea", + "Vote": "Bozkatu", + "Login to vote": "Hasi saioa bozkatzeko", + "Searching": "Bilatzen", + "Sorry! No results found.": "Sentitzen dugu, ez da emaitzarik aurkitu.", + "Enter editor mode": "Entrar en el editor", + "Share this video": "Partekatu bideo hau", + "Custom size:": "Tamaina pertsonalizatua:", + "Choose your embed size. Copy the text and paste it in your html page.": "Hautatu xurgatu beharreko bideoaren tamaina. Kopiatu testua eta itsatsi zure html orrialdean.", + "Width:": "Zabalera:", + "Height:": "Altuera:", + "Change theme": "Aldatu gaia", + "You are trying to modify the transcriptions, but you are not Logged in!": "Transkripzioak editatu nahi dituzu, baina ez zaude identifikatuta!", + "Continue editing the transcriptions anonymously": "Editar las transcripciones de forma anónima", + "Log in and edit the transcriptions": "Identificarse y editar las transcripciones", + "Under review": "Berrikusten", + "Change video layout": "aldatu bideoaren diseinua", + "Volume": "Bolumena" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_fr.json b/src/main/webapp/static/js/paella/player/localization/paella_fr.json new file mode 100644 index 0000000000000000000000000000000000000000..42896828066e603ed1a1b81294679aef344a5bc7 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_fr.json @@ -0,0 +1,99 @@ +{ + "Your browser is not compatible with the required video codec": "Votre navigateur n'a pas les codecs vidéo nécessaires.", + "It seems that your browser is not HTML 5 compatible": "Votre navigateur ne semble pas supporter HTML 5. Vous pouvez utiliser l'un des navigateurs suivants", + "The specified video identifier does not exist": "La vidéo demandée n'existe pas.", + "This video is not published": "Cette vidéo n'est pas publiée.", + "You are not authorized to view this resource": "Vous n'avez pas le droit de voir cette ressource.", + "You are not logged in": "Vous n'êtes pas identifié dans le système.", + "Continue anyway": "Continuez quand même.", + "1 second ago": "Il y a une seconde.", + "1 minute ago": "Il y a 1 minute.", + "1 hour ago": "Il y a 1 heure", + "1 day ago": "Il y a un jour.", + "1 month ago": "Il y a un mois", + "1 year ago": "Il y a un an", + "{0} seconds ago": "Il y a {0} secondes.", + "{0} minutes ago": "Il y a {0} minutes.", + "{0} hours ago": "Il y a {0} heures.", + "{0} days ago": "Il y a {0} jours.", + "{0} months ago": "Il y a {0} mois.", + "{0} years ago": "Il y a {0} ans.", + "Searching...": "Chercher...", + "Search in this recording": "Chercher dans cette vidéo.", + "Previous": "Précédent.", + "Page": "Page", + "Next": "Suivant.", + "Description": "Description", + "Videos in this series": "Les vidéos de cette série", + "Title": "Titre", + "Presenter": "Présentateur.", + "Series": "Série", + "Date": "Date", + "Views": "Visites", + "Contributor": "Contributeur", + "Subject": "Sujet", + "Language": "Langue", + "Search": "Chercher.", + "Search Relevance": "Pertinence", + "Results for '{0}'": "Résultats pour'{0}'", + "Results for '{0}: (no actual results for '{1}' found)": "Aucun résultat n'a été trouvé pour '{1}'. Affichage du résultat pour '{0}'", + "Comments": "Commentaires.", + "Publish": "Publier.", + "Publish at {0}": "Publier dans {0}", + "Reply": "Répondez.", + "Results {0}-{1} of {2}": "Résultats {0}-{1} de {2}", + "Results {0}-{1} of {2} for \"{3}\"": "Résultats {0}-{1} de {2} pour \"{3}\"", + "No recordings found": "Aucune vidéo trouvée.", + "No recordings found: \"{0}\"": "Aucune vidéo n'a été trouvée pour \"{0}\"", + "There are unsaved changes": "Il y a des changements non sauvegarder.", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "Diffusion en direct : Ceci est une diffusion en direct certaines possibilités de votre lecteur ont été désactivées", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Vous utilisez la version Firefox, et certaines capacit?s vidéo nécessaires ne sont pas disponibles avant la min_version de Firefox. Veuillez mettre à jour votre navigateur et réessayer.", + "This video is not compatible with any codec installed in your system": "Cette vidéo n'est compatible avec aucun codec installé sur votre système", + "Could not load the video": "La vidéo n'a pas pu être téléchargée.", + "Trimming": "Réglage du début et de la fin", + "Breaks": "Repose-toi.", + "Break": "Repose-toi.", + "Create a new break in the current position": "Ajoutez un peu de repos à l'instant présent.", + "Delete selected break": "Effacer le repos sélectionné.", + "Use this tool to create, delete and edit breaks. To create a break, select the time instant clicking the timeline's background and press 'create' button. Use this tab to edit the break text.": "Utilisez cet outil pour créer, supprimer et modifier des pauses. Pour créer une pause, sélectionnez l'instant en cliquant sur le bas de la ligne de temps, puis cliquez sur le bouton'Créer'. Utilisez cet onglet pour éditer le texte des pauses", + "Subtitles": "Sous-titres.", + "Search captions": "Recherche de sous-titres.", + "None": "Aucun.", + "Show statistics": "Afficher les statistiques.", + "Navigate by slides": "Naviguer dans les diapositives.", + "Go Fullscreen": "Aller en plein écran.", + "Exit Fullscreen": "Quitter plein écran.", + "Your browser does not support fullscreen mode": "Votre navigateur ne supporte pas le plein écran.", + "Show help": "Montrer de l'aide.", + "Paella version": "Version de Paella", + "This video is a live stream": "Cette vidéo est diffusée en direct.", + "Slide": "Diapositive", + "Change video quality": "Changer la qualité de la vidéo.", + "Play": "Joue.", + "Pause": "Pause.", + "Video score": "Note de la vidéo.", + "Not rated": "Pas noté.", + "Vote": "Votez.", + "Login to vote": "Connectez-vous pour voter.", + "Searching": "Je cherche.", + "Sorry! No results found.": "Désolé ! , aucun résultat trouvé.", + "Share this video": "Partagez cette vidéo.", + "Custom size": "Taille sur mesure", + "Choose your embed size. Copy the text and paste it in your html page.": "Choisissez la taille de la vidéo à intégrer. Copiez le texte et collez-le dans votre page html.", + "Width": "Largeur", + "Height": "Hauteur", + "Video loaded in {0} seconds": "Vidéo chargée en {0} secondes", + "Change theme": "Change de thème.", + "You are trying to modify the transcriptions, but you are not Logged in!": "Vous avez choisi d'éditer les transcriptions, mais vous n'êtes pas connecté !", + "Continue editing the transcriptions anonymously": "Modifier les transcriptions anonymement.", + "Log in and edit the transcriptions": "Identifiez-vous et éditez les transcriptions.", + "Under review": "Vérification.", + "Change video layout": "Modifier la mise en page de la vidéo.", + "Volume": "Volume.", + "Set playback rate": "Régler la vitesse de lecture", + "Rewind 10 seconds": "Reculer de 10 seconde", + "Forward 30 seconds": "Avancer de 30 seconde", + "Downloads": "Télécharger", + "Video file": "Fichier vidéo", + "Video zoom": "Zoom vidéo" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_gl.json b/src/main/webapp/static/js/paella/player/localization/paella_gl.json new file mode 100644 index 0000000000000000000000000000000000000000..ba94aeec4a479dee703516444a8099d1824b5cc5 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_gl.json @@ -0,0 +1,96 @@ +{ + "Your browser is not compatible with the required video codec": "O teu navegador non dispón dos códecs de vÃdeo necesarios.", + "It seems that your browser is not HTML 5 compatible": "Semella que o teu navegador non é compatible con HTML5. Podes usar un dos seguintes:", + "The specified video identifier does not exist": "O vÃdeo solicitado non existe", + "This video is not published": "Este vÃdeo non está publicado", + "You are not authorized to view this resource": "Non tes autorización para ver este recurso", + "You are not logged in": "Non estás identificado no sistema", + "Continue anyway": "Continuar de tódolos xeitos", + "1 second ago": "fai 1 segundo", + "1 minute ago": "fai 1 minuto", + "1 hour ago": "fai 1 hora", + "1 day ago": "fai 1 dia", + "1 month ago": "fai 1 mes", + "1 year ago": "fai 1 ano", + "{0} seconds ago": "fai {0} segundos", + "{0} minutes ago": "fai {0} minutos", + "{0} hours ago": "fai {0} horas", + "{0} days ago": "fai {0} dias", + "{0} months ago": "fai {0} meses", + "{0} years ago": "fai {0} anos", + "Searching...": "Pesquisando...", + "Search in this recording": "Pesquisar neste vÃdeo", + "Previous": "Anterior", + "Page:": "Páxina:", + "Next": "Seguinte", + "Description": "Descripción", + "Videos in this series:": "Videos nesta serie:", + "Title:": "TÃtulo:", + "Presenter:": "Poñente:", + "Series:": "Serie:", + "Date:": "Data:", + "Views:": "Visitas:", + "Contributor:": "ContribuÃnte:", + "Subject:": "Asignatura:", + "Language:": "Idioma:", + "Description:": "Descripción:", + "Search": "pesquisa", + "Search Relevance:": "Relevancia:", + "Results for '{0}'": "Resultados para '{0}'", + "Results for '{0}; (no actual results for '{1}' found)": "Non se encontraron resultados para '{1}'. Amosando resultados para '{0}'", + "Comments": "Comentarios", + "Publish": "Publicar", + "Publish at {0}": "Publicar en {0}", + "Reply": "Respostar", + "Results {0}-{1} of {2}": "Resultados {0}-{1} de {2}", + "Results {0}-{1} of {2} for \"{3}\"": "Resultados {0}-{1} de {2} para \"{3}\"", + "No recordings found": "NoN se atoparon videos", + "No recordings found: \"{0}\"": "Non se atoparon videos para: \"{0}\"", + "There are unsaved changes": "Hay cambios sen gardar", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "Emisión en directo: Este vÃdeo é una emisión en directo. Por tanto, algunas caracterÃsticas do reproductor están desactivadas", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Estás a utilizar Firefox versión e algunha das capacidades de vÃdeo necesaria non se atopa diponible ata Firefox versión. Por favor, actualiza o teu navegador e proba de novo.", + "This video is not compatible with any codec installed in your system": "Este vÃdeo non é compatible con ningún códec instalado no teu sistema", + "Could not load the video": "Non se pudo cargar o vÃdeo", + "Error! Captions format not supported.": "¡Erro! O formato dos subtÃtulos non é o soportado.", + "Trimming": "Axuste de inicio e fin", + "Breaks": "Descansos", + "Break": "Descanso", + "Create a new break in the current position": "Engade un descanso no instante actual", + "Delete selected break": "Borra o descanso seleccionado", + "Use this tool to create, delete and edit breaks. To create a break, select the time instant clicking the timeline's background and press 'create' button. Use this tab to edit the break text.": "Utiliza esta ferramenta para crear, borrar ou editar descansos. Para crear un descanso, selecciona o instante do tempo facendo clic no fondo da lÃnea de tempo, e pulsa o botón 'Crear'. Utiliza esta pestana para editar o texto dos descansos", + "Subtitles": "SubtÃtulos", + "Search captions": "Atopar SubtÃtulos", + "None": "Ningún", + "Show statistics": "Amosar as estadÃsticas", + "Navigate by slides": "Navegar polas diapositivas", + "Go Fullscreen": "Ir a pantalla completa", + "Exit Fullscreen": "Sair de pantalla completa", + "Your browser does not support fullscreen mode": "Seu navegador non soporta a pantalla completa", + "Show help": "Mostrar axuda", + "Paella version:": "Versión de paella:", + "This video is a live stream": "Este video é unha emisión en directo", + "Presenter": "Presentador", + "Slide": "Diapositiva", + "Change video quality": "Cambiar a calidade do video", + "Play": "Reproducir", + "Pause": "Pausar", + "Video score": "Puntuación do vÃdeo", + "Not rated": "Non puntuado", + "Vote": "Votar", + "Login to vote": "Inicia sesión para votar", + "Searching": "Realizando búsqueda", + "Sorry! No results found.": "SentÃmolo, Non se encontraron resultados.", + "Enter editor mode": "Entrar no editor", + "Share this video": "Comparte este video", + "Custom size:": "Tamaño personalizado:", + "Choose your embed size. Copy the text and paste it in your html page.": "Elixa o tamaño do video a embeber. Copie o texto e pégueo na sua página html.", + "Width:": "Ancho:", + "Height:": "Alto:", + "Change theme": "Cambiar o tema", + "You are trying to modify the transcriptions, but you are not Logged in!": "Has seleccionado editar as transcripciones, pero non estás identificado!", + "Continue editing the transcriptions anonymously": "Editar as transcripciones de forma anónima", + "Log in and edit the transcriptions": "Identificarse e editar as transcripciones", + "Under review": "Revisando", + "Change video layout": "Modificar o diseño do video", + "Volume": "Volumen" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/localization/paella_ru.json b/src/main/webapp/static/js/paella/player/localization/paella_ru.json new file mode 100644 index 0000000000000000000000000000000000000000..b05c400f1af5418ed345b2915b818c1374735737 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/localization/paella_ru.json @@ -0,0 +1,103 @@ +{ + "Your browser is not compatible with the required video codec": "Ваш браузер не поддерживает необходимого кодека.", + "It seems that your browser is not HTML 5 compatible": "Parece que tu navegador no es compatible con HTML 5. Puedes utilizar cualquiera de los siguientes navegadores:", + "The specified video identifier does not exist": "Видео Ñ Ñтим идентификатором не ÑущеÑтвует", + "This video is not published": "Ðто видео не опубликовано", + "You are not authorized to view this resource": "У Ð²Ð°Ñ Ð½ÐµÑ‚ прав на проÑмотр Ñтого реÑурÑа", + "You are not logged in": "Ð’Ñ‹ не авторизованы в ÑиÑтеме", + "Continue anyway": "Продолжить вÑÑ‘ равно", + "1 second ago": "1 Ñекунду назад", + "1 minute ago": "1 минуту назад", + "1 hour ago": "1 Ñ‡Ð°Ñ Ð½Ð°Ð·Ð°Ð´", + "1 day ago": "1 день назад", + "1 month ago": "1 меÑÑц назад", + "1 year ago": "1 год назад", + "{0} seconds ago": "{0} Ñекунд назад", + "{0} minutes ago": "{0} минут назад", + "{0} hours ago": "{0} чаÑов назад", + "{0} days ago": "{0} дней назад", + "{0} months ago": "{0} меÑÑцев назад", + "{0} years ago": "{0} лет назад", + "Searching...": "Ищем...", + "Search in this recording": "ИÑкать в Ñтой запиÑи", + "Previous": "Предыдущий", + "Page:": "Страница:", + "Next": "Следующий", + "Description": "ОпиÑание", + "Videos in this series:": "Другие видео из Ñтого раздела:", + "Title:": "Ðазвание:", + "Presenter:": "Ð’Ñ‹Ñтупающий:", + "Series:": "Разделы:", + "Date:": "Дата:", + "Views:": "ПроÑмотры:", + "Contributor:": "УчаÑтник:", + "Subject:": "Предмет:", + "Language:": "Язык:", + "Description:": "ОпиÑание:", + "Search": "ПоиÑк", + "Search Relevance:": "ÐктуальноÑÑ‚ÑŒ поиÑка:", + "Results for '{0}'": "Результаты Ð´Ð»Ñ '{0}'", + "Results for '{0}; (no actual results for '{1}' found)": "Ðе найдено ничего о '{1}'. Показаные результаты Ð´Ð»Ñ '{0}'", + "Comments": "Комментарии", + "Publish": "Опубликовать", + "Publish at {0}": "Опубликовать в {0}", + "Reply": "Ответить", + "Results {0}-{1} of {2}": "Результаты {0}-{1} из {2}", + "Results {0}-{1} of {2} for \"{3}\"": "Результаты {0}-{1} из {2} Ð´Ð»Ñ \"{3}\"", + "No recordings found": "ВидеозапиÑей не найдено", + "No recordings found: \"{0}\"": "ВидеозапиÑей на найдено: \"{0}\"", + "There are unsaved changes": "ЕÑÑ‚ÑŒ неÑохранённые изменениÑ", + "Live streaming mode: This is a live video, so, some capabilities of the player are disabled": "ПрÑмое вещаение. Ðекоторые возможноÑти Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½ÐµÐ´Ð¾Ñтупны.", + "You are using Firefox version, and some required video playback capabilities are not available until Firefox min_version. Please, update your browser and try again.": "Ð’Ñ‹ иÑпользуете FIrefox version. Ðекоторые возможноÑти по воÑпроизведению видео недоÑтупны до верÑии Firefox min_version. ПожалуйÑта, обновите браузер и попробуйте Ñнова.", + "This video is not compatible with any codec installed in your system": "Ðто виде не поддерживаетÑÑ Ð½Ð¸ одним из кодеков, уÑтановленных в вашей ÑиÑтеме.", + "Could not load the video": "Ðевозможно загрузить видео", + "Error! Captions format not supported.": "Ошибка! Ðтот формат Ñубтитров не поддерживаетÑÑ.", + "Trimming": "Обрезка", + "Breaks": "Разрывы", + "Break": "Разрыв", + "Create a new break in the current position": "Создать новый разрыв в текущей позиции", + "Delete selected break": "Удалить выбранный разрыв", + "Use this tool to create, delete and edit breaks. To create a break, select the time instant clicking the timeline's background and press 'create' button. Use this tab to edit the break text.": "ИÑпользуйте Ñтот инÑтрумент Ð´Ð»Ñ ÑозданиÑ, ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¸ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ñ€Ñ‹Ð²Ð¾Ð². Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ñ€Ñ‹Ð²Ð° выберите момент времени на временной шкале Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ мыши и нажмите кнопку 'Ñоздать'. ИÑпользуйте Ñту вкладку Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð°Ð²Ð½Ð¸Ñ Ñ‚ÐµÐºÑта разрыва", + "Subtitles": "Субтитры", + "Search captions": "ПоиÑк в заголовках", + "None": "Ðичего", + "Show statistics": "Показать ÑтатиÑтика", + "Navigate by slides": "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð¾ Ñлайдам", + "Go Fullscreen": "Перейти в полноÑкранный режим", + "Exit Fullscreen": "Выйти из полноÑкранного режима", + "Your browser does not support fullscreen mode": "Ваш браузер не поддерживает полноÑкранный режим", + "Show help": "Показать инÑтрукции по иÑпользованию", + "Paella version:": "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ:", + "This video is a live stream": "Ðто видео - транÑлÑÑ†Ð¸Ñ Ð² реальном времени.", + "Presenter": "Ð’Ñ‹Ñтупающий", + "Slide": "Слайд", + "Change video quality": "Изменить качеÑтво видео", + "Log in": "Вход в ÑиÑтему", + "Play": "ВоÑпроизведение", + "Pause": "Пауза", + "Video score": "Оценка видео", + "Not rated": "Ðе оценено", + "Vote": "ПроголоÑовать", + "Login to vote": "Войдите в ÑиÑтему Ð´Ð»Ñ Ð³Ð¾Ð»Ð¾ÑованиÑ", + "Searching": "Проводим поиÑк", + "Sorry! No results found.": "Извините, результатов не найдено.", + "Share this video": "ПоделитьÑÑ Ñтим видео", + "Custom size:": "Специальный размер:", + "Choose your embed size. Copy the text and paste it in your html page.": "Выберите размер Ð´Ð»Ñ Ð²ÑтраиваниÑ. Скопируйте текÑÑ‚ и добавьте его в код вашей html Ñтраницы.", + "Width:": "Ширина:", + "Height:": "Ð’Ñ‹Ñота:", + "Video loaded in {0} seconds": "Видео загружено за {0} Ñекунд", + "Change theme": "Изменить тему оформлениÑ", + "You are trying to modify the transcriptions, but you are not Logged in!": "Ð’Ñ‹ пытаетеÑÑŒ изменить подпиÑи, но не вошли в ÑиÑтему!", + "Continue editing the transcriptions anonymously": "Продолжить редактирование подпиÑей анонимно.", + "Log in and edit the transcriptions": "Войдите в ÑиÑтему Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñей", + "Under review": "Ð’ процеÑÑе рецензированиÑ", + "Change video layout": "Изменить раÑкладку видео", + "Volume": "ГромкоÑÑ‚ÑŒ", + "Set playback rate": "Задать ÑкороÑÑ‚ÑŒ воÑпроизведениÑ", + "Rewind 10 seconds": "Перемотать назад на 10 Ñекунд", + "Forward 30 seconds": "Перемотать вперёд на 30 Ñекунд", + "Downloads": "Загрузки", + "Video file": "Видеофайл", + "Video zoom": "Увеличение видео" +} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.min.css b/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.min.css new file mode 100755 index 0000000000000000000000000000000000000000..4cf729e4342a51d8b300e8d43f2f78b0a6faf403 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.slate.min.css b/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.slate.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d91207095cbdf8bc61fa33b8a1217ad113cd69b2 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/css/bootstrap.slate.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:31px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:21px;color:#c8c8c8;}a{color:#fff;text-decoration:none}a:hover,a:focus{color:#fff;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:31px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10.5px}.lead{margin-bottom:21px;font-size:21px;font-weight:200;line-height:31.5px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#7a8288}a.muted:hover,a.muted:focus{color:#62686d}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10.5px 0;font-family:inherit;font-weight:bold;line-height:21px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#7a8288}h1,h2,h3{line-height:42px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9.5px;margin:21px 0 31.5px;border-bottom:1px solid #bbbfc2}ul,ol{padding:0;margin:0 0 10.5px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:21px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:21px}dt,dd{line-height:21px}dt{font-weight:bold}dd{margin-left:10.5px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:21px 0;border:0;border-top:1px solid #1c1e22;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #7a8288}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 21px;border-left:5px solid #bbbfc2}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:21px;color:#7a8288}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #bbbfc2;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:21px;font-style:normal;line-height:21px}code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:12px;color:#3a3f44;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:10px;margin:0 0 10.5px;font-size:13px;line-height:21px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:21px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 21px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:21px;font-size:21px;line-height:42px;color:#3a3f44;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15.75px;color:#7a8288}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:21px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:21px;padding:4px 6px;margin-bottom:10.5px;font-size:14px;line-height:21px;color:#52575c;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:31px;*margin-top:4px;line-height:31px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#7a8288;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#7a8288}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#7a8288}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#7a8288}.radio,.checkbox{min-height:21px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#bbbfc2}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:20px 20px 21px;margin-top:21px;margin-bottom:21px;background-color:#202328;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#eee}.help-block{display:block;margin-bottom:10.5px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10.5px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:21px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:21px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#bbbfc2;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#d1eed1;border-color:#62c462}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10.5px}legend+.control-group{margin-top:21px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:21px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10.5px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:21px}.table th,.table td{padding:8px;line-height:21px;text-align:left;vertical-align:top;border-top:1px solid #1c1e22}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #1c1e22}.table .table{background-color:#272b30}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #1c1e22;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #1c1e22}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#2e3236}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#3a3f44}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#f3f3f3;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9.5px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:transparent;border-bottom:1px solid #1c1e22}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:21px;color:#7a8288;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#22262a;background-image:-moz-linear-gradient(top,#272b30,#1c1e22);background-image:-webkit-gradient(linear,0 0,0 100%,from(#272b30),to(#1c1e22));background-image:-webkit-linear-gradient(top,#272b30,#1c1e22);background-image:-o-linear-gradient(top,#272b30,#1c1e22);background-image:linear-gradient(to bottom,#272b30,#1c1e22);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff272b30',endColorstr='#ff1c1e22',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#22262a;background-image:-moz-linear-gradient(top,#272b30,#1c1e22);background-image:-webkit-gradient(linear,0 0,0 100%,from(#272b30),to(#1c1e22));background-image:-webkit-linear-gradient(top,#272b30,#1c1e22);background-image:-o-linear-gradient(top,#272b30,#1c1e22);background-image:linear-gradient(to bottom,#272b30,#1c1e22);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff272b30',endColorstr='#ff1c1e22',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#7a8288}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#0b0c0d;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#202328;border:1px solid #101214;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:21px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:21px;color:#3a3f44;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#3a3f44;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#3a3f44;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#bbbec2;*background-color:#bbbdc2;background-image:-moz-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbbfc2),to(#bbbdc2));background-image:-webkit-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:-o-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:linear-gradient(to bottom,#bbbfc2,#bbbdc2);background-repeat:repeat-x;border-color:#bbbdc2 #bbbdc2 #93969e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbbbfc2',endColorstr='#ffbbbdc2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#bbbdc2;*background-color:#aeb0b6}.btn-primary:active,.btn-primary.active{background-color:#a0a3aa \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#41454a;*background-color:#272b30;background-image:-moz-linear-gradient(top,#52575c,#272b30);background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),to(#272b30));background-image:-webkit-linear-gradient(top,#52575c,#272b30);background-image:-o-linear-gradient(top,#52575c,#272b30);background-image:linear-gradient(to bottom,#52575c,#272b30);background-repeat:repeat-x;border-color:#272b30 #272b30 #050506;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff272b30',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#272b30;*background-color:#1c1e22}.btn-inverse:active,.btn-inverse.active{background-color:#101214 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#fff;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#fff;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#3a3f44;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10.5px;margin-bottom:10.5px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#bbbdc2}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#272b30}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:21px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:21px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:21px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#bbbfc2}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:21px;color:#7a8288;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#fff}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9.5px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:21px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#bbbfc2 #bbbfc2 #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#52575c;cursor:default;background-color:#272b30;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#fff}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#fff;border-bottom-color:#fff}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#52575c;border-bottom-color:#52575c}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#7a8288;border-color:#7a8288}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#7a8288}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#bbbfc2 #ddd #bbbfc2 #bbbfc2}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#bbbfc2 #bbbfc2 #bbbfc2 #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#7a8288}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:21px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#32373c;background-image:-moz-linear-gradient(top,#3a3f44,#272b30);background-image:-webkit-gradient(linear,0 0,0 100%,from(#3a3f44),to(#272b30));background-image:-webkit-linear-gradient(top,#3a3f44,#272b30);background-image:-o-linear-gradient(top,#3a3f44,#272b30);background-image:linear-gradient(to bottom,#3a3f44,#272b30);background-repeat:repeat-x;border:1px solid #0c0d0e;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3a3f44',endColorstr='#ff272b30',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:9.5px 20px 9.5px;margin-left:-20px;font-size:20px;font-weight:200;color:#bbbfc2;text-shadow:0 1px 0 #3a3f44}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#c8c8c8}.navbar-link{color:#c8c8c8}.navbar-link:hover,.navbar-link:focus{color:#fff}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #3a3f44;border-left:1px solid #272b30}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:9.5px 15px 9.5px;color:#c8c8c8;text-decoration:none;text-shadow:0 1px 0 #3a3f44}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#fff;text-decoration:none;background-color:#3a3f44}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#fff;text-decoration:none;background-color:#272b30;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#272a2e;*background-color:#1c1e22;background-image:-moz-linear-gradient(top,#2e3236,#1c1e22);background-image:-webkit-gradient(linear,0 0,0 100%,from(#2e3236),to(#1c1e22));background-image:-webkit-linear-gradient(top,#2e3236,#1c1e22);background-image:-o-linear-gradient(top,#2e3236,#1c1e22);background-image:linear-gradient(to bottom,#2e3236,#1c1e22);background-repeat:repeat-x;border-color:#1c1e22 #1c1e22 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2e3236',endColorstr='#ff1c1e22',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#1c1e22;*background-color:#101214}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#050506 \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #3a3f44;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #3a3f44;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#272b30}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#c8c8c8;border-bottom-color:#c8c8c8}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1e2125;background-image:-moz-linear-gradient(top,#272b30,#101214);background-image:-webkit-gradient(linear,0 0,0 100%,from(#272b30),to(#101214));background-image:-webkit-linear-gradient(top,#272b30,#101214);background-image:-o-linear-gradient(top,#272b30,#101214);background-image:linear-gradient(to bottom,#272b30,#101214);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff272b30',endColorstr='#ff101214',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#7a8288;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#7a8288}.navbar-inverse .navbar-text{color:#7a8288}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#101214}.navbar-inverse .navbar-link{color:#7a8288}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#272b30;border-left-color:#101214}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#101214}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#7a8288;border-bottom-color:#7a8288}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#49515a;border-color:#101214;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#3a3f44;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#121417;*background-color:#050506;background-image:-moz-linear-gradient(top,#1c1e22,#050506);background-image:-webkit-gradient(linear,0 0,0 100%,from(#1c1e22),to(#050506));background-image:-webkit-linear-gradient(top,#1c1e22,#050506);background-image:-o-linear-gradient(top,#1c1e22,#050506);background-image:linear-gradient(to bottom,#1c1e22,#050506);background-repeat:repeat-x;border-color:#050506 #050506 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff1c1e22',endColorstr='#ff050506',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#050506;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 21px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#7a8288}.pagination{margin:21px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:21px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#7a8288;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#7a8288;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:21px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#7a8288;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#3a3f44;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#3a3f44;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#3a3f44;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#3a3f44;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#3a3f44;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#3a3f44;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#41474c;border-bottom:1px solid #353a3e;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#3a3f44;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#3a3f44;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#3a3f44;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#3a3f44;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:21px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:21px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#fff;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#52575c}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#7a8288}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#3a3f44}.label-inverse[href],.badge-inverse[href]{background-color:#232628}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:21px;margin-bottom:21px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:21px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:21px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#272b30;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#3a3f44;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:21px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:31.5px;color:inherit;background-color:#202328;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:31.5px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed}h1,h2,h3,h4,h5,h6{text-shadow:-1px -1px 0 rgba(0,0,0,0.3)}code,pre{text-shadow:none;background-color:#f7f7f7;border:1px solid #1c1e22}legend,.page-header{border-bottom:1px solid #1c1e22}hr{border-bottom:0}.navbar .navbar-inner{background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0)}.navbar .brand{font-weight:bold;text-shadow:1px 1px 1px rgba(0,0,0,0.3);border-right:1px solid #2e3134}.navbar .navbar-text{padding:0 15px;font-weight:bold}.navbar .nav>li>a{text-shadow:1px 1px 1px rgba(0,0,0,0.3);border-right:1px solid rgba(0,0,0,0.2);border-left:1px solid rgba(255,255,255,0.1)}.navbar .nav>li>a:hover{background-color:#3a3f44;background-image:-moz-linear-gradient(280deg,#272b30,#3a3f44);background-image:-webkit-linear-gradient(280deg,#272b30,#3a3f44);background-image:-o-linear-gradient(280deg,#272b30,#3a3f44);background-image:linear-gradient(280deg,#272b30,#3a3f44);background-repeat:repeat-x;border-right:1px solid transparent;border-left:1px solid transparent}.navbar .nav>li.active>a,.navbar .nav>li.active>a:hover{color:#bbbfc2;background-color:#3a3f44;background-color:#43494f;background-image:-moz-linear-gradient(280deg,#30353b,#43494f);background-image:-webkit-linear-gradient(280deg,#30353b,#43494f);background-image:-o-linear-gradient(280deg,#30353b,#43494f);background-image:linear-gradient(280deg,#30353b,#43494f);background-repeat:repeat-x;border-right:1px solid #2e3134}.navbar .navbar-search .search-query{border:1px solid #2e3134}.navbar .btn,.navbar .btn-group{margin:4px 0}.navbar .divider-vertical{background-color:transparent;border-right:0}.navbar .dropdown-menu::after{border-bottom:6px solid #3a3f44}.navbar-inverse .navbar-inner{background-color:#151719;background-image:-webkit-gradient(linear,0 0,0 100%,from(#202328),color-stop(70%,#151719),to(#151719));background-image:-webkit-linear-gradient(#202328,#151719 70%,#151719);background-image:-moz-linear-gradient(top,#202328,#151719 70%,#151719);background-image:-o-linear-gradient(#202328,#151719 70%,#151719);background-image:linear-gradient(#202328,#151719 70%,#151719);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff202328',endColorstr='#ff151719',GradientType=0)}.navbar-inverse .nav li>a{background-color:transparent;background-image:none}.navbar-inverse .nav li>a:hover,.navbar-inverse .nav li.active>a,.navbar-inverse .nav li.active>a:hover{background-color:#1c1e22;background-image:-moz-linear-gradient(280deg,#101214,#1c1e22);background-image:-webkit-linear-gradient(280deg,#101214,#1c1e22);background-image:-o-linear-gradient(280deg,#101214,#1c1e22);background-image:linear-gradient(280deg,#101214,#1c1e22);background-repeat:repeat-x}@media(max-width:979px){.navbar .nav-collapse .nav li>a,.navbar .nav-collapse .nav li>a:hover,.navbar .nav-collapse .nav .active>a,.navbar .nav-collapse .nav .active>a:hover{color:#bbbfc2;background-color:transparent;background-image:none;border:1px solid transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.navbar .nav-collapse .nav li>a:hover,.navbar .nav-collapse .nav .active>a:hover{background-color:#272b30}.navbar .nav-collapse .navbar-form,.navbar .nav-collapse .navbar-search{border-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.navbar .nav-collapse .nav-header{color:#7a8288}.navbar-inverse .nav-collapse .nav li>a:hover,.navbar-inverse .nav-collapse .nav .active>a:hover{background-color:#272b30!important}}div.subnav{margin:0 1px;background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;border:1px solid transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0);-webkit-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';-moz-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)'}div.subnav .nav>li>a{color:#bbbfc2;text-shadow:1px 1px 1px rgba(0,0,0,0.3);border-right:1px solid #2e3134;border-left:1px solid #52575c}div.subnav .nav>li>a:hover{color:#bbbfc2;background-color:#3a3f44;background-image:-moz-linear-gradient(280deg,#272b30,#3a3f44);background-image:-webkit-linear-gradient(280deg,#272b30,#3a3f44);background-image:-o-linear-gradient(280deg,#272b30,#3a3f44);background-image:linear-gradient(280deg,#272b30,#3a3f44);background-repeat:repeat-x;border-right:1px solid transparent;border-left:1px solid transparent}div.subnav .nav>li.active>a,div.subnav .nav>li.active>a:hover{color:#bbbfc2;background-color:#3a3f44;background-color:#43494f;background-image:-moz-linear-gradient(280deg,#30353b,#43494f);background-image:-webkit-linear-gradient(280deg,#30353b,#43494f);background-image:-o-linear-gradient(280deg,#30353b,#43494f);background-image:linear-gradient(280deg,#30353b,#43494f);background-repeat:repeat-x;border-right:1px solid #2e3134}div.subnav .nav>li:first-child>a,div.subnav .nav>li:first-child>a:hover{border-left:1px solid transparent}div.subnav .nav>li.active:last-child>a,div.subnav .nav>li:last-child>a:hover{border-right:1px solid #2e3134}div.subnav .open .dropdown-toggle{border-right:1px solid #2e3134;border-left:1px solid #52575c}div.subnav.subnav-fixed{top:40px;margin:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}div.subnav.subnav-fixed .nav>li.active:first-child>a,div.subnav.subnav-fixed .nav>li:first-child>a:hover{border-left:1px solid #2e3134}.nav .nav-header{text-shadow:-1px -1px 0 rgba(0,0,0,0.3)}.nav>li>a{font-weight:bold;color:#7a8288;text-shadow:1px 1px 1px rgba(0,0,0,0.3);background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;border:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0);-webkit-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';-moz-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)'}.nav li.active>a,.nav li.active>a:hover{color:#fff;background-color:transparent;border:0}.nav li>a:hover{color:#bbbfc2;background-color:transparent}.nav-list{background-color:#3a3f44;-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.4);-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.4);box-shadow:1px 1px 1px rgba(0,0,0,0.4)}.nav-list li>a{text-shadow:-1px -1px 0 rgba(0,0,0,0.3);background-image:none}.nav-list .nav-header{color:#52575c;text-shadow:-1px -1px 0 rgba(0,0,0,0.3)}.nav-list .divider{background-color:transparent;border-bottom:1px solid #1c1e22}.nav-tabs{border-bottom:0}.tabs-below .nav-tabs{border-top:0}.tabs-left .nav-tabs{border-right:0}.tabs-right .nav-tabs{border-left:none}.nav-tabs.nav-stacked li>a,.nav-tabs.nav-stacked li>a:hover{background-image:none;border:1px solid #1c1e22}.nav-tabs.nav-stacked li>a:hover,.nav-tabs.nav-stacked .active>a,.nav-tabs.nav-stacked .active>a:hover{color:#fff;background-color:#202328}.breadcrumb{background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;border:1px solid transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0);-webkit-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';-moz-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)'}.breadcrumb a{font-weight:bold;color:#bbbfc2}.breadcrumb li{font-weight:bold;color:#7a8288;text-shadow:1px 1px 1px rgba(0,0,0,0.3)}.pagination ul{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.pagination ul>li>a,.pagination ul>li>span{font-weight:bold;color:#bbbfc2;text-shadow:1px 1px 1px rgba(0,0,0,0.3);background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;border-top:0;border-right:1px solid #2e3134;border-bottom:0;border-left:1px solid #52575c;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0);-webkit-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';-moz-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)'}.pagination ul>li>a:hover,.pagination ul>li>span:hover{background-color:#3a3f44;background-image:-moz-linear-gradient(280deg,#272b30,#3a3f44);background-image:-webkit-linear-gradient(280deg,#272b30,#3a3f44);background-image:-o-linear-gradient(280deg,#272b30,#3a3f44);background-image:linear-gradient(280deg,#272b30,#3a3f44);background-repeat:repeat-x;border-left:1px solid transparent}.pagination ul>.active>a,.pagination ul>.active>a:hover,.pagination ul>.active>span,.pagination ul>.active>span:hover{color:#bbbfc2;background-color:#3a3f44;background-color:#43494f;background-image:-moz-linear-gradient(280deg,#30353b,#43494f);background-image:-webkit-linear-gradient(280deg,#30353b,#43494f);background-image:-o-linear-gradient(280deg,#30353b,#43494f);background-image:linear-gradient(280deg,#30353b,#43494f);background-repeat:repeat-x;border-left:1px solid transparent}.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>span,.pagination ul>.disabled>span:hover{background-color:#52575c;background-image:-webkit-gradient(linear,0 0,0 100%,from(#7a8288),color-stop(70%,#52575c),to(#52575c));background-image:-webkit-linear-gradient(#7a8288,#52575c 70%,#52575c);background-image:-moz-linear-gradient(top,#7a8288,#52575c 70%,#52575c);background-image:-o-linear-gradient(#7a8288,#52575c 70%,#52575c);background-image:linear-gradient(#7a8288,#52575c 70%,#52575c);background-repeat:no-repeat;border-top:0;border-right:1px solid #2e3134;border-bottom:0;border-left:1px solid #52575c;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff7a8288',endColorstr='#ff52575c',GradientType=0)}.pager li>a,.pager li>span{background-color:#3a3f44;background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),color-stop(70%,#3a3f44),to(#3a3f44));background-image:-webkit-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:-moz-linear-gradient(top,#52575c,#3a3f44 70%,#3a3f44);background-image:-o-linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-image:linear-gradient(#52575c,#3a3f44 70%,#3a3f44);background-repeat:no-repeat;border:1px solid transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3f44',GradientType=0);-webkit-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';-moz-box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)';box-shadow:'0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1)'}.pager li>a:hover,.pager li>span:hover{background-color:#3a3f44;background-image:-moz-linear-gradient(280deg,#272b30,#3a3f44);background-image:-webkit-linear-gradient(280deg,#272b30,#3a3f44);background-image:-o-linear-gradient(280deg,#272b30,#3a3f44);background-image:linear-gradient(280deg,#272b30,#3a3f44);background-repeat:repeat-x;border:1px solid transparent}.pager .disabled a,.pager .disabled a:hover{background-color:transparent}.btn{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#484d51;*background-color:#3a3e41;background-image:-moz-linear-gradient(top,#52575c,#3a3e41);background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),to(#3a3e41));background-image:-webkit-linear-gradient(top,#52575c,#3a3e41);background-image:-o-linear-gradient(top,#52575c,#3a3e41);background-image:linear-gradient(to bottom,#52575c,#3a3e41);background-repeat:repeat-x;border:1px solid #272b30;border-color:#3a3e41 #3a3e41 #161719;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff3a3e41',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#fff;background-color:#3a3e41;*background-color:#2e3134}.btn:active,.btn.active{background-color:#222426 \9}.btn,.btn:hover{font-weight:bold;color:#fff;text-shadow:-1px -1px 1px rgba(0,0,0,0.3)}.btn-primary{color:#fff;color:#3a3f44;text-shadow:0 -1px 0 rgba(0,0,0,0.25);text-shadow:1px 1px 1px rgba(255,255,255,0.3);background-color:#bbbec2;*background-color:#bbbdc2;background-image:-moz-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#bbbfc2),to(#bbbdc2));background-image:-webkit-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:-o-linear-gradient(top,#bbbfc2,#bbbdc2);background-image:linear-gradient(to bottom,#bbbfc2,#bbbdc2);background-repeat:repeat-x;border-color:#bbbdc2 #bbbdc2 #93959e;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffbbbfc2',endColorstr='#ffbbbdc2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#bbbdc2;*background-color:#aeb0b6}.btn-primary:active,.btn-primary.active{background-color:#a0a2aa \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#41454a;*background-color:#272b30;background-image:-moz-linear-gradient(top,#52575c,#272b30);background-image:-webkit-gradient(linear,0 0,0 100%,from(#52575c),to(#272b30));background-image:-webkit-linear-gradient(top,#52575c,#272b30);background-image:-o-linear-gradient(top,#52575c,#272b30);background-image:linear-gradient(to bottom,#52575c,#272b30);background-repeat:repeat-x;border-color:#272b30 #272b30 #050506;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff52575c',endColorstr='#ff272b30',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#272b30;*background-color:#1c1e22}.btn-inverse:active,.btn-inverse.active{background-color:#101214 \9}.caret{border-top-color:#fff}.table tbody tr.success td{background-color:#468847}.table tbody tr.error td{background-color:#b94a48}.table tbody tr.info td{background-color:#3a87ad}label,input,button,select,textarea,legend{color:#c8c8c8}legend,label{text-shadow:-1px -1px 0 rgba(0,0,0,0.3)}.input-prepend .add-on,.input-append .add-on{text-shadow:none;vertical-align:top;background-color:#52575c;border-top:1px solid #7a8288;border-right:1px solid #3a3f44;border-bottom:1px solid #3a3f44;border-left:1px solid #7a8288}.input-append .btn,.input-prepend .btn{padding:5px 14px;margin-top:-1px}.uneditable-input,input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{color:#bbbfc2}.form-actions{border-top:0}.dropdown-menu{-webkit-box-shadow:0 5px 5px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 5px rgba(0,0,0,0.2);box-shadow:0 5px 5px rgba(0,0,0,0.2)}.dropdown.open .dropdown-toggle{color:#bbbfc2;background-color:#3a3f44}.dropdown-submenu>a::after{border-left-color:#fff}.label,.alert{color:rgba(255,255,255,0.9);text-shadow:-1px -1px 0 rgba(0,0,0,0.3);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.3);-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.3);box-shadow:1px 1px 1px rgba(0,0,0,0.3)}.alert{background-color:#f89406;border-color:#f89406}.alert .alert-heading{color:rgba(255,255,255,0.9);text-shadow:-1px -1px 0 rgba(0,0,0,0.4)}.alert-success{background-color:#468847;border-color:#468847}.alert-error{background-color:#b94a48;border-color:#b94a48}.alert-info{background-color:#3a87ad;border-color:#3a87ad}.well,.hero-unit{-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5);-moz-box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5);box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5)}.thumbnail,a.thumbnail:hover{border:1px solid #1c1e22}.progress{background-color:#202328;background-image:-moz-linear-gradient(top,#202328,#202328);background-image:-webkit-gradient(linear,0 0,0 100%,from(#202328),to(#202328));background-image:-webkit-linear-gradient(top,#202328,#202328);background-image:-o-linear-gradient(top,#202328,#202328);background-image:linear-gradient(to bottom,#202328,#202328);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff202328',endColorstr='#ff202328',GradientType=0);-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5);-moz-box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5);box-shadow:inset 1px 1px 1px rgba(0,0,0,0.5)}.footer{border-top:1px solid #1c1e22}.footer p{color:#c8c8c8}.modal{background-color:#2e3236}.modal-header{border-bottom:0}.modal-body{border-bottom:1px solid #1c1e22}.modal-footer{background-color:#272b30;border-top:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media(max-width:979px){.navbar .brand{border-right:0}}@media(max-width:768px){div.subnav .nav>li+li>a{border-top:1px solid transparent}}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.eot b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.eot differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.svg b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000000000000000000000000000000000000..94fb5490a2ed10b2c69a4a567a4fd2e4f706d841 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata></metadata> +<defs> +<font id="glyphicons_halflingsregular" horiz-adv-x="1200" > +<font-face units-per-em="1200" ascent="960" descent="-240" /> +<missing-glyph horiz-adv-x="500" /> +<glyph horiz-adv-x="0" /> +<glyph horiz-adv-x="400" /> +<glyph unicode=" " /> +<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" /> +<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode=" " /> +<glyph unicode="¥" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" /> +<glyph unicode=" " horiz-adv-x="650" /> +<glyph unicode=" " horiz-adv-x="1300" /> +<glyph unicode=" " horiz-adv-x="650" /> +<glyph unicode=" " horiz-adv-x="1300" /> +<glyph unicode=" " horiz-adv-x="433" /> +<glyph unicode=" " horiz-adv-x="325" /> +<glyph unicode=" " horiz-adv-x="216" /> +<glyph unicode=" " horiz-adv-x="216" /> +<glyph unicode=" " horiz-adv-x="162" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="72" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="325" /> +<glyph unicode="€" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" /> +<glyph unicode="₽" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" /> +<glyph unicode="−" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="⌛" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" /> +<glyph unicode="◼" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="☁" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" /> +<glyph unicode="⛺" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " /> +<glyph unicode="✉" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" /> +<glyph unicode="✏" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" /> +<glyph unicode="" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" /> +<glyph unicode="" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" /> +<glyph unicode="" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" /> +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" /> +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" /> +<glyph unicode="" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" /> +<glyph unicode="" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" /> +<glyph unicode="" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" /> +<glyph unicode="" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" /> +<glyph unicode="" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" /> +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" /> +<glyph unicode="" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" /> +<glyph unicode="" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" /> +<glyph unicode="" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" /> +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" /> +<glyph unicode="" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" /> +<glyph unicode="" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" /> +<glyph unicode="" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" /> +<glyph unicode="" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" /> +<glyph unicode="" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" /> +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" /> +<glyph unicode="" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" /> +<glyph unicode="" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" /> +<glyph unicode="" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" /> +<glyph unicode="" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" /> +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" /> +<glyph unicode="" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" /> +<glyph unicode="" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" /> +<glyph unicode="" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" /> +<glyph unicode="" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" /> +<glyph unicode="" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" /> +<glyph unicode="" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" /> +<glyph unicode="" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" /> +<glyph unicode="" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" /> +<glyph unicode="" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" /> +<glyph unicode="" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" /> +<glyph unicode="" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" /> +<glyph unicode="" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" /> +<glyph unicode="" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" /> +<glyph unicode="" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" /> +<glyph unicode="" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" /> +<glyph unicode="" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" /> +<glyph unicode="" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" /> +<glyph unicode="" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" /> +<glyph unicode="" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" /> +<glyph unicode="" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" /> +<glyph unicode="" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" /> +<glyph unicode="" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" /> +<glyph unicode="" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" /> +<glyph unicode="" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" /> +<glyph unicode="" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" /> +<glyph unicode="" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" /> +<glyph unicode="" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" /> +<glyph unicode="" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" /> +<glyph unicode="" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" /> +<glyph unicode="" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" /> +<glyph unicode="" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" /> +<glyph unicode="" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" /> +<glyph unicode="" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" /> +<glyph unicode="" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" /> +<glyph unicode="" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" /> +<glyph unicode="" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" /> +<glyph unicode="" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" /> +<glyph unicode="" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" /> +<glyph unicode="" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" /> +<glyph unicode="" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" /> +<glyph unicode="" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" /> +<glyph unicode="" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" /> +<glyph unicode="" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" /> +<glyph unicode="" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" /> +<glyph unicode="" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" /> +<glyph unicode="" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" /> +<glyph unicode="" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" /> +<glyph unicode="" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" /> +<glyph unicode="" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" /> +<glyph unicode="" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" /> +<glyph unicode="" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " /> +<glyph unicode="" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" /> +<glyph unicode="" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" /> +<glyph unicode="" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" /> +<glyph unicode="" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" /> +<glyph unicode="" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" /> +<glyph unicode="" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" /> +<glyph unicode="" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" /> +<glyph unicode="" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" /> +<glyph unicode="" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" /> +<glyph unicode="" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" /> +<glyph unicode="" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" /> +<glyph unicode="" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" /> +<glyph unicode="" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" /> +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" /> +<glyph unicode="" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" /> +<glyph unicode="" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" /> +<glyph unicode="" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" /> +<glyph unicode="" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" /> +<glyph unicode="" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" /> +<glyph unicode="" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" /> +<glyph unicode="" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" /> +<glyph unicode="" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" /> +<glyph unicode="" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" /> +<glyph unicode="" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" /> +<glyph unicode="" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" /> +<glyph unicode="" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" /> +<glyph unicode="" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" /> +<glyph unicode="" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" /> +<glyph unicode="" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" /> +<glyph unicode="" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" /> +<glyph unicode="" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" /> +<glyph unicode="" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" /> +<glyph unicode="" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" /> +<glyph unicode="" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" /> +<glyph unicode="" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" /> +<glyph unicode="" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" /> +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" /> +<glyph unicode="" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" /> +<glyph unicode="" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" /> +<glyph unicode="" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" /> +<glyph unicode="" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" /> +<glyph unicode="" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" /> +<glyph unicode="" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" /> +<glyph unicode="" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" /> +<glyph unicode="" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" /> +<glyph unicode="" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" /> +<glyph unicode="" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" /> +<glyph unicode="" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" /> +<glyph unicode="" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" /> +<glyph unicode="" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" /> +<glyph unicode="" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" /> +<glyph unicode="" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " /> +<glyph unicode="" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" /> +<glyph unicode="" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" /> +<glyph unicode="" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" /> +<glyph unicode="" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" /> +<glyph unicode="" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" /> +<glyph unicode="" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" /> +<glyph unicode="" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" /> +<glyph unicode="" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" /> +<glyph unicode="" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" /> +<glyph unicode="" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" /> +<glyph unicode="" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" /> +<glyph unicode="" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" /> +<glyph unicode="" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" /> +<glyph unicode="" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" /> +<glyph unicode="" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" /> +<glyph unicode="" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" /> +<glyph unicode="" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" /> +<glyph unicode="" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" /> +<glyph unicode="" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" /> +<glyph unicode="" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" /> +<glyph unicode="" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" /> +<glyph unicode="" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" /> +<glyph unicode="" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" /> +<glyph unicode="" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" /> +<glyph unicode="" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" /> +<glyph unicode="" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" /> +<glyph unicode="" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" /> +<glyph unicode="" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" /> +<glyph unicode="" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" /> +<glyph unicode="" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" /> +<glyph unicode="" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" /> +<glyph unicode="🔑" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" /> +<glyph unicode="🚪" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" /> +</font> +</defs></svg> \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.ttf b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.ttf differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..9e612858f802245ddcbf59788a0db942224bab35 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings-white.png b/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings-white.png new file mode 100755 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings-white.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings.png b/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings.png new file mode 100755 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/bootstrap/img/glyphicons-halflings.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.js b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.js new file mode 100755 index 0000000000000000000000000000000000000000..4170ab416c5e4b4c6b21628b657d0e15fd5f4c2f --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.js @@ -0,0 +1,2287 @@ +/* =================================================== + * bootstrap-transition.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery); +/* ========================================================= + * bootstrap-modal.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element.show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.removeBackdrop() + that.$element.trigger('hidden') + }) + } + + , removeBackdrop: function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') + .appendTo(document.body) + + this.$backdrop.click( + this.options.backdrop == 'static' ? + $.proxy(this.$element[0].focus, this.$element[0]) + : $.proxy(this.hide, this) + ) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop.one($.support.transition.end, callback) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + $.support.transition && this.$element.hasClass('fade')? + this.$backdrop.one($.support.transition.end, callback) : + callback() + + } else if (callback) { + callback() + } + } + } + + + /* MODAL PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.modal + + $.fn.modal = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('modal') + , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option]() + else if (options.show) data.show() + }) + } + + $.fn.modal.defaults = { + backdrop: true + , keyboard: true + , show: true + } + + $.fn.modal.Constructor = Modal + + + /* MODAL NO CONFLICT + * ================= */ + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + /* MODAL DATA-API + * ============== */ + + $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + , href = $this.attr('href') + , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 + , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data()) + + e.preventDefault() + + $target + .modal(option) + .one('hide', function () { + $this.focus() + }) + }) + +}(window.jQuery); + +/* ============================================================ + * bootstrap-dropdown.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) { + if (e.which == 27) $parent.find(toggle).focus() + return $this.click() + } + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = selector && $(selector) + + if (!$parent || !$parent.length) $parent = $this.parent() + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api', clearMenus) + .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown-menu', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery); + +/* ============================================================= + * bootstrap-scrollspy.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#scrollspy + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* SCROLLSPY CLASS DEFINITION + * ========================== */ + + function ScrollSpy(element, options) { + var process = $.proxy(this.process, this) + , $element = $(element).is('body') ? $(window) : $(element) + , href + this.options = $.extend({}, $.fn.scrollspy.defaults, options) + this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process) + this.selector = (this.options.target + || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + || '') + ' .nav li > a' + this.$body = $('body') + this.refresh() + this.process() + } + + ScrollSpy.prototype = { + + constructor: ScrollSpy + + , refresh: function () { + var self = this + , $targets + + this.offsets = $([]) + this.targets = $([]) + + $targets = this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + , href = $el.data('target') || $el.attr('href') + , $href = /^#\w/.test(href) && $(href) + return ( $href + && $href.length + && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + self.offsets.push(this[0]) + self.targets.push(this[1]) + }) + } + + , process: function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight + , maxScroll = scrollHeight - this.$scrollElement.height() + , offsets = this.offsets + , targets = this.targets + , activeTarget = this.activeTarget + , i + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets.last()[0]) + && this.activate ( i ) + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) + && this.activate( targets[i] ) + } + } + + , activate: function (target) { + var active + , selector + + this.activeTarget = target + + $(this.selector) + .parent('.active') + .removeClass('active') + + selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + active = $(selector) + .parent('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active.closest('li.dropdown').addClass('active') + } + + active.trigger('activate') + } + + } + + + /* SCROLLSPY PLUGIN DEFINITION + * =========================== */ + + var old = $.fn.scrollspy + + $.fn.scrollspy = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('scrollspy') + , options = typeof option == 'object' && option + if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.scrollspy.Constructor = ScrollSpy + + $.fn.scrollspy.defaults = { + offset: 10 + } + + + /* SCROLLSPY NO CONFLICT + * ===================== */ + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + /* SCROLLSPY DATA-API + * ================== */ + + $(window).on('load', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + $spy.scrollspy($spy.data()) + }) + }) + +}(window.jQuery); +/* ======================================================== + * bootstrap-tab.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#tabs + * ======================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TAB CLASS DEFINITION + * ==================== */ + + var Tab = function (element) { + this.element = $(element) + } + + Tab.prototype = { + + constructor: Tab + + , show: function () { + var $this = this.element + , $ul = $this.closest('ul:not(.dropdown-menu)') + , selector = $this.attr('data-target') + , previous + , $target + , e + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + if ( $this.parent('li').hasClass('active') ) return + + previous = $ul.find('.active:last a')[0] + + e = $.Event('show', { + relatedTarget: previous + }) + + $this.trigger(e) + + if (e.isDefaultPrevented()) return + + $target = $(selector) + + this.activate($this.parent('li'), $ul) + this.activate($target, $target.parent(), function () { + $this.trigger({ + type: 'shown' + , relatedTarget: previous + }) + }) + } + + , activate: function ( element, container, callback) { + var $active = container.find('> .active') + , transition = callback + && $.support.transition + && $active.hasClass('fade') + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + + element.addClass('active') + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if ( element.parent('.dropdown-menu') ) { + element.closest('li.dropdown').addClass('active') + } + + callback && callback() + } + + transition ? + $active.one($.support.transition.end, next) : + next() + + $active.removeClass('in') + } + } + + + /* TAB PLUGIN DEFINITION + * ===================== */ + + var old = $.fn.tab + + $.fn.tab = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tab') + if (!data) $this.data('tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tab.Constructor = Tab + + + /* TAB NO CONFLICT + * =============== */ + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + /* TAB DATA-API + * ============ */ + + $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { + e.preventDefault() + $(this).tab('show') + }) + +}(window.jQuery); +/* =========================================================== + * bootstrap-tooltip.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#tooltips + * Inspired by the original jQuery.tipsy by Jason Frame + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* TOOLTIP PUBLIC CLASS DEFINITION + * =============================== */ + + var Tooltip = function (element, options) { + this.init('tooltip', element, options) + } + + Tooltip.prototype = { + + constructor: Tooltip + + , init: function (type, element, options) { + var eventIn + , eventOut + , triggers + , trigger + , i + + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.enabled = true + + triggers = this.options.trigger.split(' ') + + for (i = triggers.length; i--;) { + trigger = triggers[i] + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + eventIn = trigger == 'hover' ? 'mouseenter' : 'focus' + eventOut = trigger == 'hover' ? 'mouseleave' : 'blur' + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + , getOptions: function (options) { + options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay + , hide: options.delay + } + } + + return options + } + + , enter: function (e) { + var defaults = $.fn[this.type].defaults + , options = {} + , self + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }, this) + + self = $(e.currentTarget)[this.type](options).data(this.type) + + if (!self.options.delay || !self.options.delay.show) return self.show() + + clearTimeout(this.timeout) + self.hoverState = 'in' + this.timeout = setTimeout(function() { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + , leave: function (e) { + var self = $(e.currentTarget)[this.type](this._options).data(this.type) + + if (this.timeout) clearTimeout(this.timeout) + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.hoverState = 'out' + this.timeout = setTimeout(function() { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + , show: function () { + var $tip + , pos + , actualWidth + , actualHeight + , placement + , tp + , e = $.Event('show') + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $tip = this.tip() + this.setContent() + + if (this.options.animation) { + $tip.addClass('fade') + } + + placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + + pos = this.getPosition() + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + + switch (placement) { + case 'bottom': + tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'top': + tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2} + break + case 'left': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth} + break + case 'right': + tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width} + break + } + + this.applyPlacement(tp, placement) + this.$element.trigger('shown') + } + } + + , applyPlacement: function(offset, placement){ + var $tip = this.tip() + , width = $tip[0].offsetWidth + , height = $tip[0].offsetHeight + , actualWidth + , actualHeight + , delta + , replace + + $tip + .offset(offset) + .addClass(placement) + .addClass('in') + + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + replace = true + } + + if (placement == 'bottom' || placement == 'top') { + delta = 0 + + if (offset.left < 0){ + delta = offset.left * -2 + offset.left = 0 + $tip.offset(offset) + actualWidth = $tip[0].offsetWidth + actualHeight = $tip[0].offsetHeight + } + + this.replaceArrow(delta - width + actualWidth, actualWidth, 'left') + } else { + this.replaceArrow(actualHeight - height, actualHeight, 'top') + } + + if (replace) $tip.offset(offset) + } + + , replaceArrow: function(delta, dimension, position){ + this + .arrow() + .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') + } + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + , hide: function () { + var that = this + , $tip = this.tip() + , e = $.Event('hide') + + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + function removeWithAnimation() { + var timeout = setTimeout(function () { + $tip.off($.support.transition.end).detach() + }, 500) + + $tip.one($.support.transition.end, function () { + clearTimeout(timeout) + $tip.detach() + }) + } + + $.support.transition && this.$tip.hasClass('fade') ? + removeWithAnimation() : + $tip.detach() + + this.$element.trigger('hidden') + + return this + } + + , fixTitle: function () { + var $e = this.$element + if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + , hasContent: function () { + return this.getTitle() + } + + , getPosition: function () { + var el = this.$element[0] + return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { + width: el.offsetWidth + , height: el.offsetHeight + }, this.$element.offset()) + } + + , getTitle: function () { + var title + , $e = this.$element + , o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + , tip: function () { + return this.$tip = this.$tip || $(this.options.template) + } + + , arrow: function(){ + return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow") + } + + , validate: function () { + if (!this.$element[0].parentNode) { + this.hide() + this.$element = null + this.options = null + } + } + + , enable: function () { + this.enabled = true + } + + , disable: function () { + this.enabled = false + } + + , toggleEnabled: function () { + this.enabled = !this.enabled + } + + , toggle: function (e) { + var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this + self.tip().hasClass('in') ? self.hide() : self.show() + } + + , destroy: function () { + this.hide().$element.off('.' + this.type).removeData(this.type) + } + + } + + + /* TOOLTIP PLUGIN DEFINITION + * ========================= */ + + var old = $.fn.tooltip + + $.fn.tooltip = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('tooltip') + , options = typeof option == 'object' && option + if (!data) $this.data('tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.tooltip.Constructor = Tooltip + + $.fn.tooltip.defaults = { + animation: true + , placement: 'top' + , selector: false + , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' + , trigger: 'hover focus' + , title: '' + , delay: 0 + , html: false + , container: false + } + + + /* TOOLTIP NO CONFLICT + * =================== */ + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(window.jQuery); + +/* =========================================================== + * bootstrap-popover.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#popovers + * =========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* POPOVER PUBLIC CLASS DEFINITION + * =============================== */ + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + + /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js + ========================================== */ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, { + + constructor: Popover + + , setContent: function () { + var $tip = this.tip() + , title = this.getTitle() + , content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content) + + $tip.removeClass('fade top bottom left right in') + } + + , hasContent: function () { + return this.getTitle() || this.getContent() + } + + , getContent: function () { + var content + , $e = this.$element + , o = this.options + + content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) + || $e.attr('data-content') + + return content + } + + , tip: function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + } + return this.$tip + } + + , destroy: function () { + this.hide().$element.off('.' + this.type).removeData(this.type) + } + + }) + + + /* POPOVER PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.popover + + $.fn.popover = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('popover') + , options = typeof option == 'object' && option + if (!data) $this.data('popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.popover.Constructor = Popover + + $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, { + placement: 'right' + , trigger: 'click' + , content: '' + , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' + }) + + + /* POPOVER NO CONFLICT + * =================== */ + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(window.jQuery); + +/* ========================================================== + * bootstrap-affix.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#affix + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* AFFIX CLASS DEFINITION + * ====================== */ + + var Affix = function (element, options) { + this.options = $.extend({}, $.fn.affix.defaults, options) + this.$window = $(window) + .on('scroll.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this)) + this.$element = $(element) + this.checkPosition() + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var scrollHeight = $(document).height() + , scrollTop = this.$window.scrollTop() + , position = this.$element.offset() + , offset = this.options.offset + , offsetBottom = offset.bottom + , offsetTop = offset.top + , reset = 'affix affix-top affix-bottom' + , affix + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top() + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + + affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? + false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? + 'bottom' : offsetTop != null && scrollTop <= offsetTop ? + 'top' : false + + if (this.affixed === affix) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? position.top - scrollTop : null + + this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) + } + + + /* AFFIX PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.affix + + $.fn.affix = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('affix') + , options = typeof option == 'object' && option + if (!data) $this.data('affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.affix.Constructor = Affix + + $.fn.affix.defaults = { + offset: 0 + } + + + /* AFFIX NO CONFLICT + * ================= */ + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + /* AFFIX DATA-API + * ============== */ + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + , data = $spy.data() + + data.offset = data.offset || {} + + data.offsetBottom && (data.offset.bottom = data.offsetBottom) + data.offsetTop && (data.offset.top = data.offsetTop) + + $spy.affix(data) + }) + }) + + +}(window.jQuery); +/* ========================================================== + * bootstrap-alert.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery); +/* ============================================================ + * bootstrap-button.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new paella.Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery); +/* ============================================================= + * bootstrap-collapse.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery); +/* ========================================================== + * bootstrap-carousel.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.jQuery); +/* ============================================================= + * bootstrap-typeahead.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#typeahead + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function($){ + + "use strict"; // jshint ;_; + + + /* TYPEAHEAD PUBLIC CLASS DEFINITION + * ================================= */ + + var Typeahead = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.typeahead.defaults, options) + this.matcher = this.options.matcher || this.matcher + this.sorter = this.options.sorter || this.sorter + this.highlighter = this.options.highlighter || this.highlighter + this.updater = this.options.updater || this.updater + this.source = this.options.source + this.$menu = $(this.options.menu) + this.shown = false + this.listen() + } + + Typeahead.prototype = { + + constructor: Typeahead + + , select: function () { + var val = this.$menu.find('.active').attr('data-value') + this.$element + .val(this.updater(val)) + .change() + return this.hide() + } + + , updater: function (item) { + return item + } + + , show: function () { + var pos = $.extend({}, this.$element.position(), { + height: this.$element[0].offsetHeight + }) + + this.$menu + .insertAfter(this.$element) + .css({ + top: pos.top + pos.height + , left: pos.left + }) + .show() + + this.shown = true + return this + } + + , hide: function () { + this.$menu.hide() + this.shown = false + return this + } + + , lookup: function (event) { + var items + + this.query = this.$element.val() + + if (!this.query || this.query.length < this.options.minLength) { + return this.shown ? this.hide() : this + } + + items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source + + return items ? this.process(items) : this + } + + , process: function (items) { + var that = this + + items = $.grep(items, function (item) { + return that.matcher(item) + }) + + items = this.sorter(items) + + if (!items.length) { + return this.shown ? this.hide() : this + } + + return this.render(items.slice(0, this.options.items)).show() + } + + , matcher: function (item) { + return ~item.toLowerCase().indexOf(this.query.toLowerCase()) + } + + , sorter: function (items) { + var beginswith = [] + , caseSensitive = [] + , caseInsensitive = [] + , item + + while (item = items.shift()) { + if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item) + else if (~item.indexOf(this.query)) caseSensitive.push(item) + else caseInsensitive.push(item) + } + + return beginswith.concat(caseSensitive, caseInsensitive) + } + + , highlighter: function (item) { + var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&') + return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { + return '<strong>' + match + '</strong>' + }) + } + + , render: function (items) { + var that = this + + items = $(items).map(function (i, item) { + i = $(that.options.item).attr('data-value', item) + i.find('a').html(that.highlighter(item)) + return i[0] + }) + + items.first().addClass('active') + this.$menu.html(items) + return this + } + + , next: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , next = active.next() + + if (!next.length) { + next = $(this.$menu.find('li')[0]) + } + + next.addClass('active') + } + + , prev: function (event) { + var active = this.$menu.find('.active').removeClass('active') + , prev = active.prev() + + if (!prev.length) { + prev = this.$menu.find('li').last() + } + + prev.addClass('active') + } + + , listen: function () { + this.$element + .on('focus', $.proxy(this.focus, this)) + .on('blur', $.proxy(this.blur, this)) + .on('keypress', $.proxy(this.keypress, this)) + .on('keyup', $.proxy(this.keyup, this)) + + if (this.eventSupported('keydown')) { + this.$element.on('keydown', $.proxy(this.keydown, this)) + } + + this.$menu + .on('click', $.proxy(this.click, this)) + .on('mouseenter', 'li', $.proxy(this.mouseenter, this)) + .on('mouseleave', 'li', $.proxy(this.mouseleave, this)) + } + + , eventSupported: function(eventName) { + var isSupported = eventName in this.$element + if (!isSupported) { + this.$element.setAttribute(eventName, 'return;') + isSupported = typeof this.$element[eventName] === 'function' + } + return isSupported + } + + , move: function (e) { + if (!this.shown) return + + switch(e.keyCode) { + case 9: // tab + case 13: // enter + case 27: // escape + e.preventDefault() + break + + case 38: // up arrow + e.preventDefault() + this.prev() + break + + case 40: // down arrow + e.preventDefault() + this.next() + break + } + + e.stopPropagation() + } + + , keydown: function (e) { + this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27]) + this.move(e) + } + + , keypress: function (e) { + if (this.suppressKeyPressRepeat) return + this.move(e) + } + + , keyup: function (e) { + switch(e.keyCode) { + case 40: // down arrow + case 38: // up arrow + case 16: // shift + case 17: // ctrl + case 18: // alt + break + + case 9: // tab + case 13: // enter + if (!this.shown) return + this.select() + break + + case 27: // escape + if (!this.shown) return + this.hide() + break + + default: + this.lookup() + } + + e.stopPropagation() + e.preventDefault() + } + + , focus: function (e) { + this.focused = true + } + + , blur: function (e) { + this.focused = false + if (!this.mousedover && this.shown) this.hide() + } + + , click: function (e) { + e.stopPropagation() + e.preventDefault() + this.select() + this.$element.focus() + } + + , mouseenter: function (e) { + this.mousedover = true + this.$menu.find('.active').removeClass('active') + $(e.currentTarget).addClass('active') + } + + , mouseleave: function (e) { + this.mousedover = false + if (!this.focused && this.shown) this.hide() + } + + } + + + /* TYPEAHEAD PLUGIN DEFINITION + * =========================== */ + + var old = $.fn.typeahead + + $.fn.typeahead = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('typeahead') + , options = typeof option == 'object' && option + if (!data) $this.data('typeahead', (data = new Typeahead(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.typeahead.defaults = { + source: [] + , items: 8 + , menu: '<ul class="typeahead dropdown-menu"></ul>' + , item: '<li><a href="#"></a></li>' + , minLength: 1 + } + + $.fn.typeahead.Constructor = Typeahead + + + /* TYPEAHEAD NO CONFLICT + * =================== */ + + $.fn.typeahead.noConflict = function () { + $.fn.typeahead = old + return this + } + + + /* TYPEAHEAD DATA-API + * ================== */ + + $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { + var $this = $(this) + if ($this.data('typeahead')) return + $this.typeahead($this.data()) + }) + +}(window.jQuery); diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.min.js b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.min.js new file mode 100755 index 0000000000000000000000000000000000000000..f6736a8608a9ce72019335a85c14986f354b9675 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/** +* Bootstrap.js by @fat & @mdo +* plugins: bootstrap-transition.js, bootstrap-modal.js, bootstrap-dropdown.js, bootstrap-scrollspy.js, bootstrap-tab.js, bootstrap-tooltip.js, bootstrap-popover.js, bootstrap-affix.js, bootstrap-alert.js, bootstrap-button.js, bootstrap-collapse.js, bootstrap-carousel.js, bootstrap-typeahead.js +* Copyright 2012 Twitter, Inc. +* http://www.apache.org/licenses/LICENSE-2.0.txt +*/ +!function(a){a(function(){a.support.transition=function(){var a=function(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},c;for(c in b)if(a.style[c]!==undefined)return b[c]}();return a&&{end:a}}()})}(window.jQuery),!function(a){var b=function(b,c){this.options=c,this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this)),this.options.remote&&this.$element.find(".modal-body").load(this.options.remote)};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this,c=a.Event("show");this.$element.trigger(c);if(this.isShown||c.isDefaultPrevented())return;this.isShown=!0,this.escape(),this.backdrop(function(){var c=a.support.transition&&b.$element.hasClass("fade");b.$element.parent().length||b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in").attr("aria-hidden",!1),b.enforceFocus(),c?b.$element.one(a.support.transition.end,function(){b.$element.focus().trigger("shown")}):b.$element.focus().trigger("shown")})},hide:function(b){b&&b.preventDefault();var c=this;b=a.Event("hide"),this.$element.trigger(b);if(!this.isShown||b.isDefaultPrevented())return;this.isShown=!1,this.escape(),a(document).off("focusin.modal"),this.$element.removeClass("in").attr("aria-hidden",!0),a.support.transition&&this.$element.hasClass("fade")?this.hideWithTransition():this.hideModal()},enforceFocus:function(){var b=this;a(document).on("focusin.modal",function(a){b.$element[0]!==a.target&&!b.$element.has(a.target).length&&b.$element.focus()})},escape:function(){var a=this;this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.modal",function(b){b.which==27&&a.hide()}):this.isShown||this.$element.off("keyup.dismiss.modal")},hideWithTransition:function(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),b.hideModal()},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),b.hideModal()})},hideModal:function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden")})},removeBackdrop:function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},backdrop:function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.$backdrop.click(this.options.backdrop=="static"?a.proxy(this.$element[0].focus,this.$element[0]):a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in");if(!b)return;e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b):b()):b&&b()}};var c=a.fn.modal;a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=a.extend({},a.fn.modal.defaults,d.data(),typeof c=="object"&&c);e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():f.show&&e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0,show:!0},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f).one("hide",function(){c.focus()})})}(window.jQuery),!function(a){function d(){a(b).each(function(){e(a(this)).removeClass("open")})}function e(b){var c=b.attr("data-target"),d;c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,"")),d=c&&a(c);if(!d||!d.length)d=b.parent();return d}var b="[data-toggle=dropdown]",c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),f,g;if(c.is(".disabled, :disabled"))return;return f=e(c),g=f.hasClass("open"),d(),g||f.toggleClass("open"),c.focus(),!1},keydown:function(c){var d,f,g,h,i,j;if(!/(38|40|27)/.test(c.keyCode))return;d=a(this),c.preventDefault(),c.stopPropagation();if(d.is(".disabled, :disabled"))return;h=e(d),i=h.hasClass("open");if(!i||i&&c.keyCode==27)return c.which==27&&h.find(b).focus(),d.click();f=a("[role=menu] li:not(.divider):visible a",h);if(!f.length)return;j=f.index(f.filter(":focus")),c.keyCode==38&&j>0&&j--,c.keyCode==40&&j<f.length-1&&j++,~j||(j=0),f.eq(j).focus()}};var f=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=f,this},a(document).on("click.dropdown.data-api",d).on("click.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.dropdown-menu",function(a){a.stopPropagation()}).on("click.dropdown.data-api",b,c.prototype.toggle).on("keydown.dropdown.data-api",b+", [role=menu]",c.prototype.keydown)}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll-spy.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body"),this.refresh(),this.process()}b.prototype={constructor:b,refresh:function(){var b=this,c;this.offsets=a([]),this.targets=a([]),c=this.$body.find(this.selector).map(function(){var c=a(this),d=c.data("target")||c.attr("href"),e=/^#\w/.test(d)&&a(d);return e&&e.length&&[[e.position().top+(!a.isWindow(b.$scrollElement.get(0))&&b.$scrollElement.scrollTop()),d]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,c=b-this.$scrollElement.height(),d=this.offsets,e=this.targets,f=this.activeTarget,g;if(a>=c)return f!=(g=e.last()[0])&&this.activate(g);for(g=d.length;g--;)f!=e[g]&&a>=d[g]&&(!d[g+1]||a<=d[g+1])&&this.activate(e[g])},activate:function(b){var c,d;this.activeTarget=b,a(this.selector).parent(".active").removeClass("active"),d=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',c=a(d).parent("li").addClass("active"),c.parent(".dropdown-menu").length&&(c=c.closest("li.dropdown").addClass("active")),c.trigger("activate")}};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f,g;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active:last a")[0],g=a.Event("show",{relatedTarget:e}),b.trigger(g);if(g.isDefaultPrevented())return;f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),!function(a){var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f,g,h,i;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,g=this.options.trigger.split(" ");for(i=g.length;i--;)h=g[i],h=="click"?this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this)):h!="manual"&&(e=h=="hover"?"mouseenter":"focus",f=h=="hover"?"mouseleave":"blur",this.$element.on(e+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f+"."+this.type,this.options.selector,a.proxy(this.leave,this)));this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,this.$element.data(),b),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a.fn[this.type].defaults,d={},e;this._options&&a.each(this._options,function(a,b){c[a]!=b&&(d[a]=b)},this),e=a(b.currentTarget)[this.type](d).data(this.type);if(!e.options.delay||!e.options.delay.show)return e.show();clearTimeout(this.timeout),e.hoverState="in",this.timeout=setTimeout(function(){e.hoverState=="in"&&e.show()},e.options.delay.show)},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);this.timeout&&clearTimeout(this.timeout);if(!c.options.delay||!c.options.delay.hide)return c.hide();c.hoverState="out",this.timeout=setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide)},show:function(){var b,c,d,e,f,g,h=a.Event("show");if(this.hasContent()&&this.enabled){this.$element.trigger(h);if(h.isDefaultPrevented())return;b=this.tip(),this.setContent(),this.options.animation&&b.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,b[0],this.$element[0]):this.options.placement,b.detach().css({top:0,left:0,display:"block"}),this.options.container?b.appendTo(this.options.container):b.insertAfter(this.$element),c=this.getPosition(),d=b[0].offsetWidth,e=b[0].offsetHeight;switch(f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}this.applyPlacement(g,f),this.$element.trigger("shown")}},applyPlacement:function(a,b){var c=this.tip(),d=c[0].offsetWidth,e=c[0].offsetHeight,f,g,h,i;c.offset(a).addClass(b).addClass("in"),f=c[0].offsetWidth,g=c[0].offsetHeight,b=="top"&&g!=e&&(a.top=a.top+e-g,i=!0),b=="bottom"||b=="top"?(h=0,a.left<0&&(h=a.left*-2,a.left=0,c.offset(a),f=c[0].offsetWidth,g=c[0].offsetHeight),this.replaceArrow(h-d+f,f,"left")):this.replaceArrow(g-e,g,"top"),i&&c.offset(a)},replaceArrow:function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},setContent:function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},hide:function(){function e(){var b=setTimeout(function(){c.off(a.support.transition.end).detach()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.detach()})}var b=this,c=this.tip(),d=a.Event("hide");this.$element.trigger(d);if(d.isDefaultPrevented())return;return c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?e():c.detach(),this.$element.trigger("hidden"),this},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},hasContent:function(){return this.getTitle()},getPosition:function(){var b=this.$element[0];return a.extend({},typeof b.getBoundingClientRect=="function"?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},arrow:function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(b){var c=b?a(b.currentTarget)[this.type](this._options).data(this.type):this;c.tip().hasClass("in")?c.hide():c.show()},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),!function(a){var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=(typeof c.content=="function"?c.content.call(b[0]):c.content)||b.attr("data-content"),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip},destroy:function(){this.hide().$element.off("."+this.type).removeData(this.type)}});var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),!function(a){var b=function(b,c){this.options=a.extend({},a.fn.affix.defaults,c),this.$window=a(window).on("scroll.affix.data-api",a.proxy(this.checkPosition,this)).on("click.affix.data-api",a.proxy(function(){setTimeout(a.proxy(this.checkPosition,this),1)},this)),this.$element=a(b),this.checkPosition()};b.prototype.checkPosition=function(){if(!this.$element.is(":visible"))return;var b=a(document).height(),c=this.$window.scrollTop(),d=this.$element.offset(),e=this.options.offset,f=e.bottom,g=e.top,h="affix affix-top affix-bottom",i;typeof e!="object"&&(f=g=e),typeof g=="function"&&(g=e.top()),typeof f=="function"&&(f=e.bottom()),i=this.unpin!=null&&c+this.unpin<=d.top?!1:f!=null&&d.top+this.$element.height()>=b-f?"bottom":g!=null&&c<=g?"top":!1;if(this.affixed===i)return;this.affixed=i,this.unpin=i=="bottom"?d.top-c:null,this.$element.removeClass(h).addClass("affix"+(i?"-"+i:""))};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("affix"),f=typeof c=="object"&&c;e||d.data("affix",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.defaults={offset:0},a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery),!function(a){var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function f(){e.trigger("closed").remove()}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.trigger(b=a.Event("close"));if(b.isDefaultPrevented())return;e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.alert.data-api",b,c.prototype.close)}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b,c,d,e;if(this.transitioning||this.$element.hasClass("in"))return;b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find("> .accordion-group > .in");if(d&&d.length){e=d.data("collapse");if(e&&e.transitioning)return;d.collapse("hide"),e||d.data("collapse",null)}this.$element[b](0),this.transition("addClass",a.Event("show"),"shown"),a.support.transition&&this.$element[b](this.$element[0][c])},hide:function(){var b;if(this.transitioning||!this.$element.hasClass("in"))return;b=this.dimension(),this.reset(this.$element[b]()),this.transition("removeClass",a.Event("hide"),"hidden"),this.$element[b](0)},reset:function(a){var b=this.dimension();return this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element[a!==null?"addClass":"removeClass"]("collapse"),this},transition:function(b,c,d){var e=this,f=function(){c.type=="show"&&e.reset(),e.transitioning=0,e.$element.trigger(d)};this.$element.trigger(c);if(c.isDefaultPrevented())return;this.transitioning=1,this.$element[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=a.extend({},a.fn.collapse.defaults,d.data(),typeof c=="object"&&c);e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();c[a(e).hasClass("in")?"addClass":"removeClass"]("collapsed"),a(e).collapse(f)})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.options.pause=="hover"&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.prototype={cycle:function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},getActiveIndex:function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},to:function(b){var c=this.getActiveIndex(),d=this;if(b>this.$items.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){d.to(b)}):c==b?this.pause().cycle():this.slide(b>c?"next":"prev",a(this.$items[b]))},pause:function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),clearInterval(this.interval),this.interval=null,this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this,j;this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),j=a.Event("slide",{relatedTarget:e[0],direction:g});if(e.hasClass("active"))return;this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")}));if(a.support.transition&&this.$element.hasClass("slide")){this.$element.trigger(j);if(j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})}else{this.$element.trigger(j);if(j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=a.extend({},a.fn.carousel.defaults,typeof c=="object"&&c),g=typeof c=="string"?c:f.slide;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.defaults={interval:5e3,pause:"hover"},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),c.data()),g;e.carousel(f),(g=c.attr("data-slide-to"))&&e.data("carousel").pause().to(g).cycle(),b.preventDefault()})}(window.jQuery),!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.source=this.options.source,this.$menu=a(this.options.menu),this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(this.updater(a)).change(),this.hide()},updater:function(a){return a},show:function(){var b=a.extend({},this.$element.position(),{height:this.$element[0].offsetHeight});return this.$menu.insertAfter(this.$element).css({top:b.top+b.height,left:b.left}).show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(c=a.isFunction(this.source)?this.source(this.query,a.proxy(this.process,this)):this.source,c?this.process(c):this)},process:function(b){var c=this;return b=a.grep(b,function(a){return c.matcher(a)}),b=this.sorter(b),b.length?this.render(b.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){var b=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return a.replace(new RegExp("("+b+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("focus",a.proxy(this.focus,this)).on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),this.eventSupported("keydown")&&this.$element.on("keydown",a.proxy(this.keydown,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this)).on("mouseleave","li",a.proxy(this.mouseleave,this))},eventSupported:function(a){var b=a in this.$element;return b||(this.$element.setAttribute(a,"return;"),b=typeof this.$element[a]=="function"),b},move:function(a){if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}a.stopPropagation()},keydown:function(b){this.suppressKeyPressRepeat=~a.inArray(b.keyCode,[40,38,9,13,27]),this.move(b)},keypress:function(a){if(this.suppressKeyPressRepeat)return;this.move(a)},keyup:function(a){switch(a.keyCode){case 40:case 38:case 16:case 17:case 18:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}a.stopPropagation(),a.preventDefault()},focus:function(a){this.focused=!0},blur:function(a){this.focused=!1,!this.mousedover&&this.shown&&this.hide()},click:function(a){a.stopPropagation(),a.preventDefault(),this.select(),this.$element.focus()},mouseenter:function(b){this.mousedover=!0,this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")},mouseleave:function(a){this.mousedover=!1,!this.focused&&this.shown&&this.hide()}};var c=a.fn.typeahead;a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},a.fn.typeahead.Constructor=b,a.fn.typeahead.noConflict=function(){return a.fn.typeahead=c,this},a(document).on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;c.typeahead(c.data())})}(window.jQuery) \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/bootstrap/js/npm.js b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/npm.js new file mode 100644 index 0000000000000000000000000000000000000000..bf6aa80602d9303b61e8d5e63c10568e55b6a4d8 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/bootstrap/js/npm.js @@ -0,0 +1,13 @@ +// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. +require('../../js/transition.js') +require('../../js/alert.js') +require('../../js/button.js') +require('../../js/carousel.js') +require('../../js/collapse.js') +require('../../js/dropdown.js') +require('../../js/modal.js') +require('../../js/tooltip.js') +require('../../js/popover.js') +require('../../js/scrollspy.js') +require('../../js/tab.js') +require('../../js/affix.js') \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/deps/dash.all.js b/src/main/webapp/static/js/paella/player/resources/deps/dash.all.js new file mode 100644 index 0000000000000000000000000000000000000000..843ab7a3e274f74513e164b8f2229a22def07301 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/deps/dash.all.js @@ -0,0 +1,14 @@ +!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(b,c,d){"use strict";var e={};e.encode=function(a){for(var b=[],c=0;c<a.length;++c){var d=a.charCodeAt(c);d<128?b.push(d):d<2048?(b.push(192|d>>6),b.push(128|63&d)):d<65536?(b.push(224|d>>12),b.push(128|63&d>>6),b.push(128|63&d)):(b.push(240|d>>18),b.push(128|63&d>>12),b.push(128|63&d>>6),b.push(128|63&d))}return b},e.decode=function(a){for(var b=[],c=0;c<a.length;){var d=a[c++];d<128||(d<224?(d=(31&d)<<6,d|=63&a[c++]):d<240?(d=(15&d)<<12,d|=(63&a[c++])<<6,d|=63&a[c++]):(d=(7&d)<<18,d|=(63&a[c++])<<12,d|=(63&a[c++])<<6,d|=63&a[c++])),b.push(String.fromCharCode(d))}return b.join("")};var f={};!function(b){var c=function(a){for(var c=0,d=[],e=0|a.length/3;0<e--;){var f=(a[c]<<16)+(a[c+1]<<8)+a[c+2];c+=3,d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push(b.charAt(63&f))}if(2==a.length-c){var f=(a[c]<<16)+(a[c+1]<<8);d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push(b.charAt(63&f>>6)),d.push("=")}else if(1==a.length-c){var f=a[c]<<16;d.push(b.charAt(63&f>>18)),d.push(b.charAt(63&f>>12)),d.push("==")}return d.join("")},d=function(){for(var a=[],c=0;c<b.length;++c)a[b.charCodeAt(c)]=c;return a["=".charCodeAt(0)]=0,a}(),g=function(a){for(var b=0,c=[],e=0|a.length/4;0<e--;){var f=(d[a.charCodeAt(b)]<<18)+(d[a.charCodeAt(b+1)]<<12)+(d[a.charCodeAt(b+2)]<<6)+d[a.charCodeAt(b+3)];c.push(255&f>>16),c.push(255&f>>8),c.push(255&f),b+=4}return c&&("="==a.charAt(b-2)?(c.pop(),c.pop()):"="==a.charAt(b-1)&&c.pop()),c},h={};h.encode=function(a){for(var b=[],c=0;c<a.length;++c)b.push(a.charCodeAt(c));return b},h.decode=function(b){for(var c=0;c<s.length;++c)a[c]=String.fromCharCode(a[c]);return a.join("")},f.decodeArray=function(a){var b=g(a);return new Uint8Array(b)},f.encodeASCII=function(a){var b=h.encode(a);return c(b)},f.decodeASCII=function(a){var b=g(a);return h.decode(b)},f.encode=function(a){var b=e.encode(a);return c(b)},f.decode=function(a){var b=g(a);return e.decode(b)}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),"undefined"!=typeof d&&(d.decode=f.decode,d.decodeArray=f.decodeArray)},{}],2:[function(a,b,c){"use strict";!function(a){var b={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},c=function(a){var c=a;return b.hasOwnProperty(a)&&(c=b[a]),String.fromCharCode(c)},d=15,e=32,f={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},g={17:2,18:4,21:6,22:8,23:10,19:13,20:15},h={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},i={25:2,26:4,29:6,30:8,31:10,27:13,28:15},j=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],k={verboseFilter:{DATA:3,DEBUG:3,INFO:2,WARNING:2,TEXT:1,ERROR:0},time:null,verboseLevel:0,setTime:function(a){this.time=a},log:function(a,b){var c=this.verboseFilter[a];this.verboseLevel>=c&&console.log(this.time+" ["+a+"] "+b)}},l=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c].toString(16));return b},m=function(a,b,c,d,e){this.foreground=a||"white",this.underline=b||!1,this.italics=c||!1,this.background=d||"black",this.flash=e||!1};m.prototype={reset:function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},setStyles:function(a){for(var b=["foreground","underline","italics","background","flash"],c=0;c<b.length;c++){var d=b[c];a.hasOwnProperty(d)&&(this[d]=a[d])}},isDefault:function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},equals:function(a){return this.foreground===a.foreground&&this.underline===a.underline&&this.italics===a.italics&&this.background===a.background&&this.flash===a.flash},copy:function(a){this.foreground=a.foreground,this.underline=a.underline,this.italics=a.italics,this.background=a.background,this.flash=a.flash},toString:function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}};var n=function(a,b,c,d,e,f){this.uchar=a||" ",this.penState=new m(b,c,d,e,f)};n.prototype={reset:function(){this.uchar=" ",this.penState.reset()},setChar:function(a,b){this.uchar=a,this.penState.copy(b)},setPenState:function(a){this.penState.copy(a)},equals:function(a){return this.uchar===a.uchar&&this.penState.equals(a.penState)},copy:function(a){this.uchar=a.uchar,this.penState.copy(a.penState)},isEmpty:function(){return" "===this.uchar&&this.penState.isDefault()}};var o=function(){this.chars=[];for(var a=0;a<e;a++)this.chars.push(new n);this.pos=0,this.currPenState=new m};o.prototype={equals:function(a){for(var b=!0,c=0;c<e;c++)if(!this.chars[c].equals(a.chars[c])){b=!1;break}return b},copy:function(a){for(var b=0;b<e;b++)this.chars[b].copy(a.chars[b])},isEmpty:function(){for(var a=!0,b=0;b<e;b++)if(!this.chars[b].isEmpty()){a=!1;break}return a},setCursor:function(a){this.pos!==a&&(this.pos=a),this.pos<0?(k.log("ERROR","Negative cursor position "+this.pos),this.pos=0):this.pos>e&&(k.log("ERROR","Too large cursor position "+this.pos),this.pos=e)},moveCursor:function(a){var b=this.pos+a;if(a>1)for(var c=this.pos+1;c<b+1;c++)this.chars[c].setPenState(this.currPenState);this.setCursor(b)},backSpace:function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},insertChar:function(a){a>=144&&this.backSpace();var b=c(a);return this.pos>=e?void k.log("ERROR","Cannot insert "+a.toString(16)+" ("+b+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(b,this.currPenState),void this.moveCursor(1))},clearFromPos:function(a){var b;for(b=a;b<e;b++)this.chars[b].reset()},clear:function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},clearToEndOfRow:function(){this.clearFromPos(this.pos)},getTextString:function(){for(var a=[],b=!0,c=0;c<e;c++){var d=this.chars[c].uchar;" "!==d&&(b=!1),a.push(d)}return b?"":a.join("")},setPenStyles:function(a){this.currPenState.setStyles(a);var b=this.chars[this.pos];b.setPenState(this.currPenState)}};var p=function(){this.rows=[];for(var a=0;a<d;a++)this.rows.push(new o);this.currRow=d-1,this.nrRollUpRows=null,this.reset()};p.prototype={reset:function(){for(var a=0;a<d;a++)this.rows[a].clear();this.currRow=d-1},equals:function(a){for(var b=!0,c=0;c<d;c++)if(!this.rows[c].equals(a.rows[c])){b=!1;break}return b},copy:function(a){for(var b=0;b<d;b++)this.rows[b].copy(a.rows[b])},isEmpty:function(){for(var a=!0,b=0;b<d;b++)if(!this.rows[b].isEmpty()){a=!1;break}return a},backSpace:function(){var a=this.rows[this.currRow];a.backSpace()},clearToEndOfRow:function(){var a=this.rows[this.currRow];a.clearToEndOfRow()},insertChar:function(a){var b=this.rows[this.currRow];b.insertChar(a)},setPen:function(a){var b=this.rows[this.currRow];b.setPenStyles(a)},moveCursor:function(a){var b=this.rows[this.currRow];b.moveCursor(a)},setCursor:function(a){k.log("INFO","setCursor: "+a);var b=this.rows[this.currRow];b.setCursor(a)},setPAC:function(a){k.log("INFO","pacData = "+JSON.stringify(a));var b=a.row-1;this.nrRollUpRows&&b<this.nrRollUpRows-1&&(b=this.nrRollUpRows-1),this.currRow=b;var c=this.rows[this.currRow];if(null!==a.indent){var d=a.indent,e=Math.max(d-1,0);c.setCursor(a.indent),a.color=c.chars[e].penState.foreground}var f={foreground:a.color,underline:a.underline,italics:a.italics,background:"black",flash:!1};this.setPen(f)},setBkgData:function(a){k.log("INFO","bkgData = "+JSON.stringify(a)),this.backSpace(),this.setPen(a),this.insertChar(32)},setRollUpRows:function(a){this.nrRollUpRows=a},rollUp:function(){if(null===this.nrRollUpRows)return void k.log("DEBUG","roll_up but nrRollUpRows not set yet");k.log("TEXT",this.getDisplayText());var a=this.currRow+1-this.nrRollUpRows,b=this.rows.splice(a,1)[0];b.clear(),this.rows.splice(this.currRow,0,b),k.log("INFO","Rolling up")},getDisplayText:function(a){a=a||!1;for(var b=[],c="",e=-1,f=0;f<d;f++){var g=this.rows[f].getTextString();g&&(e=f+1,a?b.push("Row "+e+': "'+g+'"'):b.push(g.trim()))}return b.length>0&&(c=a?"["+b.join(" | ")+"]":b.join("\n")),c},getTextAndFormat:function(){return this.rows}};var q=function(a,b){this.chNr=a,this.outputFilter=b,this.mode=null,this.verbose=0,this.displayedMemory=new p,this.nonDisplayedMemory=new p,this.lastOutputScreen=new p,this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null};q.prototype={modes:["MODE_ROLL-UP","MODE_POP-ON","MODE_PAINT-ON","MODE_TEXT"],reset:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[d-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},getHandler:function(){return this.outputFilter},setHandler:function(a){this.outputFilter=a},setPAC:function(a){this.writeScreen.setPAC(a)},setBkgData:function(a){this.writeScreen.setBkgData(a)},setMode:function(a){a!==this.mode&&(this.mode=a,k.log("INFO","MODE="+a),"MODE_POP-ON"==this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=a)},insertChars:function(a){for(var b=0;b<a.length;b++)this.writeScreen.insertChar(a[b]);var c=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";k.log("INFO",c+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(k.log("TEXT","DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())},cc_RCL:function(){k.log("INFO","RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},cc_BS:function(){k.log("INFO","BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},cc_AOF:function(){},cc_AON:function(){},cc_DER:function(){k.log("INFO","DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},cc_RU:function(a){k.log("INFO","RU("+a+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(a)},cc_FON:function(){k.log("INFO","FON - Flash On"),this.writeScreen.setPen({flash:!0})},cc_RDC:function(){k.log("INFO","RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},cc_TR:function(){k.log("INFO","TR"),this.setMode("MODE_TEXT")},cc_RTD:function(){k.log("INFO","RTD"),this.setMode("MODE_TEXT")},cc_EDM:function(){k.log("INFO","EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate()},cc_CR:function(){k.log("CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate()},cc_ENM:function(){k.log("INFO","ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},cc_EOC:function(){if(k.log("INFO","EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var a=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=a,this.writeScreen=this.nonDisplayedMemory,k.log("TEXT","DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate()},cc_TO:function(a){k.log("INFO","TO("+a+") - Tab Offset"),this.writeScreen.moveCursor(a)},cc_MIDROW:function(a){var b={flash:!1};if(b.underline=a%2===1,b.italics=a>=46,b.italics)b.foreground="white";else{var c=Math.floor(a/2)-16,d=["white","green","blue","cyan","red","yellow","magenta"];b.foreground=d[c]}k.log("INFO","MIDROW: "+JSON.stringify(b)),this.writeScreen.setPen(b)},outputDataUpdate:function(){var a=k.time;null!==a&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(a,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:a):this.cueStartTime=a,this.lastOutputScreen.copy(this.displayedMemory))},cueSplitAtTime:function(a){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,a,this.displayedMemory),this.cueStartTime=a))}};var r=function(a,b,c){this.field=a||1,this.outputs=[b,c],this.channels=[new q(1,b),new q(2,c)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}};r.prototype={getHandler:function(a){return this.channels[a].getHandler()},setHandler:function(a,b){this.channels[a].setHandler(b)},addData:function(a,b){var c,d,e,f=!1;this.lastTime=a,k.setTime(a);for(var g=0;g<b.length;g+=2)if(d=127&b[g],e=127&b[g+1],0!==d||0!==e){if(k.log("DATA","["+l([b[g],b[g+1]])+"] -> ("+l([d,e])+")"),c=this.parseCmd(d,e),c||(c=this.parseMidrow(d,e)),c||(c=this.parsePAC(d,e)),c||(c=this.parseBackgroundAttributes(d,e)),!c&&(f=this.parseChars(d,e)))if(this.currChNr&&this.currChNr>=0){var h=this.channels[this.currChNr-1];h.insertChars(f)}else k.log("WARNING","No channel found yet. TEXT-MODE?");c?this.dataCounters.cmd+=2:f?this.dataCounters.char+=2:(this.dataCounters.other+=2,k.log("WARNING","Couldn't parse cleaned data "+l([d,e])+" orig: "+l([b[g],b[g+1]])))}else this.dataCounters.padding+=2},parseCmd:function(a,b){var c=null,d=(20===a||28===a)&&32<=b&&b<=47,e=(23===a||31===a)&&33<=b&&b<=35;if(!d&&!e)return!1;if(a===this.lastCmdA&&b===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,k.log("DEBUG","Repeated command ("+l([a,b])+") is dropped"),!0;c=20===a||23===a?1:2;var f=this.channels[c-1];return 20===a||28===a?32===b?f.cc_RCL():33===b?f.cc_BS():34===b?f.cc_AOF():35===b?f.cc_AON():36===b?f.cc_DER():37===b?f.cc_RU(2):38===b?f.cc_RU(3):39===b?f.cc_RU(4):40===b?f.cc_FON():41===b?f.cc_RDC():42===b?f.cc_TR():43===b?f.cc_RTD():44===b?f.cc_EDM():45===b?f.cc_CR():46===b?f.cc_ENM():47===b&&f.cc_EOC():f.cc_TO(b-32),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},parseMidrow:function(a,b){var c=null;if((17===a||25===a)&&32<=b&&b<=47){if(c=17===a?1:2,c!==this.currChNr)return k.log("ERROR","Mismatch channel in midrow parsing"),!1;var d=this.channels[c-1];return d.cc_MIDROW(b),k.log("DEBUG","MIDROW ("+l([a,b])+")"),!0}return!1},parsePAC:function(a,b){var c=null,d=null,e=(17<=a&&a<=23||25<=a&&a<=31)&&64<=b&&b<=127,j=(16===a||24===a)&&64<=b&&b<=95;if(!e&&!j)return!1;if(a===this.lastCmdA&&b===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;c=a<=23?1:2,d=64<=b&&b<=95?1===c?f[a]:h[a]:1===c?g[a]:i[a];var k=this.interpretPAC(d,b),l=this.channels[c-1];return l.setPAC(k),this.lastCmdA=a,this.lastCmdB=b,this.currChNr=c,!0},interpretPAC:function(a,b){var c=b,d={color:null,italics:!1,indent:null,underline:!1,row:a};return c=b>95?b-96:b-64,d.underline=1===(1&c),c<=13?d.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(c/2)]:c<=15?(d.italics=!0,d.color="white"):d.indent=4*Math.floor((c-16)/2),d},parseChars:function(a,b){var d=null,e=null,f=null;if(a>=25?(d=2,f=a-8):(d=1,f=a),17<=f&&f<=19){var g=b;g=17===f?b+80:18===f?b+112:b+144,k.log("INFO","Special char '"+c(g)+"' in channel "+d),e=[g]}else 32<=a&&a<=127&&(e=0===b?[a]:[a,b]);if(e){var h=l(e);k.log("DEBUG","Char codes = "+h.join(",")),this.lastCmdA=null,this.lastCmdB=null}return e},parseBackgroundAttributes:function(a,b){var c,d,e,f,g=(16===a||24===a)&&32<=b&&b<=47,h=(23===a||31===a)&&45<=b&&b<=47;return!(!g&&!h)&&(c={},16===a||24===a?(d=Math.floor((b-32)/2),c.background=j[d],b%2===1&&(c.background=c.background+"_semi")):45===b?c.background="transparent":(c.foreground="black",47===b&&(c.underline=!0)),e=a<24?1:2,f=this.channels[e-1],f.setBkgData(c),this.lastCmdA=null,this.lastCmdB=null,!0)},reset:function(){for(var a=0;a<this.channels.length;a++)this.channels[a]&&this.channels[a].reset();this.lastCmdA=null,this.lastCmdB=null},cueSplitAtTime:function(a){for(var b=0;b<this.channels.length;b++)this.channels[b]&&this.channels[b].cueSplitAtTime(a)}};var s=function(a,b,c){for(var d=0,e=b,f=0,g=[],h=function(a,b,c,d){if(4!==a||b<8)return null;var e=c.getUint8(d),f=c.getUint16(d+1),g=c.getUint32(d+3),h=c.getUint8(d+7);return 181==e&&49==f&&1195456820==g&&3==h};e<b+c;){if(d=a.getUint32(e),f=31&a.getUint8(e+4),6===f)for(var i=e+5,j=-1;i<e+4+d-1;){j=0;for(var k=255;255===k;)k=a.getUint8(i),j+=k,i++;var l=0;for(k=255;255===k;)k=a.getUint8(i),l+=k,i++;h(j,l,a,i)&&g.push([i,l]),i+=l}e+=d+4}return g},t=function(a,b){var c=b[0],d=[[],[]];c+=8;var e=31&a.getUint8(c);c+=2;for(var f=0;f<e;f++){var g=a.getUint8(c),h=4&g,i=3&g;c++;var j=a.getUint8(c);c++;var k=a.getUint8(c);c++,h&&(127&j)+(127&k)!==0&&(0===i?(d[0].push(j),d[0].push(k)):1===i&&(d[1].push(j),d[1].push(k)))}return d};a.logger=k,a.PenState=m,a.CaptionScreen=p,a.Cea608Parser=r,a.findCea608Nalus=s,a.extractCea608DataFromRange=t}("undefined"==typeof c?(void 0).cea608parser={}:c)},{}],3:[function(a,b,c){"use strict";function d(a){var b,c,d;for(b=[],d=0,c=a.length;d<c;d+=1)a[d].isRoot?b.push("root"):b.push(a[d].name);var e=function(a,b){var c;if(null!==a&&null!==b)for(c in a)a.hasOwnProperty(c)&&(b.hasOwnProperty(c)||(b[c]=a[c]))},f=function(a,b,c){var d,f,g,h,i;if(null!==a&&0!==a.length)for(d=0,f=a.length;d<f;d+=1)g=a[d],b.hasOwnProperty(g.name)&&(c.hasOwnProperty(g.name)?g.merge&&(h=b[g.name],i=c[g.name],"object"==typeof h&&"object"==typeof i?e(h,i):null!=g.mergeFunction?c[g.name]=g.mergeFunction(h,i):c[g.name]=h+i):c[g.name]=b[g.name])},g=function a(b,c){var d,e,g,h,i,j,k,l=b;if(null!==l.children&&0!==l.children.length)for(d=0,e=l.children.length;d<e;d+=1)if(j=l.children[d],c.hasOwnProperty(j.name))if(j.isArray)for(i=c[j.name+"_asArray"],g=0,h=i.length;g<h;g+=1)k=i[g],f(l.properties,c,k),a(j,k);else k=c[j.name],f(l.properties,c,k),a(j,k)},h=function c(d){var e,f,h,i,j,k,l;if(null===d)return d;if("object"!=typeof d)return d;for(e=0,f=b.length;e<f;e+=1)"root"===b[e]&&(j=a[e],k=d,g(j,k));for(i in d)if(d.hasOwnProperty(i)&&"__children"!=i){if(h=b.indexOf(i),h!==-1)if(j=a[h],j.isArray)for(l=d[i+"_asArray"],e=0,f=l.length;e<f;e+=1)k=l[e],g(j,k);else k=d[i],g(j,k);c(d[i])}return d};return{run:h}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],4:[function(a,b,c){"use strict";function d(a,b,c){function d(a){var b=a.localName;return null==b&&(b=a.baseName),null!=b&&""!=b||(b=a.nodeName),b}function e(a){return a.prefix}function f(a){return"string"==typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/"):a}function g(a){return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(///g,"/")}function h(f){if(f.nodeType==u.DOCUMENT_NODE){var i,j,k,l=f.firstChild;for(j=0,k=f.childNodes.length;j<k;j+=1)if(f.childNodes[j].nodeType!==u.COMMENT_NODE){l=f.childNodes[j];break}if(c)i=h(l);else{i={};var m=d(l);i[m]=h(l)}return i}if(f.nodeType==u.ELEMENT_NODE){var i=new Object;i.__cnt=0;for(var n=[],o=f.childNodes,p=0;p<o.length;p++){var l=o.item(p),m=d(l);if(i.__cnt++,null==i[m]){var q=h(l);if("#text"!=m||/[^\s]/.test(q)){var r={};r[m]=q,n.push(r)}i[m]=q,i[m+"_asArray"]=new Array(1),i[m+"_asArray"][0]=i[m]}else{if(null!=i[m]&&!(i[m]instanceof Array)){var s=i[m];i[m]=new Array,i[m][0]=s,i[m+"_asArray"]=i[m]}for(var v=0;null!=i[m][v];)v++;var q=h(l);if("#text"!=m||/[^\s]/.test(q)){var r={};r[m]=q,n.push(r)}i[m][v]=q}}i.__children=n;for(var w=0;w<f.attributes.length;w++){var x=f.attributes.item(w);i.__cnt++;for(var y=x.value,z=0,A=a.length;z<A;z++){var B=a[z];B.test(x)&&(y=B.converter(x.value))}i[b+x.name]=y}var C=e(f);return null!=C&&""!=C&&(i.__cnt++,i.__prefix=C),1==i.__cnt&&null!=i["#text"]&&(i=i["#text"]),null!=i["#text"]&&(i.__text=i["#text"],t&&(i.__text=g(i.__text)),delete i["#text"],delete i["#text_asArray"]),null!=i["#cdata-section"]&&(i.__cdata=i["#cdata-section"],delete i["#cdata-section"],delete i["#cdata-section_asArray"]),null==i.__text&&null==i.__cdata||(i.toString=function(){return(null!=this.__text?this.__text:"")+(null!=this.__cdata?this.__cdata:"")}),i}return f.nodeType==u.TEXT_NODE||f.nodeType==u.CDATA_SECTION_NODE?f.nodeValue:f.nodeType==u.COMMENT_NODE?null:void 0}function i(a,b,c,d){var e="<"+(null!=a&&null!=a.__prefix?a.__prefix+":":"")+b;if(null!=c)for(var f=0;f<c.length;f++){var g=c[f],h=a[g];e+=" "+g.substr(1)+"='"+h+"'"}return e+=d?"/>":">"}function j(a,b){return"</"+(null!=a.__prefix?a.__prefix+":":"")+b+">"}function k(a,b){return a.indexOf(b,a.length-b.length)!==-1}function l(a,b){return!!(k(b.toString(),"_asArray")||0==b.toString().indexOf("_")||a[b]instanceof Function)}function m(a){var b=0;if(a instanceof Object)for(var c in a)l(a,c)||b++;return b}function n(a){var b=[];if(a instanceof Object)for(var c in a)c.toString().indexOf("__")==-1&&0==c.toString().indexOf("_")&&b.push(c);return b}function o(a){var b="";return null!=a.__cdata&&(b+="<![CDATA["+a.__cdata+"]]>"),null!=a.__text&&(b+=t?f(a.__text):a.__text),b}function p(a){var b="";return a instanceof Object?b+=o(a):null!=a&&(b+=t?f(a):a),b}function q(a,b,c){var d="";if(0==a.length)d+=i(a,b,c,!0);else for(var e=0;e<a.length;e++)d+=i(a[e],b,n(a[e]),!1),d+=r(a[e]),d+=j(a[e],b);return d}function r(a){var b="",c=m(a);if(c>0)for(var d in a)if(!l(a,d)){var e=a[d],f=n(e);if(null==e||void 0==e)b+=i(e,d,f,!0);else if(e instanceof Object)if(e instanceof Array)b+=q(e,d,f);else{var g=m(e);g>0||null!=e.__text||null!=e.__cdata?(b+=i(e,d,f,!1),b+=r(e),b+=j(e,d)):b+=i(e,d,f,!0)}else b+=i(e,d,f,!1),b+=p(e),b+=j(e,d)}return b+=p(a)}null!==b&&void 0!==b||(b="_"),null!==c&&void 0!==c||(c=!1);var s="1.0.11",t=!1,u={ELEMENT_NODE:1,TEXT_NODE:3,CDATA_SECTION_NODE:4,COMMENT_NODE:8,DOCUMENT_NODE:9};this.parseXmlString=function(a){var b,c,d;if(window.DOMParser){c=new window.DOMParser;try{d=c.parseFromString("<","text/xml").getElementsByTagName("parsererror")[0].namespaceURI}catch(e){}try{b=c.parseFromString(a,"text/xml"),d&&b.getElementsByTagNameNS(d,"parsererror").length&&(b=void 0)}catch(e){}}else 0==a.indexOf("<?")&&(a=a.substr(a.indexOf("?>")+2)),b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a);return b},this.xml2json=function(a){return h(a)},this.xml_str2json=function(a){var b=this.parseXmlString(a);return b?this.xml2json(b):void 0},this.json2xml_str=function(a){return r(a)},this.json2xml=function(a){var b=this.json2xml_str(a);return this.parseXmlString(b)},this.getVersion=function(){return s},this.escapeMode=function(a){t=a}}Object.defineProperty(c,"__esModule",{value:!0}),c.default=d,b.exports=c.default},{}],5:[function(a,b,c){(function(b){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(51),f=d(e),g=a(106),h=d(g),i=a(75),j=d(i),k=a(53),l=d(k),m=a(11),n=window||b,o=n.dashjs;o||(o=n.dashjs={}),o.MediaPlayer=f.default,o.Protection=h.default,o.MetricsReporting=j.default,o.MediaPlayerFactory=l.default,o.Version=(0,m.getVersionString)(),c.default=o,c.MediaPlayer=f.default,c.Protection=h.default,c.MetricsReporting=j.default,c.MediaPlayerFactory=l.default}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{106:106,11:11,51:51,53:53,75:75}],6:[function(a,b,c){/*! codem-isoboxer v0.2.2 https://github.com/madebyhiro/codem-isoboxer/blob/master/LICENSE.txt */ +var d={};d.parseBuffer=function(a){return new e(a).parse()},d.Utils={},d.Utils.dataViewToString=function(a,b){var c=b||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(c).decode(a);var d=[],e=0;if("utf-8"===c)for(;e<a.byteLength;){var f=a.getUint8(e++);f<128||(f<224?(f=(31&f)<<6,f|=63&a.getUint8(e++)):f<240?(f=(15&f)<<12,f|=(63&a.getUint8(e++))<<6,f|=63&a.getUint8(e++)):(f=(7&f)<<18,f|=(63&a.getUint8(e++))<<12,f|=(63&a.getUint8(e++))<<6,f|=63&a.getUint8(e++))),d.push(String.fromCharCode(f))}else for(;e<a.byteLength;)d.push(String.fromCharCode(a.getUint8(e++)));return d.join("")},"undefined"!=typeof c&&(c.parseBuffer=d.parseBuffer,c.Utils=d.Utils),d.Cursor=function(a){this.offset="undefined"==typeof a?0:a};var e=function(a){this._raw=new DataView(a),this._cursor=new d.Cursor,this.boxes=[]};e.prototype.fetch=function(a){var b=this.fetchAll(a,!0);return b.length?b[0]:null},e.prototype.fetchAll=function(a,b){var c=[];return e._sweep.call(this,a,c,b),c},e.prototype.parse=function(){for(this._cursor.offset=0,this.boxes=[];this._cursor.offset<this._raw.byteLength;){var a=f.parse(this);if("undefined"==typeof a.type)break;this.boxes.push(a)}return this},e._sweep=function(a,b,c){this.type&&this.type==a&&b.push(this);for(var d in this.boxes){if(b.length&&c)return;e._sweep.call(this.boxes[d],a,b,c)}};var f=function(){this._cursor=new d.Cursor};f.parse=function(a){var b=new f;return b._offset=a._cursor.offset,b._root=a._root?a._root:a,b._raw=a._raw,b._parent=a,b._parseBox(),a._cursor.offset=b._raw.byteOffset+b._raw.byteLength,b},f.prototype._readInt=function(a){var b=null;switch(a){case 8:b=this._raw.getInt8(this._cursor.offset-this._raw.byteOffset);break;case 16:b=this._raw.getInt16(this._cursor.offset-this._raw.byteOffset);break;case 32:b=this._raw.getInt32(this._cursor.offset-this._raw.byteOffset);break;case 64:var c=this._raw.getInt32(this._cursor.offset-this._raw.byteOffset),d=this._raw.getInt32(this._cursor.offset-this._raw.byteOffset+4);b=c*Math.pow(2,32)+d}return this._cursor.offset+=a>>3,b},f.prototype._readUint=function(a){var b=null;switch(a){case 8:b=this._raw.getUint8(this._cursor.offset-this._raw.byteOffset);break;case 16:b=this._raw.getUint16(this._cursor.offset-this._raw.byteOffset);break;case 24:var c=this._raw.getUint16(this._cursor.offset-this._raw.byteOffset),d=this._raw.getUint8(this._cursor.offset-this._raw.byteOffset+2);b=(c<<8)+d;break;case 32:b=this._raw.getUint32(this._cursor.offset-this._raw.byteOffset);break;case 64:var c=this._raw.getUint32(this._cursor.offset-this._raw.byteOffset),d=this._raw.getUint32(this._cursor.offset-this._raw.byteOffset+4);b=c*Math.pow(2,32)+d}return this._cursor.offset+=a>>3,b},f.prototype._readString=function(a){for(var b="",c=0;c<a;c++){var d=this._readUint(8);b+=String.fromCharCode(d)}return b},f.prototype._readTerminatedString=function(){for(var a="";;){var b=this._readUint(8);if(0==b)break;a+=String.fromCharCode(b)}return a},f.prototype._readTemplate=function(a){var b=this._readUint(a/2),c=this._readUint(a/2);return b+c/Math.pow(2,a/2)},f.prototype._parseBox=function(){if(this._cursor.offset=this._offset,this._offset+8>this._raw.buffer.byteLength)return void(this._root._incomplete=!0);switch(this.size=this._readUint(32),this.type=this._readString(4),1==this.size&&(this.largesize=this._readUint(64)),"uuid"==this.type&&(this.usertype=this._readString(16)),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset,this._raw.byteLength-this._cursor.offset);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}!this._incomplete&&this._boxParsers[this.type]&&this._boxParsers[this.type].call(this)},f.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},f.prototype._boxParsers={},["moov","trak","tref","mdia","minf","stbl","edts","dinf","mvex","moof","traf","mfra","udta","meco","strk","vttc"].forEach(function(a){f.prototype._boxParsers[a]=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset<this._raw.byteLength;)this.boxes.push(f.parse(this))}}),f.prototype._boxParsers.elst=function(){this._parseFullBox(),this.entry_count=this._readUint(32),this.entries=[];for(var a=1;a<=this.entry_count;a++){var b={};1==this.version?(b.segment_duration=this._readUint(64),b.media_time=this._readInt(64)):(b.segment_duration=this._readUint(32),b.media_time=this._readInt(32)),b.media_rate_integer=this._readInt(16),b.media_rate_fraction=this._readInt(16),this.entries.push(b)}},f.prototype._boxParsers.emsg=function(){this._parseFullBox(),this.scheme_id_uri=this._readTerminatedString(),this.value=this._readTerminatedString(),this.timescale=this._readUint(32),this.presentation_time_delta=this._readUint(32),this.event_duration=this._readUint(32),this.id=this._readUint(32),this.message_data=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset))},f.prototype._boxParsers.free=f.prototype._boxParsers.skip=function(){this.data=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset))},f.prototype._boxParsers.ftyp=f.prototype._boxParsers.styp=function(){for(this.major_brand=this._readString(4),this.minor_versions=this._readUint(32),this.compatible_brands=[];this._cursor.offset-this._raw.byteOffset<this._raw.byteLength;)this.compatible_brands.push(this._readString(4))},f.prototype._boxParsers.hdlr=function(){this._parseFullBox(),this.pre_defined=this._readUint(32),this.handler_type=this._readString(4),this.reserved=[this._readUint(32),this._readUint(32),this._readUint(32)],this.name=this._readTerminatedString()},f.prototype._boxParsers.mdat=function(){this.data=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset))},f.prototype._boxParsers.mdhd=function(){this._parseFullBox(),1==this.version?(this.creation_time=this._readUint(64),this.modification_time=this._readUint(64),this.timescale=this._readUint(32),this.duration=this._readUint(64)):(this.creation_time=this._readUint(32),this.modification_time=this._readUint(32),this.timescale=this._readUint(32),this.duration=this._readUint(32));var a=this._readUint(16);this.pad=a>>15,this.language=String.fromCharCode((a>>10&31)+96,(a>>5&31)+96,(31&a)+96),this.pre_defined=this._readUint(16)},f.prototype._boxParsers.mfhd=function(){this._parseFullBox(),this.sequence_number=this._readUint(32)},f.prototype._boxParsers.mvhd=function(){this._parseFullBox(),1==this.version?(this.creation_time=this._readUint(64),this.modification_time=this._readUint(64),this.timescale=this._readUint(32),this.duration=this._readUint(64)):(this.creation_time=this._readUint(32),this.modification_time=this._readUint(32),this.timescale=this._readUint(32),this.duration=this._readUint(32)),this.rate=this._readTemplate(32),this.volume=this._readTemplate(16),this.reserved1=this._readUint(16),this.reserved2=[this._readUint(32),this._readUint(32)],this.matrix=[];for(var a=0;a<9;a++)this.matrix.push(this._readTemplate(32));this.pre_defined=[];for(var a=0;a<6;a++)this.pre_defined.push(this._readUint(32));this.next_track_ID=this._readUint(32)},f.prototype._boxParsers.payl=function(){var a=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset));this.cue_text=d.Utils.dataViewToString(a)},f.prototype._boxParsers.sidx=function(){this._parseFullBox(),this.reference_ID=this._readUint(32),this.timescale=this._readUint(32),0==this.version?(this.earliest_presentation_time=this._readUint(32),this.first_offset=this._readUint(32)):(this.earliest_presentation_time=this._readUint(64),this.first_offset=this._readUint(64)),this.reserved=this._readUint(16),this.reference_count=this._readUint(16),this.references=[];for(var a=0;a<this.reference_count;a++){var b={},c=this._readUint(32);b.reference_type=c>>31&1,b.referenced_size=2147483647&c,b.subsegment_duration=this._readUint(32);var d=this._readUint(32);b.starts_with_SAP=d>>31&1,b.SAP_type=d>>28&7,b.SAP_delta_time=268435455&d,this.references.push(b)}},f.prototype._boxParsers.ssix=function(){this._parseFullBox(),this.subsegment_count=this._readUint(32),this.subsegments=[];for(var a=0;a<this.subsegment_count;a++){var b={};b.ranges_count=this._readUint(32),b.ranges=[];for(var c=0;c<b.ranges_count;c++){var d={};d.level=this._readUint(8),d.range_size=this._readUint(24),b.ranges.push(d)}this.subsegments.push(b)}},f.prototype._boxParsers.tfdt=function(){this._parseFullBox(),1==this.version?this.baseMediaDecodeTime=this._readUint(64):this.baseMediaDecodeTime=this._readUint(32)},f.prototype._boxParsers.tfhd=function(){this._parseFullBox(),this.track_ID=this._readUint(32),1&this.flags&&(this.base_data_offset=this._readUint(64)),2&this.flags&&(this.sample_description_offset=this._readUint(32)),8&this.flags&&(this.default_sample_duration=this._readUint(32)),16&this.flags&&(this.default_sample_size=this._readUint(32)),32&this.flags&&(this.default_sample_flags=this._readUint(32))},f.prototype._boxParsers.tkhd=function(){this._parseFullBox(),1==this.version?(this.creation_time=this._readUint(64),this.modification_time=this._readUint(64),this.track_ID=this._readUint(32),this.reserved1=this._readUint(32),this.duration=this._readUint(64)):(this.creation_time=this._readUint(32),this.modification_time=this._readUint(32),this.track_ID=this._readUint(32),this.reserved1=this._readUint(32),this.duration=this._readUint(32)),this.reserved2=[this._readUint(32),this._readUint(32)],this.layer=this._readUint(16),this.alternate_group=this._readUint(16),this.volume=this._readTemplate(16),this.reserved3=this._readUint(16),this.matrix=[];for(var a=0;a<9;a++)this.matrix.push(this._readTemplate(32));this.width=this._readUint(32),this.height=this._readUint(32)},f.prototype._boxParsers.trun=function(){this._parseFullBox(),this.sample_count=this._readUint(32),1&this.flags&&(this.data_offset=this._readInt(32)),4&this.flags&&(this.first_sample_flags=this._readUint(32)),this.samples=[];for(var a=0;a<this.sample_count;a++){var b={};256&this.flags&&(b.sample_duration=this._readUint(32)),512&this.flags&&(b.sample_size=this._readUint(32)),1024&this.flags&&(b.sample_flags=this._readUint(32)),2048&this.flags&&(0==this.version?b.sample_composition_time_offset=this._readUint(32):b.sample_composition_time_offset=this._readInt(32)),this.samples.push(b)}},f.prototype._boxParsers.vlab=function(){var a=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset));this.source_label=d.Utils.dataViewToString(a)},f.prototype._boxParsers.vttC=function(){var a=new DataView(this._raw.buffer,this._cursor.offset,this._raw.byteLength-(this._cursor.offset-this._offset));this.config=d.Utils.dataViewToString(a)},f.prototype._boxParsers.vtte=function(){}},{}],7:[function(a,b,c){var d=c.decimalAdjust=function(a,b,c){return"undefined"==typeof c||0===+c?Math[a](b):(b=+b,c=+c,isNaN(b)||"number"!=typeof c||c%1!==0?NaN:(b=b.toString().split("e"),b=Math[a](+(b[0]+"e"+(b[1]?+b[1]-c:-c))),b=b.toString().split("e"),+(b[0]+"e"+(b[1]?+b[1]+c:c))))};b.exports={round10:function(a,b){return d("round",a,b)},floor10:function(a,b){return d("floor",a,b)},ceil10:function(a,b){return d("ceil",a,b)}},b.exports.polyfill=function(){Math.round10||(Math.round10=b.exports.round10),Math.floor10||(Math.floor10=b.exports.floor10),Math.ceil10||(Math.ceil10=b.exports.ceil10)}},{}],8:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){k=!0,l=!0,m=(new Date).getTime()}function b(a){l=a}function c(a){k=a}function d(){return k}function e(){var a="",b=null;l&&(b=(new Date).getTime(),a+="["+(b-m)+"]"),a.length>0&&(a+=" "),Array.apply(null,arguments).forEach(function(b){a+=b+" "}),k&&console.log(a),h.trigger(i.default.LOG,{message:a})}var f=this.context,h=(0,g.default)(f).getInstance(),j=void 0,k=void 0,l=void 0,m=void 0;return j={log:e,setLogTimestampVisible:b,setLogToBrowserConsole:c,getLogToBrowserConsole:d},a(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="Debug",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,9:9}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){var e=arguments.length<=3||void 0===arguments[3]?h:arguments[3];if(!a)throw new Error("event type cannot be null or undefined");if(!b||"function"!=typeof b)throw new Error("listener must be a function: "+b);if(!(d(a,b,c)>=0)){f[a]=f[a]||[];var g={callback:b,scope:c,priority:e},i=f[a].some(function(b,c){if(e>b.priority)return f[a].splice(c,0,g),!0});i||f[a].push(g)}}function b(a,b,c){if(a&&b&&f[a]){var e=d(a,b,c);e<0||f[a].splice(e,1)}}function c(a,b){if(a&&f[a]){if(b=b||{},b.hasOwnProperty("type"))throw new Error("'type' is a reserved word for event dispatching");b.type=a,f[a].forEach(function(a){return a.callback.call(a.scope,b)})}}function d(a,b,c){var d=-1;return f[a]?(f[a].some(function(a,e){if(a.callback===b&&(!c||c===a.scope))return d=e,!0}),d):d}function e(){f={}}var f={},g={on:a,off:b,trigger:c,reset:e};return g}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=0,i=5e3;e.__dashjs_factory_name="EventBus";var j=g.default.getSingletonFactory(e);j.EVENT_PRIORITY_LOW=h,j.EVENT_PRIORITY_HIGH=i,c.default=j,b.exports=c.default},{10:10}],10:[function(a,b,c){"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d=function(){function a(a,b,c,d){var e=g(d);!e[a]&&b&&(e[a]={instance:b,override:c})}function b(a,b){for(var c in j){var d=j[c];if(d.context===a&&d.name===b)return d.instance}return null}function c(a,b,c){for(var d in j){var e=j[d];if(e.context===a&&e.name===b)return void(j[d].instance=c)}j.push({name:b,context:a,instance:c})}function d(a){return function(b){return void 0===b&&(b={}),{create:function(){return f(a.__dashjs_factory_name,a.apply({context:b},arguments),b,arguments)}}}}function e(a){return function(c){var d=void 0;return void 0===c&&(c={}),{getInstance:function(){return d||(d=b(c,a.__dashjs_factory_name)),d||(d=f(a.__dashjs_factory_name,a.apply({context:c},arguments),c,arguments),j.push({name:a.__dashjs_factory_name,context:c,instance:d})),d}}}}function f(a,b,c,d){var e=g(c),f=e[a];if(f){var i=f.instance;if(!f.override)return i.apply({context:c,factory:h},d);i=i.apply({context:c,factory:h,parent:b},d);for(var j in i)b.hasOwnProperty(j)&&(b[j]=i[j])}return b}function g(a){var b=void 0;return i.forEach(function(c){c===a&&(b=c)}),b||(b=i.push(a)),b}var h=void 0,i=[],j=[];return h={extend:a,getSingletonInstance:b,setSingletonInstance:c,getSingletonFactory:e,getClassFactory:d}}();c.default=d,b.exports=c.default},{}],11:[function(a,b,c){"use strict";function d(){return e}Object.defineProperty(c,"__esModule",{value:!0}),c.getVersionString=d;var e="2.3.0"},{}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(14),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.AST_IN_FUTURE="astinfuture",this.BUFFERING_COMPLETED="bufferingCompleted",this.BUFFER_CLEARED="bufferCleared",this.BUFFER_LEVEL_UPDATED="bufferLevelUpdated",this.BYTES_APPENDED="bytesAppended",this.CHECK_FOR_EXISTENCE_COMPLETED="checkForExistenceCompleted",this.CHUNK_APPENDED="chunkAppended",this.CURRENT_TRACK_CHANGED="currenttrackchanged",this.DATA_UPDATE_COMPLETED="dataUpdateCompleted",this.DATA_UPDATE_STARTED="dataUpdateStarted",this.FRAGMENT_LOADING_COMPLETED="fragmentLoadingCompleted",this.FRAGMENT_LOADING_STARTED="fragmentLoadingStarted",this.FRAGMENT_LOADING_ABANDONED="fragmentLoadingAbandoned",this.INITIALIZATION_LOADED="initializationLoaded",this.INIT_FRAGMENT_LOADED="initFragmentLoaded",this.INIT_REQUESTED="initRequested",this.INTERNAL_MANIFEST_LOADED="internalManifestLoaded",this.LIVE_EDGE_SEARCH_COMPLETED="liveEdgeSearchCompleted",this.LOADING_COMPLETED="loadingCompleted",this.LOADING_PROGRESS="loadingProgress",this.MANIFEST_UPDATED="manifestUpdated",this.MEDIA_FRAGMENT_LOADED="mediaFragmentLoaded",this.QUOTA_EXCEEDED="quotaExceeded",this.REPRESENTATION_UPDATED="representationUpdated",this.SEGMENTS_LOADED="segmentsLoaded",this.SERVICE_LOCATION_BLACKLIST_CHANGED="serviceLocationBlacklistChanged",this.SOURCEBUFFER_APPEND_COMPLETED="sourceBufferAppendCompleted",this.SOURCEBUFFER_REMOVE_COMPLETED="sourceBufferRemoveCompleted",this.STREAMS_COMPOSED="streamsComposed",this.STREAM_BUFFERING_COMPLETED="streamBufferingCompleted",this.STREAM_COMPLETED="streamCompleted",this.STREAM_INITIALIZED="streaminitialized",this.STREAM_TEARDOWN_COMPLETE="streamTeardownComplete",this.TIMED_TEXT_REQUESTED="timedTextRequested",this.TIME_SYNCHRONIZATION_COMPLETED="timeSynchronizationComplete",this.URL_RESOLUTION_FAILED="urlResolutionFailed",this.WALLCLOCK_TIME_UPDATED="wallclockTimeUpdated",this.XLINK_ALL_ELEMENTS_LOADED="xlinkAllElementsLoaded",this.XLINK_ELEMENT_LOADED="xlinkElementLoaded",this.XLINK_READY="xlinkReady"}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{14:14}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(12),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).apply(this,arguments)}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{12:12}],14:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(){d(this,a)}return e(a,[{key:"extend",value:function(a,b){if(a){var c=!!b&&b.override,d=!!b&&b.publicOnly;for(var e in a)!a.hasOwnProperty(e)||this[e]&&!c||d&&a[e].indexOf("public_")===-1||(this[e]=a[e])}}}]),a}();c.default=f,b.exports=c.default},{}],15:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function e(a){return a&&a.__esModule?a:{default:a}}function f(){function a(a){a&&a.dashManifestModel&&(I=a.dashManifestModel)}function b(){J=[],K={}}function c(a,b){return b.getRepresentationForQuality(a.quality)}function d(a){return K[a.streamInfo.id][a.index]}function e(a){for(var b=J.length,c=0;c<b;c++){var d=J[c];if(a.id===d.id)return d}return null}function f(a,b){var c=new h.default,d=b.adaptation.period.mpd.manifest.Period_asArray[b.adaptation.period.index].AdaptationSet_asArray[b.adaptation.index],e=I.getRepresentationFor(b.index,d);return c.id=b.id,c.quality=b.index,c.bandwidth=I.getBandwidth(e),c.DVRWindow=b.segmentAvailabilityRange,c.fragmentDuration=b.segmentDuration||(b.segments&&b.segments.length>0?b.segments[0].duration:NaN),c.MSETimeOffset=b.MSETimeOffset,c.useCalculatedLiveEdgeTime=b.useCalculatedLiveEdgeTime,c.mediaInfo=g(a,b.adaptation),c}function g(a,b){var c,d=new j.default,e=b.period.mpd.manifest.Period_asArray[b.period.index].AdaptationSet_asArray[b.index];return d.id=b.id,d.index=b.index,d.type=b.type,d.streamInfo=k(a,b.period),d.representationCount=I.getRepresentationCount(e),d.lang=I.getLanguageForAdaptation(e),c=I.getViewpointForAdaptation(e),d.viewpoint=c?c.value:void 0,d.accessibility=I.getAccessibilityForAdaptation(e).map(function(a){var b=a.value,c=b;return a.schemeIdUri&&a.schemeIdUri.search("cea-608")>=0&&"undefined"!=typeof t.default&&(c=b?"cea-608:"+b:"cea-608",d.embeddedCaptions=!0),c}),d.audioChannelConfiguration=I.getAudioChannelConfigurationForAdaptation(e).map(function(a){return a.value}),d.roles=I.getRolesForAdaptation(e).map(function(a){return a.value}),d.codec=I.getCodec(e),d.mimeType=I.getMimeType(e),d.contentProtection=I.getContentProtectionData(e),d.bitrateList=I.getBitrateListForAdaptation(e),d.contentProtection&&d.contentProtection.forEach(function(a){a.KID=I.getKID(a)}),d.isText=I.getIsTextTrack(d.mimeType),d}function i(a,b,c){a.id=b,a.index=100+parseInt(b.substring(2,3)),a.type="embeddedText",a.codec="cea-608-in-SEI",a.isText=!0,a.isEmbedded=!0,a.lang=b+" "+c,a.roles=["caption"]}function k(a,b){var c=new l.default,d=1;return c.id=b.id,c.index=b.index,c.start=b.start,c.duration=b.duration,c.manifestInfo=m(a,b.mpd),c.isLast=1===a.Period_asArray.length||Math.abs(c.start+c.duration-c.manifestInfo.duration)<d,c.isFirst=1===a.Period_asArray.length||I.getRegularPeriods(a,I.getMpd(a))[0].id===b.id,c}function m(a,b){var c=new n.default;return c.DVRWindowSize=b.timeShiftBufferDepth,c.loadedTime=b.manifest.loadedTime,c.availableFrom=b.availabilityStartTime,c.minBufferTime=b.manifest.minBufferTime,c.maxFragmentDuration=b.maxSegmentDuration,c.duration=I.getDuration(a),c.isDynamic=I.getIsDynamic(a),c}function o(a,b,c){var d=I.getAdaptationForType(a,b.index,c,b);if(!d)return null;var f=e(b),h=f.id,i=I.getIndexForAdaptation(d,a,b.index);return K[h]=K[h]||I.getAdaptationsForPeriod(a,f),g(a,K[h][i])}function q(a,b,c){var d,f,h,j,k,l,m=e(b),n=m.id,o=I.getAdaptationsForType(a,b.index,"embeddedText"!==c?c:"video"),p=[];if(!o)return p;for(K[n]=K[n]||I.getAdaptationsForPeriod(a,m),j=0,l=o.length;j<l;j++){if(d=o[j],h=I.getIndexForAdaptation(d,a,b.index),f=g(a,K[n][h]),"embeddedText"===c){var q=f.accessibility.length;for(k=0;k<q;k++)if(f){var r=f.accessibility[k];if(0===r.indexOf("cea-608:")){var s=r.substring(8),t=s.split(";");if("CC"===t[0].substring(0,2))for(k=0;k<t.length;k++)f||(f=g.call(this,a,K[n][h])),i(f,t[k].substring(0,3),t[k].substring(4)),p.push(f),f=null;else for(k=0;k<t.length;k++)f||(f=g.call(this,a,K[n][h])),i(f,"CC"+(k+1),t[k]),p.push(f),f=null}else 0===r.indexOf("cea-608")&&(i(f,"CC1","eng"),p.push(f),f=null)}}f&&"embeddedText"!==c&&p.push(f)}return p}function r(a){var b,c,d,e=[];if(!a)return null;for(b=I.getMpd(a),J=I.getRegularPeriods(a,b),b.checkTime=I.getCheckTime(a,J[0]),K={},c=J.length,d=0;d<c;d++)e.push(k(a,J[d]));return e}function s(a){var b=I.getMpd(a);return m(a,b)}function u(a,b){var c=a.getRepresentationController().getRepresentationForQuality(b);return a.getIndexHandler().getInitRequest(c)}function w(a,b){var d=c(b,a.getRepresentationController());return a.getIndexHandler().getNextSegmentRequest(d)}function x(a,b,d,e){var f=c(b,a.getRepresentationController());return a.getIndexHandler().getSegmentRequestForTime(f,d,e)}function y(a,b,d){var e=c(b,a.getRepresentationController());return a.getIndexHandler().generateSegmentRequestForTime(e,d)}function z(a){return a.getIndexHandler().getCurrentTime()}function A(a,b){return a.getIndexHandler().setCurrentTime(b)}function B(a,b){var c,f,g=e(b.getStreamInfo()),h=b.getMediaInfo(),i=d(h),j=b.getType();c=h.id,f=c?I.getAdaptationForId(c,a,g.index):I.getAdaptationForIndex(h.index,a,g.index),b.getRepresentationController().updateData(f,i,j)}function C(a,b,c){var d=b.getRepresentationForQuality(c);return d?f(a,d):null}function D(a,b){var c=b.getCurrentRepresentation();return c?f(a,c):null}function E(a,b,c){var d=new p.default,e=a.scheme_id_uri,f=a.value,g=a.timescale,h=a.presentation_time_delta,i=a.event_duration,j=a.id,k=a.message_data,l=c*g+h;return b[e]?(d.eventStream=b[e],d.eventStream.value=f,d.eventStream.timescale=g,d.duration=i,d.id=j,d.presentationTime=l,d.messageData=k,d.presentationTimeDelta=h,d):null}function F(a,b,f){var g=[];return b instanceof l.default?g=I.getEventsForPeriod(a,e(b)):b instanceof j.default?g=I.getEventStreamForAdaptationSet(a,d(b)):b instanceof h.default&&(g=I.getEventStreamForRepresentation(a,c(b,f.getRepresentationController()))),g}function G(){J=[],K={}}var H=void 0,I=void 0,J=void 0,K=void 0;return H={initialize:b,convertDataToTrack:f,convertDataToMedia:g,convertDataToStream:k,getDataForTrack:c,getDataForMedia:d,getDataForStream:e,getStreamsInfo:r,getManifestInfo:s,getMediaInfoForType:o,getAllMediaInfoForType:q,getCurrentRepresentationInfo:D,getRepresentationInfoForQuality:C,updateData:B,getInitRequest:u,getNextFragmentRequest:w,getFragmentRequestForTime:x,generateFragmentRequestForTime:y,getIndexHandlerTime:z,setIndexHandlerTime:A,getEventsFor:F,getEvent:E,setConfig:a,reset:G,metricsList:v}}Object.defineProperty(c,"__esModule",{value:!0});var g=a(172),h=e(g),i=a(167),j=e(i),k=a(169),l=e(k),m=a(166),n=e(m),o=a(41),p=e(o),q=a(10),r=e(q),s=a(2),t=e(s),u=a(20),v=d(u);f.__dashjs_factory_name="DashAdapter",c.default=r.default.getSingletonFactory(f),b.exports=c.default},{10:10,166:166,167:167,169:169,172:172,2:2,20:20,41:41}],16:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){U=-1,Y=0,Z=NaN,M.on(l.default.INITIALIZATION_LOADED,I,T),M.on(l.default.SEGMENTS_LOADED,J,T)}function c(b){$=b,X=$.getType(),W=$.isDynamic(),_=(0,w.default)(K).create(a,W)}function d(){return $}function e(a){Y=a}function f(){return Y}function h(){return U}function k(){return Z}function m(){_=null,Y=0,Z=NaN,V=NaN,U=-1,W=null,X=null,$=null,M.off(l.default.INITIALIZATION_LOADED,I,T),M.off(l.default.SEGMENTS_LOADED,J,T)}function o(a){return a.split("$$").join("$")}function p(a,b){if(null===b||a.indexOf("$RepresentationID$")===-1)return a;var c=b.toString();return a.split("$RepresentationID$").join(c)}function q(a,b,c){var d,e,f=S.resolve(c.path);return f&&b!==f.url&&N.isRelative(b)?(d=f.url,e=f.serviceLocation,b&&(d+=b)):d=b,!N.isRelative(d)&&(a.url=d,a.serviceLocation=e,!0)}function s(a,b){var c,d,e=new g.default;if(c=a.adaptation.period,e.mediaType=b,e.type=j.HTTPRequest.INIT_SEGMENT_TYPE,e.range=a.range,d=c.start,e.availabilityStartTime=P.calcAvailabilityStartTimeFromPresentationTime(d,a.adaptation.period.mpd,W),e.availabilityEndTime=P.calcAvailabilityEndTimeFromPresentationTime(d+c.duration,c.mpd,W),e.quality=a.index,e.mediaInfo=$.getMediaInfo(),q(e,a.initialization,a))return e}function v(a){var b;return a?b=s(a,X):null}function y(a){var b,c,d,e=a.adaptation.period,f=a.segmentInfoType,g=!1;return U<0?g=!1:W||U<a.availableSegmentsNumber?(c=(0,u.getSegmentByIndex)(U,a),c&&(d=c.presentationStartTime-e.start,b=a.adaptation.period.duration,L(a.segmentInfoType+": "+d+" / "+b),g=("SegmentTimeline"!==f||!W)&&d>=b)):g=!0,g}function z(a){return _.getSegments(a,V,U,A)}function A(a,b){if(a.segments=b,b&&b.length>0&&(Z=isNaN(Z)?b[0].presentationStartTime:Math.min(b[0].presentationStartTime,Z)),W&&isNaN(P.getExpectedLiveEdge())){var c=b.length-1,d=b[c],e=d.presentationStartTime,f=R.getMetricsFor("stream");P.setExpectedLiveEdge(e),R.updateManifestUpdateInfo(Q.getCurrentManifestUpdate(f),{presentationStartTime:e})}}function B(a){if(!a)throw new i.default("no representation");return a.segments=null,z(a),a}function C(a,b){var c,d=a.initialization,e="BaseURL"!==a.segmentInfoType&&"SegmentBase"!==a.segmentInfoType&&!a.indexRange;return a.segmentDuration||a.segments||B(a),a.segmentAvailabilityRange=null,a.segmentAvailabilityRange=P.calcSegmentAvailabilityRange(a,W),a.segmentAvailabilityRange.end<a.segmentAvailabilityRange.start&&!a.useCalculatedLiveEdgeTime?(c=new i.default(x,"no segments are available yet",{availabilityDelay:a.segmentAvailabilityRange.start-a.segmentAvailabilityRange.end}),void M.trigger(l.default.REPRESENTATION_UPDATED,{sender:this,representation:a,error:c})):(b||(U=-1),a.segmentDuration&&B(a),d||O.loadInitialization(a),e||O.loadSegments(a,X,a.indexRange),void(d&&e&&M.trigger(l.default.REPRESENTATION_UPDATED,{sender:this,representation:a})))}function D(a,b,c){var d,e,f,g,h,i=b.segments,j=i?i.length:null,k=-1;if(i&&j>0)for(h=0;h<j;h++)if(e=i[h],f=e.presentationStartTime,g=e.duration,d=void 0===c||null===c?g/2:c,a+d>=f&&a-d<f+g){k=e.availabilityIdx;break}return k}function E(a){if(null===a||void 0===a)return null;var b=new g.default,c=a.representation,d=c.adaptation.period.mpd.manifest.Period_asArray[c.adaptation.period.index].AdaptationSet_asArray[c.adaptation.index].Representation_asArray[c.index].bandwidth,e=a.media;return e=(0,u.replaceTokenForTemplate)(e,"Number",a.replacementNumber),e=(0,u.replaceTokenForTemplate)(e,"Time",a.replacementTime),e=(0,u.replaceTokenForTemplate)(e,"Bandwidth",d),e=p(e,c.id),e=o(e),b.mediaType=X,b.type=j.HTTPRequest.MEDIA_SEGMENT_TYPE,b.range=a.mediaRange,b.startTime=a.presentationStartTime,b.duration=a.duration,b.timescale=c.timescale,b.availabilityStartTime=a.availabilityStartTime,b.availabilityEndTime=a.availabilityEndTime,b.wallStartTime=a.wallStartTime,b.quality=c.index,b.index=a.availabilityIdx,b.mediaInfo=$.getMediaInfo(),b.adaptationIndex=c.adaptation.index,q(b,e,c)?b:void 0}function F(a,b,c){var d,e,f,h=U,i=!!c&&c.keepIdx,j=c?c.timeThreshold:null,k=!(!c||!c.ignoreIsFinished);return a?(V!==b&&(V=b,L("Getting the request for "+X+" time : "+b)),U=D(b,a,j),z(a),U<0&&(U=D(b,a,j)),U>0&&L("Index for "+X+" time "+b+" is "+U),f=!k&&y(a),f?(d=new g.default,d.action=g.default.ACTION_COMPLETE,d.index=U,d.mediaType=X,d.mediaInfo=$.getMediaInfo(),L("Signal complete.",d)):(e=(0,u.getSegmentByIndex)(U,a),d=E(e)),i&&h>=0&&(U="SegmentTimeline"===a.segmentInfoType&&W?U:h),d):null}function G(a,b){var c=(a.segmentAvailabilityRange.end-a.segmentAvailabilityRange.start)/2;return a.segments=null,a.segmentAvailabilityRange={start:b-c,end:b+c},F(a,b,{keepIdx:!1,ignoreIsFinished:!0})}function H(a){var b,c,d;return a&&U!==-1?(V=null,U++,L("Getting the next request at index: "+U),d=y(a),d?(b=new g.default,b.action=g.default.ACTION_COMPLETE,b.index=U,b.mediaType=X,b.mediaInfo=$.getMediaInfo(),L("Signal complete.")):(z(a),c=(0,u.getSegmentByIndex)(U,a),b=E(c),!c&&W&&U--),b):null}function I(a){var b=a.representation;b.segments&&M.trigger(l.default.REPRESENTATION_UPDATED,{sender:this,representation:b})}function J(a){if(!a.error&&X===a.mediaType){var b,c,d,e,f=a.segments,g=a.representation,h=[],i=0;for(b=0,c=f.length;b<c;b++)d=f[b],e=(0,u.getTimeBasedSegment)(P,W,g,d.startTime,d.duration,d.timescale,d.media,d.mediaRange,i),h.push(e),e=null,i++;g.segmentAvailabilityRange={start:h[0].presentationStartTime,end:h[c-1].presentationStartTime},g.availableSegmentsNumber=c,A(g,h),g.initialization&&M.trigger(l.default.REPRESENTATION_UPDATED,{sender:this, +representation:g})}}var K=this.context,L=(0,r.default)(K).getInstance().log,M=(0,n.default)(K).getInstance(),N=(0,t.default)(K).getInstance(),O=a.segmentBaseLoader,P=a.timelineConverter,Q=a.dashMetrics,R=a.metricsModel,S=a.baseURLController,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0;return T={initialize:c,getStreamProcessor:d,getInitRequest:v,getSegmentRequestForTime:F,getNextSegmentRequest:H,generateSegmentRequestForTime:G,updateRepresentation:C,setCurrentTime:e,getCurrentTime:f,getCurrentIndex:h,getEarliestTime:k,reset:m},b(),T}Object.defineProperty(c,"__esModule",{value:!0});var f=a(163),g=d(f),h=a(162),i=d(h),j=a(179),k=a(13),l=d(k),m=a(9),n=d(m),o=a(10),p=d(o),q=a(8),r=d(q),s=a(158),t=d(s),u=a(35),v=a(34),w=d(v),x=1;e.__dashjs_factory_name="DashHandler";var y=p.default.getClassFactory(e);y.SEGMENTS_UNAVAILABLE_ERROR_CODE=x,c.default=y,b.exports=c.default},{10:10,13:13,158:158,162:162,163:163,179:179,34:34,35:35,8:8,9:9}],17:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b.default=a,b}function e(a){return a&&a.__esModule?a:{default:a}}function f(){function a(a,b){var c,d=C.getValue(),e=d.Period_asArray[b];return c=x(e,a),null===c?null:c.bandwidth}function b(a,b){var c,d=C.getValue(),e=d.Period_asArray[b];return c=w(e,a)}function c(a,b){var c,d=C.getValue(),e=d.Period_asArray[b];return c=z(e,a)}function d(a){return m(a,o.TRACK_SWITCH)}function e(a){return m(a,o.BUFFER_LEVEL)}function f(a){var b=e(a);return b?(0,p.round10)(b.level/1e3,-3):0}function h(a){return a.RequestsQueue}function j(a){if(null===a)return null;var b,c,d=a.HttpList,e=null;if(null===d||d.length<=0)return null;for(b=d.length,c=b-1;c>=0;){if(d[c].responsecode){e=d[c];break}c--}return e}function l(a){return null===a?[]:a.HttpList?a.HttpList:[]}function m(a,b){if(null===a)return null;var c=a[b];if(null===c)return null;var d=c.length;return d<=0?null:c[d-1]}function n(a){return m(a,o.DROPPED_FRAMES)}function q(a){return m(a,o.SCHEDULING_INFO)}function r(a){return m(a,o.MANIFEST_UPDATE)}function s(a){return m(a,o.DVR_INFO)}function t(a,b){var c,d,e,f={};if(null===a)return null;for(c=l(a),e=c.length-1;e>=0;e--)if(d=c[e],d.type===g.HTTPRequest.MPD_TYPE){f=v(d._responseHeaders);break}return void 0===f[b]?null:f[b]}function u(a,b){if(null===a)return null;var c,d=j(a);return null===d||null===d._responseHeaders?null:(c=v(d._responseHeaders),void 0===c[b]?null:c[b])}function v(a){var b={};if(!a)return b;for(var c=a.split("\r\n"),d=0,e=c.length;d<e;d++){var f=c[d],g=f.indexOf(": ");g>0&&(b[f.substring(0,g)]=f.substring(g+2))}return b}function w(a,b){var c=x(a,b,!0);return null!==c?c:-1}function x(a,b,c){var d,e,f,g,h,i;for(e=a.AdaptationSet_asArray,h=0;h<e.length;h+=1)for(d=e[h],g=d.Representation_asArray,i=0;i<g.length;i+=1)if(f=g[i],b===f.id)return c?i:f;return null}function y(a,b){return(0,k.default)(B).getInstance().getIsTypeOf(a,b)}function z(a,b){var c,d,e,f;if(!a||!b)return-1;for(d=a.AdaptationSet_asArray,f=0;f<d.length;f+=1)if(c=d[f],e=c.Representation_asArray,y(c,b))return e.length;return-1}var A=void 0,B=this.context,C=(0,i.default)(B).getInstance();return A={getBandwidthForRepresentation:a,getIndexForRepresentation:b,getMaxIndexForBufferType:c,getCurrentRepresentationSwitch:d,getLatestBufferLevelVO:e,getCurrentBufferLevel:f,getCurrentHttpRequest:j,getHttpRequests:l,getCurrentDroppedFrames:n,getCurrentSchedulingInfo:q,getCurrentDVRInfo:s,getCurrentManifestUpdate:r,getLatestFragmentRequestHeaderValueByID:u,getLatestMPDRequestHeaderValueByID:t,getRequestsQueue:h}}Object.defineProperty(c,"__esModule",{value:!0});var g=a(179),h=a(100),i=e(h),j=a(22),k=e(j),l=a(10),m=e(l),n=a(20),o=d(n),p=a(7);f.__dashjs_factory_name="DashMetrics",c.default=m.default.getSingletonFactory(f),b.exports=c.default},{10:10,100:100,179:179,20:20,22:22,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){u=(0,m.default)(n).getInstance(),v=(0,s.default)(n).getInstance(),x=(0,g.default)(n).getInstance()}function b(a){a.baseURLController&&(y=a.baseURLController)}function c(a,b){var d=!0,e=null,f=null,g=new XMLHttpRequest,i=y.resolve(a.path),k=b||{url:i?i.url:void 0,range:{start:0,end:1500},searching:!1,bytesLoaded:0,bytesToLoad:1500,request:g};p("Start searching for initialization."),g.onload=function(){g.status<200||g.status>299||(d=!1,k.bytesLoaded=k.range.end,f=v.parse(g.response),e=h(f),e?(a.range=e,a.initialization=k.url,r.trigger(o.default.INITIALIZATION_LOADED,{representation:a})):(k.range.end=k.bytesLoaded+k.bytesToLoad,c(a,k)))},g.onloadend=g.onerror=function(){d&&(d=!1,u.downloadError("initialization",k.url,g),r.trigger(o.default.INITIALIZATION_LOADED,{representation:a}))},j(g,k),p("Perform init search: "+k.url)}function d(a,b,c,e,g){if(c&&(void 0===c.start||void 0===c.end)){var h=c?c.toString().split("-"):null;c=h?{start:parseFloat(h[0]),end:parseFloat(h[1])}:null}g=g?g:l;var i=!0,k=null,m=null,n=!!c,o=new XMLHttpRequest,q=y.resolve(a.path),r={url:q?q.url:void 0,range:n?c:{start:0,end:1500},searching:!n,bytesLoaded:e?e.bytesLoaded:0,bytesToLoad:1500,request:o};o.onload=function(){if(!(o.status<200||o.status>299)){var c=r.bytesToLoad,e=o.response.byteLength;if(i=!1,r.bytesLoaded=r.range.end-r.range.start,k=v.parse(o.response),m=k.getBox("sidx"),m&&m.isComplete){var h,j,l=m.references;if(null!==l&&void 0!==l&&l.length>0&&(h=1===l[0].reference_type),h){p("Initiate multiple SIDX load."),r.range.end=r.range.start+m.size;var n,q,s,t,u,w=[],x=0,y=(m.offset||r.range.start)+m.size,z=function(c){c?(w=w.concat(c),x++,x>=q&&g(w,a,b)):g(null,a,b)};for(n=0,q=l.length;n<q;n++)s=y,t=y+l[n].referenced_size-1,y+=l[n].referenced_size,u={start:s,end:t},d(a,null,u,r,z)}else p("Parsing segments from SIDX."),j=f(m,r),g(j,a,b)}else{if(m)r.range.start=m.offset||r.range.start,r.range.end=r.range.start+(m.size||c);else{if(e<r.bytesLoaded)return void g(null,a,b);var A=k.getLastBox();A&&A.size?(r.range.start=A.offset+A.size,r.range.end=r.range.start+c):r.range.end+=c}d(a,b,r.range,r,g)}}},o.onloadend=o.onerror=function(){i&&(i=!1,u.downloadError("SIDX",r.url,o),g(null,a,b))},j(o,r),p("Perform SIDX load: "+r.url)}function e(){u=null,v=null,x=null,p=null}function f(a,b){for(var c,d,e,f,g=a.references,h=g.length,j=a.timescale,k=a.earliest_presentation_time,l=b.range.start+a.offset+a.first_offset+a.size,m=[],n=0;n<h;n++)e=g[n].subsegment_duration,f=g[n].referenced_size,c=new i.default,c.duration=e,c.media=b.url,c.startTime=k,c.timescale=j,d=l+f-1,c.mediaRange=l+"-"+d,m.push(c),k+=e,l+=f;return m}function h(a){var b,c,d=a.getBox("ftyp"),e=a.getBox("moov"),f=null;return p("Searching for initialization."),e&&e.isComplete&&(b=d?d.offset:e.offset,c=e.offset+e.size-1,f=b+"-"+c,p("Found the initialization. Range: "+f)),f}function j(a,b){b.url&&(a.open("GET",x.modifyRequestURL(b.url)),a.responseType="arraybuffer",a.setRequestHeader("Range","bytes="+b.range.start+"-"+b.range.end),a=x.modifyRequestHeader(a),a.send(null))}function l(a,b,c){a?r.trigger(o.default.SEGMENTS_LOADED,{segments:a,representation:b,mediaType:c}):r.trigger(o.default.SEGMENTS_LOADED,{segments:null,representation:b,mediaType:c,error:new k.default(null,"error loading segments",null)})}var n=this.context,p=(0,w.default)(n).getInstance().log,r=(0,q.default)(n).getInstance(),t=void 0,u=void 0,v=void 0,x=void 0,y=void 0;return t={setConfig:b,initialize:a,loadInitialization:c,loadSegments:d,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(156),g=d(f),h=a(46),i=d(h),j=a(162),k=d(j),l=a(151),m=d(l),n=a(13),o=d(n),p=a(9),q=d(p),r=a(146),s=d(r),t=a(10),u=d(t),v=a(8),w=d(v);e.__dashjs_factory_name="SegmentBaseLoader",c.default=u.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,146:146,151:151,156:156,162:162,46:46,8:8,9:9}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){y={EBML:{tag:440786851,required:!0},Segment:{tag:408125543,required:!0,SeekHead:{tag:290298740,required:!0},Info:{tag:357149030,required:!0,TimecodeScale:{tag:2807729,required:!0,parse:"getMatroskaUint"},Duration:{tag:17545,required:!0,parse:"getMatroskaFloat"}},Tracks:{tag:374648427,required:!0},Cues:{tag:475249515,required:!0,CuePoint:{tag:187,required:!0,CueTime:{tag:179,required:!0,parse:"getMatroskaUint"},CueTrackPositions:{tag:183,required:!0,CueTrack:{tag:247,required:!0,parse:"getMatroskaUint"},CueClusterPosition:{tag:241,required:!0,parse:"getMatroskaUint"},CueBlockNumber:{tag:21368}}}}},Void:{tag:236,required:!0}}}function b(){A=(0,q.default)(p).getInstance(),B=(0,s.default)(p).getInstance(),D=(0,z.default)(p).create({errHandler:A,metricsModel:C,requestModifier:B})}function c(a){if(!a.baseURLController||!a.metricsModel)throw new Error("Missing config parameter(s)");E=a.baseURLController,C=a.metricsModel}function d(a){var b=[],c=void 0,d=void 0,e=void 0,f=(0,k.default)(p).create({data:a}),g=void 0;for(f.consumeTag(y.Segment.Cues),d=f.getMatroskaCodedNum();f.moreData()&&f.consumeTagAndSize(y.Segment.Cues.CuePoint,!0);){for(c={},c.CueTime=f.parseTag(y.Segment.Cues.CuePoint.CueTime),c.CueTracks=[];f.moreData()&&f.consumeTagAndSize(y.Segment.Cues.CuePoint.CueTrackPositions,!0);){if(e={},e.Track=f.parseTag(y.Segment.Cues.CuePoint.CueTrackPositions.CueTrack),0===e.Track)throw new Error("Cue track cannot be 0");e.ClusterPosition=f.parseTag(y.Segment.Cues.CuePoint.CueTrackPositions.CueClusterPosition),f.getPos()+4>d||!f.consumeTag(y.Segment.Cues.CuePoint.CueTrackPositions.CueBlockNumber,!0)?c.CueTracks.push(e):(g=f.getMatroskaCodedNum(),e.BlockNumber=f.getMatroskaUint(g),c.CueTracks.push(e))}if(0===c.CueTracks.length)throw new Error("Mandatory cuetrack not found");b.push(c)}if(0===b.length)throw new Error("mandatory cuepoint not found");return b}function e(a,b,c,e,f){var g=void 0,h=void 0,i=void 0,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0;for(h=d(a),i=[],k=0,l=h.length;k<l;k+=1)j=new u.default,g=0,g=k<h.length-1?h[k+1].CueTime-h[k].CueTime:f-h[k].CueTime,j.duration=g,j.media=b,j.startTime=h[k].CueTime,j.timescale=1e3,m=h[k].CueTracks[0].ClusterPosition+c,n=k<h.length-1?h[k+1].CueTracks[0].ClusterPosition+c-1:e-1,j.mediaRange=m+"-"+n,i.push(j);return r("Parsed cues: "+i.length+" cues."),i}function f(a,b,c,d){var f=(0,k.default)(p).create({data:a}),g=void 0,h=void 0,i=c.split("-"),j=null,l={url:b,range:{start:parseFloat(i[0]),end:parseFloat(i[1])},request:j},n=void 0,o=void 0;for(r("Parse EBML header: "+l.url),f.skipOverElement(y.EBML),f.consumeTag(y.Segment),n=f.getMatroskaCodedNum(),n+=f.getPos(),o=f.getPos();f.moreData()&&!f.consumeTagAndSize(y.Segment.Info,!0);)if(!(f.skipOverElement(y.Segment.SeekHead,!0)||f.skipOverElement(y.Segment.Tracks,!0)||f.skipOverElement(y.Segment.Cues,!0)||f.skipOverElement(y.Void,!0)))throw new Error("no valid top level element found");for(;void 0===g;){var q=f.getMatroskaCodedNum(!0),s=f.getMatroskaCodedNum();switch(q){case y.Segment.Info.Duration.tag:g=f[y.Segment.Info.Duration.parse](s);break;default:f.setPos(f.getPos()+s)}}j=m(l);var t=function(a){h=e(a,l.url,o,n,g),d(h)},u=function(){r("Download Error: Cues "+l.url),d(null)};D.load({request:j,success:t,error:u}),r("Perform cues load: "+l.url+" bytes="+l.range.start+"-"+l.range.end)}function h(a,b){var c=null,d=E.resolve(a.path),e=d?d.url:void 0,f=a.range.split("-"),h=b||{range:{start:parseFloat(f[0]),end:parseFloat(f[1])},request:c,url:e,init:!0};r("Start loading initialization."),c=m(h);var i=function(){a.initialization=h.url,t.trigger(g.default.INITIALIZATION_LOADED,{representation:a})},j=function(){t.trigger(g.default.INITIALIZATION_LOADED,{representation:a})};D.load({request:c,success:i,error:j}),r("Perform init load: "+h.url)}function j(a,b,c,d){var e=null,g=E.resolve(a.path),h=g?g.url:void 0,i=8192,j={bytesLoaded:0,bytesToLoad:i,range:{start:0,end:i},request:e,url:h,init:!1};d=d?d:l,e=m(j),r("Parsing ebml header");var k=function(e){f(e,h,c,function(c){d(c,a,b)})},n=function(){d(null,a,b)};D.load({request:e,success:k,error:n})}function l(a,b,c){a?t.trigger(g.default.SEGMENTS_LOADED,{segments:a,representation:b,mediaType:c}):t.trigger(g.default.SEGMENTS_LOADED,{segments:null,representation:b,mediaType:c,error:new Error(null,"error loading segments",null)})}function m(a){var b=new x.default;return b.type=a.init?v.HTTPRequest.INIT_SEGMENT_TYPE:v.HTTPRequest.MEDIA_SEGMENT_TYPE,b.url=a.url,b.range=a.range.start+"-"+a.range.end,b}function n(){A=null,B=null,r=null}var p=this.context,r=(0,o.default)(p).getInstance().log,t=(0,i.default)(p).getInstance(),w=void 0,y=void 0,A=void 0,B=void 0,C=void 0,D=void 0,E=void 0;return w={setConfig:c,initialize:b,loadInitialization:h,loadSegments:j,reset:n},a(),w}Object.defineProperty(c,"__esModule",{value:!0});var f=a(13),g=d(f),h=a(9),i=d(h),j=a(150),k=d(j),l=a(10),m=d(l),n=a(8),o=d(n),p=a(151),q=d(p),r=a(156),s=d(r),t=a(46),u=d(t),v=a(179),w=a(163),x=d(w),y=a(58),z=d(y);e.__dashjs_factory_name="WebmSegmentBaseLoader",c.default=m.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,150:150,151:151,156:156,163:163,179:179,46:46,58:58,8:8,9:9}],20:[function(a,b,c){"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d="TcpList";c.TCP_CONNECTION=d;var e="HttpList";c.HTTP_REQUEST=e;var f="RepSwitchList";c.TRACK_SWITCH=f;var g="BufferLevel";c.BUFFER_LEVEL=g;var h="BufferState";c.BUFFER_STATE=h;var i="DVRInfo";c.DVR_INFO=i;var j="DroppedFrames";c.DROPPED_FRAMES=j;var k="SchedulingInfo";c.SCHEDULING_INFO=k;var l="RequestsQueue";c.REQUESTS_QUEUE=l;var m="ManifestUpdate";c.MANIFEST_UPDATE=m;var n="ManifestUpdatePeriodInfo";c.MANIFEST_UPDATE_STREAM_INFO=n;var o="ManifestUpdateRepresentationInfo";c.MANIFEST_UPDATE_TRACK_INFO=o;var p="PlayList";c.PLAY_LIST=p;var q="DVBErrors";c.DVB_ERRORS=q},{}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){P=null,Q=-1,R=!0,S=[],V=(0,m.default)(M).getInstance(),X=(0,q.default)(M).getInstance(),Y=(0,o.default)(M).getInstance(),Z=(0,s.default)(M).getInstance(),$=(0,u.default)(M).getInstance(),_=(0,y.default)(M).getInstance(),aa=(0,k.default)(M).getInstance(),ba=(0,g.default)(M).getInstance(),ca=(0,i.default)(M).getInstance(),da=(0,w.default)(M).getInstance(),N.on(E.default.QUALITY_CHANGE_REQUESTED,K,O),N.on(E.default.REPRESENTATION_UPDATED,G,O),N.on(E.default.WALLCLOCK_TIME_UPDATED,H,O),N.on(E.default.BUFFER_LEVEL_UPDATED,J,O),N.on(E.default.LIVE_EDGE_SEARCH_COMPLETED,I,O)}function b(a){a.abrController&&(V=a.abrController)}function c(a){U=a,W=U.getIndexHandler()}function d(){return U}function e(){return P}function f(){return Q}function h(){return R}function j(){return T}function l(){N.off(E.default.QUALITY_CHANGE_REQUESTED,K,O),N.off(E.default.REPRESENTATION_UPDATED,G,O),N.off(E.default.WALLCLOCK_TIME_UPDATED,H,O),N.off(E.default.BUFFER_LEVEL_UPDATED,J,O),N.off(E.default.LIVE_EDGE_SEARCH_COMPLETED,I,O),P=null,Q=-1,R=!0,S=[],V=null,X=null,Y=null,Z=null,$=null,_=null,aa=null,ba=null,ca=null,da=null}function n(a,b,c){var d,e,f=null,g=U.getStreamInfo(),h=V.getTopQualityIndexFor(c,g.id);if(R=!0,N.trigger(E.default.DATA_UPDATE_STARTED,{sender:this}),S=z(b),null===P&&"fragmentedText"!==c?(e=V.getAverageThroughput(c),f=e||V.getInitialBitrateFor(c,g),d=V.getQualityForBitrate(U.getMediaInfo(),f)):d=V.getQualityFor(c,g),d>h&&(d=h),T=t(d),P=a,"video"!==c&&"audio"!==c&&"fragmentedText"!==c)return R=!1,void N.trigger(E.default.DATA_UPDATE_COMPLETED,{sender:this,data:P,currentRepresentation:T});for(var i=0;i<S.length;i++)W.updateRepresentation(S[i],!0)}function p(){var a=new Date,b=j(),c=1e3*Y.getTime();$.addRepresentationSwitch(b.adaptation.type,a,c,b.id)}function r(){var a=aa.calcSegmentAvailabilityRange(T,U.isDynamic());$.addDVRInfo(U.getType(),Y.getTime(),U.getStreamInfo().manifestInfo,a)}function t(a){return S[a]}function v(a){return S.indexOf(a)}function x(){for(var a=0,b=S.length;a<b;a++){var c=S[a].segmentInfoType;if(null===S[a].segmentAvailabilityRange||null===S[a].initialization||("SegmentBase"===c||"BaseURL"===c)&&!S[a].segments)return!1}return!0}function z(a){var b,c=Z.getValue();return Q=ba.getIndexForAdaptation(P,c,a.period.index),b=ba.getRepresentationsForAdaptation(c,a)}function B(a){for(var b,c=0,d=S.length;c<d;c++)b=S[c],b.segmentAvailabilityRange=aa.calcSegmentAvailabilityRange(b,a)}function D(){S.forEach(function(a){a.segmentAvailabilityRange=null})}function F(a){var b=a,c=function(){if(!h()){R=!0,N.trigger(E.default.DATA_UPDATE_STARTED,{sender:O}),D();for(var a=0;a<S.length;a++)W.updateRepresentation(S[a],!0)}};R=!1,N.trigger(E.default.AST_IN_FUTURE,{delay:b}),setTimeout(c,b)}function G(a){if(a.sender.getStreamProcessor()===U&&h()){var b,c,d,e=a.representation,f=$.getMetricsFor("stream"),g=$.getMetricsFor(j().adaptation.type),i=ca.getCurrentManifestUpdate(f),k=!1,l=0;if("dynamic"===e.adaptation.period.mpd.manifest.type){var m=e.segmentAvailabilityRange.end-e.segmentAvailabilityRange.start,n=Y.computeLiveDelay(T.segmentDuration,U.getStreamInfo().manifestInfo.DVRWindowSize);l=1e3*(n-m)}if(l>0)return r(),F(l),c=new A.default(L,"Segments update failed",null),void N.trigger(E.default.DATA_UPDATE_COMPLETED,{sender:this,data:P,currentRepresentation:T,error:c});if(i){for(var o=0;o<i.trackInfo.length;o++)if(b=i.trackInfo[o],b.index===e.index&&b.mediaType===U.getType()){k=!0;break}k||$.addManifestUpdateRepresentationInfo(i,e.id,e.index,e.adaptation.period.index,U.getType(),e.presentationTimeOffset,e.startNumber,e.segmentInfoType)}x()&&(R=!1,V.setPlaybackQuality(U.getType(),U.getStreamInfo(),v(T)),$.updateManifestUpdateInfo(i,{latency:T.segmentAvailabilityRange.end-Y.getTime()}),d=ca.getCurrentRepresentationSwitch(g),d||p(),N.trigger(E.default.DATA_UPDATE_COMPLETED,{sender:this,data:P,currentRepresentation:T}))}}function H(a){a.isDynamic&&B(a.isDynamic)}function I(a){if(!a.error){B(!0),W.updateRepresentation(T,!1);var b=Z.getValue(),c=T.adaptation.period,d=X.getActiveStreamInfo();d.isLast&&(c.mpd.checkTime=ba.getCheckTime(b,c),c.duration=ba.getEndTimeForLastPeriod(Z.getValue(),c)-c.start,d.duration=c.duration)}}function J(a){a.sender.getStreamProcessor()===U&&r()}function K(a){a.mediaType===U.getType()&&U.getStreamInfo().id===a.streamInfo.id&&a.oldQuality!==a.newQuality&&(T=t(a.newQuality),_.setSavedBitrateSettings(a.mediaType,T.bandwidth),p())}var L=1,M=this.context,N=(0,C.default)(M).getInstance(),O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0;return O={initialize:c,setConfig:b,getData:e,getDataIndex:f,isUpdating:h,updateData:n,getStreamProcessor:d,getCurrentRepresentation:j,getRepresentationForQuality:t,reset:l},a(),O}Object.defineProperty(c,"__esModule",{value:!0});var f=a(22),g=d(f),h=a(17),i=d(h),j=a(37),k=d(j),l=a(60),m=d(l),n=a(68),o=d(n),p=a(71),q=d(p),r=a(100),s=d(r),t=a(102),u=d(t),v=a(101),w=d(v),x=a(149),y=d(x),z=a(162),A=d(z),B=a(9),C=d(B),D=a(13),E=d(D),F=a(10),G=d(F);e.__dashjs_factory_name="RepresentationController",c.default=G.default.getClassFactory(e),b.exports=c.default},{10:10,100:100,101:101,102:102,13:13,149:149,162:162,17:17,22:22,37:37,60:60,68:68,71:71,9:9}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c,d,e,f=!1,g=!1,h=a.ContentComponent_asArray,i="text"!==b?new RegExp(b):new RegExp("(vtt|ttml)");if(a.Representation_asArray.length>0&&a.Representation_asArray[0].hasOwnProperty("codecs")){var j=a.Representation_asArray[0].codecs;if("stpp"===j||"wvtt"===j)return"fragmentedText"===b}if(h){if(h.length>1)return"muxed"===b;h[0]&&h[0].contentType===b&&(f=!0,g=!0)}if(a.hasOwnProperty("mimeType")&&(f=i.test(a.mimeType),g=!0),!g)for(c=0,d=a.Representation_asArray.length;!g&&c<d;)e=a.Representation_asArray[c],e.hasOwnProperty("mimeType")&&(f=i.test(e.mimeType),g=!0),c++;return f}function b(b){return a(b,"audio")}function c(b){return a(b,"video")}function d(b){return a(b,"fragmentedText")}function e(b){return a(b,"text")}function f(b){return a(b,"muxed")}function h(a){return"text/vtt"===a||"application/ttml+xml"===a}function j(a){var b="";return a.hasOwnProperty("lang")&&(b=a.lang.replace(/[^A-Za-z0-9-]/g,"")),b}function l(a){return a.hasOwnProperty("Viewpoint")?a.Viewpoint:null}function n(a){return a.hasOwnProperty("Role_asArray")?a.Role_asArray:[]}function p(a){return a.hasOwnProperty("Accessibility_asArray")?a.Accessibility_asArray:[]}function r(a){return a.hasOwnProperty("AudioChannelConfiguration_asArray")?a.AudioChannelConfiguration_asArray:[]}function t(a){return n(a).filter(function(a){return"main"===a.value})[0]}function v(){return function(a,b){return a.bandwidth-b.bandwidth}}function x(a){return void 0!==a.Representation_asArray&&null!==a.Representation_asArray&&a.Representation_asArray.sort(v()),a}function z(a,b,c){var d,e,f=b.Period_asArray[c].AdaptationSet_asArray;for(d=0,e=f.length;d<e;d++)if(f[d].hasOwnProperty("id")&&f[d].id===a)return f[d];return null}function B(a,b,c){var d=b.Period_asArray[c].AdaptationSet_asArray;return d[a]}function D(a,b,c){var d,e,f=b.Period_asArray[c].AdaptationSet_asArray;for(d=0,e=f.length;d<e;d++)if(f[d]===a)return d;return-1}function E(b,c,d){var e,f,g=b.Period_asArray[c].AdaptationSet_asArray,h=[];for(e=0,f=g.length;e<f;e++)a(g[e],d)&&h.push(x(g[e]));return h}function F(a,b,c,d){var e=E(a,b,c);if(!e||0===e.length)return null;if(e.length>1&&d)for(var f=la.getCurrentTrackFor(c,d),g=ma.getAllMediaInfoForType(a,d,c),h=0,i=e.length;h<i;h++){if(f&&la.isTracksEqual(f,g[h]))return e[h];if(t(e[h]))return e[h]}return e[0]}function G(a){var b=a.Representation_asArray[0];return b.mimeType+';codecs="'+b.codecs+'"'}function H(a){return a.Representation_asArray[0].mimeType}function I(a){return a&&a.hasOwnProperty("cenc:default_KID")?a["cenc:default_KID"]:null}function J(a){return a&&a.hasOwnProperty("ContentProtection_asArray")&&0!==a.ContentProtection_asArray.length?a.ContentProtection_asArray:null}function K(a){var b=!1;return a.hasOwnProperty("type")&&(b="dynamic"===a.type),b}function L(a){var b,c,d=K(a);return b=!isNaN(a.timeShiftBufferDepth),c=d&&b}function M(a,b){var c=!1;return a.profiles&&a.profiles.length>0&&(c=a.profiles.indexOf(b)!==-1),c}function N(a){return M(a,"urn:mpeg:dash:profile:isoff-on-demand:2011")}function O(a){return M(a,"urn:dvb:dash:profile:dvb-dash:2014")}function P(a){var b;return b=a.hasOwnProperty("mediaPresentationDuration")?a.mediaPresentationDuration:Number.MAX_VALUE}function Q(a){return a.bandwidth}function R(a){var b=NaN,c=2;return a.hasOwnProperty("minimumUpdatePeriod")&&(b=Math.max(parseFloat(a.minimumUpdatePeriod),c)),b}function S(a){return a.Representation_asArray.length}function T(a){if(!a||!a.Representation_asArray||!a.Representation_asArray.length)return null;for(var b=x(a),c=b.Representation_asArray,d=c.length,e=[],f=0;f<d;f++)e.push({bandwidth:c[f].bandwidth,width:c[f].width||0,height:c[f].height||0});return e}function U(a,b){return b.Representation_asArray[a]}function V(a,b){for(var c,d,e,f,i,j=x(a.Period_asArray[b.period.index].AdaptationSet_asArray[b.index]),k=[],l=0;l<j.Representation_asArray.length;l++)f=j.Representation_asArray[l],c=new g.default,c.index=l,c.adaptation=b,f.hasOwnProperty("id")&&(c.id=f.id),f.hasOwnProperty("bandwidth")&&(c.bandwidth=f.bandwidth),f.hasOwnProperty("maxPlayoutRate")&&(c.maxPlayoutRate=f.maxPlayoutRate),f.hasOwnProperty("SegmentBase")?(e=f.SegmentBase,c.segmentInfoType="SegmentBase"):f.hasOwnProperty("SegmentList")?(e=f.SegmentList,e.hasOwnProperty("SegmentTimeline")?(c.segmentInfoType="SegmentTimeline",i=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!i.hasOwnProperty("r")||i.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):(c.segmentInfoType="SegmentList",c.useCalculatedLiveEdgeTime=!0)):f.hasOwnProperty("SegmentTemplate")?(e=f.SegmentTemplate,e.hasOwnProperty("SegmentTimeline")?(c.segmentInfoType="SegmentTimeline",i=e.SegmentTimeline.S_asArray[e.SegmentTimeline.S_asArray.length-1],(!i.hasOwnProperty("r")||i.r>=0)&&(c.useCalculatedLiveEdgeTime=!0)):c.segmentInfoType="SegmentTemplate",e.hasOwnProperty("initialization")&&(c.initialization=e.initialization.split("$Bandwidth$").join(f.bandwidth).split("$RepresentationID$").join(f.id))):(e=f.BaseURL,c.segmentInfoType="BaseURL"),e.hasOwnProperty("Initialization")?(d=e.Initialization,d.hasOwnProperty("sourceURL")?c.initialization=d.sourceURL:d.hasOwnProperty("range")&&(c.range=d.range)):f.hasOwnProperty("mimeType")&&h(f.mimeType)&&(c.range=0),e.hasOwnProperty("timescale")&&(c.timescale=e.timescale),e.hasOwnProperty("duration")&&(c.segmentDuration=e.duration/c.timescale),e.hasOwnProperty("startNumber")&&(c.startNumber=e.startNumber),e.hasOwnProperty("indexRange")&&(c.indexRange=e.indexRange),e.hasOwnProperty("presentationTimeOffset")&&(c.presentationTimeOffset=e.presentationTimeOffset/c.timescale),c.MSETimeOffset=ka.calcMSETimeOffset(c),c.path=[b.period.index,b.index,l],k.push(c);return k}function W(a,e){for(var g,h,j=a.Period_asArray[e.index],k=[],l=0;l<j.AdaptationSet_asArray.length;l++)h=j.AdaptationSet_asArray[l],g=new i.default,h.hasOwnProperty("id")&&(g.id=h.id),g.index=l,g.period=e,f(h)?g.type="muxed":b(h)?g.type="audio":c(h)?g.type="video":d(h)?g.type="fragmentedText":g.type="text",k.push(g);return k}function X(a,b){var c,d,e=K(a),f=[],g=null,h=null,i=null,j=null;for(d=0,c=a.Period_asArray.length;d<c;d++)h=a.Period_asArray[d],h.hasOwnProperty("start")?(j=new k.default,j.start=h.start):null!==g&&h.hasOwnProperty("duration")&&null!==i?(j=new k.default,j.start=i.start+i.duration,j.duration=h.duration):0!==d||e||(j=new k.default,j.start=0),null!==i&&isNaN(i.duration)&&(i.duration=j.start-i.start),null!==j&&(j.id=Y(h)),null!==j&&h.hasOwnProperty("duration")&&(j.duration=h.duration),null!==j&&(j.index=d,j.mpd=b,f.push(j),g=h,i=j),h=null,j=null;return 0===f.length?f:(null!==i&&isNaN(i.duration)&&(i.duration=aa(a,i)-i.start),f)}function Y(a){if(!a)throw new Error("Period cannot be null or undefined");var b=k.default.DEFAULT_ID;return a.hasOwnProperty("id")&&"__proto__"!==a.id&&(b=a.id),b}function Z(a){var b=new m.default;return b.manifest=a,a.hasOwnProperty("availabilityStartTime")?b.availabilityStartTime=new Date(a.availabilityStartTime.getTime()):b.availabilityStartTime=new Date(a.loadedTime.getTime()),a.hasOwnProperty("availabilityEndTime")&&(b.availabilityEndTime=new Date(a.availabilityEndTime.getTime())),a.hasOwnProperty("suggestedPresentationDelay")&&(b.suggestedPresentationDelay=a.suggestedPresentationDelay),a.hasOwnProperty("timeShiftBufferDepth")&&(b.timeShiftBufferDepth=a.timeShiftBufferDepth),a.hasOwnProperty("maxSegmentDuration")&&(b.maxSegmentDuration=a.maxSegmentDuration),b}function $(a,b){return ka.calcPresentationTimeFromWallTime(a.loadedTime,b)}function _(a,b){var c,d=NaN;return a.hasOwnProperty("minimumUpdatePeriod")&&(c=$(a,b),d=c+a.minimumUpdatePeriod),d}function aa(a,b){var c,d=_(a,b);if(a.mediaPresentationDuration)c=a.mediaPresentationDuration;else{if(isNaN(d))throw new Error("Must have @mediaPresentationDuration or @minimumUpdatePeriod on MPD or an explicit @duration on the last period.");c=d}return c}function ba(a,b){var c=a.Period_asArray,d=c[b.index].EventStream_asArray,e=[];if(d)for(var f=0;f<d.length;f++){var g=new A.default;if(g.period=b,g.timescale=1,!d[f].hasOwnProperty("schemeIdUri"))throw new Error("Invalid EventStream. SchemeIdUri has to be set");g.schemeIdUri=d[f].schemeIdUri,d[f].hasOwnProperty("timescale")&&(g.timescale=d[f].timescale),d[f].hasOwnProperty("value")&&(g.value=d[f].value);for(var h=0;h<d[f].Event_asArray.length;h++){var i=new w.default;i.presentationTime=0,i.eventStream=g,d[f].Event_asArray[h].hasOwnProperty("presentationTime")&&(i.presentationTime=d[f].Event_asArray[h].presentationTime),d[f].Event_asArray[h].hasOwnProperty("duration")&&(i.duration=d[f].Event_asArray[h].duration),d[f].Event_asArray[h].hasOwnProperty("id")&&(i.id=d[f].Event_asArray[h].id),e.push(i)}}return e}function ca(a,b){var c=[];if(!a)return c;for(var d=0;d<a.length;d++){var e=new A.default;if(e.timescale=1,e.representation=b,!a[d].hasOwnProperty("schemeIdUri"))throw new Error("Invalid EventStream. SchemeIdUri has to be set");e.schemeIdUri=a[d].schemeIdUri,a[d].hasOwnProperty("timescale")&&(e.timescale=a[d].timescale),a[d].hasOwnProperty("value")&&(e.value=a[d].value),c.push(e)}return c}function da(a,b){var c=a.Period_asArray[b.period.index].AdaptationSet_asArray[b.index].InbandEventStream_asArray;return ca(c,null)}function ea(a,b){var c=a.Period_asArray[b.adaptation.period.index].AdaptationSet_asArray[b.adaptation.index].Representation_asArray[b.index].InbandEventStream_asArray;return ca(c,b)}function fa(a){var b=K(a),c=a.hasOwnProperty("availabilityStartTime"),d=a.UTCTiming_asArray,e=[];return(b||c)&&d&&d.forEach(function(a){var b=new o.default;a.hasOwnProperty("schemeIdUri")&&(b.schemeIdUri=a.schemeIdUri,a.hasOwnProperty("value")&&(b.value=a.value.toString(),e.push(b)))}),e}function ga(a){var b=[],c=a.BaseURL_asArray||[a.baseUri],d=!1;return c.some(function(c){if(c){var e=new y.default,f=c.__text||c;return na.isRelative(f)&&(d=!0,a.baseUri&&(f=a.baseUri+f)),e.url=f,c.hasOwnProperty("serviceLocation")&&c.serviceLocation.length?e.serviceLocation=c.serviceLocation:e.serviceLocation=f,c.hasOwnProperty("dvb:priority")&&(e.dvb_priority=c["dvb:priority"]),c.hasOwnProperty("dvb:weight")&&(e.dvb_weight=c["dvb:weight"]),b.push(e),d}}),b}function ha(a){return a.hasOwnProperty("Location")&&(a.Location=a.Location_asArray[0]),a.Location}var ia=void 0,ja=this.context,ka=(0,q.default)(ja).getInstance(),la=(0,s.default)(ja).getInstance(),ma=(0,u.default)(ja).getInstance(),na=(0,C.default)(ja).getInstance();return ia={getIsTypeOf:a,getIsAudio:b,getIsVideo:c,getIsText:e,getIsMuxed:f,getIsTextTrack:h,getIsFragmentedText:d,getIsMain:t,getLanguageForAdaptation:j,getViewpointForAdaptation:l,getRolesForAdaptation:n,getAccessibilityForAdaptation:p,getAudioChannelConfigurationForAdaptation:r,processAdaptation:x,getAdaptationForIndex:B,getIndexForAdaptation:D,getAdaptationForId:z,getAdaptationsForType:E,getAdaptationForType:F,getCodec:G,getMimeType:H,getKID:I,getContentProtectionData:J,getIsDynamic:K,getIsDVR:L,getIsOnDemand:N,getIsDVB:O,getDuration:P,getBandwidth:Q,getRefreshDelay:R,getRepresentationCount:S,getBitrateListForAdaptation:T,getRepresentationFor:U,getRepresentationsForAdaptation:V,getAdaptationsForPeriod:W,getRegularPeriods:X,getPeriodId:Y,getMpd:Z,getFetchTime:$,getCheckTime:_,getEndTimeForLastPeriod:aa,getEventsForPeriod:ba,getEventStreams:ca,getEventStreamForAdaptationSet:da,getEventStreamForRepresentation:ea,getUTCTimingSources:fa,getBaseURLsFromElement:ga,getRepresentationSortFunction:v,getLocation:ha}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(45),g=d(f),h=a(39),i=d(h),j=a(44),k=d(j),l=a(43),m=d(l),n=a(47),o=d(n),p=a(37),q=d(p),r=a(66),s=d(r),t=a(15),u=d(t),v=a(41),w=d(v),x=a(40),y=d(x),z=a(42),A=d(z),B=a(158),C=d(B),D=a(10),E=d(D);e.__dashjs_factory_name="DashManifestModel",c.default=E.default.getSingletonFactory(e),b.exports=c.default},{10:10,15:15,158:158,37:37,39:39,40:40,41:41,42:42,43:43,44:44,45:45,47:47,66:66}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){h=[new q.default,new s.default,new u.default],i=new o.default(h,"",(!0)),j=new m.default([new w.default,new y.default])}function b(a,b){var c;try{var f=window.performance.now();if(c=i.xml_str2json(a),!c)throw new Error("parser error");var g=window.performance.now();j.run(c);var k=window.performance.now();b.setMatchers(h),b.setIron(j),d("Parsing complete: ( xml2json: "+(g-f).toPrecision(3)+"ms, objectiron: "+(k-g).toPrecision(3)+"ms, total: "+((k-f)/1e3).toPrecision(3)+"s)")}catch(l){return e.manifestError("parsing the manifest failed","parse",a,l),null}return c}var c=this.context,d=(0,k.default)(c).getInstance().log,e=(0,g.default)(c).getInstance(),f=void 0,h=void 0,i=void 0,j=void 0;return f={ +parse:b},a(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(151),g=d(f),h=a(10),i=d(h),j=a(8),k=d(j),l=a(3),m=d(l),n=a(4),o=d(n),p=a(30),q=d(p),r=a(29),s=d(r),t=a(31),u=d(t),v=a(26),w=d(v),x=a(27),y=d(x);e.__dashjs_factory_name="DashParser",c.default=i.default.getClassFactory(e),b.exports=c.default},{10:10,151:151,26:26,27:27,29:29,3:3,30:30,31:31,4:4,8:8}],24:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){d(this,a);var e=function(a){return a&&a.length&&a.charAt(0)===a.charAt(0).toUpperCase()};this._name=b,this._merge=void 0!==c?c:e(b)}return e(a,[{key:"name",get:function(){return this._name}},{key:"merge",get:function(){return this._merge}}]),a}();c.default=f,b.exports=c.default},{}],25:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),g=a(24),h=d(g),i=function(){function a(b,c,d,f,g){var i=this;e(this,a),this._name=b||"",this._properties=[],this._children=d||[],this._isRoot=f||!1,this._isArray=g||!0,Array.isArray(c)&&c.forEach(function(a){i._properties.push(new h.default(a))})}return f(a,[{key:"name",get:function(){return this._name}},{key:"isRoot",get:function(){return this._isRoot}},{key:"isArray",get:function(){return this._isArray}},{key:"children",get:function(){return this._children}},{key:"properties",get:function(){return this._properties}}]),a}();c.default=i,b.exports=c.default},{24:24}],26:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(25),i=d(h),j=function(a){function b(){e(this,b);var a=["profiles","width","height","sar","frameRate","audioSamplingRate","mimeType","segmentProfiles","codecs","maximumSAPPeriod","startWithSAP","maxPlayoutRate","codingDependency","scanType","FramePacking","AudioChannelConfiguration","ContentProtection","EssentialProperty","SupplementalProperty","InbandEventStream"];return g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,"AdaptationSet",a,[new i.default("Representation",a,[new i.default("SubRepresentation",a)])])}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{25:25}],27:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(25),i=d(h),j=function(a){function b(){e(this,b);var a=["SegmentBase","SegmentTemplate","SegmentList"];return g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,"Period",a,[new i.default("AdaptationSet",a,[new i.default("Representation",a)])])}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{25:25}],28:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){d(this,a),this._test=b,this._converter=c}return e(a,[{key:"test",get:function(){return this._test}},{key:"converter",get:function(){return this._converter}}]),a}();c.default=f,b.exports=c.default},{}],29:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(28),i=d(h),j=60,k=60,l=1e3,m=/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+-])([0-9]{2})(?::?)([0-9]{2}))?/,n=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){return m.test(a.value)},function(a){var b=m.exec(a),c=void 0;if(c=Date.UTC(parseInt(b[1],10),parseInt(b[2],10)-1,parseInt(b[3],10),parseInt(b[4],10),parseInt(b[5],10),b[6]&&parseInt(b[6],10)||0,b[7]&&parseFloat(b[7])*l||0),b[9]&&b[10]){var d=parseInt(b[9],10)*k+parseInt(b[10],10);c+=("+"===b[8]?-1:1)*d*j*l}return new Date(c)})}return f(b,a),b}(i.default);c.default=n,b.exports=c.default},{28:28}],30:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(28),i=d(h),j=/^([-])?P(([\d.]*)Y)?(([\d.]*)M)?(([\d.]*)D)?T?(([\d.]*)H)?(([\d.]*)M)?(([\d.]*)S)?/,k=31536e3,l=2592e3,m=86400,n=3600,o=60,p=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){for(var b=["minBufferTime","mediaPresentationDuration","minimumUpdatePeriod","timeShiftBufferDepth","maxSegmentDuration","maxSubsegmentDuration","suggestedPresentationDelay","start","starttime","duration"],c=b.length,d=0;d<c;d++)if(a.nodeName===b[d])return j.test(a.value);return!1},function(a){var b=j.exec(a),c=parseFloat(b[2]||0)*k+parseFloat(b[4]||0)*l+parseFloat(b[6]||0)*m+parseFloat(b[8]||0)*n+parseFloat(b[10]||0)*o+parseFloat(b[12]||0);return void 0!==b[1]&&(c=-c),c})}return f(b,a),b}(i.default);c.default=p,b.exports=c.default},{28:28}],31:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(28),i=d(h),j=/^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/,k=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this,function(a){return j.test(a.value)},function(a){return parseFloat(a)})}return f(b,a),b}(i.default);c.default=k,b.exports=c.default},{28:28}],32:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.boxParser&&(e=a.boxParser)}function b(a){var b,c,d,f,g,h,i,j,k,l,m,n=e.parse(a),o=n.getBox("tfhd"),p=n.getBox("tfdt"),q=n.getBox("trun"),r=n.getBox("moof"),s=n.getBox("mfhd");for(l=s.sequence_number,d=q.sample_count,g=p.baseMediaDecodeTime,k=(o.base_data_offset||0)+(q.data_offset||0),h=[],j=0;j<d;j++)i=q.samples[j],b=void 0!==i.sample_duration?i.sample_duration:o.default_sample_duration,f=void 0!==i.sample_size?i.sample_size:o.default_sample_size,c=void 0!==i.sample_composition_time_offset?i.sample_composition_time_offset:0,h.push({dts:g,cts:g+c,duration:b,offset:r.offset+k,size:f}),k+=f,g+=b;return m=g-p.baseMediaDecodeTime,{sampleList:h,sequenceNumber:l,totalDuration:m}}function c(a){var b=e.parse(a),c=b.getBox("mdhd");return c?c.timescale:NaN}var d=void 0,e=void 0;return d={getSamplesInfo:b,getMediaTimescaleFromMoov:c,setConfig:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="FragmentedTextBoxParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],33:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g,i,j,k,l,m,n,o=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentList,p=o.SegmentURL_asArray.length,q=[];for(n=a.startNumber,k=(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e,f),l=Math.max(k.start,0),m=Math.min(k.end,o.SegmentURL_asArray.length-1),g=l;g<=m;g++)j=o.SegmentURL_asArray[g],i=(0,h.getIndexBasedSegment)(d,b,a,g),i.replacementTime=(n+g-1)*a.segmentDuration,i.media=j.media?j.media:"",i.mediaRange=j.mediaRange,i.index=j.index,i.indexRange=j.indexRange,q.push(i),i=null;return a.availableSegmentsNumber=p,q}var d=a.timelineConverter,e=void 0;return e={getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(35);e.__dashjs_factory_name="ListSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{10:10,35:35}],34:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(){h=(0,i.default)(f).create(a,b),j=(0,k.default)(f).create(a,b),l=(0,m.default)(f).create(a,b)}function d(a,b,c,d,f){var g,i=a.segmentInfoType;return"SegmentBase"!==i&&"BaseURL"!==i&&e(a,c)?("SegmentTimeline"===i?g=h.getSegments(a,b,c,f):"SegmentTemplate"===i?g=j.getSegments(a,b,c,f):"SegmentList"===i&&(g=l.getSegments(a,b,c,f)),d&&d(a,g)):g=a.segments,g}function e(a,b){var c,d,e=a.segments,f=!1;return e&&0!==e.length?(d=e[0].availabilityIdx,c=e[e.length-1].availabilityIdx,f=b<d||b>c):f=!0,f}var f=this.context,g=void 0,h=void 0,j=void 0,l=void 0;return g={getSegments:d},c(),g}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(38),i=d(h),j=a(36),k=d(j),l=a(33),m=d(l);e.__dashjs_factory_name="SegmentsGetter";var n=g.default.getClassFactory(e);c.default=n,b.exports=c.default},{10:10,33:33,36:36,38:38}],35:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){for(;a.length<b;)a="0"+a;return a}function f(a,b){return a.representation.startNumber+b}function g(a,b,c){for(var d,f,g,h,i,j,k="%0",l=b.length,m=k.length;;){if(d=a.indexOf("$"+b),d<0)return a;if(f=a.indexOf("$",d+l),f<0)return a;if(g=a.indexOf(k,d+l),g>d&&g<f)switch(h=a.charAt(f-1),i=parseInt(a.substring(g+m,f-1),10),h){case"d":case"i":case"u":j=e(c.toString(),i);break;case"x":j=e(c.toString(16),i);break;case"X":j=e(c.toString(16),i).toUpperCase();break;case"o":j=e(c.toString(8),i);break;default:return a}else j=c;a=a.substring(0,d)+j+a.substring(f+1)}}function h(a,b,c,d){var e,g,h,i;return g=c.segmentDuration,isNaN(g)&&(g=c.adaptation.period.duration),h=c.adaptation.period.start+d*g,i=h+g,e=new n.default,e.representation=c,e.duration=g,e.presentationStartTime=h,e.mediaStartTime=a.calcMediaTimeFromPresentationTime(e.presentationStartTime,c),e.availabilityStartTime=a.calcAvailabilityStartTimeFromPresentationTime(e.presentationStartTime,c.adaptation.period.mpd,b),e.availabilityEndTime=a.calcAvailabilityEndTimeFromPresentationTime(i,c.adaptation.period.mpd,b),e.wallStartTime=a.calcWallTimeForSegment(e,b),e.replacementNumber=f(e,d),e.availabilityIdx=d,e}function i(a,b,c,d,e,h,i,j,k){var l,m,o,p=d/h,q=Math.min(e/h,c.adaptation.period.mpd.maxSegmentDuration);return l=a.calcPresentationTimeFromMediaTime(p,c),m=l+q,o=new n.default,o.representation=c,o.duration=q,o.mediaStartTime=p,o.presentationStartTime=l,o.availabilityStartTime=c.adaptation.period.mpd.manifest.loadedTime,o.availabilityEndTime=a.calcAvailabilityEndTimeFromPresentationTime(m,c.adaptation.period.mpd,b),o.wallStartTime=a.calcWallTimeForSegment(o,b),o.replacementTime=d,o.replacementNumber=f(o,k),i=g(i,"Number",o.replacementNumber),i=g(i,"Time",o.replacementTime),o.media=i,o.mediaRange=j,o.availabilityIdx=k,o}function j(a,b){if(!b||!b.segments)return null;var c,d,e=b.segments.length;if(a<e&&(c=b.segments[a],c&&c.availabilityIdx===a))return c;for(d=0;d<e;d++)if(c=b.segments[d],c&&c.availabilityIdx===a)return c;return null}function k(a,b,c,d,e){var f,g,h,i=2,j=e||10,k=0,l=Number.POSITIVE_INFINITY;return b&&!a.isTimeSyncCompleted()?h={start:k,end:l}:!b&&c||d<0?null:(f=Math.max(d-i,k),g=Math.min(d+j,l),h={start:f,end:g})}function l(a,b,c,d,e,f){var g,h,i,k=c.segmentDuration,l=c.adaptation.period.mpd.manifest.minBufferTime,m=c.segmentAvailabilityRange,n={start:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,m.start),end:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,m.end)},o=c.segments,p=2*k,q=f||Math.max(2*l,10*k),r=NaN,s=null;return n.start=Math.max(n.start,0),b&&!a.isTimeSyncCompleted()?(g=Math.floor(n.start/k),h=Math.floor(n.end/k),i={start:g,end:h}):(o&&o.length>0?(s=j(e,c),r=s?a.calcPeriodRelativeTimeFromMpdRelativeTime(c,s.presentationStartTime):e>0?e*k:a.calcPeriodRelativeTimeFromMpdRelativeTime(c,d)):r=e>0?e*k:b?n.end:n.start,g=Math.floor(Math.max(r-p,n.start)/k),h=Math.floor(Math.min(g+q/k,n.end/k)),i={start:g,end:h})}Object.defineProperty(c,"__esModule",{value:!0}),c.replaceTokenForTemplate=g,c.getIndexBasedSegment=h,c.getTimeBasedSegment=i,c.getSegmentByIndex=j,c.decideSegmentListRangeForTimeline=k,c.decideSegmentListRangeForTemplate=l;var m=a(46),n=d(m)},{46:46}],36:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g,i,j,k,l,m=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate,n=a.segmentDuration,o=a.segmentAvailabilityRange,p=[],q=null,r=null;for(l=a.startNumber,g=isNaN(n)&&!b?{start:l,end:l}:(0,h.decideSegmentListRangeForTemplate)(d,b,a,c,e,f),j=g.start,k=g.end,i=j;i<=k;i++)r=(0,h.getIndexBasedSegment)(d,b,a,i),r.replacementTime=(l+i-1)*a.segmentDuration,q=m.media,q=(0,h.replaceTokenForTemplate)(q,"Number",r.replacementNumber),q=(0,h.replaceTokenForTemplate)(q,"Time",r.replacementTime),r.media=q,p.push(r),r=null;return isNaN(n)?a.availableSegmentsNumber=1:a.availableSegmentsNumber=Math.ceil((o.end-o.start)/n),p}var d=a.timelineConverter,e=void 0;return e={getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(35);e.__dashjs_factory_name="TemplateSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{10:10,35:35}],37:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){z=0,A=!1,B=NaN,x.on(i.default.LIVE_EDGE_SEARCH_COMPLETED,s,this),x.on(i.default.TIME_SYNCHRONIZATION_COMPLETED,t,this)}function b(){return A}function c(a){A=a}function d(){return z}function e(){return B}function f(a){B=a}function h(a,b,c,d){var e=NaN;return e=d?c&&b.timeShiftBufferDepth!=Number.POSITIVE_INFINITY?new Date(b.availabilityStartTime.getTime()+1e3*(a+b.timeShiftBufferDepth)):b.availabilityEndTime:c?new Date(b.availabilityStartTime.getTime()+1e3*(a-z)):b.availabilityStartTime}function j(a,b,c){return h.call(this,a,b,c)}function k(a,b,c){return h.call(this,a,b,c,!0)}function l(a,b){return(a.getTime()-b.mpd.availabilityStartTime.getTime()+1e3*z)/1e3}function m(a,b){var c=b.adaptation.period.start,d=b.presentationTimeOffset;return a+(c-d)}function n(a,b){var c=b.adaptation.period.start,d=b.presentationTimeOffset;return a-c+d}function o(a,b){var c,d,e;return b&&(c=a.representation.adaptation.period.mpd.suggestedPresentationDelay,d=a.presentationStartTime+c,e=new Date(a.availabilityStartTime.getTime()+1e3*d)),e}function p(a,b){var c,d,e=a.adaptation.period.start,f=e+a.adaptation.period.duration,g={start:e,end:f},h=a.segmentDuration||(a.segments&&a.segments.length?a.segments[a.segments.length-1].duration:0);if(!b)return g;if(!A&&a.segmentAvailabilityRange)return a.segmentAvailabilityRange;c=a.adaptation.period.mpd.checkTime,d=l(new Date,a.adaptation.period),e=Math.max(d-a.adaptation.period.mpd.timeShiftBufferDepth,a.adaptation.period.start);var i=isNaN(c)?d:Math.min(c,d),j=a.adaptation.period.start+a.adaptation.period.duration;return f=(i>=j&&i-h<j?j:i)-h,g={start:e,end:f}}function q(a,b){var c=a.adaptation.period.start;return b-c}function r(a,b){var c=a.adaptation.period.start;return b+c}function s(a){A||a.error||(z+=a.liveEdge-(B+a.searchTime),A=!0)}function t(a){A||a.error||(z=a.offset/1e3,A=!0)}function u(a){var b=a.presentationTimeOffset,c=a.adaptation.period.start;return c-b}function v(){x.off(i.default.LIVE_EDGE_SEARCH_COMPLETED,s,this),x.off(i.default.TIME_SYNCHRONIZATION_COMPLETED,t,this),z=0,A=!1,B=NaN}var w=this.context,x=(0,g.default)(w).getInstance(),y=void 0,z=void 0,A=void 0,B=void 0;return y={initialize:a,isTimeSyncCompleted:b,setTimeSyncCompleted:c,getClientTimeOffset:d,getExpectedLiveEdge:e,setExpectedLiveEdge:f,calcAvailabilityStartTimeFromPresentationTime:j,calcAvailabilityEndTimeFromPresentationTime:k,calcPresentationTimeFromWallTime:l,calcPresentationTimeFromMediaTime:m,calcPeriodRelativeTimeFromMpdRelativeTime:q,calcMpdRelativeTimeFromPeriodRelativeTime:r,calcMediaTimeFromPresentationTime:n,calcSegmentAvailabilityRange:p,calcWallTimeForSegment:o,calcMSETimeOffset:u,reset:v}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="TimelineConverter",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,9:9}],38:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){function c(a,c,e,f){var g,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentTemplate||a.adaptation.period.mpd.manifest.Period_asArray[a.adaptation.period.index].AdaptationSet_asArray[a.adaptation.index].Representation_asArray[a.index].SegmentList,w=v.SegmentTimeline,x=v.SegmentURL_asArray,y=a.availableSegmentsNumber>0,z=10,A=0,B=0,C=-1,D=[],E=!1,F=function(c,e){var f=v.media,g=c.mediaRange;return x&&(f=x[e].media||"",g=x[e].mediaRange),(0,h.getTimeBasedSegment)(d,b,a,A,c.d,u,f,g,C)};for(u=a.timescale,g=w.S_asArray,p=(0,h.decideSegmentListRangeForTimeline)(d,b,c,e,f),p?(s=p.start,t=p.end):r=d.calcMediaTimeFromPresentationTime(c||0,a),j=0,k=g.length;j<k;j++){if(i=g[j],m=0,i.hasOwnProperty("r")&&(m=i.r),i.hasOwnProperty("t")&&(A=i.t,B=A/u),m<0){if(o=g[j+1],o&&o.hasOwnProperty("t"))n=o.t/u;else{var G=a.segmentAvailabilityRange?a.segmentAvailabilityRange.end:d.calcSegmentAvailabilityRange(a,b).end;n=d.calcMediaTimeFromPresentationTime(G,a),a.segmentDuration=i.d/u}m=Math.ceil((n-B)/(i.d/u))-1}if(q){if(y)break;C+=m+1}else for(l=0;l<=m;l++){if(C++,p){if(C>t){if(q=!0,y)break;continue}C>=s&&D.push(F(i,C))}else{if(D.length>z){if(q=!0,y)break;continue}E?D.push(F(i,C)):B>=r-i.d/u*1.5&&(E=!0,D.push(F(i,C)))}A+=i.d,B=A/u}}return y||(a.availableSegmentsNumber=C+1),D}var d=a.timelineConverter,e=void 0;return e={getSegments:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(35);e.__dashjs_factory_name="TimelineSegmentsGetter";var i=g.default.getClassFactory(e);c.default=i,b.exports=c.default},{10:10,35:35}],39:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.period=null,this.index=-1,this.type=null};c.default=e,b.exports=c.default},{}],40:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=1,f=1,g=function a(b,c,g,h){d(this,a),this.url=b||"",this.serviceLocation=c||b||"",this.dvb_priority=g||e,this.dvb_weight=h||f};g.DEFAULT_DVB_PRIORITY=e,g.DEFAULT_DVB_WEIGHT=f,c.default=g,b.exports=c.default},{}],41:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.duration=NaN,this.presentationTime=NaN,this.id=NaN,this.messageData="",this.eventStream=null,this.presentationTimeDelta=NaN};c.default=e,b.exports=c.default},{}],42:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.adaptionSet=null,this.representation=null,this.period=null,this.timescale=1,this.value="",this.schemeIdUri=""};c.default=e,b.exports=c.default},{}],43:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.manifest=null,this.suggestedPresentationDelay=0,this.availabilityStartTime=null,this.availabilityEndTime=Number.POSITIVE_INFINITY,this.timeShiftBufferDepth=Number.POSITIVE_INFINITY,this.maxSegmentDuration=Number.POSITIVE_INFINITY,this.checkTime=NaN,this.clientServerTimeShift=0,this.isClientServerTimeSyncCompleted=!1};c.default=e,b.exports=c.default},{}],44:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=-1,this.duration=NaN,this.start=NaN,this.mpd=null};e.DEFAULT_ID="defaultId",c.default=e,b.exports=c.default},{}],45:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=-1,this.adaptation=null,this.segmentInfoType=null,this.initialization=null,this.segmentDuration=NaN,this.timescale=1,this.startNumber=1,this.indexRange=null,this.range=null,this.presentationTimeOffset=0,this.MSETimeOffset=NaN,this.segmentAvailabilityRange=null,this.availableSegmentsNumber=0,this.bandwidth=NaN,this.maxPlayoutRate=NaN};c.default=e,b.exports=c.default},{}],46:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.indexRange=null,this.index=null,this.mediaRange=null,this.media=null,this.duration=NaN,this.replacementTime=null,this.replacementNumber=NaN,this.mediaStartTime=NaN,this.presentationStartTime=NaN,this.availabilityStartTime=NaN,this.availabilityEndTime=NaN,this.availabilityIdx=NaN,this.wallStartTime=NaN,this.representation=null};c.default=e,b.exports=c.default},{}],47:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],48:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){n=(0,g.default)(h).create({errHandler:a.errHandler,metricsModel:a.metricsModel,requestModifier:a.requestModifier})}function c(a){var b=function(b){j.trigger(o.default.CHECK_FOR_EXISTENCE_COMPLETED,{request:a,exists:b})};if(a){var c=new i.default(a.url);n.load({request:c,success:function(){b(!0)},error:function(){b(!1)}})}else b(!1)}function d(a){var b=function(b,c){j.trigger(o.default.LOADING_COMPLETED,{request:a,response:b||null,error:c||null,sender:l})};a?n.load({request:a,progress:function(){j.trigger(o.default.LOADING_PROGRESS,{request:a})},success:function(a){b(a)},error:function(a,c,d){b(void 0,new k.default(r,d,c))}}):b(void 0,new k.default(s,t))}function e(){n&&n.abort()}function f(){n&&(n.abort(),n=null)}var h=this.context,j=(0,m.default)(h).getInstance(),l=void 0,n=void 0;return l={checkForExistence:c,load:d,abort:e,reset:f},b(),l}Object.defineProperty(c,"__esModule",{value:!0});var f=a(58),g=d(f),h=a(164),i=d(h),j=a(162),k=d(j),l=a(9),m=d(l),n=a(13),o=d(n),p=a(10),q=d(p),r=1,s=2,t="request is null";e.__dashjs_factory_name="FragmentLoader";var u=q.default.getClassFactory(e);u.FRAGMENT_LOADER_ERROR_LOADING_FAILURE=r,u.FRAGMENT_LOADER_ERROR_NULL_REQUEST=s,c.default=u,b.exports=c.default},{10:10,13:13,162:162,164:164,58:58,9:9}],49:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h.on(t.default.XLINK_READY,c,n),q=(0,i.default)(f).create({errHandler:a.errHandler,metricsModel:a.metricsModel,requestModifier:a.requestModifier}),s=(0,g.default)(f).create({errHandler:a.errHandler,metricsModel:a.metricsModel,requestModifier:a.requestModifier})}function c(a){h.trigger(t.default.INTERNAL_MANIFEST_LOADED,{manifest:a.manifest})}function d(a){var b=new m.default(a,p.HTTPRequest.MPD_TYPE);q.load({request:b,success:function(b,c,d){var e,f;d.responseURL&&d.responseURL!==a?(f=j.parseBaseUrl(d.responseURL),e=d.responseURL):(j.isRelative(a)&&(a=j.parseBaseUrl(window.location.href)+a),f=j.parseBaseUrl(a));var g=l.parse(b,s);g?(g.url=e||a,g.originalUrl||(g.originalUrl=g.url),g.baseUri=f,g.loadedTime=new Date,s.resolveManifestOnLoad(g)):h.trigger(t.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new o.default(w,y)})},error:function(b,c,d){h.trigger(t.default.INTERNAL_MANIFEST_LOADED,{manifest:null,error:new o.default(x,"Failed loading manifest: "+a+", "+d)})}})}function e(){h.off(t.default.XLINK_READY,c,n),s&&(s.reset(),s=null),q&&(q.abort(),q=null)}var f=this.context,h=(0,r.default)(f).getInstance(),j=(0,k.default)(f).getInstance(),l=a.parser,n=void 0,q=void 0,s=void 0;return n={load:d,reset:e},b(),n}Object.defineProperty(c,"__esModule",{value:!0});var f=a(74),g=d(f),h=a(58),i=d(h),j=a(158),k=d(j),l=a(170),m=d(l),n=a(162),o=d(n),p=a(179),q=a(9),r=d(q),s=a(13),t=d(s),u=a(10),v=d(u),w=1,x=2,y="parsing failed";e.__dashjs_factory_name="ManifestLoader";var z=v.default.getClassFactory(e);z.MANIFEST_LOADER_ERROR_PARSING_FAILURE=w,z.MANIFEST_LOADER_ERROR_LOADING_FAILURE=x,c.default=z,b.exports=c.default},{10:10,13:13,158:158,162:162,170:170,179:179,58:58,74:74,9:9}],50:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&(a.manifestModel&&(z=a.manifestModel),a.dashManifestModel&&(A=a.dashManifestModel))}function b(a){y=a,u=NaN,v=null,x=!1,w=!0,s.on(i.default.STREAMS_COMPOSED,p,this),s.on(i.default.PLAYBACK_STARTED,n,this),s.on(i.default.PLAYBACK_PAUSED,o,this),s.on(i.default.INTERNAL_MANIFEST_LOADED,l,this)}function c(a){j(a)}function d(){return y}function e(){s.off(i.default.PLAYBACK_STARTED,n,this),s.off(i.default.PLAYBACK_PAUSED,o,this),s.off(i.default.STREAMS_COMPOSED,p,this),s.off(i.default.INTERNAL_MANIFEST_LOADED,l,this),w=!0,x=!1,f(),u=NaN}function f(){null!==v&&(clearInterval(v),v=null)}function h(){f(),isNaN(u)||(r("Refresh manifest in "+u+" seconds."),v=setTimeout(k,Math.min(1e3*u,Math.pow(2,31)-1),this))}function j(a){var b,c,d=new Date;z.setValue(a),r("Manifest has been refreshed at "+d+"["+d.getTime()/1e3+"] "),b=A.getRefreshDelay(a),c=((new Date).getTime()-a.loadedTime.getTime())/1e3,u=Math.max(b-c,0),s.trigger(i.default.MANIFEST_UPDATED,{manifest:a}),w||h()}function k(){var a,b;if(!w&&!x){x=!0,a=z.getValue(),b=a.url;var c=A.getLocation(a);c&&(b=c),y.load(b)}}function l(a){a.error||j(a.manifest)}function n(){w=!1,h()}function o(){w=!0,f()}function p(){x=!1}var q=this.context,r=(0,m.default)(q).getInstance().log,s=(0,g.default)(q).getInstance(),t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0;return t={initialize:b,setManifest:c,getManifestLoader:d,setConfig:a,reset:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j),l=a(8),m=d(l);e.__dashjs_factory_name="ManifestUpdater",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,8:8,9:9}],51:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){_b=!1,ac=!1,bc=!0,ec=null,$b=null,gc=null,ea.default.extend(ga.default),ic=(0,I.default)(Ub).getInstance()}function b(a,b,c){return kc=(0,u.default)(Ub).getInstance(),jc=(0,s.default)(Ub).getInstance(),kc.supportsMediaSource()?void(_b||(_b=!0,cc=(0,M.default)(Ub).getInstance(),nc=(0,i.default)(Ub).getInstance(),dc=(0,m.default)(Ub).getInstance(),dc.initialize(),pc=(0,pa.default)(Ub).getInstance(),oc=(0,ra.default)(Ub).getInstance(),hc=(0,K.default)(Ub).getInstance(),hc.setConfig({adapter:Jb()}),db(),oa(void 0===c||c),a&&zb(a),b&&Db(b),Xb("[dash.js "+R()+"] MediaPlayer has been initialized"))):void jc.capabilityError("mediasource")}function c(){return!!qc&&!!Zb}function d(){if(!ac)throw Qb;(!bc||f()&&ac)&&nc.play()}function e(){if(!ac)throw Qb;nc.pause()}function f(){if(!ac)throw Qb;return nc.isPaused()}function h(){if(!ac)throw Qb;return nc.isSeeking()}function j(a){if(!qc)throw Rb;yb().muted=a}function l(){if(!qc)throw Rb;return yb().muted}function n(a){if(!qc)throw Rb;yb().volume=a}function p(){if(!qc)throw Rb;return yb().volume}function r(a){var b=["video","audio","fragmentedText"];if(a){ +if(b.indexOf(a)!==-1){var c=va().getCurrentBufferLevel(wa(a));return c?c:NaN}return Xb("Warning - getBufferLength requested for invalid type"),NaN}return b.map(function(a){return Ka(a).length>0?va().getCurrentBufferLevel(wa(a)):Number.MAX_VALUE}).reduce(function(a,b){return Math.min(a,b)})}function t(){var a=Mb();return a?a.manifestInfo.DVRWindowSize:0}function v(a){var b=Mb();if(!b)return 0;var c=b.range.start+a;return c>b.range.end&&(c=b.range.end),c}function x(a){if(!ac)throw Qb;var b=nc.getIsDynamic()?v(a):a;nc.seek(b)}function z(a){if(!ac)throw Qb;var b=yb().currentTime;if(void 0!==a)b=lc.getTimeRelativeToStreamId(b,a);else if(nc.getIsDynamic()){var c=Mb();b=null===c?0:B()-(c.range.end-c.time)}return b}function B(){if(!ac)throw Qb;var a=yb().duration;if(nc.getIsDynamic()){var b,c=Mb();if(!c)return 0;b=c.range.end-c.range.start,a=b<c.manifestInfo.DVRWindowSize?b:c.manifestInfo.DVRWindowSize}return a}function D(){if(!ac)throw Qb;return z()<0?NaN:Nb(z())}function F(){if(!ac)throw Qb;return Nb(B())}function H(a,b,c){var d=new Date(1e3*a),e=d.toLocaleDateString(b),f=d.toLocaleTimeString(b,{hour12:c});return f+" "+e}function J(a){a=Math.max(a,0);var b=Math.floor(a/3600),c=Math.floor(a%3600/60),d=Math.floor(a%3600%60);return(0===b?"":b<10?"0"+b.toString()+":":b.toString()+":")+(c<10?"0"+c.toString():c.toString())+":"+(d<10?"0"+d.toString():d.toString())}function L(a,b,c){ia.default.extend(a,b,c,Ub)}function N(a,b,c){Vb.on(a,b,c)}function P(a,b,c){Vb.off(a,b,c)}function R(){return(0,ja.getVersionString)()}function T(){return Wb}function V(){if(!qc)throw Rb;return qc}function X(a){ic.setLiveDelayFragmentCount(a)}function Z(a){ic.setLiveDelay(a)}function _(a){ic.setUseSuggestedPresentationDelay(a)}function ba(a,b){ic.setLastBitrateCachingInfo(a,b)}function da(a,b){ic.setLastMediaSettingsCachingInfo(a,b)}function fa(a,b){cc.setMaxAllowedBitrateFor(a,b)}function ha(a){return cc.getMaxAllowedBitrateFor(a)}function ka(a,b){cc.setMaxAllowedRepresentationRatioFor(a,b)}function ma(a){return cc.getMaxAllowedRepresentationRatioFor(a)}function oa(a){bc=a}function qa(){return bc}function sa(a){ic.setScheduleWhilePaused(a)}function ua(){return ic.getScheduleWhilePaused()}function va(){return oc}function wa(a){return hc.getReadOnlyMetricsFor(a)}function xa(a){if(!ac)throw Qb;return cc.getQualityFor(a,lc.getActiveStreamInfo())}function ya(a,b){if(!ac)throw Qb;cc.setPlaybackQuality(a,lc.getActiveStreamInfo(),b)}function za(){return cc.getLimitBitrateByPortal()}function Aa(a){cc.setLimitBitrateByPortal(a)}function Ba(){return cc.getUsePixelRatioInLimitBitrateByPortal()}function Ca(a){cc.setUsePixelRatioInLimitBitrateByPortal(a)}function Da(a){if(!ac)throw Qb;void 0===rc&&(rc=(0,C.default)(Ub).getInstance());for(var b=yb().textTracks,c=b.length,d=0;d<c;d++){var e=b[d],f=a===d?"showing":"hidden";e.mode!==f&&(e.mode=f)}rc.setTextTrack()}function Ea(a){if(!ac)throw Qb;var b=Ob();return b?b.getBitrateListFor(a):[]}function Fa(a,b){cc.setInitialBitrateFor(a,b)}function Ga(a){if(!ac)throw Qb;return cc.getInitialBitrateFor(a)}function Ha(a,b){cc.setInitialRepresentationRatioFor(a,b)}function Ia(a){return cc.getInitialRepresentationRatioFor(a)}function Ja(a){if(!ac)throw Qb;return gc.getStreamsInfo(a)}function Ka(a){if(!ac)throw Qb;var b=lc.getActiveStreamInfo();return b?dc.getTracksFor(a,b):[]}function La(a,b,c){if(!ac)throw Qb;return c=c||gc.getStreamsInfo(b)[0],c?gc.getAllMediaInfoForType(b,c,a):[]}function Ma(a){if(!ac)throw Qb;var b=lc.getActiveStreamInfo();return b?dc.getCurrentTrackFor(a,b):null}function Na(a,b){dc.setInitialSettings(a,b)}function Oa(a){return dc.getInitialSettings(a)}function Pa(a){if(!ac)throw Qb;dc.setTrack(a)}function Qa(a){return dc.getSwitchMode(a)}function Ra(a,b){dc.setSwitchMode(a,b)}function Sa(a){dc.setSelectionModeForInitialTrack(a)}function Ta(){return dc.getSelectionModeForInitialTrack()}function Ua(){return cc.getAutoSwitchBitrateFor("video")||cc.getAutoSwitchBitrateFor("audio")}function Va(a){cc.setAutoSwitchBitrateFor("video",a),cc.setAutoSwitchBitrateFor("audio",a)}function Wa(a){return cc.getAutoSwitchBitrateFor(a)}function Xa(a,b){cc.setAutoSwitchBitrateFor(a,b)}function Ya(a){ic.setFastSwitchEnabled(a)}function Za(){return ic.getFastSwitchEnabled()}function $a(a){ic.setBufferOccupancyABREnabled(a)}function _a(a,b){var c=Hb(),d=this,e=function a(e){e.error?b(null,e.error):b(e.manifest),Vb.off(ea.default.INTERNAL_MANIFEST_LOADED,a,d),c.reset()};Vb.on(ea.default.INTERNAL_MANIFEST_LOADED,e,d);var f=(0,E.default)(Ub).getInstance();f.initialize(),c.load(f.parseURI(a))}function ab(a,b){bb(a,b);var c=new g.default;c.schemeIdUri=a,c.value=b,ic.getUTCTimingSources().push(c)}function bb(a,b){var c=ic.getUTCTimingSources();c.forEach(function(d,e){d.schemeIdUri===a&&d.value===b&&c.splice(e,1)})}function cb(){ic.setUTCTimingSources([])}function db(){ab(I.default.DEFAULT_UTC_TIMING_SOURCE.scheme,I.default.DEFAULT_UTC_TIMING_SOURCE.value)}function eb(a){ic.setUseManifestDateHeaderTimeSource(a)}function fb(a){ic.setBufferToKeep(a)}function gb(a){ic.setBufferPruningInterval(a)}function hb(a){ic.setStableBufferTime(a)}function ib(a){ic.setBufferTimeAtTopQuality(a)}function jb(a){ic.setBufferTimeAtTopQualityLongForm(a)}function kb(a){ic.setLongFormContentDurationThreshold(a)}function lb(a){ic.setRichBufferThreshold(a)}function mb(a){ic.setBandwidthSafetyFactor(a)}function nb(){return ic.getBandwidthSafetyFactor()}function ob(a){ic.setAbandonLoadTimeout(a)}function pb(a){ic.setFragmentRetryAttempts(a)}function qb(a){ic.setFragmentRetryInterval(a)}function rb(a){ic.setXHRWithCredentials(a)}function sb(){return Kb()}function tb(a){ec=a}function ub(a){$b=a}function vb(a){var b=(0,w.default)(Ub).getInstance();b.setConfig({videoModel:qc}),b.initialize(),b.displayCConTop(a)}function wb(){return qc?qc.getVideoContainer():null}function xb(a){if(!qc)throw Rb;qc.setVideoContainer(a)}function yb(){if(!qc)throw Rb;return qc.getElement()}function zb(a){if(!_b)throw Tb;qc=null,a&&(qc=(0,S.default)(Ub).getInstance(),qc.initialize(),qc.setElement(a),Kb(),Lb()),Fb()}function Ab(){return qc?qc.getTTMLRenderingDiv():null}function Bb(a){if(!qc)throw Rb;qc.setTTMLRenderingDiv(a)}function Cb(){if(!Zb)throw Sb;return Zb}function Db(a){if(!_b)throw Tb;if("string"==typeof a){var b=(0,E.default)(Ub).getInstance();b.initialize(),Zb=b.parseURI(a)}else Zb=a;Fb()}function Eb(){Db(null),zb(null),$b=null,ec=null}function Fb(){ac?(ac=!1,gc.reset(),lc.reset(),nc.reset(),cc.reset(),mc.reset(),dc.reset(),lc=null,fc=null,c()&&Pb()):c()&&Pb()}function Gb(){var a=(0,W.default)(Ub).getInstance();a.initialize();var b=(0,Q.default)(Ub).getInstance();b.initialize();var c=(0,y.default)(Ub).getInstance();c.setConfig({dashManifestModel:pc}),dc.initialize(),dc.setConfig({errHandler:jc}),mc=(0,U.default)(Ub).getInstance(),mc.initialize(),mc.setConfig({abrRulesCollection:b,synchronizationRulesCollection:a}),lc=(0,k.default)(Ub).getInstance(),lc.setConfig({capabilities:kc,manifestLoader:Hb(),manifestModel:(0,G.default)(Ub).getInstance(),dashManifestModel:pc,protectionController:ec,adapter:gc,metricsModel:hc,dashMetrics:oc,liveEdgeFinder:(0,q.default)(Ub).getInstance(),mediaSourceController:(0,Y.default)(Ub).getInstance(),timeSyncController:(0,O.default)(Ub).getInstance(),baseURLController:(0,$.default)(Ub).getInstance(),errHandler:jc,timelineConverter:(0,ta.default)(Ub).getInstance()}),lc.initialize(bc,$b),cc.setConfig({abrRulesCollection:b,rulesController:mc,streamController:lc})}function Hb(){return(0,o.default)(Ub).create({errHandler:jc,parser:Ib(),metricsModel:hc,requestModifier:(0,A.default)(Ub).getInstance()})}function Ib(){return(0,na.default)(Ub).create()}function Jb(){return gc=(0,la.default)(Ub).getInstance(),gc.initialize(),gc.setConfig({dashManifestModel:pc}),gc}function Kb(){if(ec)return ec;var a=dashjs.Protection;if("function"==typeof a){var b=a(Ub).create();return ea.default.extend(a.events),ga.default.extend(a.events,{publicOnly:!0}),ec=b.createProtectionSystem({log:Xb,videoModel:qc,capabilities:kc,eventBus:Vb,adapter:gc})}return null}function Lb(){if(fc)return fc;var a=dashjs.MetricsReporting;if("function"==typeof a){var b=a(Ub).create();return fc=b.createMetricsReporting({log:Xb,eventBus:Vb,mediaElement:yb(),dashManifestModel:pc,metricsModel:hc})}return null}function Mb(){var a=hc.getReadOnlyMetricsFor("video")||hc.getReadOnlyMetricsFor("audio");return oc.getCurrentDVRInfo(a)}function Nb(a){var b,c,d=Mb();return d?(b=d.manifestInfo.availableFrom.getTime()/1e3,c=a+(b+d.range.start)):0}function Ob(){if(!ac)throw Qb;var a=lc.getActiveStreamInfo();return a?lc.getStreamById(a.id):null}function Pb(){ac||(ac=!0,Xb("Playback Initialized"),Gb(),"string"==typeof Zb?lc.load(Zb):lc.loadWithManifest(Zb))}var Qb="You must first call play() to init playback before calling this method",Rb="You must first call attachView() to set the video element before calling this method",Sb="You must first call attachSource() with a valid source before calling this method",Tb="MediaPlayer not initialized!",Ub=this.context,Vb=(0,ca.default)(Ub).getInstance(),Wb=(0,aa.default)(Ub).getInstance(),Xb=Wb.log,Yb=void 0,Zb=void 0,$b=void 0,_b=void 0,ac=void 0,bc=void 0,cc=void 0,dc=void 0,ec=void 0,fc=void 0,gc=void 0,hc=void 0,ic=void 0,jc=void 0,kc=void 0,lc=void 0,mc=void 0,nc=void 0,oc=void 0,pc=void 0,qc=void 0,rc=void 0;return Yb={initialize:b,on:N,off:P,extend:L,attachView:zb,attachSource:Db,isReady:c,play:d,isPaused:f,pause:e,isSeeking:h,seek:x,setMute:j,isMuted:l,setVolume:n,getVolume:p,time:z,duration:B,timeAsUTC:D,durationAsUTC:F,getActiveStream:Ob,getDVRWindowSize:t,getDVRSeekOffset:v,convertToTimeCode:J,formatUTC:H,getVersion:R,getDebug:T,getBufferLength:r,getVideoModel:V,getVideoContainer:wb,getTTMLRenderingDiv:Ab,getVideoElement:yb,getSource:Cb,setLiveDelayFragmentCount:X,setLiveDelay:Z,useSuggestedPresentationDelay:_,enableLastBitrateCaching:ba,enableLastMediaSettingsCaching:da,setMaxAllowedBitrateFor:fa,getMaxAllowedBitrateFor:ha,setMaxAllowedRepresentationRatioFor:ka,getMaxAllowedRepresentationRatioFor:ma,setAutoPlay:oa,getAutoPlay:qa,setScheduleWhilePaused:sa,getScheduleWhilePaused:ua,getDashMetrics:va,getMetricsFor:wa,getQualityFor:xa,setQualityFor:ya,getLimitBitrateByPortal:za,setLimitBitrateByPortal:Aa,getUsePixelRatioInLimitBitrateByPortal:Ba,setUsePixelRatioInLimitBitrateByPortal:Ca,setTextTrack:Da,getBitrateInfoListFor:Ea,setInitialBitrateFor:Fa,getInitialBitrateFor:Ga,setInitialRepresentationRatioFor:Ha,getInitialRepresentationRatioFor:Ia,getStreamsFromManifest:Ja,getTracksFor:Ka,getTracksForTypeFromManifest:La,getCurrentTrackFor:Ma,setInitialMediaSettingsFor:Na,getInitialMediaSettingsFor:Oa,setCurrentTrack:Pa,getTrackSwitchModeFor:Qa,setTrackSwitchModeFor:Ra,setSelectionModeForInitialTrack:Sa,getSelectionModeForInitialTrack:Ta,getAutoSwitchQuality:Ua,setAutoSwitchQuality:Va,setFastSwitchEnabled:Ya,getFastSwitchEnabled:Za,getAutoSwitchQualityFor:Wa,setAutoSwitchQualityFor:Xa,enableBufferOccupancyABR:$a,setBandwidthSafetyFactor:mb,getBandwidthSafetyFactor:nb,setAbandonLoadTimeout:ob,retrieveManifest:_a,addUTCTimingSource:ab,removeUTCTimingSource:bb,clearDefaultUTCTimingSources:cb,restoreDefaultUTCTimingSources:db,setBufferToKeep:fb,setBufferPruningInterval:gb,setStableBufferTime:hb,setBufferTimeAtTopQuality:ib,setFragmentLoaderRetryAttempts:pb,setFragmentLoaderRetryInterval:qb,setXHRWithCredentials:rb,setBufferTimeAtTopQualityLongForm:jb,setLongFormContentDurationThreshold:kb,setRichBufferThreshold:lb,getProtectionController:sb,attachProtectionController:tb,setProtectionData:ub,enableManifestDateHeaderTimeSource:eb,displayCaptionsOnTop:vb,attachVideoContainer:xb,attachTTMLRenderingDiv:Bb,reset:Eb},a(),Yb}Object.defineProperty(c,"__esModule",{value:!0});var f=a(47),g=d(f),h=a(68),i=d(h),j=a(71),k=d(j),l=a(66),m=d(l),n=a(49),o=d(n),p=a(154),q=d(p),r=a(151),s=d(r),t=a(147),u=d(t),v=a(57),w=d(v),x=a(70),y=d(x),z=a(156),A=d(z),B=a(56),C=d(B),D=a(103),E=d(D),F=a(100),G=d(F),H=a(101),I=d(H),J=a(102),K=d(J),L=a(60),M=d(L),N=a(73),O=d(N),P=a(131),Q=d(P),R=a(104),S=d(R),T=a(129),U=d(T),V=a(144),W=d(V),X=a(67),Y=d(X),Z=a(61),$=d(Z),_=a(8),aa=d(_),ba=a(9),ca=d(ba),da=a(13),ea=d(da),fa=a(52),ga=d(fa),ha=a(10),ia=d(ha),ja=a(11),ka=a(15),la=d(ka),ma=a(23),na=d(ma),oa=a(22),pa=d(oa),qa=a(17),ra=d(qa),sa=a(37),ta=d(sa);e.__dashjs_factory_name="MediaPlayer";var ua=ia.default.getClassFactory(e);ua.events=ga.default,c.default=ua,b.exports=c.default},{10:10,100:100,101:101,102:102,103:103,104:104,11:11,129:129,13:13,131:131,144:144,147:147,15:15,151:151,154:154,156:156,17:17,22:22,23:23,37:37,47:47,49:49,52:52,56:56,57:57,60:60,61:61,66:66,67:67,68:68,70:70,71:71,73:73,8:8,9:9}],52:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(14),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.BUFFER_EMPTY="bufferstalled",this.BUFFER_LOADED="bufferloaded",this.BUFFER_LEVEL_STATE_CHANGED="bufferStateChanged",this.ERROR="error",this.LOG="log",this.MANIFEST_LOADED="manifestloaded",this.METRICS_CHANGED="metricschanged",this.METRIC_CHANGED="metricchanged",this.METRIC_ADDED="metricadded",this.METRIC_UPDATED="metricupdated",this.PERIOD_SWITCH_COMPLETED="streamswitchcompleted",this.PERIOD_SWITCH_STARTED="streamswitchstarted",this.QUALITY_CHANGE_REQUESTED="qualityChangeRequested",this.QUALITY_CHANGE_RENDERED="qualityChangeRendered",this.STREAM_INITIALIZED="streaminitialized",this.TEXT_TRACKS_ADDED="alltexttracksadded",this.TEXT_TRACK_ADDED="texttrackadded",this.CAN_PLAY="canPlay",this.PLAYBACK_ENDED="playbackEnded",this.PLAYBACK_ERROR="playbackError",this.PLAYBACK_NOT_ALLOWED="playbackNotAllowed",this.PLAYBACK_METADATA_LOADED="playbackMetaDataLoaded",this.PLAYBACK_PAUSED="playbackPaused",this.PLAYBACK_PLAYING="playbackPlaying",this.PLAYBACK_PROGRESS="playbackProgress",this.PLAYBACK_RATE_CHANGED="playbackRateChanged",this.PLAYBACK_SEEKED="playbackSeeked",this.PLAYBACK_SEEKING="playbackSeeking",this.PLAYBACK_STARTED="playbackStarted",this.PLAYBACK_TIME_UPDATED="playbackTimeUpdated"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{14:14}],53:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){if(!a||"VIDEO"!==a.nodeName)return null;if(a._dashjs_player)return a._dashjs_player;var e,f=a.id||a.name||"video element";if(b=b||[].slice.call(a.querySelectorAll("source")).filter(function(a){return a.type==d})[0],!b&&a.src)b=document.createElement("source"),b.src=a.src;else if(!b&&!a.src)return null;return c=c||{},e=(0,h.default)(c).create(),e.initialize(a,b.src,a.autoplay),e.getDebug().log("Converted "+f+" to dash.js player and added content: "+b.src),a._dashjs_player=e,e}function b(b,e){var f=[];b=b||"[data-dashjs-player]",e=e||document;for(var g=e.querySelectorAll(b),h=0;h<g.length;h++){var i=a(g[h],null);f.push(i)}for(var j=e.querySelectorAll('source[type="'+d+'"]'),h=0;h<j.length;h++){var k=c(j[h]),i=a(k,null);f.push(i)}return f}function c(a){for(var b=!0;b;){var c=a;if(b=!1,"video"===c.nodeName.toLowerCase())return c;a=c.parentNode,b=!0}}var d="application/dash+xml";return{create:a,createAll:b}}function f(){window.removeEventListener("load",f),i.createAll()}Object.defineProperty(c,"__esModule",{value:!0});var g=a(51),h=d(g),i=e(),j=window&&window.dashjs&&window.dashjs.skipAutoCreate;!j&&window&&window.addEventListener&&("complete"===window.document.readyState?i.createAll():window.addEventListener("load",f)),c.default=i,b.exports=c.default},{51:51}],54:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ja=[],ka=!1,la=!1,ma=null,na={},oa=!1,pa=!1,ra=(0,g.default)($).getInstance(),sa=(0,w.default)($).getInstance(),wa=(0,q.default)($).getInstance(),ta=(0,k.default)($).getInstance(),ua=(0,o.default)($).create(),xa=(0,O.default)($).getInstance(),aa.on(I.default.BUFFERING_COMPLETED,U,ia),aa.on(I.default.DATA_UPDATE_COMPLETED,V,ia)}function c(a,b){ma=a,qa=b,qa&&(aa.on(I.default.KEY_ERROR,D,ia),aa.on(I.default.SERVER_CERTIFICATE_UPDATED,D,ia),aa.on(I.default.LICENSE_REQUEST_COMPLETE,D,ia),aa.on(I.default.KEY_SYSTEM_SELECTED,D,ia),aa.on(I.default.KEY_SESSION_CREATED,D,ia))}function d(a){ka?T():(aa.on(I.default.CURRENT_TRACK_CHANGED,J,ia),Q(a))}function e(){for(var a=ja.length,b=0;b<a;b++)ja[b].reset();ja=[],ka=!1,la=!1,x(),aa.off(I.default.CURRENT_TRACK_CHANGED,J,ia)}function f(){sa&&(sa.pause(),sa=null),ua&&(ua.reset(),ua=null),ra.abortSearch(),e(),ta=null,wa=null,ca=null,ba=null,da=null,ea=null,_=null,fa=null,oa=!1,pa=!1,na={},aa.off(I.default.DATA_UPDATE_COMPLETED,V,ia),aa.off(I.default.BUFFERING_COMPLETED,U,ia),aa.off(I.default.KEY_ERROR,D,ia),aa.off(I.default.SERVER_CERTIFICATE_UPDATED,D,ia),aa.off(I.default.LICENSE_REQUEST_COMPLETE,D,ia),aa.off(I.default.KEY_SYSTEM_SELECTED,D,ia),aa.off(I.default.KEY_SESSION_CREATED,D,ia)}function h(){return ma.duration}function j(){return ma.start}function l(){return ma.index}function n(){return ma.id}function p(){return ma}function r(a){return null!==S(a)}function t(a){var b=S(a);return wa.getBitrateList(b)}function v(){va&&va.start()}function x(){va&&va.clear()}function z(){return ka}function B(){return pa}function D(a){a.error&&(fa.mediaKeySessionError(a.error),_(a.error),f())}function F(a){return"text"===a.type?a.mimeType:a.type}function H(a,b,c){var d,e,f=a.type;if("muxed"===f&&a)return e="Multiplexed representations are intentionally not supported, as they are not compliant with the DASH-AVC/264 guidelines",_(e),fa.manifestError(e,"multiplexedrep",ba.getValue()),!1;if("text"===f||"fragmentedText"===f||"embeddedText"===f)return!0;if(d=a.codec,_(f+" codec: "+d),a.contentProtection&&!ea.supportsEncryptedMedia())fa.capabilityError("encryptedmedia");else if(!ea.supportsCodec((0,s.default)($).getInstance().getElement(),d))return e=f+"Codec ("+d+") is not supported.",fa.manifestError(e,"codec",c),_(e),!1;return!0}function J(a){if(a.newMediaInfo.streamInfo.id===ma.id){var b=W(a.oldMediaInfo);if(b){var c=sa.getTime(),d=b.getBuffer(),e=a.newMediaInfo,f=ba.getValue(),g=ja.indexOf(b),h=b.getMediaSource();"fragmentedText"!==e.type?(b.reset(!0),N(e,f,h,{buffer:d,replaceIdx:g,currentTime:c}),sa.seek(sa.getTime())):b.updateMediaInfo(f,e)}}}function L(a){var b=a.split("/")[1];return"webm"===b.toLowerCase()}function M(a){var b=L(a.mimeType)?(0,C.default)($).getInstance():(0,A.default)($).getInstance();b.setConfig({baseURLController:ha,metricsModel:(0,u.default)($).getInstance()}),b.initialize();var c=(0,y.default)($).create({segmentBaseLoader:b,timelineConverter:ga,dashMetrics:(0,E.default)($).getInstance(),metricsModel:(0,u.default)($).getInstance(),baseURLController:ha});return c}function N(a,b,c,d){var e=(0,i.default)($).create({indexHandler:M(a),timelineConverter:ga,adapter:da,manifestModel:ba}),f=da.getAllMediaInfoForType(b,ma,a.type);if(e.initialize(F(a),ua,c,ia,va),wa.updateTopQualityIndex(a),d?(e.setBuffer(d.buffer),e.getIndexHandler().setCurrentTime(d.currentTime),ja[d.replaceIdx]=e):ja.push(e),"text"===a.type||"fragmentedText"===a.type){for(var g,h=0;h<f.length;h++)f[h].index===a.index&&(g=h),e.updateMediaInfo(b,f[h]);"fragmentedText"===a.type&&e.updateMediaInfo(b,f[g])}else e.updateMediaInfo(b,a);return e}function P(a,b){var c,d=ba.getValue(),e=da.getAllMediaInfoForType(d,ma,a),f=null;if(!e||0===e.length)return void _("No "+a+" data.");for(var g=0,h=e.length;g<h;g++)if(f=e[g],"embeddedText"===a)xa.addEmbeddedTrack(f);else{if(!H(f,b,d))continue;ta.isMultiTrackSupportedByType(f.type)&&ta.addTrack(f,ma)}"embeddedText"!==a&&0!==ta.getTracksFor(a,ma).length&&(ta.checkInitialMediaSettingsForType(a,ma),c=ta.getCurrentTrackFor(a,ma),N(c,d,b))}function Q(a){var b,c=ba.getValue();if(va=(0,m.default)($).getInstance(),va.initialize(),va.setConfig({manifestModel:ba,manifestUpdater:ca}),b=da.getEventsFor(c,ma),va.addInlineEvents(b),oa=!0,P("video",a),P("audio",a),P("text",a),P("fragmentedText",a),P("embeddedText",a),P("muxed",a),T(),la=!0,oa=!1,0===ja.length){var d="No streams to play.";fa.manifestError(d,"nostreams",c),_(d)}else ra.initialize(ga,ja[0]),R()}function R(){var a=ja.length,b=!!na.audio||!!na.video,c=b?new Error(Z,"Data update failed",null):null,d=0;for(d;d<a;d++)if(ja[d].isUpdating()||oa)return;pa=!0,ka=!0,la&&(qa&&qa.initialize(ba.getValue(),S("audio"),S("video")),aa.trigger(I.default.STREAM_INITIALIZED,{streamInfo:ma,error:c}))}function S(a){for(var b=ja.length,c=null,d=0;d<b;d++)if(c=ja[d],c.getType()===a)return c.getMediaInfo();return null}function T(){for(var a=0,b=ja.length;a<b;a++)ja[a].createBuffer()}function U(a){if(a.streamInfo===ma){var b=X(),c=b.length,d=0;for(d;d<c;d++)if(!b[d].isBufferingCompleted())return;aa.trigger(I.default.STREAM_BUFFERING_COMPLETED,{streamInfo:ma})}}function V(a){var b=a.sender.getStreamProcessor();b.getStreamInfo()===ma&&(na[b.getType()]=a.error,R())}function W(a){if(!a)return!1;var b=X();return b.filter(function(b){return b.getType()===a.type})[0]}function X(){var a,b,c=ja.length,d=[],e=0;for(e;e<c;e++)b=ja[e],a=b.getType(),"audio"!==a&&"video"!==a&&"fragmentedText"!==a||d.push(b);return d}function Y(a){_("Manifest updated... updating data system wide.");var b=ba.getValue();if(ka=!1,oa=!0,pa=!1,ma=a,va){var c=da.getEventsFor(b,ma);va.addInlineEvents(c)}for(var d=0,e=ja.length;d<e;d++){var f=ja[d],g=da.getMediaInfoForType(b,ma,f.getType());wa.updateTopQualityIndex(g),f.updateMediaInfo(b,g)}oa=!1,R()}var Z=1,$=this.context,_=(0,K.default)($).getInstance().log,aa=(0,G.default)($).getInstance(),ba=a.manifestModel,ca=a.manifestUpdater,da=a.adapter,ea=a.capabilities,fa=a.errHandler,ga=a.timelineConverter,ha=a.baseURLController,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0;return ia={initialize:c,activate:d,deactivate:e,getDuration:h,getStartTime:j,getStreamIndex:l,getId:n,getStreamInfo:p,hasMedia:r,getBitrateListFor:t,startEventController:v,isActivated:z,isInitialized:B,updateData:Y,reset:f,getProcessors:X},b(),ia}Object.defineProperty(c,"__esModule",{value:!0});var f=a(154),g=d(f),h=a(55),i=d(h),j=a(66),k=d(j),l=a(64),m=d(l),n=a(65),o=d(n),p=a(60),q=d(p),r=a(104),s=d(r),t=a(102),u=d(t),v=a(68),w=d(v),x=a(16),y=d(x),z=a(18),A=d(z),B=a(19),C=d(B),D=a(17),E=d(D),F=a(9),G=d(F),H=a(13),I=d(H),J=a(8),K=d(J),L=a(10),M=d(L),N=a(56),O=d(N);e.__dashjs_factory_name="Stream",c.default=M.default.getClassFactory(e),b.exports=c.default},{10:10,102:102,104:104,13:13,154:154,16:16,17:17,18:18,19:19,55:55,56:56,60:60,64:64,65:65,66:66,68:68,8:8,9:9}],55:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){ca=[]}function c(a,b,c,d,e){ba=a,da=d,ea=e,ja=b,_=da.getStreamInfo().manifestInfo.isDynamic,W.initialize(this),fa=(0,g.default)(V).getInstance(),fa.initialize(ba,this),ga=U(a),ha=(0,q.default)(V).create({metricsModel:(0,w.default)(V).getInstance(),manifestModel:Z,adapter:Y,dashMetrics:(0,I.default)(V).getInstance(),dashManifestModel:(0,G.default)(V).getInstance(),timelineConverter:X,rulesController:(0,s.default)(V).getInstance(),mediaPlayerModel:(0,u.default)(V).getInstance()}),ga.initialize(ba,c,this),ha.initialize(ba,this),ka=(0,y.default)(V).create({metricsModel:(0,w.default)(V).getInstance(),errHandler:(0,M.default)(V).getInstance(),requestModifier:(0,A.default)(V).getInstance()}),la=ha.getFragmentModel(),la.setLoader(ka),ia=(0,K.default)(V).create(),ia.initialize(this)}function d(a){W.reset(),ga&&(ga.reset(a),ga=null),ha&&(ha.reset(),ha=null),ia&&(ia.reset(),ia=null),ja=null,ka=null,ea=null,da=null,_=null,aa=null,ca=[],ba=null}function e(){return ia.isUpdating()}function f(){return ba}function h(){return fa}function j(){return ia}function l(){return ka}function n(){return W}function p(){return ja}function r(){return ga.getBuffer()}function t(a){ga.setBuffer(a)}function v(){return ga}function x(){return la}function z(){return da.getStreamInfo()}function B(a,b){b===aa||b&&aa&&b.type!==aa.type||(aa=b),ca.indexOf(b)===-1&&ca.push(b),Y.updateData(a,this)}function D(){return ca}function F(){return aa}function H(){return ga.getMediaSource()}function J(){return ha}function L(){return ea}function N(){ha.start()}function O(){ha.stop()}function P(){return Y.getCurrentRepresentationInfo(Z.getValue(),ia)}function Q(a){return Y.getRepresentationInfoForQuality(Z.getValue(),ia,a)}function R(){return ga.getIsBufferingCompleted()}function S(){return ga.getBuffer()||ga.createBuffer(aa)}function T(){return _}function U(a){var b=null;return b="video"===a||"audio"===a||"fragmentedText"===a?(0,i.default)(V).create({metricsModel:(0,w.default)(V).getInstance(),manifestModel:Z,sourceBufferController:(0,C.default)(V).getInstance(),errHandler:(0,M.default)(V).getInstance(),streamController:(0,k.default)(V).getInstance(),mediaController:(0,m.default)(V).getInstance(),adapter:Y,textSourceBuffer:(0,E.default)(V).getInstance()}):(0,o.default)(V).create({errHandler:(0,M.default)(V).getInstance(),sourceBufferController:(0,C.default)(V).getInstance()})}var V=this.context,W=a.indexHandler,X=a.timelineConverter,Y=a.adapter,Z=a.manifestModel,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0;return $={initialize:c,isUpdating:e,getType:f,getBufferController:v,getABRController:h,getFragmentLoader:l,getFragmentModel:x,getScheduleController:J,getEventController:L,getFragmentController:p,getRepresentationController:j,getIndexHandler:n,getCurrentRepresentationInfo:P,getRepresentationInfoForQuality:Q,isBufferingCompleted:R,createBuffer:S,getStreamInfo:z,updateMediaInfo:B,getMediaInfoArr:D,getMediaInfo:F,getMediaSource:H,getBuffer:r,setBuffer:t,start:N,stop:O,isDynamic:T,reset:d},b(),$}Object.defineProperty(c,"__esModule",{value:!0});var f=a(60),g=d(f),h=a(63),i=d(h),j=a(71),k=d(j),l=a(66),m=d(l),n=a(72),o=d(n),p=a(69),q=d(p),r=a(129),s=d(r),t=a(101),u=d(t),v=a(102),w=d(v),x=a(48),y=d(x),z=a(156),A=d(z),B=a(70),C=d(B),D=a(56),E=d(D),F=a(22),G=d(F),H=a(17),I=d(H),J=a(21),K=d(J),L=a(151),M=d(L),N=a(10),O=d(N);e.__dashjs_factory_name="StreamProcessor",c.default=O.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,102:102,129:129,151:151,156:156,17:17,21:21,22:22,48:48,56:56,60:60,63:63,66:66,69:69,70:70,71:71,72:72}],56:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,c){M=!1,N=null,U=null,V=!1,W=NaN,X=[],$=null,E||b();var d=c.getStreamProcessor();if(R=d.getMediaInfoArr(),S.setConfig({videoModel:Y}),S.initialize(),T=!K.getIsTextTrack(a),H=(0,k.default)(C).getInstance(),Q=(0,i.default)(C).getInstance(),Q.setConfig({boxParser:H}),T){U=d.getFragmentModel(),this.buffered=(0,m.default)(C).create(),X=L.getTracksFor("fragmentedText",Z.getActiveStreamInfo());for(var e=L.getCurrentTrackFor("fragmentedText",Z.getActiveStreamInfo()),f=0;f<X.length;f++)if(X[f]===e){_=f;break}}}function b(){aa=[],R=[],Y=(0,s.default)(C).getInstance(),S=(0,u.default)(C).getInstance(),S.setConfig({videoModel:Y}),S.initialize(),H=(0,k.default)(C).getInstance(),Q=(0,i.default)(C).getInstance(),Q.setConfig({boxParser:H}),T=!1,_=null,ba=!1,ca=0,fa=[],ea=[],da=null,E=!0}function c(a,b){function c(a,b){var c=new g.default,d={subtitle:"subtitles",caption:"captions"},e=function(){var a=b.roles.length>0?d[b.roles[0]]:d.caption;return a=a===d.caption||a===d.subtitle?a:d.caption},f=function(){var a=!1;return b.codec&&b.codec.search("stpp")>=0&&(a=!0),b.mimeType&&b.mimeType.search("ttml")>=0&&(a=!0),a};c.captionData=a,c.lang=b.lang,c.label=b.id,c.index=b.index,c.isTTML=f(),c.video=Y.getElement(),c.defaultTrack=A(b),c.isFragmented=T,c.isEmbedded=!!b.isEmbedded,c.kind=e();var h=(R?R.length:0)+aa.length;S.addTextTrack(c,h)}var e,f,h,i,j,k=b.mediaInfo,l=k.type,m=k.mimeType,n=k.codec||m;if(!n)return void D("No text type defined");if("fragmentedText"===l)if(V)if(i=Q.getSamplesInfo(a),f=i.sampleList,!$&&f.length>0&&($=f[0].cts-b.start*W),n.search("stpp")>=0)for(N=null!==N?N:B(n),h=0;h<f.length;h++){var p=f[h],q=p.cts,r=q-$;this.buffered.add(r/W,(r+p.duration)/W);var s=new DataView(a,p.offset,p.size);j=w.default.Utils.dataViewToString(s,"utf-8");try{e=N.parse(j,q/W,(q+p.duration)/W),S.addCaptions(_,$/W,e)}catch(t){D("TTML parser error: "+t.message)}}else{var u=[];for(h=0;h<f.length;h++){var v=f[h];v.cts-=$,this.buffered.add(v.cts/W,(v.cts+v.duration)/W);for(var x=a.slice(v.offset,v.offset+v.size),z=w.default.parseBuffer(x),C=0;C<z.boxes.length;C++){var E=z.boxes[C];if(D("VTT box1: "+E.type),"vtte"!==E.type&&"vttc"===E.type){D("VTT vttc boxes.length = "+E.boxes.length);for(var F=0;F<E.boxes.length;F++){var G=E.boxes[F];if(D("VTT box2: "+G.type),"payl"===G.type){var H=G.cue_text;D("VTT cue_text = "+H);var J=v.cts/W,K=(v.cts+v.duration)/W;u.push({start:J,end:K,data:H,styles:{}}),D("VTT "+J+"-"+K+" : "+H)}}}}}u.length>0&&S.addCaptions(_,0,u)}else{for(V=!0,h=0;h<R.length;h++)c(null,R[h]);W=Q.getMediaTimescaleFromMoov(a)}else if("text"===l){var s=new DataView(a,0,a.byteLength);j=w.default.Utils.dataViewToString(s,"utf-8");try{e=B(n).parse(j),c(e,k)}catch(t){I.timedTextError(t,"parse",j)}}else if("video"===l)if("InitializationSegment"===b.segmentType){if(0===ca)for(ca=Q.getMediaTimescaleFromMoov(a),h=0;h<aa.length;h++)c(null,aa[h])}else{if(0===ca)return void D("CEA-608: No timescale for embeddedTextTrack yet");var L=function(a,b){function c(a,c,d){var e=null;if(Y.getTTMLRenderingDiv())e=o(Y.getElement(),a,c,d);else{var f=d.getDisplayText();e=[{start:a,end:c,data:f,styles:{}}]}e&&S.addCaptions(b,0,e)}return c};i=Q.getSamplesInfo(a);var M=i.sequenceNumber;if(!fa[0]&&!fa[1]){var O=void 0,P=void 0,U=void 0;for(h=0;h<aa.length;h++){if("CC1"===aa[h].id?(O=0,U=S.getTrackIdxForId("CC1")):"CC3"===aa[h].id&&(O=1,U=S.getTrackIdxForId("CC3")),U===-1)return void D("CEA-608: data before track is ready.");P=L(this,U),fa[h]=new y.default.Cea608Parser(h,{newCue:P},null)}}if(ca&&ea.indexOf(M)==-1){if(null!==da&&M!==da+1)for(h=0;h<fa.length;h++)fa[h]&&fa[h].reset();for(var X=d(a),Z=0;Z<fa.length;Z++){var ba=X.fields[Z],ga=fa[Z];if(ga){for(h=0;h<ba.length;h++)ga.addData(ba[h][0]/ca,ba[h][1]);X.endTime&&ga.cueSplitAtTime(X.endTime/ca)}}da=M,ea.push(M)}}}function d(a){var b=function(a,b,c){var d=a.length;if(d>0){if(b>=a[d-1][0])a.push([b,c]);else for(var e=d-1;e>=0;e--)if(b<a[e][0]){a.splice(e,0,[b,c]);break}}else a.push([b,c])},c=H.parse(a),d=c.getBox("moof"),e=c.getBox("tfdt"),f=c.getBoxes("trun"),g=null;if(0===f.length)return null;g=f[0],f.length>1&&D("Warning: Too many truns");for(var h=d.offset+g.data_offset,i=g.sample_count,j=h,k=e.baseMediaDecodeTime,l=new DataView(a),m={startTime:null,endTime:null,fields:[[],[]]},n=0,o=0;o<i;o++){for(var p=g.samples[o],q=k+n+p.sample_composition_time_offset,r=y.default.findCea608Nalus(l,j,p.sample_size),s=0;s<r.length;s++)for(var t=y.default.extractCea608DataFromRange(l,r[s]),u=0;u<2;u++)t[u].length>0&&b(m.fields[u],q,t[u]);n+=p.sample_duration,j+=p.sample_size}var v=k+n;return m.startTime=k,m.endTime=v,m}function e(a){for(var b="",c=0;c<a.length;++c){var d=a[c];b+=d.uchar}var e=b.length,f=b.replace(/^\s+/,"").length;return e-f}function f(a){return"left: "+3.125*a.x+"%; top: "+6.66*a.y1+"%; width: "+(100-3.125*a.x)+"%; height: "+6.66*Math.max(a.y2-1-a.y1,1)+"%; align-items: flex-start; overflow: visible; -webkit-writing-mode: horizontal-tb;"; +}function h(a){return"red"==a?"rgb(255, 0, 0)":"green"==a?"rgb(0, 255, 0)":"blue"==a?"rgb(0, 0, 255)":"cyan"==a?"rgb(0, 255, 255)":"magenta"==a?"rgb(255, 0, 255)":"yellow"==a?"rgb(255, 255, 0)":"white"==a?"rgb(255, 255, 255)":"black"==a?"rgb(0, 0, 0)":a}function j(a,b){var c=a.videoHeight/15;return b?"font-size: "+c+"px; font-family: Menlo, Consolas, 'Cutive Mono', monospace; color: "+(b.foreground?h(b.foreground):"rgb(255, 255, 255)")+"; font-style: "+(b.italics?"italic":"normal")+"; text-decoration: "+(b.underline?"underline":"none")+"; white-space: pre; background-color: "+(b.background?h(b.background):"transparent")+";":"font-size: "+c+"px; font-family: Menlo, Consolas, 'Cutive Mono', monospace; justify-content: flex-start; text-align: left; color: rgb(255, 255, 255); font-style: normal; white-space: pre; line-height: normal; font-weight: normal; text-decoration: none; width: 100%; display: flex;"}function l(a){var b=a.replace(/^\s+/g,"");return b}function n(a){var b=a.replace(/\s+$/g,"");return b}function o(a,b,c,d){var g=null,h=null,i=!1,k=-1,m={start:b,end:c,spans:[]},o="style_cea608_white_black",p={},q={},r=[],s=void 0,t=void 0;for(s=0;s<15;++s){var u=d.rows[s],v="",w=null;if(!1===u.isEmpty()){var x=e(u.chars);null===g&&(g={x:x,y1:s,y2:s+1,p:[]}),x!==k&&i&&(g.p.push(m),m={start:b,end:c,spans:[]},g.y2=s,g.name="region_"+g.x+"_"+g.y1+"_"+g.y2,!1===p.hasOwnProperty(g.name)?(r.push(g),p[g.name]=g):(h=p[g.name],h.p.contat(g.p)),g={x:x,y1:s,y2:s+1,p:[]});for(var y=0;y<u.chars.length;++y){var z=u.chars[y],A=z.penState;if(null===w||!A.equals(w)){v.trim().length>0&&(m.spans.push({name:o,line:v,row:s}),v="");var B="style_cea608_"+A.foreground+"_"+A.background;A.underline&&(B+="_underline"),A.italics&&(B+="_italics"),q.hasOwnProperty(B)||(q[B]=JSON.parse(JSON.stringify(A))),w=A,o=B}v+=z.uchar}v.trim().length>0&&m.spans.push({name:o,line:v,row:s}),i=!0,k=x}else i=!1,k=-1,g&&(g.p.push(m),m={start:b,end:c,spans:[]},g.y2=s,g.name="region_"+g.x+"_"+g.y1+"_"+g.y2,!1===p.hasOwnProperty(g.name)?(r.push(g),p[g.name]=g):(h=p[g.name],h.p.contat(g.p)),g=null)}g&&(g.p.push(m),g.y2=s+1,g.name="region_"+g.x+"_"+g.y1+"_"+g.y2,!1===p.hasOwnProperty(g.name)?(r.push(g),p[g.name]=g):(h=p[g.name],h.p.contat(g.p)),g=null);var C=[];for(s=0;s<r.length;++s){var D=r[s],E="sub_cea608_"+F++,G=document.createElement("div");G.id=E;var H=f(D);G.style.cssText="position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;"+H;var I=document.createElement("div");I.className="paragraph bodyStyle",I.style.cssText=j(a);var J=document.createElement("div");J.className="cueUniWrapper",J.style.cssText="unicode-bidi: normal; direction: ltr;";for(var K=0;K<D.p.length;++K){var L=D.p[K],M=0;for(t=0;t<L.spans.length;++t){var N=L.spans[t];if(N.line.length>0){if(0!==t&&M!=N.row){var O=document.createElement("br");O.className="lineBreak",J.appendChild(O)}var P=!1;M===N.row&&(P=!0),M=N.row;var Q=q[N.name],R=document.createElement("span");R.className="spanPadding "+N.name+" customSpanColor",R.style.cssText=j(a,Q),0!==t&&P?t===L.spans.length-1?R.textContent=n(N.line):R.textContent=N.line:0===t&&L.spans.length>1&&N.row===L.spans[1].row?R.textContent=l(N.line):R.textContent=N.line.trim(),J.appendChild(R)}}}I.appendChild(J),G.appendChild(I);var S={bodyStyle:90};for(t in q)q.hasOwnProperty(t)&&(S[t]=90);C.push({type:"html",start:b,end:c,cueHTMLElement:G,cueID:E,cellResolution:[32,15],isFromCEA608:!0,regions:r,regionID:D.name,videoHeight:a.videoHeight,videoWidth:a.videoWidth,fontSize:S||{defaultFontSize:"100"},lineHeight:{},linePadding:{}})}return C}function p(){S.deleteAllTextTracks(),M=!1,N=null,Q=null,R=null,S=null,T=!1,U=null,V=!1,W=NaN,X=[],Y=null,Z=null,E=!1,aa=null}function r(a){E||b(),"CC1"===a.id||"CC3"===a.id?aa.push(a):D("Warning: Embedded track "+a.id+" not supported!")}function t(){E=!1,aa=[],fa=[null,null],ea=[],da=null}function v(){return M}function x(a){a&&(a.errHandler&&(I=a.errHandler),a.adapter&&(J=a.adapter),a.dashManifestModel&&(K=a.dashManifestModel),a.mediaController&&(L=a.mediaController),a.videoModel&&(Y=a.videoModel),a.streamController&&(Z=a.streamController),a.textTracks&&(S=a.textTracks),a.VTTParser&&(O=a.VTTParser),a.TTMLParser&&(P=a.TTMLParser))}function z(){for(var a=Y.getElement(),b=a.textTracks,c=b.length,d=c-aa.length,e=S.getCurrentTrackIdx(),f=0;f<c;f++){var g=b[f];if(M="showing"!==g.mode,"showing"===g.mode){if(e!==f&&(S.setCurrentTrackIdx(f),S.addCaptions(f,0,null),T&&f<d)){var h=L.getCurrentTrackFor("fragmentedText",Z.getActiveStreamInfo()),i=X[f];i!==h&&(U.abortRequests(),S.deleteTrackCues(h),L.setTrack(i),_=f)}break}}M&&S.setCurrentTrackIdx(-1)}function A(a){var b=!1;return aa.length>1?b=a.id&&"CC1"===a.id:1===aa.length?a.id&&"CC"===a.id.substring(0,2)&&(b=!0):b=a.index===R[0].index,b}function B(a){var b;return a.search("vtt")>=0?b=O:(a.search("ttml")>=0||a.search("stpp")>=0)&&(b=P,b.setConfig({videoModel:Y})),b}var C=this.context,D=(0,q.default)(C).getInstance().log,E=!1,F=0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0,ea=void 0,fa=void 0;return G={initialize:a,append:c,abort:p,getAllTracksAreDisabled:v,setTextTrack:z,setConfig:x,addEmbeddedTrack:r,resetEmbedded:t}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(171),g=d(f),h=a(32),i=d(h),j=a(146),k=d(j),l=a(148),m=d(l),n=a(10),o=d(n),p=a(8),q=d(p),r=a(104),s=d(r),t=a(57),u=d(t),v=a(6),w=d(v),x=a(2),y=d(x);e.__dashjs_factory_name="TextSourceBuffer",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{10:10,104:104,146:146,148:148,171:171,2:2,32:32,57:57,6:6,8:8}],57:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){D=window.VTTCue||window.TextTrackCue,G=[],H=[],I=-1,J=0,K=0,L=0,M=0,N=null,O=null,R=!1,S=2147483647,P=!!navigator.userAgent.match(/Chrome/)&&!navigator.userAgent.match(/Edge/),void 0!==document.fullscreenElement?Q="fullscreenElement":void 0!==document.webkitIsFullScreen?Q="webkitIsFullScreen":document.msFullscreenElement?Q="msFullscreenElement":document.mozFullScreen&&(Q="mozFullScreen")}function b(a){var b=G[a].kind,c=void 0!==G[a].label?G[a].label:G[a].lang,d=G[a].lang,e=P?document.createElement("track"):F.addTextTrack(b,c,d);return P&&(e.kind=b,e.label=c,e.srclang=d),e}function c(a){R=a,N&&!document[Q]&&(N.style.zIndex=a?S:null)}function d(a,c){if(G.length===c)return void B("Trying to add too many tracks.");if(G.push(a),void 0===F&&(F=a.video),G.length===c){G.sort(function(a,b){return a.index-b.index}),N=E.getTTMLRenderingDiv();for(var d=-1,e=0;e<G.length;e++){var f=b.call(this,e);H.push(f),G[e].defaultTrack&&(f.default=!0,d=e),P&&F.appendChild(f);var g=F.textTracks[e];g.nonAddedCues=[],N&&(G[e].isTTML||G[e].isEmbedded)?g.renderingType="html":g.renderingType="default",this.addCaptions(e,0,G[e].captionData),A.trigger(i.default.TEXT_TRACK_ADDED)}q.call(this,d),d>=0&&(F.textTracks[d].mode="showing",this.addCaptions(d,0,null)),A.trigger(i.default.TEXT_TRACKS_ADDED,{index:I,tracks:G})}}function e(a,b,c,d,e,f){var g=a/b,h=c/d,i=0,j=0;g>h?(j=b,i=j/d*c):(i=a,j=i/c*d);var k=0,l=0,m=0,n=0,o=i/j;return o>e?(n=j,m=j/(1/e),k=(a-m)/2,l=0):(m=i,n=i/e,k=0,l=(b-n)/2),f?{x:k+.1*m,y:l+.1*n,w:.8*m,h:.8*n}:{x:k,y:l,w:m,h:n}}function f(){var a=this.getCurrentTextTrack();if(a&&"html"===a.renderingType){var b=F.clientWidth/F.clientHeight,c=!1;a.isFromCEA608&&(b=3.5/3,c=!0);var d=e.call(this,F.clientWidth,F.clientHeight,F.videoWidth,F.videoHeight,b,c),f=d.w,g=d.h;if(f!=L||g!=M){J=d.x,K=d.y,L=f,M=g,N.style.left=J+"px",N.style.top=K+"px",N.style.width=L+"px",N.style.height=M+"px";for(var h=0;a.activeCues&&h<a.activeCues.length;++h){var i=a.activeCues[h];i.scaleCue(i)}Q&&document[Q]||R?N.style.zIndex=S:N.style.zIndex=null}}}function h(a,b){var c=Math.round(.01*a*b).toString()+"px";return c}function j(a){var b=L,c=M;if(b*c!==0&&a.layout){var d=a.layout,e=h(d.left,b),f=h(d.top,c),g=h(d.width,b),i=h(d.height,c);N.style.left=e,N.style.top=f,N.style.width=g,N.style.height=i;var j=N.firstChild;j&&j.style&&(j.style.left="0px",j.style.top="0px",j.style.width=g,j.style.height=i)}}function k(a){var b,c,d,e=L,f=M,g=[e/a.cellResolution[0],f/a.cellResolution[1]];if(a.linePadding)for(b in a.linePadding)if(a.linePadding.hasOwnProperty(b)){var h=a.linePadding[b];c=(h*g[0]).toString();for(var i=document.getElementsByClassName("spanPadding"),j=0;j<i.length;j++)i[j].style.cssText=i[j].style.cssText.replace(/(padding-left\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+c),i[j].style.cssText=i[j].style.cssText.replace(/(padding-right\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+c)}if(a.fontSize)for(b in a.fontSize)if(a.fontSize.hasOwnProperty(b)){var k=a.fontSize[b]/100;c=(k*g[1]).toString(),d="defaultFontSize"!==b?document.getElementsByClassName(b):document.getElementsByClassName("paragraph");for(var l=0;l<d.length;l++)d[l].style.cssText=d[l].style.cssText.replace(/(font-size\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+c)}if(a.lineHeight)for(b in a.lineHeight)if(a.lineHeight.hasOwnProperty(b)){var m=a.lineHeight[b]/100;c=(m*g[1]).toString(),d=document.getElementsByClassName(b);for(var n=0;n<d.length;n++)d[n].style.cssText=d[n].style.cssText.replace(/(line-height\s*:\s*)[\d.,]+(?=\s*px)/gi,"$1"+c)}}function l(a,b,c){var d=a>=0?F.textTracks[a]:null,e=this;if(d){if("showing"!==d.mode)return void(c&&c.length>0&&(d.nonAddedCues=d.nonAddedCues.concat(c)));if(c||(c=d.nonAddedCues,d.nonAddedCues=[]),c&&0!==c.length)for(var g in c){var h,i=c[g];d.cellResolution=i.cellResolution,d.isFromCEA608=i.isFromCEA608,O||"html"!==i.type&&"image"!==i.type||(O=setInterval(f.bind(this),500)),"image"===i.type?(h=new D(i.start-b,i.end-b,""),h.image=i.data,h.id=i.id,h.size=0,h.type="image",h.layout=i.layout,h.scaleCue=j.bind(e),h.onenter=function(){if(N&&"showing"===d.mode){var a=new Image;a.id="ttmlImage_"+this.id,a.src=this.image,a.style.cssText="z-index: 2147483648; pointer-events: none; display: block; visibility: visible !important; position: relative !important;",N.appendChild(a),j.call(e,this)}},h.onexit=function(){if(N)for(var a=N.childNodes,b=0;b<a.length;b++)a[b].id==="ttmlImage_"+this.id&&N.removeChild(a[b])}):"html"===i.type?(h=new D(i.start-b,i.end-b,""),h.cueHTMLElement=i.cueHTMLElement,h.regions=i.regions,h.regionID=i.regionID,h.cueID=i.cueID,h.videoWidth=i.videoWidth,h.videoHeight=i.videoHeight,h.cellResolution=i.cellResolution,h.fontSize=i.fontSize,h.lineHeight=i.lineHeight,h.linePadding=i.linePadding,h.scaleCue=k.bind(e),N.style.left=J+"px",N.style.top=K+"px",N.style.width=L+"px",N.style.height=M+"px",h.onenter=function(){"showing"===d.mode&&(B("Cue "+this.startTime+"-"+this.endTime+" : "+this.cueHTMLElement.id+" : "+this.cueHTMLElement.innerText),N.appendChild(this.cueHTMLElement),k.call(e,this))},h.onexit=function(){for(var a=N.childNodes,b=0;b<a.length;++b)a[b].id===this.cueID&&N.removeChild(a[b])}):(h=new D(i.start-b,i.end-b,i.data),i.styles&&(void 0!==i.styles.align&&h.hasOwnProperty("align")&&(h.align=i.styles.align),void 0!==i.styles.line&&h.hasOwnProperty("line")&&(h.line=i.styles.line),void 0!==i.styles.position&&h.hasOwnProperty("position")&&(h.position=i.styles.position),void 0!==i.styles.size&&h.hasOwnProperty("size")&&(h.size=i.styles.size))),d.addCue(h)}}}function n(){return I>=0?F.textTracks[I]:null}function o(){return I}function p(a){for(var b=-1,c=0;c<F.textTracks.length;c++)if(F.textTracks[c].label===a){b=c;break}return b}function q(a){if(I=a,x.call(this),a>=0){var b=F.textTracks[a];"html"===b.renderingType?v.call(this):w.call(this)}else w.call(this)}function r(a){return F.textTracks[a]}function s(a){if(a.cues){for(var b=a.cues,c=b.length-1,d=c;d>=0;d--)a.removeCue(b[d]);a.mode="disabled"}}function t(){for(var a=H.length,b=0;b<a;b++)if(P)F.removeChild(H[b]);else{var c=r.call(this,b);c.nonAddedCues=[],s.call(this,c)}H=[],G=[],O&&(clearInterval(O),O=null),x.call(this)}function u(a){F.removeChild(H[a]),H.splice(a,1)}function v(){if(P){var a=document.getElementById("native-cue-style");if(!a){a=document.createElement("style"),a.id="native-cue-style",document.head.appendChild(a);var b=a.sheet;F.id?b.insertRule("#"+F.id+"::cue {background: transparent}",0):0!==F.classList.length?b.insertRule("."+F.className+"::cue {background: transparent}",0):b.insertRule("video::cue {background: transparent}",0)}}}function w(){if(P){var a=document.getElementById("native-cue-style");a&&document.head.removeChild(a)}}function x(){if(N)for(;N.firstChild;)N.removeChild(N.firstChild)}function y(a){a&&a.videoModel&&(E=a.videoModel)}var z=this.context,A=(0,g.default)(z).getInstance(),B=(0,m.default)(z).getInstance().log,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0;return C={initialize:a,displayCConTop:c,addTextTrack:d,addCaptions:l,getTextTrack:r,getCurrentTextTrack:n,getCurrentTrackIdx:o,setCurrentTrackIdx:q,getTrackIdxForId:p,deleteTrackCues:s,deleteAllTextTracks:t,deleteTextTrack:u,setConfig:y}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j),l=a(8),m=d(l);e.__dashjs_factory_name="TextTracks",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,8:8,9:9}],58:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(a){function b(){var a;p=[],q=[],r=[],a={},e(a,g.HTTPRequest.MPD_TYPE,m.default.DOWNLOAD_ERROR_ID_MANIFEST),e(a,g.HTTPRequest.XLINK_EXPANSION_TYPE,m.default.DOWNLOAD_ERROR_ID_XLINK),e(a,g.HTTPRequest.INIT_SEGMENT_TYPE,m.default.DOWNLOAD_ERROR_ID_INITIALIZATION),e(a,g.HTTPRequest.MEDIA_SEGMENT_TYPE,m.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.INDEX_SEGMENT_TYPE,m.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,m.default.DOWNLOAD_ERROR_ID_CONTENT),e(a,g.HTTPRequest.OTHER_TYPE,m.default.DOWNLOAD_ERROR_ID_CONTENT),s=a}function c(a,b){var d=a.request,e=new XMLHttpRequest,f=[],g=!0,h=!0,k=new Date,m=k,o=0,t=function(a){h=!1,d.requestStartDate=k,d.requestEndDate=new Date,d.firstByteDate=d.firstByteDate||k,d.checkExistenceOnly||l.addHttpRequest(d.mediaType,null,d.type,d.url,e.responseURL||null,d.serviceLocation||null,d.range||null,d.requestStartDate,d.firstByteDate,d.requestEndDate,e.status,d.duration,e.getAllResponseHeaders(),a?f:null)},u=function(){p.indexOf(e)!==-1&&(p.splice(p.indexOf(e),1),h&&(t(!1),b>0?(b--,r.push(setTimeout(function(){c(a,b)},i.getRetryIntervalForType(d.type)))):(j.downloadError(s[d.type],d.url,d),a.error&&a.error(d,"error",e.statusText),a.complete&&a.complete(d,e.statusText))))},v=function(b){var c=new Date;g&&(g=!1,(!b.lengthComputable||b.lengthComputable&&b.total!==b.loaded)&&(d.firstByteDate=c)),b.lengthComputable&&(d.bytesLoaded=b.loaded,d.bytesTotal=b.total),f.push({s:m,d:c.getTime()-m.getTime(),b:[b.loaded?b.loaded-o:0]}),m=c,o=b.loaded,a.progress&&a.progress()},w=function(){e.status>=200&&e.status<=299&&(t(!0),a.success&&a.success(e.response,e.statusText,e),a.complete&&a.complete(d,e.statusText))};try{var x=n.modifyRequestURL(d.url),y=d.checkExistenceOnly?"HEAD":"GET";e.open(y,x,!0),d.responseType&&(e.responseType=d.responseType),d.range&&e.setRequestHeader("Range","bytes="+d.range),d.requestStartDate||(d.requestStartDate=k),e=n.modifyRequestHeader(e),e.withCredentials=i.getXHRWithCredentials(),e.onload=w,e.onloadend=u,e.onerror=u,e.onprogress=v;var z=(new Date).getTime();isNaN(d.delayLoadingTime)||z>=d.delayLoadingTime?(p.push(e),e.send()):!function(){var a={xhr:e};q.push(a),a.delayTimeout=setTimeout(function(){if(q.indexOf(a)!==-1){q.splice(q.indexOf(a),1);try{p.push(a.xhr),a.xhr.send()}catch(b){a.xhr.onerror()}}},d.delayLoadingTime-z)}()}catch(A){e.onerror()}}function d(a){a.request&&c(a,i.getRetryAttemptsForType(a.request.type))}function f(){r.forEach(function(a){return clearTimeout(a)}),r=[],q.forEach(function(a){return clearTimeout(a.delayTimeout)}),q=[],p.forEach(function(a){a.onloadend=a.onerror=a.onprogress=void 0,a.abort()}),p=[]}var h=this.context,i=(0,k.default)(h).getInstance(),j=a.errHandler,l=a.metricsModel,n=a.requestModifier,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0;return o={load:d,abort:f},b(),o}Object.defineProperty(c,"__esModule",{value:!0});var g=a(179),h=a(10),i=d(h),j=a(101),k=d(j),l=a(151),m=d(l);f.__dashjs_factory_name="XHRLoader";var n=i.default.getClassFactory(f);c.default=n,b.exports=c.default},{10:10,101:101,151:151,179:179}],59:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var e=function(d,e){b.resolved=!0,b.resolvedContent=d?d:null,f.trigger(p.default.XLINK_ELEMENT_LOADED,{element:b,resolveObject:c,error:d||e?null:new g.default(s,"Failed loading Xlink element: "+a)})};if(a===d)e(null,!0);else{var i=new l.default(a,j.HTTPRequest.XLINK_TYPE);h.load({request:i,success:function(a){e(a)},error:function(){e(null)}})}}function c(){h&&(h.abort(),h=null)}var d="urn:mpeg:dash:resolve-to-zero:2013",e=this.context,f=(0,n.default)(e).getInstance(),h=(0,i.default)(e).create({errHandler:a.errHandler,metricsModel:a.metricsModel,requestModifier:a.requestModifier}),k=void 0;return k={load:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(162),g=d(f),h=a(58),i=d(h),j=a(179),k=a(170),l=d(k),m=a(9),n=d(m),o=a(13),p=d(o),q=a(10),r=d(q),s=1;e.__dashjs_factory_name="XlinkLoader";var t=r.default.getClassFactory(e);t.XLINK_LOADER_ERROR_LOADING_FAILURE=s,c.default=t,b.exports=c.default},{10:10,13:13,162:162,170:170,179:179,58:58,9:9}],60:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){ha={video:!0,audio:!0},ia={},ja={},ka={},la={},ma={},na={},pa={},oa={},ra=!1,sa=!1,xa=(0,k.default)(ba).getInstance(),wa=(0,o.default)(ba).getInstance(),ta=(0,y.default)(ba).getInstance(),ua=(0,A.default)(ba).getInstance(),va=(0,C.default)(ba).getInstance()}function b(a,b){oa[a]=b,pa[a]=pa[a]||{},pa[a].state=E,ca.on(u.default.LOADING_PROGRESS,aa,this)}function c(a){a&&(a.abrRulesCollection&&(ea=a.abrRulesCollection),a.rulesController&&(fa=a.rulesController),a.streamController&&(ga=a.streamController))}function d(a,b){var c;return ia[b]=ia[b]||{},ia[b].hasOwnProperty(a)||(ia[b][a]=0),c=Z(ia[b][a],a),c=$(c,a,ia[b][a]),c=_(c,a)}function e(a){var b=xa.getSavedBitrateSettings(a);if(!la.hasOwnProperty(a))if(ma.hasOwnProperty(a)){var c=ta.getValue(),d=ua.getAdaptationForType(c,0,a).Representation;if(Array.isArray(d)){var e=Math.max(Math.round(d.length*ma[a])-1,0);la[a]=d[e].bandwidth}else la[a]=0}else isNaN(b)?la[a]="video"===a?F:G:la[a]=b;return la[a]}function f(a,b){la[a]=b}function h(a){return ma.hasOwnProperty(a)?ma[a]:null}function j(a,b){ma[a]=b}function l(a){return la.hasOwnProperty("max")&&la.max.hasOwnProperty(a)?la.max[a]:NaN}function n(a,b){la.max=la.max||{},la.max[a]=b}function p(a){return ma.hasOwnProperty("max")&&ma.max.hasOwnProperty(a)?ma.max[a]:1}function r(a,b){ma.max=ma.max||{},ma.max[a]=b}function t(a){return ha[a]}function v(a,b){ha[a]=b}function w(){return ra}function x(a){ra=a}function z(){return sa}function B(a){sa=a}function I(a,b){var c=a.getType(),e=a.getStreamInfo(),f=e.id,h=function(a){var g=d(c,f),h=a.value;h<0&&(h=0),h>g&&(h=g);var i=U(c,e);h!==i&&(pa[c].state===E||h>i)&&(X(c,f,a.confidence),K(c,e,i,h,a.reason)),b&&b()};if(t(c)){var i=ea.getRules(m.default.QUALITY_SWITCH_RULES);fa.applyRules(i,a,h,U(c,e),function(a,b){return a=a===g.default.NO_CHANGE?0:a,Math.max(a,b)})}else b&&b()}function J(a,b,c,e){var f=b.id,g=U(a,b),h=null!==c&&!isNaN(c)&&c%1===0;if(!h)throw new Error("argument is not an integer");c!==g&&c>=0&&c<=d(a,f)&&K(a,b,g,c,e)}function K(a,b,c,d,e){V(a,b.id,d),ca.trigger(u.default.QUALITY_CHANGE_REQUESTED,{mediaType:a,streamInfo:b,oldQuality:c,newQuality:d,reason:e})}function L(a,b){pa[a].state=b}function M(a){return pa[a].state}function N(a,b){var c=O(a);if(!c||0===c.length)return H;for(var d=c.length-1;d>=0;d--){var e=c[d];if(1e3*b>=e.bitrate)return d}return 0}function O(a){if(!a||!a.bitrateList)return null;for(var b,c=a.bitrateList,d=a.type,e=[],f=0,g=c.length;f<g;f++)b=new i.default,b.mediaType=d,b.qualityIndex=f,b.bitrate=c[f].bandwidth,b.width=c[f].width,b.height=c[f].height,e.push(b);return e}function P(a,b){na[a]=b}function Q(a){return na[a]}function R(a){var b=a.type,c=a.streamInfo.id,d=a.representationCount-1;return Y(b,c,d),d}function S(a){var b,c=a.id,e=U("audio",a),f=U("video",a);return b=e===d("audio",c)&&f===d("video",c)}function T(){ca.off(u.default.LOADING_PROGRESS,aa,this),clearTimeout(qa),qa=null,a()}function U(a,b){var c,d=b.id;return ja[d]=ja[d]||{},ja[d].hasOwnProperty(a)||(ja[d][a]=H),c=ja[d][a]}function V(a,b,c){ja[b]=ja[b]||{},ja[b][a]=c}function W(a,b){var c;return ka[b]=ka[b]||{},ka[b].hasOwnProperty(a)||(ka[b][a]=0),c=ka[b][a]}function X(a,b,c){ka[b]=ka[b]||{},ka[b][a]=c}function Y(a,b,c){ia[b]=ia[b]||{},ia[b][a]=c}function Z(a,b){var c=l(b);if(isNaN(c)||!oa[b])return a;var d=N(oa[b].getMediaInfo(),c);return Math.min(a,d)}function $(a,b,c){var d=p(b);return isNaN(d)||d>=1||d<0?a:Math.min(a,Math.round(c*d))}function _(a,b){if("video"!==b||!ra||!oa[b])return a;var c=sa&&window.hasOwnProperty("devicePixelRatio"),d=c?window.devicePixelRatio:1,e=va.getElement(),f=e.clientWidth*d,g=e.clientHeight*d,h=ta.getValue(),i=ua.getAdaptationForType(h,0,b).Representation,j=a;if(f>0&&g>0){for(;j>0&&i[j]&&f<i[j].width&&f-i[j-1].width<i[j].width-f;)j-=1;i.length-2>=j&&i[j].width===i[j+1].width&&(j=Math.min(a,j+1))}return j}function aa(a){var b=a.request.mediaType;if(t(b)){var c=function(){var c=ea.getRules(m.default.ABANDON_FRAGMENT_RULES),d=oa[b].getScheduleController();if(!d)return{v:void 0};var e=function(c){if(c.confidence===g.default.STRONG&&c.value<U(b,ga.getActiveStreamInfo())){var e=d.getFragmentModel(),f=e.getRequests({state:q.default.FRAGMENT_MODEL_LOADING,index:a.request.index})[0];f&&(e.abortRequests(),L(b,D),J(b,ga.getActiveStreamInfo(),c.value,c.reason),ca.trigger(u.default.FRAGMENT_LOADING_ABANDONED,{streamProcessor:oa[b],request:f,mediaType:b}),clearTimeout(qa),qa=setTimeout(function(){L(b,E),qa=null},wa.getAbandonLoadTimeout()))}};fa.applyRules(c,oa[b],e,a,function(a,b){return b})}();if("object"==typeof c)return c.v}}var ba=this.context,ca=(0,s.default)(ba).getInstance(),da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0;return da={isPlayingAtTopQuality:S,updateTopQualityIndex:R,getAverageThroughput:Q,getBitrateList:O,getQualityForBitrate:N,getMaxAllowedBitrateFor:l,setMaxAllowedBitrateFor:n,getMaxAllowedRepresentationRatioFor:p,setMaxAllowedRepresentationRatioFor:r,getInitialBitrateFor:e,setInitialBitrateFor:f,getInitialRepresentationRatioFor:h,setInitialRepresentationRatioFor:j,setAutoSwitchBitrateFor:v,getAutoSwitchBitrateFor:t,setLimitBitrateByPortal:x,getLimitBitrateByPortal:w,getUsePixelRatioInLimitBitrateByPortal:z,setUsePixelRatioInLimitBitrateByPortal:B,getConfidenceFor:W,getQualityFor:U,getAbandonmentStateFor:M,setAbandonmentStateFor:L,setPlaybackQuality:J,getPlaybackQuality:I,setAverageThroughput:P,getTopQualityIndexFor:d,initialize:b,setConfig:c,reset:T},a(),da}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(160),i=d(h),j=a(149),k=d(j),l=a(131),m=d(l),n=a(101),o=d(n),p=a(99),q=d(p),r=a(9),s=d(r),t=a(13),u=d(t),v=a(10),w=d(v),x=a(100),y=d(x),z=a(22),A=d(z),B=a(104),C=d(B),D="abandonload",E="allowload",F=1e3,G=100,H=0;e.__dashjs_factory_name="AbrController";var I=w.default.getSingletonFactory(e);I.ABANDON_LOAD=D,I.QUALITY_DEFAULT=H,c.default=I,b.exports=c.default},{10:10,100:100,101:101,104:104,13:13,130:130,131:131,149:149,160:160,22:22,9:9,99:99}],61:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){o.invalidateSelectedIndexes(a.entry)}function b(){o=(0,g.default)(j).create(),p=(0,i.default)(j).create(),l.on(s.default.SERVICE_LOCATION_BLACKLIST_CHANGED,a,h)}function c(a){o.update(a),p.chooseSelectorFromManifest(a)}function d(a){var b=o.getForPath(a),c=b.reduce(function(a,b){var c=p.select(b);return c&&(n.isRelative(c.url)?a.url+=c.url:n.isPathAbsolute(c.url)?a.url=n.parseOrigin(a.url)+c.url:(a.url=c.url,a.serviceLocation=c.serviceLocation)),a},new m.default);if(!n.isRelative(c.url))return c}function e(){o.reset(),p.reset()}function f(a){c(a)}var h=void 0,j=this.context,l=(0,q.default)(j).getInstance(),n=(0,k.default)(j).getInstance(),o=void 0,p=void 0;return h={reset:e,initialize:f,resolve:d},b(),h}Object.defineProperty(c,"__esModule",{value:!0});var f=a(98),g=d(f),h=a(145),i=d(h),j=a(158),k=d(j),l=a(40),m=d(l),n=a(10),o=d(n),p=a(9),q=d(p),r=a(13),s=d(r);e.__dashjs_factory_name="BaseURLController",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,145:145,158:158,40:40,9:9,98:98}],62:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){return!!(g.length&&a&&a.length)&&g.indexOf(a)!==-1}function c(a){g.indexOf(a)===-1&&(g.push(a),h.trigger(j,{entry:a}))}function d(a){a.error&&c(a.request.serviceLocation)}function e(){k&&h.on(k,d,this)}function f(){g=[]}var g=[],h=(0,i.default)(this.context).getInstance(),j=a.updateEventName,k=a.loadFailedEventName;return e(),{add:c,contains:b,reset:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(9),i=d(h);e.__dashjs_factory_name="BlackListController",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,9:9}],63:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){oa=m.default.QUALITY_DEFAULT,pa=!1,qa=0,ra=Number.POSITIVE_INFINITY,ta=0,ua=0,wa=null,xa=E,za=0,Aa=!1,Ba=!1,Ca=!1,Da=!1}function c(a,b,c){va=a,$(b),Fa=c,Ia=(0,i.default)(ca).getInstance(),Ea=(0,o.default)(ca).getInstance(),Ga=(0,m.default)(ca).getInstance(),Ja=(0,C.default)(ca).getInstance(),Ha=Fa.getScheduleController(),oa=Ga.getQualityFor(va,Fa.getStreamInfo()),ea.on(u.default.DATA_UPDATE_COMPLETED,O,this),ea.on(u.default.INIT_FRAGMENT_LOADED,f,this),ea.on(u.default.MEDIA_FRAGMENT_LOADED,j,this),ea.on(u.default.QUALITY_CHANGE_REQUESTED,p,this),ea.on(u.default.STREAM_COMPLETED,P,this),ea.on(u.default.PLAYBACK_PROGRESS,t,this),ea.on(u.default.PLAYBACK_TIME_UPDATED,t,this),ea.on(u.default.PLAYBACK_RATE_CHANGED,S,this),ea.on(u.default.PLAYBACK_SEEKING,r,this),ea.on(u.default.WALLCLOCK_TIME_UPDATED,R,this),ea.on(u.default.CURRENT_TRACK_CHANGED,Q,this,s.default.EVENT_PRIORITY_HIGH),ea.on(u.default.SOURCEBUFFER_APPEND_COMPLETED,n,this),ea.on(u.default.SOURCEBUFFER_REMOVE_COMPLETED,M,this)}function d(a){if(!a||!sa||!Fa)return null;var b=null;try{b=ha.createSourceBuffer(sa,a),b&&b.hasOwnProperty("initialize")&&b.initialize(va,this)}catch(c){ia.mediaSourceError("Error creating "+va+" source buffer.")}return X(b),N(Fa.getRepresentationInfoForQuality(oa).MSETimeOffset),b}function e(){return Fa.getStreamInfo().id===ja.getActiveStreamInfo().id}function f(a){a.fragmentModel===Fa.getFragmentModel()&&(da("Init fragment finished loading saving to",va+"'s init cache"),Ja.save(a.chunk),l(a.chunk))}function h(a,b){var c=Ja.extract(a,va,b);c?l(c):ea.trigger(u.default.INIT_REQUESTED,{sender:na})}function j(a){if(a.fragmentModel===Fa.getFragmentModel()){var b=a.chunk,c=b.bytes,d=b.quality,e=Fa.getRepresentationInfoForQuality(d),f=ga.getValue(),h=la.getEventsFor(f,e.mediaInfo,Fa),i=la.getEventsFor(f,e,Fa);if(h.length>0||i.length>0){var j=Fa.getFragmentModel().getRequests({state:g.default.FRAGMENT_MODEL_EXECUTED,quality:d,index:b.index})[0],k=G(c,j,h,i);Fa.getEventController().addInbandEvents(k)}b.bytes=H(c),l(b)}}function l(a){Ba=!0,ya=a,ha.append(wa,a),"video"===a.mediaInfo.type&&a.mediaInfo.embeddedCaptions&&ma.append(a.bytes,a)}function n(a){if(wa===a.buffer){if(a.error||!I())return a.error.code===k.default.QUOTA_EXCEEDED_ERROR_CODE&&(ra=.8*ha.getTotalBufferedTime(wa)),void(a.error.code!==k.default.QUOTA_EXCEEDED_ERROR_CODE&&I()||(ea.trigger(u.default.QUOTA_EXCEEDED,{sender:na,criticalBufferLevel:ra}),L(K())));isNaN(ya.index)||(ta=Math.max(ya.index,ta),y());var b=ha.getAllRanges(wa);if(b&&b.length>0)for(var c=0,d=b.length;c<d;c++)da("Buffered Range for type:",va,":",b.start(c)," - ",b.end(c));t(),Ba=!1,ea.trigger(u.default.BYTES_APPENDED,{sender:na,quality:ya.quality,startTime:ya.start,index:ya.index,bufferedRanges:b})}}function p(a){oa!==a.newQuality&&va===a.mediaType&&Fa.getStreamInfo().id===a.streamInfo.id&&(N(Fa.getRepresentationInfoForQuality(a.newQuality).MSETimeOffset),oa=a.newQuality)}function r(){ua=0,pa=!1,t()}function t(){v(),x()}function v(){qa=ha.getBufferLength(wa,Ea.getTime()),ea.trigger(u.default.BUFFER_LEVEL_UPDATED,{sender:na,bufferLevel:qa}),z()}function x(){e()&&(fa.addBufferState(va,xa,Ha.getBufferTarget()),fa.addBufferLevel(va,new Date,1e3*qa))}function y(){var a=ta===ua-1;a&&!pa&&(pa=!0,ea.trigger(u.default.BUFFERING_COMPLETED,{sender:na,streamInfo:Fa.getStreamInfo()}))}function z(){B(qa<F&&!pa?E:D)}function B(a){xa===a||"fragmentedText"===va&&ma.getAllTracksAreDisabled()||(xa=a,x(),ea.trigger(u.default.BUFFER_LEVEL_STATE_CHANGED,{sender:na,state:a,mediaType:va,streamInfo:Fa.getStreamInfo()}),ea.trigger(a===D?u.default.BUFFER_LOADED:u.default.BUFFER_EMPTY,{mediaType:va}),da(a===D?"Got enough buffer to start.":"Waiting for more buffer before starting playback."))}function G(a,b,c,d){var e=Math.max(isNaN(b.startTime)?0:b.startTime,0),f=[],g=[];Da=!1;for(var h=c.concat(d),i=0,j=h.length;i<j;i++)f[h[i].schemeIdUri]=h[i];for(var k=(0,w.default)(ca).getInstance().parse(a),l=k.getBoxes("emsg"),i=0,j=l.length;i<j;i++){var m=la.getEvent(l[i],f,e);m&&g.push(m)}return g}function H(a){if(!Da)return a;for(var b=a.length,c=Math.pow(256,2),d=Math.pow(256,3),e=new Uint8Array(a.length),f=0,g=0;f<b;){var h=String.fromCharCode(a[f+4],a[f+5],a[f+6],a[f+7]),i=a[f]*d+a[f+1]*c+256*a[f+2]+1*a[f+3];if("emsg"!=h)for(var j=f;j<f+i;j++)e[g]=a[j],g++;f+=i}return e.subarray(0,g)}function I(){var a=ha.getTotalBufferedTime(wa);return a<ra}function J(){if("fragmentedText"!==va){var a=wa.buffered.length?wa.buffered.start(0):0,b=Ea.getTime()-a-Ia.getBufferToKeep();b>0&&(da("pruning buffer: "+b+" seconds."),Ca=!0,ha.remove(wa,0,Math.round(a+b),sa))}}function K(){if(!wa)return null;var a=Ea.getTime(),b=Fa.getFragmentModel().getRequests({state:g.default.FRAGMENT_MODEL_EXECUTED,time:a})[0],c=ha.getBufferRange(wa,a),d=b&&!isNaN(b.startTime)?b.startTime:Math.floor(a);return null===c&&wa.buffered.length>0&&(d=wa.buffered.end(wa.buffered.length-1)),{start:wa.buffered.start(0),end:d}}function L(a){a&&wa&&ha.remove(wa,a.start,a.end,sa)}function M(a){wa===a.buffer&&(Ca&&(Ca=!1),v(),ea.trigger(u.default.BUFFER_CLEARED,{sender:na,from:a.from,to:a.to,hasEnoughSpaceToAppend:I()}))}function N(a){wa&&wa.timestampOffset!==a&&!isNaN(a)&&(wa.timestampOffset=a)}function O(a){a.sender.getStreamProcessor()!==Fa||a.error||N(a.currentRepresentation.MSETimeOffset)}function P(a){a.fragmentModel===Fa.getFragmentModel()&&(ua=a.request.index,y())}function Q(a){wa&&a.newMediaInfo.type===va&&a.newMediaInfo.streamInfo.id===Fa.getStreamInfo().id&&ka.getSwitchMode(va)===q.default.TRACK_SWITCH_MODE_ALWAYS_REPLACE&&L(K())}function R(){za++;var a=za*(Ia.getWallclockTimeUpdateInterval()/1e3);a>=Ia.getBufferPruningInterval()&&!Ba&&(za=0,J())}function S(){z()}function T(){return va}function U(){return Fa}function V(a){Fa=a}function W(){return wa}function X(a){wa=a}function Y(){return qa}function Z(){return ra}function $(a){sa=a}function _(){return sa}function aa(){return pa}function ba(a){ea.off(u.default.DATA_UPDATE_COMPLETED,O,this),ea.off(u.default.QUALITY_CHANGE_REQUESTED,p,this),ea.off(u.default.INIT_FRAGMENT_LOADED,f,this),ea.off(u.default.MEDIA_FRAGMENT_LOADED,j,this),ea.off(u.default.STREAM_COMPLETED,P,this), +ea.off(u.default.CURRENT_TRACK_CHANGED,Q,this),ea.off(u.default.PLAYBACK_PROGRESS,t,this),ea.off(u.default.PLAYBACK_TIME_UPDATED,t,this),ea.off(u.default.PLAYBACK_RATE_CHANGED,S,this),ea.off(u.default.PLAYBACK_SEEKING,r,this),ea.off(u.default.WALLCLOCK_TIME_UPDATED,R,this),ea.off(u.default.SOURCEBUFFER_APPEND_COMPLETED,n,this),ea.off(u.default.SOURCEBUFFER_REMOVE_COMPLETED,M,this),ra=Number.POSITIVE_INFINITY,xa=E,oa=m.default.QUALITY_DEFAULT,ua=0,ta=0,ya=null,Aa=!1,pa=!1,Ba=!1,Ca=!1,Ea=null,Fa=null,Ga=null,Ha=null,a||(ha.abort(sa,wa),ha.removeSourceBuffer(sa,wa)),wa=null}var ca=this.context,da=(0,A.default)(ca).getInstance().log,ea=(0,s.default)(ca).getInstance(),fa=a.metricsModel,ga=a.manifestModel,ha=a.sourceBufferController,ia=a.errHandler,ja=a.streamController,ka=a.mediaController,la=a.adapter,ma=a.textSourceBuffer,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0;return na={initialize:c,createBuffer:d,getType:T,getStreamProcessor:U,setStreamProcessor:V,getBuffer:W,setBuffer:X,getBufferLevel:Y,getCriticalBufferLevel:Z,setMediaSource:$,getMediaSource:_,getIsBufferingCompleted:aa,switchInitData:h,reset:ba},b(),na}Object.defineProperty(c,"__esModule",{value:!0});var f=a(99),g=d(f),h=a(101),i=d(h),j=a(70),k=d(j),l=a(60),m=d(l),n=a(68),o=d(n),p=a(66),q=d(p),r=a(9),s=d(r),t=a(13),u=d(t),v=a(146),w=d(v),x=a(10),y=d(x),z=a(8),A=d(z),B=a(152),C=d(B),D="bufferLoaded",E="bufferStalled",F=.5;e.__dashjs_factory_name="BufferController";var G=y.default.getClassFactory(e);G.BUFFER_LOADED=D,G.BUFFER_EMPTY=E,c.default=G,b.exports=c.default},{10:10,101:101,13:13,146:146,152:152,60:60,66:66,68:68,70:70,8:8,9:9,99:99}],64:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){D=!1,u={},v={},w={},x=null,y=100,z=y/1e3,C=(0,g.default)(q).getInstance()}function b(){null!==x&&D&&(clearInterval(x),x=null,D=!1)}function c(){r("Start Event Controller"),D||isNaN(y)||(D=!0,x=setInterval(h,y))}function d(a){if(u={},a)for(var b=0;b<a.length;b++){var c=a[b];u[c.id]=c,r("Add inline event with id "+c.id)}r("Added "+a.length+" inline events")}function e(a){for(var b=0;b<a.length;b++){var c=a[b];c.id in v?r("Repeated event with id "+c.id):(v[c.id]=c,r("Add inband event with id "+c.id))}}function f(){if(w)for(var a=C.getTime(),b=Object.keys(w),c=0;c<b.length;c++){var d=b[c],e=w[d];null!==e&&(e.duration+e.presentationTime)/e.eventStream.timescale<a&&(r("Remove Event "+d+" at time "+a),e=null,delete w[d])}}function h(){j(v),j(u),f()}function i(){var a=A.getValue(),b=a.url;a.hasOwnProperty("Location")&&(b=a.Location),r("Refresh manifest @ "+b),B.getManifestLoader().load(b)}function j(a){var b,c=C.getTime();if(a)for(var d=Object.keys(a),e=0;e<d.length;e++){var f=d[e],g=a[f];void 0!==g&&(b=g.presentationTime/g.eventStream.timescale,(0===b||b<=c&&b+z>c)&&(r("Start Event "+f+" at "+c),g.duration>0&&(w[f]=g),g.eventStream.schemeIdUri==o&&g.eventStream.value==p?i():s.trigger(g.eventStream.schemeIdUri,{event:g}),delete a[f]))}}function l(a){a&&(a.manifestModel&&(A=a.manifestModel),a.manifestUpdater&&(B=a.manifestUpdater))}function n(){b(),u=null,v=null,w=null,C=null}var o="urn:mpeg:dash:event:2012",p=1,q=this.context,r=(0,k.default)(q).getInstance().log,s=(0,m.default)(q).getInstance(),t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0,B=void 0,C=void 0,D=void 0;return t={initialize:a,addInlineEvents:d,addInbandEvents:e,clear:b,start:c,setConfig:l,reset:n}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(68),g=d(f),h=a(10),i=d(h),j=a(8),k=d(j),l=a(9),m=d(l);e.__dashjs_factory_name="EventController",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{10:10,68:68,8:8,9:9}],65:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){r={},o.on(p.default.FRAGMENT_LOADING_COMPLETED,i,q)}function b(a){var b=null;return null!==a&&void 0!==a&&a.byteLength>0&&(b=new Uint8Array(a)),b}function c(a){var b=r[a];return b||(b=(0,j.default)(k).create({metricsModel:(0,l.default)(k).getInstance()}),r[a]=b),b}function d(a){return a&&a.type&&a.type===f.HTTPRequest.INIT_SEGMENT_TYPE}function e(){o.off(p.default.FRAGMENT_LOADING_COMPLETED,i,this);for(var a in r)r[a].reset();r={}}function g(a,b,c){var d=new h.default;return d.streamId=c,d.mediaInfo=b.mediaInfo,d.segmentType=b.type,d.start=b.startTime,d.duration=b.duration,d.end=d.start+d.duration,d.bytes=a,d.index=b.index,d.quality=b.quality,d}function i(a){if(r[a.request.mediaType]===a.sender){var b=a.sender.getScheduleController(),c=a.request,e=a.response,f=d(c),h=b.getStreamProcessor().getStreamInfo().id;if(!e)return void m("No "+c.mediaType+" bytes to push.");var i=g(e,c,h);o.trigger(f?p.default.INIT_FRAGMENT_LOADED:p.default.MEDIA_FRAGMENT_LOADED,{chunk:i,fragmentModel:a.sender})}}var k=this.context,m=(0,t.default)(k).getInstance().log,o=(0,n.default)(k).getInstance(),q=void 0,r=void 0;return q={process:b,getModel:c,isInitializationRequest:d,reset:e},a(),q}Object.defineProperty(c,"__esModule",{value:!0});var f=a(179),g=a(161),h=d(g),i=a(99),j=d(i),k=a(102),l=d(k),m=a(9),n=d(m),o=a(13),p=d(o),q=a(10),r=d(q),s=a(8),t=d(s);e.__dashjs_factory_name="FragmentController",c.default=r.default.getClassFactory(e),b.exports=c.default},{10:10,102:102,13:13,161:161,179:179,8:8,9:9,99:99}],66:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){N={},E(),D()}function b(a,b){var c=k(a),e=d(a,b),f=[];return"fragmentedText"===a?void h(e[0]):(c||(c=L.getSavedMediaSettings(a),j(a,c)),void(e&&0!==e.length&&(c&&e.forEach(function(a){C(c,a)&&f.push(a)}),h(0===f.length?F(e):f.length>1?F(f):f[0]))))}function c(a){var b=a?a.type:null,c=a?a.streamInfo.id:null,d=k(b);return!(!a||!x(b))&&(N[c]=N[c]||G(),!(N[c][b].list.indexOf(a)>=0)&&(N[c][b].list.push(a),d&&C(d,a)&&!e(b,a.streamInfo)&&h(a),!0))}function d(a,b){if(!a||!b)return[];var c=b.id;return N[c]&&N[c][a]?N[c][a].list:[]}function e(a,b){return!a||!b||b&&!N[b.id]?null:N[b.id][a].current}function f(a){var b=a.type,c=a.streamInfo.id;return N[c]&&N[c][b]&&y(N[c][b].current,a)}function h(a){if(a){var b=a.type,c=a.streamInfo,d=c.id,f=e(b,c);if(N[d]&&N[d][b]&&(!f||!y(a,f))){N[d][b].current=a,f&&J.trigger(g.default.CURRENT_TRACK_CHANGED,{oldMediaInfo:f,newMediaInfo:a,switchMode:Q[b]});var h=B(a);h&&N[d][b].storeLastSettings&&(h.roles&&(h.role=h.roles[0],delete h.roles),h.accessibility&&(h.accessibility=h.accessibility[0]),h.audioChannelConfiguration&&(h.audioChannelConfiguration=h.audioChannelConfiguration[0]),L.setSavedMediaSettings(b,h))}}}function j(a,b){a&&b&&(O[a]=b)}function k(a){return a?O[a]:null}function l(a,b){var c=S.indexOf(b)!==-1;return c?void(Q[a]=b):void I("track switch mode is not supported: "+b)}function n(a){return Q[a]}function p(a){var b=T.indexOf(a)!==-1;return b?void(P=a):void I("track selection mode is not supported: "+a)}function w(){return P||v}function x(a){return"audio"===a||"video"===a||"text"===a||"fragmentedText"===a}function y(a,b){var c=a.id===b.id,d=a.viewpoint===b.viewpoint,e=a.lang===b.lang,f=a.roles.toString()===b.roles.toString(),g=a.accessibility.toString()===b.accessibility.toString(),h=a.audioChannelConfiguration.toString()===b.audioChannelConfiguration.toString();return c&&d&&e&&f&&g&&h}function z(a){a&&a.errHandler&&(R=a.errHandler)}function A(){a(),K.resetEmbedded()}function B(a){var b={lang:a.lang,viewpoint:a.viewpoint,roles:a.roles,accessibility:a.accessibility,audioChannelConfiguration:a.audioChannelConfiguration},c=b.lang||b.viewpoint||b.role&&b.role.length>0||b.accessibility&&b.accessibility.length>0||b.audioChannelConfiguration&&b.audioChannelConfiguration.length>0;return c?b:null}function C(a,b){var c=!a.lang||a.lang===b.lang,d=!a.viewpoint||a.viewpoint===b.viewpoint,e=!a.role||!!b.roles.filter(function(b){return b===a.role})[0],f=!a.accessibility||!!b.accessibility.filter(function(b){return b===a.accessibility})[0],g=!a.audioChannelConfiguration||!!b.audioChannelConfiguration.filter(function(b){return b===a.audioChannelConfiguration})[0];return c&&d&&e&&f&&g}function D(){Q={audio:s,video:r}}function E(){O={audio:null,video:null}}function F(a){var b=w(),c=[],d=function(a){var b,c=0,d=[];return a.forEach(function(a){b=Math.max.apply(Math,a.bitrateList.map(function(a){return a.bandwidth})),b>c?(c=b,d=[a]):b===c&&d.push(a)}),d},e=function(a){var b,c=0,d=[];return a.forEach(function(a){b=a.representationCount,b>c?(c=b,d=[a]):b===c&&d.push(a)}),d};switch(b){case t:c=d(a),c.length>1&&(c=e(c));break;case u:c=e(a),c.length>1&&(c=d(a));break;default:I("track selection mode is not supported: "+b)}return c[0]}function G(){return{audio:{list:[],storeLastSettings:!0,current:null},video:{list:[],storeLastSettings:!0,current:null},text:{list:[],storeLastSettings:!0,current:null},fragmentedText:{list:[],storeLastSettings:!0,current:null}}}var H=this.context,I=(0,m.default)(H).getInstance().log,J=(0,i.default)(H).getInstance(),K=(0,o.default)(H).getInstance(),L=(0,q.default)(H).getInstance(),M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=[s,r],T=[t,u];return M={initialize:a,checkInitialMediaSettingsForType:b,addTrack:c,getTracksFor:d,getCurrentTrackFor:e,isCurrentTrack:f,setTrack:h,setInitialSettings:j,getInitialSettings:k,setSwitchMode:l,getSwitchMode:n,setSelectionModeForInitialTrack:p,getSelectionModeForInitialTrack:w,isMultiTrackSupportedByType:x,isTracksEqual:y,setConfig:z,reset:A}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(13),g=d(f),h=a(9),i=d(h),j=a(10),k=d(j),l=a(8),m=d(l),n=a(56),o=d(n),p=a(149),q=d(p),r="neverReplace",s="alwaysReplace",t="highestBitrate",u="widestRange",v=t;e.__dashjs_factory_name="MediaController";var w=k.default.getSingletonFactory(e);w.TRACK_SWITCH_MODE_NEVER_REPLACE=r,w.TRACK_SWITCH_MODE_ALWAYS_REPLACE=s,w.TRACK_SELECTION_MODE_HIGHEST_BITRATE=t,w.TRACK_SELECTION_MODE_WIDEST_RANGE=u,w.DEFAULT_INIT_TRACK_SELECTION_MODE=v,c.default=w,b.exports=c.default},{10:10,13:13,149:149,56:56,8:8,9:9}],67:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a="WebKitMediaSource"in window,b="MediaSource"in window;return b?new MediaSource:a?new WebKitMediaSource:null}function b(a,b){var c=window.URL.createObjectURL(a);return b.setSource(c),c}function c(a){a.setSource(null)}function d(a,b){return a.duration!=b&&(a.duration=b),a.duration}function e(a){var b=a.sourceBuffers,c=b.length,d=0;if("open"===a.readyState){for(d;d<c;d++){if(b[d].updating)return;if(0===b[d].buffered.length)return}a.endOfStream()}}var f=void 0;return f={createMediaSource:a,attachMediaSource:b,detachMediaSource:c,setDuration:d,signalEndOfStream:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="MediaSourceController",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],68:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){ma=0,na=NaN,oa=null,ra=null,ta=!1,pa={},sa=(0,k.default)(_).getInstance()}function b(a){qa=a,da=la.getElement(),Z(),ra=qa.manifestInfo.isDynamic,na=qa.start,ba.on(o.default.DATA_UPDATE_COMPLETED,I,this),ba.on(o.default.LIVE_EDGE_SEARCH_COMPLETED,J,this),ba.on(o.default.BYTES_APPENDED,X,this),ba.on(o.default.BUFFER_LEVEL_STATE_CHANGED,Y,this),ba.on(o.default.PERIOD_SWITCH_STARTED,c,this),ta&&(ta=!1,j())}function c(a){a.fromStreamInfo&&pa[a.fromStreamInfo.id]&&delete pa[a.fromStreamInfo.id]}function d(){return C(!0)+qa.duration-r()}function e(){return r()>0}function f(){return qa.id}function h(){return qa.duration}function j(){if(da){da.autoplay=!0;var a=da.play();a&&"undefined"!=typeof Promise&&a instanceof Promise&&a.catch(function(a){"NotAllowedError"===a.name&&ba.trigger(o.default.PLAYBACK_NOT_ALLOWED),aa("Caught pending play exception - continuing ("+a+")")})}else ta=!0}function l(){if(da)return da.paused}function n(){da&&(da.pause(),da.autoplay=!1)}function p(){if(da)return da.seeking}function q(a){la&&(aa("Requesting seek to time: "+a),la.setCurrentTime(a))}function r(){if(da)return da.currentTime}function t(){if(da)return da.playbackRate}function u(){if(da)return da.played}function v(){if(da)return da.ended}function w(){return ra}function x(a){na=a}function y(){return na}function z(a,b){var c=ja.getMpd(ia.getValue()),d=void 0,e=10;d=sa.getUseSuggestedPresentationDelay()&&c.hasOwnProperty("suggestedPresentationDelay")?c.suggestedPresentationDelay:sa.getLiveDelay()?sa.getLiveDelay():isNaN(a)?2*qa.manifestInfo.minBufferTime:a*sa.getLiveDelayFragmentCount();var f=Math.max(b-e,b/2);return Math.min(d,f)}function A(){la&&da&&(ba.off(o.default.DATA_UPDATE_COMPLETED,I,this),ba.off(o.default.BUFFER_LEVEL_STATE_CHANGED,Y,this),ba.off(o.default.LIVE_EDGE_SEARCH_COMPLETED,J,this),ba.off(o.default.BYTES_APPENDED,X,this),F(),$()),la=null,qa=null,da=null,ra=null,a()}function B(a){a&&(a.streamController&&(ea=a.streamController),a.timelineConverter&&(fa=a.timelineConverter),a.metricsModel&&(ga=a.metricsModel),a.dashMetrics&&(ha=a.dashMetrics),a.manifestModel&&(ia=a.manifestModel),a.dashManifestModel&&(ja=a.dashManifestModel),a.adapter&&(ka=a.adapter),a.videoModel&&(la=a.videoModel))}function C(a){var b=void 0,c=(0,i.default)(_).getInstance().getURIFragmentData(),d=parseInt(c.s,10),e=parseInt(c.t,10),f=NaN;if(a||(f=isNaN(d)?e:d),ra)!isNaN(f)&&f>1262304e3&&(b=f-qa.manifestInfo.availableFrom.getTime()/1e3,(b>na||b<na-qa.manifestInfo.DVRWindowSize)&&(b=null)),b=b||na;else if(!isNaN(f)&&f<Math.max(qa.manifestInfo.duration,qa.duration)&&f>=0)b=f;else{var g=pa[qa.id];void 0===g&&(g=ea.getActiveStreamCommonEarliestTime()),b=Math.max(g,qa.start)}return b}function D(a){var b,c=ga.getReadOnlyMetricsFor("video")||ga.getReadOnlyMetricsFor("audio"),d=ha.getCurrentDVRInfo(c),e=d?d.range:null;return e?a>=e.start&&a<=e.end?a:b=Math.max(e.end-2*qa.manifestInfo.minBufferTime,e.start):NaN}function E(){if(null===oa){var a=function(){W()};oa=setInterval(a,sa.getWallclockTimeUpdateInterval())}}function F(){clearInterval(oa),oa=null}function G(){var a=C(!1);a>0&&(q(a),aa("Starting playback at offset: "+a))}function H(){if(!l()&&ra&&0!==da.readyState){var a=r(),b=D(a),c=!isNaN(b)&&b!==a;c&&q(b)}}function I(a){if(!a.error){var b=ka.convertDataToTrack(ia.getValue(),a.currentRepresentation),c=b.mediaInfo.streamInfo;qa.id===c.id&&(qa=c,H())}}function J(a){a.error||0===da.readyState||G()}function K(){ba.trigger(o.default.CAN_PLAY)}function L(){aa("Native video element event: play"),H(),E(),ba.trigger(o.default.PLAYBACK_STARTED,{startTime:r()})}function M(){aa("Native video element event: playing"),ba.trigger(o.default.PLAYBACK_PLAYING,{playingTime:r()})}function N(){aa("Native video element event: pause"),ba.trigger(o.default.PLAYBACK_PAUSED,{ended:v()})}function O(){var a=r();aa("Seeking to: "+a),E(),ba.trigger(o.default.PLAYBACK_SEEKING,{seekTime:a})}function P(){aa("Native video element event: seeked"),ba.trigger(o.default.PLAYBACK_SEEKED)}function Q(){var a=r();a!==ma&&(ma=a,ba.trigger(o.default.PLAYBACK_TIME_UPDATED,{timeToEnd:d(),time:a}))}function R(){ba.trigger(o.default.PLAYBACK_PROGRESS)}function S(){var a=t();aa("Native video element event: ratechange: ",a),ba.trigger(o.default.PLAYBACK_RATE_CHANGED,{playbackRate:a})}function T(){aa("Native video element event: loadedmetadata"),(!ra&&qa.isFirst||fa.isTimeSyncCompleted())&&G(),ba.trigger(o.default.PLAYBACK_METADATA_LOADED),E()}function U(){aa("Native video element event: ended"),n(),F(),ba.trigger(o.default.PLAYBACK_ENDED)}function V(a){var b=a.target||a.srcElement;ba.trigger(o.default.PLAYBACK_ERROR,{error:b.error})}function W(){ba.trigger(o.default.WALLCLOCK_TIME_UPDATED,{isDynamic:ra,time:new Date})}function X(a){var b=a.bufferedRanges;if(b&&b.length){var c=Math.max(b.start(0),qa.start),d=void 0===pa[qa.id]?c:Math.max(pa[qa.id],c);d!==pa[qa.id]&&(!ra&&C(!0)<d&&r()<d&&q(d),pa[qa.id]=d)}}function Y(a){a.streamInfo.id===qa.id&&la.setStallState(a.mediaType,a.state===g.default.BUFFER_EMPTY)}function Z(){da.addEventListener("canplay",K),da.addEventListener("play",L),da.addEventListener("playing",M),da.addEventListener("pause",N),da.addEventListener("error",V),da.addEventListener("seeking",O),da.addEventListener("seeked",P),da.addEventListener("timeupdate",Q),da.addEventListener("progress",R),da.addEventListener("ratechange",S),da.addEventListener("loadedmetadata",T),da.addEventListener("ended",U)}function $(){da.removeEventListener("canplay",K),da.removeEventListener("play",L),da.removeEventListener("playing",M),da.removeEventListener("pause",N),da.removeEventListener("error",V),da.removeEventListener("seeking",O),da.removeEventListener("seeked",P),da.removeEventListener("timeupdate",Q),da.removeEventListener("progress",R),da.removeEventListener("ratechange",S),da.removeEventListener("loadedmetadata",T),da.removeEventListener("ended",U)}var _=this.context,aa=(0,s.default)(_).getInstance().log,ba=(0,m.default)(_).getInstance(),ca=void 0,da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0;return ca={initialize:b,setConfig:B,getStreamStartTime:C,getTimeToStreamEnd:d,isPlaybackStarted:e,getStreamId:f,getStreamDuration:h,getTime:r,getPlaybackRate:t,getPlayedRanges:u,getEnded:v,getIsDynamic:w,setLiveStartTime:x,getLiveStartTime:y,computeLiveDelay:z,play:j,isPaused:l,pause:n,isSeeking:p,seek:q,reset:A},a(),ca}Object.defineProperty(c,"__esModule",{value:!0});var f=a(63),g=d(f),h=a(103),i=d(h),j=a(101),k=d(j),l=a(9),m=d(l),n=a(13),o=d(n),p=a(10),q=d(p),r=a(8),s=d(r);e.__dashjs_factory_name="PlaybackController",c.default=q.default.getSingletonFactory(e),b.exports=c.default},{10:10,101:101,103:103,13:13,63:63,8:8,9:9}],69:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){wa=!0,Ra=NaN,Qa=NaN,Sa=[],xa=!1,ya=null,za=null,Aa=!0,Ba=!1,Ca=0,Ea=NaN}function c(a,b){ra=a,Ia=b,La=(0,F.default)(ga).getInstance(),Fa=(0,h.default)(ga).getInstance(),Ga=(0,n.default)(ga).getInstance(),Ha=(0,j.default)(ga).getInstance(),Ja=(0,N.default)(ga).getInstance(),Ka=Ia.getFragmentController(),Ma=Ia.getBufferController(),ta=Ka.getModel(ra),ta.setScheduleController(this),ua=Ia.isDynamic(),Pa=pa.getScheduleWhilePaused(),Na=(0,p.default)(ga).create({dashMetrics:(0,z.default)(ga).getInstance(),metricsModel:(0,v.default)(ga).getInstance(),textSourceBuffer:(0,t.default)(ga).getInstance()}),Oa=(0,r.default)(ga).create({adapter:(0,B.default)(ga).getInstance(),sourceBufferController:(0,D.default)(ga).getInstance(),textSourceBuffer:(0,t.default)(ga).getInstance()}),na.getIsTextTrack(ra)&&ia.on(J.default.TIMED_TEXT_REQUESTED,R,this),ia.on(J.default.LIVE_EDGE_SEARCH_COMPLETED,V,this),ia.on(J.default.QUALITY_CHANGE_REQUESTED,s,this),ia.on(J.default.DATA_UPDATE_STARTED,K,this),ia.on(J.default.DATA_UPDATE_COMPLETED,w,this),ia.on(J.default.FRAGMENT_LOADING_COMPLETED,C,this),ia.on(J.default.STREAM_COMPLETED,A,this),ia.on(J.default.STREAM_INITIALIZED,y,this),ia.on(J.default.BUFFER_LEVEL_STATE_CHANGED,M,this),ia.on(J.default.BUFFER_CLEARED,L,this),ia.on(J.default.BYTES_APPENDED,G,this),ia.on(J.default.INIT_REQUESTED,m,this),ia.on(J.default.QUOTA_EXCEEDED,O,this),ia.on(J.default.BUFFER_LEVEL_STATE_CHANGED,M,this),ia.on(J.default.PLAYBACK_STARTED,S,this),ia.on(J.default.PLAYBACK_SEEKING,T,this),ia.on(J.default.PLAYBACK_RATE_CHANGED,U,this),ia.on(J.default.PLAYBACK_TIME_UPDATED,E,this),ia.on(J.default.URL_RESOLUTION_FAILED,Q,this),ia.on(J.default.FRAGMENT_LOADING_ABANDONED,I,this)}function d(){sa&&(ea(),xa=!1,wa?o(va.quality):k(0),wa&&(wa=!1),ha("Schedule controller starting for "+ra))}function e(){xa||(xa=!0,clearTimeout(Da),ha("Schedule controller stopping for "+ra))}function g(){if(!(xa||Ba||!Ma||Fa.isPaused()&&!Pa)){i();var a=Sa.length>0,b=Na.execute(Ia,ra,Ja.isVideoTrackPresent());if(b||a){var c=function(){if(va.quality!==Ra)Ra=va.quality,Ma.switchInitData(Ia.getStreamInfo().id,va.quality);else{var a=Oa.execute(Ia,Sa.shift());a?ta.executeRequest(a):(Ba=!1,k(250))}};Ba=!0,a?c():Ha.getPlaybackQuality(Ia,c)}else k(500)}}function i(){var a=1.5*va.fragmentDuration,b=ta.getRequests({state:x.default.FRAGMENT_MODEL_EXECUTED,time:Fa.getTime()+a,threshold:0})[0];b&&Sa.indexOf(b)===-1&&!na.getIsTextTrack(ra)&&(!Ga.isCurrentTrack(b.mediaInfo)||pa.getFastSwitchEnabled()&&b.quality<va.quality&&Ma.getBufferLevel()>=a&&Ha.getAbandonmentStateFor(ra)!==j.default.ABANDON_LOAD?(q(b),ha("Reloading outdated fragment at index: ",b.index)):b.quality>va.quality&&X(Fa.getTime()+Ma.getBufferLevel()))}function k(a){clearTimeout(Da),Da=setTimeout(g,a)}function m(a){a.sender.getStreamProcessor()===Ia&&o(va.quality)}function o(a){Ra=a;var b=la.getInitRequest(Ia,a);b&&(Ba=!0,ta.executeRequest(b))}function q(a){Sa.push(a)}function s(a){if(ra===a.mediaType&&Ia.getStreamInfo().id===a.streamInfo.id){if(va=Ia.getRepresentationInfoForQuality(a.newQuality),null===va||void 0===va)throw new Error("Unexpected error! - currentRepresentationInfo is null or undefined");da(new Date,f.PlayListTrace.REPRESENTATION_SWITCH_STOP_REASON),ea()}}function u(a){var b=ta.getRequests({state:x.default.FRAGMENT_MODEL_EXECUTED,time:Fa.getTime(),threshold:0})[0];b&&Fa.getTime()>=b.startTime&&(b.quality!==Qa&&a&&ia.trigger(J.default.QUALITY_CHANGE_RENDERED,{mediaType:ra,oldQuality:Qa,newQuality:b.quality}),Qa=b.quality)}function w(a){a.error||a.sender.getStreamProcessor()!==Ia||(va=la.convertDataToTrack(ka.getValue(),a.currentRepresentation))}function y(a){a.error||Ia.getStreamInfo().id!==a.streamInfo.id||(va=Ia.getCurrentRepresentationInfo(),ua&&null===La.getLiveEdge()||(sa=!0),xa&&d())}function A(a){a.fragmentModel===ta&&(e(),Ba=!1,ha("Stream is complete"))}function C(a){a.sender===ta&&(na.getIsTextTrack(ra)&&(Ba=!1),a.error&&a.serviceLocation&&!xa&&q(a.request))}function E(){u(!0)}function G(a){a.sender.getStreamProcessor()===Ia&&(Ba=!1,k(0))}function I(a){a.streamProcessor===Ia&&(q(a.request),Ba=!1,k(0))}function K(a){a.sender.getStreamProcessor()===Ia&&e()}function L(a){a.sender.getStreamProcessor()===Ia&&(ta.removeExecutedRequestsBeforeTime(a.to),a.hasEnoughSpaceToAppend&&!Ma.getIsBufferingCompleted()&&xa&&d())}function M(a){a.sender.getStreamProcessor()!==Ia||a.state!==l.default.BUFFER_EMPTY||Fa.isSeeking()||(ha("Buffer is empty! Stalling!"),da(new Date,f.PlayListTrace.REBUFFERING_REASON))}function O(a){a.sender.getStreamProcessor()===Ia&&e()}function Q(){ta.abortRequests(),e()}function R(a){a.sender.getStreamProcessor()===Ia&&o(a.index)}function S(){xa&&d()}function T(a){Ea=a.seekTime,Z(0),xa&&d();var b=ma.getCurrentManifestUpdate(ja.getMetricsFor("stream")),c=va.DVRWindow?va.DVRWindow.end-Fa.getTime():NaN;ja.updateManifestUpdateInfo(b,{latency:c})}function U(a){za&&(za.playbackspeed=a.playbackRate.toString())}function V(a){if(!a.error){var b=va.mediaInfo.streamInfo.manifestInfo.DVRWindowSize/2,c=a.liveEdge-Fa.computeLiveDelay(va.fragmentDuration,b),e=ma.getCurrentManifestUpdate(ja.getMetricsFor("stream")),f=Fa.getLiveStartTime(),g=la.getFragmentRequestForTime(Ia,va,c,{ignoreIsFinished:!0});Ea=f,(isNaN(f)||g.startTime>f)&&(Fa.setLiveStartTime(g.startTime),Ea=g.startTime),ja.updateManifestUpdateInfo(e,{currentTime:Ea,presentationStartTime:a.liveEdge,latency:a.liveEdge-Ea,clientTimeOffset:oa.getClientTimeOffset()}),sa=!0,xa&&d()}}function W(){return Ea}function X(a){Ea=a}function Y(){return ta}function Z(a){Ca=a}function $(){return Ca}function _(){return Ia}function aa(){return Na.getBufferTarget(Ia,ra,Ja.isVideoTrackPresent())}function ba(a){ya=a}function ca(a,b){da(a,b),ya=null}function da(a,b){if(ya&&Aa===!1){var c=za.start,d=a.getTime()-c.getTime();za.duration=d,za.stopreason=b,ya.trace.push(za),Aa=!0}}function ea(){ya&&Aa===!0&&va&&(Aa=!1,za=new f.PlayListTrace,za.representationid=va.id,za.start=new Date,za.mstart=1e3*Fa.getTime(),za.playbackspeed=Fa.getPlaybackRate().toString())}function fa(){ia.off(J.default.LIVE_EDGE_SEARCH_COMPLETED,V,this),ia.off(J.default.DATA_UPDATE_STARTED,K,this),ia.off(J.default.DATA_UPDATE_COMPLETED,w,this),ia.off(J.default.BUFFER_LEVEL_STATE_CHANGED,M,this),ia.off(J.default.QUALITY_CHANGE_REQUESTED,s,this),ia.off(J.default.FRAGMENT_LOADING_COMPLETED,C,this),ia.off(J.default.STREAM_COMPLETED,A,this),ia.off(J.default.STREAM_INITIALIZED,y,this),ia.off(J.default.QUOTA_EXCEEDED,O,this),ia.off(J.default.BYTES_APPENDED,G,this),ia.off(J.default.BUFFER_CLEARED,L,this),ia.off(J.default.INIT_REQUESTED,m,this),ia.off(J.default.PLAYBACK_RATE_CHANGED,U,this),ia.off(J.default.PLAYBACK_SEEKING,T,this),ia.off(J.default.PLAYBACK_STARTED,S,this),ia.off(J.default.PLAYBACK_TIME_UPDATED,E,this),ia.off(J.default.URL_RESOLUTION_FAILED,Q,this),ia.off(J.default.FRAGMENT_LOADING_ABANDONED,I,this),na.getIsTextTrack(ra)&&ia.off(J.default.TIMED_TEXT_REQUESTED,R,this),e(),u(!1),Ba=!1,Ca=0,Ea=NaN,Fa=null,ya=null}var ga=this.context,ha=(0,P.default)(ga).getInstance().log,ia=(0,H.default)(ga).getInstance(),ja=a.metricsModel,ka=a.manifestModel,la=a.adapter,ma=a.dashMetrics,na=a.dashManifestModel,oa=a.timelineConverter,pa=a.mediaPlayerModel,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0,Sa=void 0;return qa={initialize:c,getStreamProcessor:_,getSeekTarget:W,setSeekTarget:X,getFragmentModel:Y,setTimeToLoadDelay:Z,getTimeToLoadDelay:$,replaceRequest:q,start:d,stop:e,reset:fa,setPlayList:ba,getBufferTarget:aa,finalisePlayList:ca},b(),qa}Object.defineProperty(c,"__esModule",{value:!0});var f=a(181),g=a(68),h=d(g),i=a(60),j=d(i),k=a(63),l=d(k),m=a(66),n=d(m),o=a(140),p=d(o),q=a(141),r=d(q),s=a(56),t=d(s),u=a(102),v=d(u),w=a(99),x=d(w),y=a(17),z=d(y),A=a(15),B=d(A),C=a(70),D=d(C),E=a(154),F=d(E),G=a(9),H=d(G),I=a(13),J=d(I),K=a(10),L=d(K),M=a(71),N=d(M),O=a(8),P=d(O);e.__dashjs_factory_name="ScheduleController",c.default=L.default.getClassFactory(e),b.exports=c.default},{10:10,102:102,13:13,140:140,141:141,15:15,154:154,17:17,181:181,56:56,60:60,63:63,66:66,68:68,70:70,71:71,8:8,9:9,99:99}],70:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=b.codec,d=null;try{if(c.match(/application\/mp4;\s*codecs="(stpp|wvtt)"/i))throw new y.default("not really supported");d=a.addSourceBuffer(c)}catch(e){if(!b.isText&&c.indexOf('codecs="stpp"')===-1&&c.indexOf('codecs="wvtt"')===-1)throw e;d=(0,g.default)(t).getInstance(),d.setConfig({errHandler:(0,m.default)(t).getInstance(),adapter:(0,k.default)(t).getInstance(),dashManifestModel:z,mediaController:(0,i.default)(t).getInstance(),videoModel:(0,w.default)(t).getInstance(),streamController:(0,o.default)(t).getInstance(),textTracks:(0,q.default)(t).getInstance(),VTTParser:(0,s.default)(t).getInstance(),TTMLParser:(0,u.default)(t).getInstance()})}return d}function b(a,b){try{a.removeSourceBuffer(b)}catch(c){}}function c(a,b,c){var d,e,f=null,g=0,h=0,i=null,j=null,k=0,l=c||.15;try{f=a.buffered}catch(m){return null}if(null!==f&&void 0!==f){for(e=0,d=f.length;e<d;e++)if(g=f.start(e),h=f.end(e),null===i)k=Math.abs(g-b),b>=g&&b<h?(i=g,j=h):k<=l&&(i=g,j=h);else{if(k=g-j,!(k<=l))break;j=h}if(null!==i)return{start:i,end:j}}return null}function d(a){var b=null;try{return b=a.buffered}catch(c){return null}}function e(a){var b,c,e=d(a),f=0;if(!e)return f;for(c=0,b=e.length;c<b;c++)f+=e.end(c)-e.start(c);return f}function f(a,b,d){var e,f;return e=c(a,b,d),f=null===e?0:e.end-b}function h(a,b){if(!b)return null;var c,e,f,g,h,i,j,k,l,m=d(b);if(!m)return null;for(var n=0,o=m.length;n<o;n++){if(k=a.length>n,h=k?{start:a.start(n),end:a.end(n)}:null,c=m.start(n),e=m.end(n),!h)return l={start:c,end:e};if(f=h.start===c,g=h.end===e,!f||!g){if(f)l={start:h.end,end:e};else{if(!g)return l={start:c,end:e};l={start:c,end:h.start}}return i=a.length>n+1?{start:a.start(n+1),end:a.end(n+1)}:null,j=n+1<o?{start:m.start(n+1),end:m.end(n+1)}:null,!i||j&&j.start===i.start&&j.end===i.end||(l.end=i.start),l}}return null}function j(a,b){var c=b.bytes,d="append"in a?"append":"appendBuffer"in a?"appendBuffer":null,e="Object"===Object.prototype.toString.call(a).slice(8,-1);if(d)try{r(a,function(){e?a[d](c,b):a[d](c),r(a,function(){v.trigger(C.default.SOURCEBUFFER_APPEND_COMPLETED,{buffer:a,bytes:c})})})}catch(f){v.trigger(C.default.SOURCEBUFFER_APPEND_COMPLETED,{buffer:a,bytes:c,error:new y.default(f.code,f.message,null)})}}function l(a,b,c,d){try{r(a,function(){b>=0&&c>b&&"ended"!==d.readyState&&a.remove(b,c),r(a,function(){v.trigger(C.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c})})})}catch(e){v.trigger(C.default.SOURCEBUFFER_REMOVE_COMPLETED,{buffer:a,from:b,to:c,error:new y.default(e.code,e.message,null)})}}function n(a,b){try{"open"===a.readyState?b.abort():b.setTextTrack&&"ended"===a.readyState&&b.abort()}catch(c){}}function p(a){a&&a.dashManifestModel&&(z=a.dashManifestModel)}function r(a,b){var c,d=50,e=function(){a.updating||(clearInterval(c),b())},f=function c(){a.updating||(a.removeEventListener("updateend",c,!1),b())};if(!a.updating)return void b();if("function"==typeof a.addEventListener)try{a.addEventListener("updateend",f,!1)}catch(g){c=setInterval(e,d)}else c=setInterval(e,d)}var t=this.context,v=(0,A.default)(t).getInstance(),x=void 0,z=void 0;return x={append:j,remove:l,abort:n,createSourceBuffer:a,removeSourceBuffer:b,getBufferRange:c,getAllRanges:d,getTotalBufferedTime:e,getBufferLength:f,getRangeDifference:h,setConfig:p}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(56),g=d(f),h=a(66),i=d(h),j=a(15),k=d(j),l=a(151),m=d(l),n=a(71),o=d(n),p=a(57),q=d(p),r=a(159),s=d(r),t=a(157),u=d(t),v=a(104),w=d(v),x=a(162),y=d(x),z=a(9),A=d(z),B=a(13),C=d(B),D=a(10),E=d(D),F=22;e.__dashjs_factory_name="SourceBufferController";var G=E.default.getSingletonFactory(e);G.QUOTA_EXCEEDED_ERROR_CODE=F,c.default=G,b.exports=c.default},{10:10,104:104,13:13,15:15,151:151,157:157,159:159,162:162,56:56,57:57,66:66,71:71,9:9}],71:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){oa=null,ma=[],ya=(0,u.default)(V).getInstance(),qa=!0,ra=!1,sa=!1,za=!1,Aa=!0,Ba=null,ta=!1,ua=!1}function b(a,b){qa=a,pa=b,la.initialize(),ja=(0,B.default)(V).getInstance(),$=(0,k.default)(V).getInstance(),$.setConfig({log:W,manifestModel:aa,dashManifestModel:ba}),$.initialize(_),wa=(0,s.default)(V).getInstance(),xa=(0,g.default)(V).getInstance(),xa.setConfig({streamController:Y,timelineConverter:la,metricsModel:da,dashMetrics:ea,manifestModel:aa,dashManifestModel:ba,adapter:ca,videoModel:wa}),X.on(o.default.TIME_SYNCHRONIZATION_COMPLETED,I,this),X.on(o.default.PLAYBACK_SEEKING,n,this),X.on(o.default.PLAYBACK_TIME_UPDATED,j,this),X.on(o.default.PLAYBACK_ENDED,l,this),X.on(o.default.PLAYBACK_ERROR,h,this),X.on(o.default.PLAYBACK_STARTED,p,this),X.on(o.default.PLAYBACK_PAUSED,r,this),X.on(o.default.MANIFEST_UPDATED,J,this),X.on(o.default.STREAM_BUFFERING_COMPLETED,t,this)}function c(a,b){b=b||new Date,Ba&&(na&&na.getProcessors().forEach(function(c){var d=c.getScheduleController();d&&d.finalisePlayList(b,a)}),da.addPlayList(Ba),Ba=null)}function d(a){Ba=new x.PlayList,Ba.start=new Date,Ba.mstart=1e3*xa.getTime(),Ba.starttype=a,na&&na.getProcessors().forEach(function(a){var b=a.getScheduleController();b&&b.setPlayList(Ba)})}function e(a,b,c){X.trigger(a,{fromStreamInfo:b?b.getStreamInfo():null,toStreamInfo:c.getStreamInfo()})}function f(){na.isActivated()&&Aa&&0===na.getStreamInfo().index&&(na.startEventController(),qa&&xa.play())}function h(a){if(a.error){var b="";switch(a.error.code){case 1:b="MEDIA_ERR_ABORTED";break;case 2:b="MEDIA_ERR_NETWORK";break;case 3:b="MEDIA_ERR_DECODE";break;case 4:b="MEDIA_ERR_SRC_NOT_SUPPORTED";break;case 5:b="MEDIA_ERR_ENCRYPTED";break;default: +b="UNKNOWN"}ta=!0,a.error.msExtendedCode&&(b+=" (0x"+(a.error.msExtendedCode>>>0).toString(16).toUpperCase()+")"),W("Video Element Error: "+b),a.error&&W(a.error),ka.mediaSourceError(b),T()}}function j(a){if(K()){var b=wa.getPlaybackQuality();b&&da.addDroppedFrames("video",b)}xa.isSeeking()||a.timeToEnd<U&&ga.signalEndOfStream(va)}function l(){var a=v();a&&C(na,a,NaN),c(a?x.PlayListTrace.END_OF_PERIOD_STOP_REASON:x.PlayListTrace.END_OF_CONTENT_STOP_REASON)}function n(a){var b=w(a.seekTime);b&&b!==na?(c(x.PlayListTrace.END_OF_PERIOD_STOP_REASON),C(na,b,a.seekTime)):c(x.PlayListTrace.USER_REQUEST_STOP_REASON),d(x.PlayList.SEEK_START_REASON)}function p(){Aa?(Aa=!1,d(x.PlayList.INITIAL_PLAYOUT_START_REASON)):za&&(za=!1,d(x.PlayList.RESUME_FROM_PAUSE_START_REASON))}function r(a){a.ended||(za=!0,c(x.PlayListTrace.USER_REQUEST_STOP_REASON))}function t(a){va&&a.streamInfo.isLast&&ga.signalEndOfStream(va)}function v(){var a=na.getStreamInfo().start,b=na.getStreamInfo().duration;return ma.filter(function(c){return c.getStreamInfo().start===a+b})[0]}function w(a){var b=0,c=null,d=ma.length;d>0&&(b+=ma[0].getStartTime());for(var e=0;e<d;e++)if(c=ma[e],b+=c.getDuration(),a<b)return c;return null}function y(a,b){for(var c=null,d=0,e=0,f=null,g=ma.length,h=0;h<g;h++){if(c=ma[h],e=c.getStartTime(),f=c.getDuration(),Number.isFinite(e)&&(d=e),c.getId()===b)return a-d;Number.isFinite(f)&&(d+=f)}return null}function A(){var a=[];return na.getProcessors().forEach(function(b){a.push(b.getIndexHandler().getEarliestTime())}),Math.min.apply(Math,a)}function C(a,b,c){function d(){isNaN(c)?!function(){var a=xa.getStreamStartTime(!0);na.getProcessors().forEach(function(b){ca.setIndexHandlerTime(b,a)}),xa.seek(a)}():xa.seek(c),xa.play(),na.startEventController(),ra=!1,e(o.default.PERIOD_SWITCH_COMPLETED,a,b)}!ra&&a&&b&&a!==b&&(ra=!0,e(o.default.PERIOD_SWITCH_STARTED,a,b),a.deactivate(),na=b,xa.initialize(na.getStreamInfo()),Ca=L(),D(d))}function D(a){function b(){W("MediaSource is open!"),window.URL.revokeObjectURL(c),va.removeEventListener("sourceopen",b),va.removeEventListener("webkitsourceopen",b),E(),na.activate(va),a&&a()}var c=void 0;va?ga.detachMediaSource(wa):va=ga.createMediaSource(),va.addEventListener("sourceopen",b,!1),va.addEventListener("webkitsourceopen",b,!1),c=ga.attachMediaSource(va,wa),W("MediaSource attached to element. Waiting on open...")}function E(){var a,b;a=na.getStreamInfo().manifestInfo.duration,b=ga.setDuration(va,a),W("Duration successfully set to: "+b)}function F(){var a,b,c,d,f,g,h,j=aa.getValue(),k=da.getMetricsFor("stream"),l=ea.getCurrentManifestUpdate(k),m=[];if(j){g=ca.getStreamsInfo(j),oa&&(X.trigger(o.default.PROTECTION_CREATED,{controller:oa,manifest:j}),oa.setMediaElement(wa.getElement()),pa&&oa.setProtectionData(pa));try{if(0===g.length)throw new Error("There are no streams");for(da.updateManifestUpdateInfo(l,{currentTime:xa.getTime(),buffered:wa.getElement().buffered,presentationStartTime:g[0].start,clientTimeOffset:la.getClientTimeOffset()}),sa=!0,d=0,b=g.length;d<b;d++){for(a=g[d],f=0,c=ma.length;f<c;f++)ma[f].getId()===a.id&&(h=ma[f],m.push(h),h.updateData(a));h||(h=(0,i.default)(V).create({manifestModel:aa,manifestUpdater:$,adapter:ca,timelineConverter:la,capabilities:Z,errHandler:ka,baseURLController:ia}),h.initialize(a,oa),X.on(o.default.STREAM_INITIALIZED,H,this),m.push(h),na&&h.updateData(a)),da.addManifestUpdateStreamInfo(l,a.id,a.index,a.start,a.duration),h=null}ma=m,na||(na=ma[0],e(o.default.PERIOD_SWITCH_STARTED,null,na),xa.initialize(na.getStreamInfo()),e(o.default.PERIOD_SWITCH_COMPLETED,null,na)),va||D(),sa=!1,G()}catch(n){ka.manifestError(n.message,"nostreamscomposed",j),ua=!0,T()}}}function G(){if(!sa){var a=ma.length,b=0;for(f(),b;b<a;b++)if(!ma[b].isInitialized())return;X.trigger(o.default.STREAMS_COMPOSED)}}function H(){G()}function I(){F()}function J(a){if(a.error)ua=!0,T();else{var b,c,d=a.manifest,e=ca.getStreamsInfo(d)[0],f=ca.getMediaInfoForType(d,e,"video")||ca.getMediaInfoForType(d,e,"audio");f&&(b=ca.getDataForMedia(f),c=ba.getRepresentationsForAdaptation(d,b)[0].useCalculatedLiveEdgeTime,c&&(W("SegmentTimeline detected using calculated Live Edge Time"),ya.setUseManifestDateHeaderTimeSource(!1)));var g=ba.getUTCTimingSources(a.manifest),h=!ba.getIsDynamic(d)||c?g:g.concat(ya.getUTCTimingSources()),i=(0,q.default)(V).getInstance().isManifestHTTPS();h.forEach(function(a){a.value.replace(/.*?:\/\//g,"")===u.default.DEFAULT_UTC_TIMING_SOURCE.value.replace(/.*?:\/\//g,"")&&(a.value=a.value.replace(i?new RegExp(/^(http:)?\/\//i):new RegExp(/^(https:)?\/\//i),i?"https://":"http://"),W("Matching default timing source protocol to manifest protocol: ",a.value))}),ia.initialize(d),ha.setConfig({metricsModel:da,dashMetrics:ea}),ha.initialize(h,ya.getUseManifestDateHeaderTimeSource())}}function K(){return void 0===Ca&&(Ca=L()),Ca}function L(){var a=!1;return na.getProcessors().forEach(function(b){"video"===b.getMediaInfo().type&&(a=!0)}),a}function M(){return qa}function N(){return na?na.getStreamInfo():null}function O(a){return na.getId()===a.id}function P(a){return ma.filter(function(b){return b.getId()===a})[0]}function Q(a){_.load(a)}function R(a){$.setManifest(a)}function S(a){a&&(a.capabilities&&(Z=a.capabilities),a.manifestLoader&&(_=a.manifestLoader),a.manifestModel&&(aa=a.manifestModel),a.dashManifestModel&&(ba=a.dashManifestModel),a.protectionController&&(oa=a.protectionController),a.adapter&&(ca=a.adapter),a.metricsModel&&(da=a.metricsModel),a.dashMetrics&&(ea=a.dashMetrics),a.liveEdgeFinder&&(fa=a.liveEdgeFinder),a.mediaSourceController&&(ga=a.mediaSourceController),a.timeSyncController&&(ha=a.timeSyncController),a.baseURLController&&(ia=a.baseURLController),a.errHandler&&(ka=a.errHandler),a.timelineConverter&&(la=a.timelineConverter))}function T(){ha.reset(),c(ta||ua?x.PlayListTrace.FAILURE_STOP_REASON:x.PlayListTrace.USER_REQUEST_STOP_REASON);for(var a=0,b=ma.length;a<b;a++){var d=ma[a];X.off(o.default.STREAM_INITIALIZED,H,this),d.reset(ta)}ma=[],X.off(o.default.PLAYBACK_TIME_UPDATED,j,this),X.off(o.default.PLAYBACK_SEEKING,n,this),X.off(o.default.PLAYBACK_ERROR,h,this),X.off(o.default.PLAYBACK_STARTED,p,this),X.off(o.default.PLAYBACK_PAUSED,r,this),X.off(o.default.PLAYBACK_ENDED,l,this),X.off(o.default.MANIFEST_UPDATED,J,this),X.off(o.default.STREAM_BUFFERING_COMPLETED,t,this),ia.reset(),$.reset(),da.clearAllCurrentMetrics(),aa.setValue(null),_.reset(),la.reset(),fa.reset(),ca.reset(),ja.reset(),ra=!1,sa=!1,na=null,ta=!1,ua=!1,Ca=void 0,Aa=!0,za=!1,va&&(ga.detachMediaSource(wa),va=null),wa=null,oa&&(oa.setMediaElement(null),oa=null,pa=null,aa.getValue()&&X.trigger(o.default.PROTECTION_DESTROYED,{data:aa.getValue().url})),X.trigger(o.default.STREAM_TEARDOWN_COMPLETE)}var U=1,V=this.context,W=(0,z.default)(V).getInstance().log,X=(0,m.default)(V).getInstance(),Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=void 0,da=void 0,ea=void 0,fa=void 0,ga=void 0,ha=void 0,ia=void 0,ja=void 0,ka=void 0,la=void 0,ma=void 0,na=void 0,oa=void 0,pa=void 0,qa=void 0,ra=void 0,sa=void 0,ta=void 0,ua=void 0,va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0;return Y={initialize:b,getAutoPlay:M,getActiveStreamInfo:N,isStreamActive:O,isVideoTrackPresent:K,getStreamById:P,getTimeRelativeToStreamId:y,load:Q,loadWithManifest:R,getActiveStreamCommonEarliestTime:A,setConfig:S,reset:T},a(),Y}Object.defineProperty(c,"__esModule",{value:!0});var f=a(68),g=d(f),h=a(54),i=d(h),j=a(50),k=d(j),l=a(9),m=d(l),n=a(13),o=d(n),p=a(103),q=d(p),r=a(104),s=d(r),t=a(101),u=d(t),v=a(10),w=d(v),x=a(181),y=a(8),z=d(y),A=a(152),B=d(A);e.__dashjs_factory_name="StreamController",c.default=w.default.getSingletonFactory(e),b.exports=c.default},{10:10,101:101,103:103,104:104,13:13,152:152,181:181,50:50,54:54,68:68,8:8,9:9}],72:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){s=!1,t=null,u=null,v=null,w=null,x=null,o.on(i.default.DATA_UPDATE_COMPLETED,l,this),o.on(i.default.INIT_FRAGMENT_LOADED,m,this)}function c(a,b,c){v=a,h(b),w=c,x=w.getRepresentationController()}function d(a){try{u=p.createSourceBuffer(t,a),s||(u.hasOwnProperty("initialize")&&u.initialize(v,this),s=!0)}catch(b){q.mediaSourceError("Error creating "+v+" source buffer.")}return u}function e(){return u}function f(a){u=a}function h(a){t=a}function j(){return w}function k(a){o.off(i.default.DATA_UPDATE_COMPLETED,l,this),o.off(i.default.INIT_FRAGMENT_LOADED,m,this),a||(p.abort(t,u),p.removeSourceBuffer(t,u))}function l(a){a.sender.getStreamProcessor()===w&&o.trigger(i.default.TIMED_TEXT_REQUESTED,{index:0,sender:a.sender})}function m(a){a.fragmentModel===w.getFragmentModel()&&a.chunk.bytes&&p.append(u,a.chunk)}var n=this.context,o=(0,g.default)(n).getInstance(),p=a.sourceBufferController,q=a.errHandler,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0,x=void 0;return r={initialize:c,createBuffer:d,getBuffer:e,setBuffer:f,getStreamProcessor:j,setMediaSource:h,reset:k},b(),r}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="TextController",c.default=k.default.getClassFactory(e),b.exports=c.default},{10:10,13:13,9:9}],73:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){H=b,E=0,F=!1,G=!1,I={"urn:mpeg:dash:utc:http-head:2014":v,"urn:mpeg:dash:utc:http-xsdate:2014":u.bind(null,m),"urn:mpeg:dash:utc:http-iso:2014":u.bind(null,n),"urn:mpeg:dash:utc:direct:2014":t,"urn:mpeg:dash:utc:http-head:2012":v,"urn:mpeg:dash:utc:http-xsdate:2012":u.bind(null,m),"urn:mpeg:dash:utc:http-iso:2012":u.bind(null,n),"urn:mpeg:dash:utc:direct:2012":t,"urn:mpeg:dash:utc:http-ntp:2014":s,"urn:mpeg:dash:utc:ntp:2014":s,"urn:mpeg:dash:utc:sntp:2014":s},e()||(y(a),f(!0))}function b(a){a&&(a.metricsModel&&(J=a.metricsModel),a.dashMetrics&&(K=a.dashMetrics))}function c(){return j()}function d(a){F=a}function e(){return F}function f(a){G=a}function h(a){E=a}function j(){return E}function l(a){var b,c,d=60,e=60,f=1e3,g=/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2})(?::([0-9]*)(\.[0-9]*)?)?(?:([+\-])([0-9]{2})([0-9]{2}))?/,h=g.exec(a);return b=Date.UTC(parseInt(h[1],10),parseInt(h[2],10)-1,parseInt(h[3],10),parseInt(h[4],10),parseInt(h[5],10),h[6]&&(parseInt(h[6],10)||0),h[7]&&parseFloat(h[7])*f||0),h[9]&&h[10]&&(c=parseInt(h[9],10)*e+parseInt(h[10],10),b+=("+"===h[8]?-1:1)*c*d*f),new Date(b).getTime()}function m(a){var b=Date.parse(a);return isNaN(b)&&(b=l(a)),b}function n(a){return Date.parse(a)}function r(a){return Date.parse(a)}function s(a,b,c){c()}function t(a,b,c){var d=m(a);return isNaN(d)?void c():void b(d)}function u(a,b,c,d,e){var f,g,h=!1,i=new XMLHttpRequest,j=e?"HEAD":"GET",k=b.match(/\S+/g);b=k.shift(),f=function(){h||(h=!0,k.length?u(a,k.join(" "),c,d,e):d())},g=function(){var b,d;200===i.status&&(b=e?i.getResponseHeader("Date"):i.response,d=a(b),isNaN(d)||(c(d),h=!0))},i.open(j,b),i.timeout=q||0,i.onload=g,i.onloadend=f,i.send()}function v(a,b,c){u(r,a,b,c,!0)}function w(){var a=J.getReadOnlyMetricsFor("stream"),b=K.getLatestMPDRequestHeaderValueByID(a,"Date"),c=null!==b?new Date(b).getTime():Number.NaN;isNaN(c)?x(!0):(h(c-(new Date).getTime()),x(!1,c/1e3,E))}function x(a,b,c){d(!1),C.trigger(k.default.TIME_SYNCHRONIZATION_COMPLETED,{time:b,offset:c,error:a?new g.default(p):null})}function y(a,b){var c=b||0,e=a[c],f=function(a,b){var c=!a||!b;c&&H?w():x(c,a,b)};d(!0),e?I.hasOwnProperty(e.schemeIdUri)?I[e.schemeIdUri](e.value,function(a){var b=(new Date).getTime(),c=a-b;h(c),B("Local time: "+new Date(b)),B("Server time: "+new Date(a)),B("Difference (ms): "+c),f(a,c)},function(){y(a,c+1)}):y(a,c+1):(h(0),f())}function z(){f(!1),d(!1)}var A=this.context,B=(0,o.default)(A).getInstance().log,C=(0,i.default)(A).getInstance(),D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0;return D={initialize:a,getOffsetToDeviceTimeMs:c,setConfig:b,reset:z}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(162),g=d(f),h=a(9),i=d(h),j=a(13),k=d(j),l=a(10),m=d(l),n=a(8),o=d(n),p=1,q=5e3;e.__dashjs_factory_name="TimeSyncController";var r=m.default.getSingletonFactory(e);r.TIME_SYNC_FAILED_ERROR_CODE=p,r.HTTP_TIMEOUT_MS=q,c.default=r,b.exports=c.default},{10:10,13:13,162:162,8:8,9:9}],74:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){A.on(k.default.XLINK_ELEMENT_LOADED,j,C),H=(0,g.default)(z).create({errHandler:a.errHandler,metricsModel:a.metricsModel,requestModifier:a.requestModifier})}function c(a){D=a}function d(a){E=a}function e(a){var b;G=new o.default(D,"",(!0)),F=a,b=m(F.Period_asArray,F,t,r),h(b,t,r)}function f(){A.off(k.default.XLINK_ELEMENT_LOADED,j,C),H&&(H.reset(),H=null)}function h(a,b,c){var d,e,f,g={};for(g.elements=a,g.type=b,g.resolveType=c,0===g.elements.length&&l(g),f=0;f<g.elements.length;f++)d=g.elements[f],e=B.isHTTPURL(d.url)?d.url:d.originalContent.BaseURL+d.url,H.load(e,d,g)}function j(a){var b,c,d,e="<response>",f="</response>",g="";b=a.element,c=a.resolveObject,b.resolvedContent&&(d=b.resolvedContent.indexOf(">")+1,g=b.resolvedContent.substr(0,d)+e+b.resolvedContent.substr(d)+f,b.resolvedContent=G.xml_str2json(g)),x(c)&&l(c)}function l(a){var b,c,d=[];if(n(a),a.resolveType===s&&A.trigger(k.default.XLINK_READY,{manifest:F}),a.resolveType===r)switch(a.type){case t:for(b=0;b<F[t+"_asArray"].length;b++)c=F[t+"_asArray"][b],c.hasOwnProperty(u+"_asArray")&&(d=d.concat(m(c[u+"_asArray"],c,u,r))),c.hasOwnProperty(v+"_asArray")&&(d=d.concat(m(c[v+"_asArray"],c,v,r)));h(d,u,r);break;case u:A.trigger(k.default.XLINK_READY,{manifest:F})}}function m(a,b,c,d){var e,f,g,h=[];for(f=a.length-1;f>=0;f--)e=a[f],e.hasOwnProperty("xlink:href")&&e["xlink:href"]===w&&a.splice(f,1);for(f=0;f<a.length;f++)e=a[f],e.hasOwnProperty("xlink:href")&&e.hasOwnProperty("xlink:actuate")&&e["xlink:actuate"]===d&&(g=p(e["xlink:href"],b,c,f,d,e),h.push(g));return h}function n(a){var b,c,d,e,f,g,h=[];for(e=a.elements.length-1;e>=0;e--){if(b=a.elements[e],c=b.type+"_asArray",!b.resolvedContent||y())delete b.originalContent["xlink:actuate"],delete b.originalContent["xlink:href"],h.push(b.originalContent);else if(b.resolvedContent)for(f=0;f<b.resolvedContent[c].length;f++)d=b.resolvedContent[c][f],h.push(d);for(b.parentElement[c].splice(b.index,1),g=0;g<h.length;g++)b.parentElement[c].splice(b.index+g,0,h[g]);h=[]}a.elements.length>0&&E.run(F)}function p(a,b,c,d,e,f){return{url:a,parentElement:b,type:c,index:d,resolveType:e,originalContent:f,resolvedContent:null,resolved:!1}}function x(a){var b,c;for(b=0;b<a.elements.length;b++)if(c=a.elements[b],c.resolved===!1)return!1;return!0}function y(){return!1}var z=this.context,A=(0,i.default)(z).getInstance(),B=(0,q.default)(z).getInstance(),C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0;return C={resolveManifestOnLoad:e,setMatchers:c,setIron:d,reset:f},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(59),g=d(f),h=a(9),i=d(h),j=a(13),k=d(j),l=a(10),m=d(l),n=a(4),o=d(n),p=a(158),q=d(p),r="onLoad",s="onActuate",t="Period",u="AdaptationSet",v="EventStream",w="urn:mpeg:dash:resolve-to-zero:2013";e.__dashjs_factory_name="XlinkController",c.default=m.default.getClassFactory(e),b.exports=c.default},{10:10,13:13,158:158,4:4,59:59,9:9}],75:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return f=(0,g.default)(d).getInstance({eventBus:a.eventBus,metricsModel:a.metricsModel}),(0,k.default)(d).create(a)}function b(){return(0,o.default)(d).getInstance()}function c(){return(0,m.default)(d).getInstance()}var d=this.context,e=void 0,f=void 0;return e={createMetricsReporting:a,getReportingFactory:b,getMetricsHandlerFactory:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(89),g=d(f),h=a(76),i=d(h),j=a(77),k=d(j),l=a(82),m=d(l),n=a(87),o=d(n),p=a(10),q=d(p);e.__dashjs_factory_name="MetricsReporting";var r=q.default.getClassFactory(e);r.events=i.default,c.default=r,b.exports=c.default},{10:10,76:76,77:77,82:82,87:87,89:89}],76:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(14),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.METRICS_INITIALISATION_COMPLETE="internal_metricsReportingInitialized",this.BECAME_REPORTING_PLAYER="internal_becameReportingPlayer"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{14:14}],77:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b){if(!b.error){var c=Object.keys(e),d=(0,i.default)(f).getInstance({dashManifestModel:a.dashManifestModel}).getMetrics(b.manifest);d.forEach(function(b){var d=JSON.stringify(b);if(e.hasOwnProperty(d))c.splice(d,1);else try{var h=(0,g.default)(f).create(a);h.initialize(b),e[d]=h}catch(i){}}),c.forEach(function(a){e[a].reset(),delete e[a]}),h.trigger(m.default.METRICS_INITIALISATION_COMPLETE)}}function c(){Object.keys(e).forEach(function(a){e[a].reset()}),e={}}function d(){h.on(o.default.MANIFEST_UPDATED,b),h.on(o.default.STREAM_TEARDOWN_COMPLETE,c)}var e={},f=this.context,h=a.eventBus;return d(),{}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(78),g=d(f),h=a(91),i=d(h),j=a(10),k=d(j),l=a(76),m=d(l),n=a(13),o=d(n);e.__dashjs_factory_name="MetricsCollectionController",c.default=k.default.getClassFactory(e),b.exports=c.default},{10:10,13:13,76:76,78:78,91:91}],78:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b){try{f=(0,i.default)(h).create({mediaElement:a.mediaElement}),f.initialize(b.Range),e=(0,k.default)(h).create({log:a.log}),e.initialize(b.Reporting,f),d=(0,m.default)(h).create({log:a.log,eventBus:a.eventBus}),d.initialize(b.metrics,e)}catch(g){throw c(),g}}function c(){d&&d.reset(),e&&e.reset(),f&&f.reset()}var d=void 0,e=void 0,f=void 0,g=void 0,h=this.context;return g={initialize:b,reset:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(80),i=d(h),j=a(81),k=d(j),l=a(79),m=d(l);e.__dashjs_factory_name="MetricsController",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,79:79,80:80,81:81}],79:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){e.forEach(function(b){b.handleNewMetric(a.metric,a.value,a.mediaType)})}function c(a,c){a.split(",").forEach(function(a,b,d){var f;if(a.indexOf("(")!==-1&&a.indexOf(")")===-1){var g=d[b+1];g&&g.indexOf("(")===-1&&g.indexOf(")")!==-1&&(a+=","+g,delete d[b+1])}f=j.create(a,c),f&&e.push(f)}),i.on(k.default.METRIC_ADDED,b,f),i.on(k.default.METRIC_UPDATED,b,f)}function d(){i.off(k.default.METRIC_ADDED,b,f),i.off(k.default.METRIC_UPDATED,b,f),e.forEach(function(a){return a.reset()}),e=[]}var e=[],f=void 0,h=this.context,i=a.eventBus,j=(0,g.default)(h).getInstance({log:a.log,eventBus:a.eventBus});return f={initialize:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(82),g=d(f),h=a(10),i=d(h),j=a(52),k=d(j);e.__dashjs_factory_name="MetricsHandlersController",c.default=i.default.getClassFactory(e),b.exports=c.default},{10:10,52:52,82:82}],80:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){a&&a.length&&(a.forEach(function(a){var b=a.starttime,c=b+a.duration;j.add(b,c)}),f=!!a[0]._useWallClockTime)}function c(){j.clear()}function d(){j=(0,i.default)(g).create()}function e(){var a,b=j.length;if(!b)return!0;a=f?(new Date).getTime()/1e3:k.currentTime;for(var c=0;c<b;c+=1){var d=j.start(c),e=j.end(c);if(d<=a&&a<e)return!0}return!1}var f=!1,g=this.context,h=void 0,j=void 0,k=a.mediaElement;return h={initialize:b,reset:c,isEnabled:e},d(),h}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(148),i=d(h);e.__dashjs_factory_name="RangeController",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,148:148}],81:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){a.some(function(a){var c=g.create(a,b);if(c)return e.push(c),!0})}function c(){e.forEach(function(a){return a.reset()}),e=[]}function d(a,b){e.forEach(function(c){return c.report(a,b)})}var e=[],f=void 0,g=(0,i.default)(this.context).getInstance({log:a.log});return f={initialize:b,reset:c,report:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(87),i=d(h);e.__dashjs_factory_name="ReportingController",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,87:87}],82:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(b,c){var d,e=b.match(g);if(e){try{d=j[e[1]](h).create({eventBus:a.eventBus}),d.initialize(e[1],c,e[3],e[5])}catch(i){d=null,f("MetricsHandlerFactory: Could not create handler for type "+e[1]+" with args "+e[3]+", "+e[5]+" ("+i.message+")")}return d}}function c(a,b){j[a]=b}function d(a){delete j[a]}var e=void 0,f=a.log,g=/([a-zA-Z]*)(\(([0-9]*)(\,\s*([a-zA-Z]*))?\))?/,h=this.context,j={BufferLevel:i.default,DVBErrors:k.default,HttpList:m.default,PlayList:o.default,RepSwitchList:o.default,TcpList:o.default};return e={create:b,register:c,unregister:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(83),i=d(h),j=a(84),k=d(j),l=a(86),m=d(l),n=a(85),o=d(n);e.__dashjs_factory_name="MetricsHandlerFactory",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10,83:83,84:84,85:85,86:86}],83:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){try{return Object.keys(o).map(function(a){return o[a]}).reduce(function(a,b){return a.level<b.level?a:b})}catch(a){return}}function b(){var b=a();b&&l!==b.t&&(l=b.t,g.report(j,b))}function c(a,c,d){c&&(h=n.validateN(d),g=c,j=n.reconstructFullMetricName(a,d),k=setInterval(b,h))}function d(){clearInterval(k),k=null,h=0,g=null,l=null}function e(a,b,c){"BufferLevel"===a&&(o[c]=b)}var f=void 0,g=void 0,h=void 0,j=void 0,k=void 0,l=void 0,m=this.context,n=(0,i.default)(m).getInstance(),o=[];return f={initialize:c,reset:d,handleNewMetric:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(90),i=d(h);e.__dashjs_factory_name="BufferLevelHandler",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,90:90}],84:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){h.off(i.default.METRICS_INITIALISATION_COMPLETE,b,this),h.trigger(i.default.BECAME_REPORTING_PLAYER)}function c(a,c){c&&(g=c,h.on(i.default.METRICS_INITIALISATION_COMPLETE,b,this))}function d(){g=null}function e(a,b){"DVBErrors"===a&&g&&g.report(a,b)}var f=void 0,g=void 0,h=a.eventBus;return f={initialize:c,reset:d,handleNewMetric:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(76),i=d(h);c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,76:76}],85:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){e=a,f=b}function b(){f=null,e=void 0}function c(a,b){a===e&&f&&f.report(e,b)}var d=void 0,e=void 0,f=void 0;return d={initialize:a,reset:b,handleNewMetric:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="GenericMetricHandler",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10}],86:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){var a=l;a.length&&f&&f.report(j,a),l=[]}function b(b,c,d,e){c&&(g=m.validateN(d),f=c,e&&e.length&&(h=e),j=m.reconstructFullMetricName(b,d,e),k=setInterval(a,g))}function c(){clearInterval(k),k=null,g=null,h=null,l=[],f=null}function d(a,b){"HttpList"===a&&(h&&h!==b.type||l.push(b))}var e=void 0,f=void 0,g=void 0,h=void 0,j=void 0,k=void 0,l=[],m=(0,i.default)(this.context).getInstance();return e={initialize:b,reset:c,handleNewMetric:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(90),i=d(h);e.__dashjs_factory_name="HttpListHandler",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,90:90}],87:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c;try{c=e[a.schemeIdUri](f).create(),c.initialize(a,b)}catch(d){c=null,g("ReportingFactory: could not create Reporting with schemeIdUri "+a.schemeIdUri+" ("+d.message+")")}return c}function c(a,b){e[a]=b}function d(a){delete e[a]}var e={"urn:dvb:dash:reporting:2014":i.default},f=this.context,g=a.log,h=void 0;return h={create:b,register:c,unregister:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(88),i=d(h);e.__dashjs_factory_name="ReportingFactory",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10,88:88}],88:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b,c){var d=new XMLHttpRequest,e=function(){var a=q.indexOf(d);a!==-1&&(q.splice(a,1),d.status>=200&&d.status<300?b&&b():c&&c())};q.push(d);try{d.open("GET",a),d.onloadend=e,d.onerror=e,d.send()}catch(f){d.onerror()}}function b(b,c){Array.isArray(c)||(c=[c]),l&&o.isEnabled()&&c.forEach(function(c){var d=g.serialise(c);j&&"DVBErrors"!==b&&(d="metricname="+b+"&"+d),d=n+"?"+d,a(d,null,function(){l=!1})})}function c(a,b){var c;if(o=b,n=a["dvb:reportingUrl"],!n)throw new Error("required parameter missing (dvb:reportingUrl)");m||(c=a["dvb:probability"]||a["dvb:priority"]||0,c&&(1e3===c||c/1e3>=h.random())&&(l=!0),m=!0)}function d(){p||(q.forEach(function(a){return a.abort()}),q=[]),m=!1,l=!1,n=null,o=null}var e=void 0,f=this.context,g=(0,i.default)(f).getInstance(),h=(0,k.default)(f).getInstance(),j=!0,l=!1,m=!1,n=null,o=null,p=!0,q=[];return e={report:b,initialize:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(92),i=d(h),j=a(93),k=d(j);e.__dashjs_factory_name="DVBReporting",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,92:92,93:93}],89:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=new g.default;if(r){for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);b.mpdurl||(b.mpdurl=r.originalUrl||r.url),b.terror||(b.terror=new Date),q.addDVBErrors(b)}}function c(a){a.error||(r=a.manifest)}function d(a){b({errorcode:g.default.BASE_URL_CHANGED,servicelocation:a.entry})}function e(){b({errorcode:g.default.BECAME_REPORTER})}function f(a){(0===a.responsecode||a.responsecode>=400||a.responsecode<100||a.responsecode>=600)&&b({errorcode:a.responsecode||g.default.CONNECTION_ERROR,url:a.url,terror:a.tresponse,servicelocation:a._serviceLocation})}function h(a){switch(a.metric){case"HttpList":f(a.value)}}function j(a){var c,d=a.error?a.error.code:0;switch(d){case MediaError.MEDIA_ERR_NETWORK:c=g.default.CONNECTION_ERROR;break;case MediaError.MEDIA_ERR_DECODE:c=g.default.CORRUPT_MEDIA_OTHER;break;default:return}b({errorcode:c})}function l(){p.on(i.default.MANIFEST_UPDATED,c,o),p.on(i.default.SERVICE_LOCATION_BLACKLIST_CHANGED,d,o),p.on(k.default.METRIC_ADDED,h,o),p.on(k.default.METRIC_UPDATED,h,o),p.on(k.default.PLAYBACK_ERROR,j,o),p.on(m.default.BECAME_REPORTING_PLAYER,e,o)}function n(){p.off(i.default.MANIFEST_UPDATED,c,o),p.off(i.default.SERVICE_LOCATION_BLACKLIST_CHANGED,d,o),p.off(k.default.METRIC_ADDED,h,o),p.off(k.default.METRIC_UPDATED,h,o),p.off(k.default.PLAYBACK_ERROR,j,o),p.off(m.default.BECAME_REPORTING_PLAYER,e,o)}var o=void 0,p=a.eventBus,q=a.metricsModel,r=void 0;return o={initialise:l,reset:n},l(),o}Object.defineProperty(c,"__esModule",{value:!0});var f=a(94),g=d(f),h=a(13),i=d(h),j=a(52),k=d(j),l=a(76),m=d(l),n=a(10),o=d(n);e.__dashjs_factory_name="DVBErrorsTranslator",c.default=o.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,52:52,76:76,94:94}],90:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){return{reconstructFullMetricName:function(a,b,c){var d=a;return b&&(d+="("+b,c&&c.length&&(d+=","+c),d+=")"),d},validateN:function(a){if(!a)throw new Error("missing n");if(isNaN(a))throw new Error("n is NaN");if(a<0)throw new Error("n must be positive");return a}}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="HandlerHelpers",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],91:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b,c){var d,f,g=e.getMpd(a),h=0;return b?h=g.availabilityStartTime.getTime()/1e3:(d=this.getRegularPeriods(a,g),d.length&&(h=d[0].start)),f=h,c&&c.hasOwnProperty("starttime")&&(f+=c.starttime),f}function c(a){var c=[];return a.Metrics_asArray&&a.Metrics_asArray.forEach(function(d){var f=new g.default,h=e.getIsDynamic(a);d.hasOwnProperty("metrics")&&(f.metrics=d.metrics,d.Range_asArray&&d.Range_asArray.forEach(function(c){var d=new i.default;d.starttime=b(a,h,c),c.hasOwnProperty("duration")?d.duration=c.duration:d.duration=e.getDuration(a),d._useWallClockTime=h,f.Range.push(d)}),d.Reporting_asArray&&(d.Reporting_asArray.forEach(function(a){var b=new k.default;if(a.hasOwnProperty("schemeIdUri")){b.schemeIdUri=a.schemeIdUri;for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);f.Reporting.push(b)}}),c.push(f)))}),c}var d=void 0,e=a.dashManifestModel;return d={getMetrics:c}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(95),g=d(f),h=a(96),i=d(h),j=a(97),k=d(j),l=a(10),m=d(l);e.__dashjs_factory_name="ManifestParsing",c.default=m.default.getSingletonFactory(e),b.exports=c.default},{10:10,95:95,96:96,97:97}],92:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(b){var c,d,e=[],f=[];for(c in b)if(b.hasOwnProperty(c)&&0!==c.indexOf("_")){if(d=b[c],void 0!==d&&null!==d||(d=""),Array.isArray(d)){if(!d.length)continue;f=[],d.forEach(function(b){var c="Object"!==Object.prototype.toString.call(b).slice(8,-1);f.push(c?b:a(b))}),d=encodeURIComponent(f.join(","))}else"string"==typeof d?d=encodeURIComponent(d):d instanceof Date?d=d.toISOString():"number"==typeof d&&(d=Math.round(d));e.push(c+"="+d)}return e.join("&")}return{serialise:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="MetricSerialiser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],93:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){c&&(g||(g=new d(f)),c.getRandomValues(g),h=0)}function b(b,d){var f;return b||(b=0),d||(d=1),c?(h===g.length&&a(),f=g[h]/e,h+=1):f=Math.random(),f*(d-b)+b}var c=window.crypto||window.msCrypto,d=Uint32Array,e=Math.pow(2,8*d.BYTES_PER_ELEMENT)-1,f=10,g=void 0,h=void 0,i=void 0;return i={random:b},a(),i}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="RNG",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],94:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){ +d(this,a),this.mpdurl=null,this.errorcode=null,this.terror=null,this.url=null,this.ipaddress=null,this.servicelocation=null};e.SSL_CONNECTION_FAILED_PREFIX="SSL",e.DNS_RESOLUTION_FAILED="C00",e.HOST_UNREACHABLE="C01",e.CONNECTION_REFUSED="C02",e.CONNECTION_ERROR="C03",e.CORRUPT_MEDIA_ISOBMFF="M00",e.CORRUPT_MEDIA_OTHER="M01",e.BASE_URL_CHANGED="F00",e.BECAME_REPORTER="S00",c.default=e,b.exports=c.default},{}],95:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.metrics="",this.Range=[],this.Reporting=[]};c.default=e,b.exports=c.default},{}],96:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.starttime=0,this.duration=1/0,this._useWallClockTime=!1};c.default=e,b.exports=c.default},{}],97:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.schemeIdUri="",this.value=""};c.default=e,b.exports=c.default},{}],98:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(){function a(){l=new n}function b(a,b,c){var d=p.getBaseURLsFromElement(c);a[b]?q.areSimpleEquivalent(d,a[b].data.baseUrls)||(a[b].data.baseUrls=d,a[b].data.selectedIdx=m):a[b]=new n(d)}function c(a){var c=p.getBaseURLsFromElement(a);q.areSimpleEquivalent(c,l.data.baseUrls)||(l.data.baseUrls=c,l.data.selectedIdx=m),a.Period_asArray&&a.Period_asArray.forEach(function(a,c){b(l.children,c,a),a.AdaptationSet_asArray&&a.AdaptationSet_asArray.forEach(function(a,d){b(l.children[c].children,d,a),a.Representation_asArray&&a.Representation_asArray.sort(p.getRepresentationSortFunction()).forEach(function(a,e){b(l.children[c].children[d].children,e,a)})})})}function d(a,b){var c=b||l;a(c.data),c.children&&c.children.forEach(function(b){return d(a,b)})}function e(a){d(function(b){isNaN(b.selectedIdx)||a===b.baseUrls[b.selectedIdx].serviceLocation&&(b.selectedIdx=m)})}function f(a){c(a)}function g(){l=new n}function i(a){var b=l,c=[b.data];return a.forEach(function(a){b=b.children[a],b&&c.push(b.data)}),c.filter(function(a){return a.baseUrls.length})}var k=void 0,l=void 0,o=this.context,p=(0,h.default)(o).getInstance(),q=(0,j.default)(o).getInstance();return k={reset:g,update:f,getForPath:i,invalidateSelectedIndexes:e},a(),k}Object.defineProperty(c,"__esModule",{value:!0});var g=a(22),h=d(g),i=a(155),j=d(i),k=a(10),l=d(k),m=NaN,n=function a(b,c){e(this,a),this.data={baseUrls:b||null,selectedIdx:c||m},this.children=[]};f.__dashjs_factory_name="BaseURLTreeModel",c.default=l.default.getClassFactory(f),b.exports=c.default},{10:10,155:155,22:22}],99:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){D=null,G=null,E=[],F=[],A.on(i.default.LOADING_COMPLETED,w,C)}function c(a){G=a}function d(a){D=a}function e(){return D}function f(a){var b=function(a,b){return a.action===m.default.ACTION_COMPLETE&&a.action===b.action},c=function(a,b){return!isNaN(a.index)&&a.startTime===b.startTime&&a.adaptationIndex===b.adaptationIndex},d=function(a,b){return isNaN(a.index)&&isNaN(b.index)&&a.quality===b.quality},e=function(e){var f=!1;return e.some(function(e){if(c(a,e)||d(a,e)||b(a,e))return f=!0}),f};return e(E)}function h(a){var b=a.state instanceof Array?a.state:[a.state],c=[];return b.forEach(function(b){var d=u(b);c=c.concat(t(d,a))}),c}function j(a){E=E.filter(function(b){return isNaN(b.startTime)||b.startTime>=a})}function k(){G.abort(),F=[]}function l(a){switch(a.action){case m.default.ACTION_COMPLETE:E.push(a),v(a,q),A.trigger(i.default.STREAM_COMPLETED,{request:a,fragmentModel:this});break;case m.default.ACTION_DOWNLOAD:v(a,p),F.push(a),n(a);break;default:z("Unknown request action.")}}function n(a){A.trigger(i.default.FRAGMENT_LOADING_STARTED,{sender:C,request:a}),G.load(a)}function r(a,b,c){for(var d=a.length-1,e=d;e>=0;e--){var f=a[e],g=f.startTime,h=g+f.duration;if(c=void 0!==c?c:f.duration/2,!isNaN(g)&&!isNaN(h)&&b+c>=g&&b-c<h||isNaN(g)&&isNaN(b))return f}return null}function t(a,b){return b.hasOwnProperty("time")?[r(a,b.time,b.threshold)]:a.filter(function(a){for(var c in b)if("state"!==c&&b.hasOwnProperty(c)&&a[c]!=b[c])return!1;return!0})}function u(a){var b=void 0;switch(a){case p:b=F;break;case q:b=E;break;default:b=[]}return b}function v(a,b){B.addSchedulingInfo(a.mediaType,new Date,a.type,a.startTime,a.availabilityStartTime,a.duration,a.quality,a.range,b),B.addRequestsQueue(a.mediaType,F,E)}function w(a){a.sender===G&&(F.splice(F.indexOf(a.request),1),a.response&&!a.error&&E.push(a.request),v(a.request,a.error?s:q),A.trigger(i.default.FRAGMENT_LOADING_COMPLETED,{request:a.request,response:a.response,error:a.error,sender:this}))}function x(){A.off(i.default.LOADING_COMPLETED,w,this),G&&(G.reset(),G=null),E=[],F=[]}var y=this.context,z=(0,o.default)(y).getInstance().log,A=(0,g.default)(y).getInstance(),B=a.metricsModel,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0;return C={setLoader:c,setScheduleController:d,getScheduleController:e,getRequests:h,isFragmentLoaded:f,removeExecutedRequestsBeforeTime:j,abortRequests:k,executeRequest:l,reset:x},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j),l=a(163),m=d(l),n=a(8),o=d(n),p="loading",q="executed",r="canceled",s="failed";e.__dashjs_factory_name="FragmentModel";var t=k.default.getClassFactory(e);t.FRAGMENT_MODEL_LOADING=p,t.FRAGMENT_MODEL_EXECUTED=q,t.FRAGMENT_MODEL_CANCELED=r,t.FRAGMENT_MODEL_FAILED=s,c.default=t,b.exports=c.default},{10:10,13:13,163:163,8:8,9:9}],100:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){return f}function b(a){f=a,a&&d.trigger(i.default.MANIFEST_LOADED,{data:a})}var c=this.context,d=(0,g.default)(c).getInstance(),e=void 0,f=void 0;return e={getValue:a,setValue:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="ManifestModel",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,9:9}],101:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function f(){function a(){var a,b;ya=[],xa=!1,wa=!0,Ba=!0,Qa=!1,Sa=!1,Ea={enabled:!0,ttl:l},Fa={enabled:!0,ttl:m},za=k,Aa=void 0,Ca=p,Da=q,Ga=NaN,Ha=t,Ia=u,Ja=v,Ka=w,La=n,Ma=o,Pa=D,Ra=E,a={},e(a,i.HTTPRequest.MPD_TYPE,z),e(a,i.HTTPRequest.XLINK_EXPANSION_TYPE,B),e(a,i.HTTPRequest.MEDIA_SEGMENT_TYPE,x),e(a,i.HTTPRequest.INIT_SEGMENT_TYPE,x),e(a,i.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,x),e(a,i.HTTPRequest.INDEX_SEGMENT_TYPE,x),e(a,i.HTTPRequest.OTHER_TYPE,x),Na=a,b={},e(b,i.HTTPRequest.MPD_TYPE,A),e(b,i.HTTPRequest.XLINK_EXPANSION_TYPE,C),e(b,i.HTTPRequest.MEDIA_SEGMENT_TYPE,y),e(b,i.HTTPRequest.INIT_SEGMENT_TYPE,y),e(b,i.HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE,y),e(b,i.HTTPRequest.INDEX_SEGMENT_TYPE,y),e(b,i.HTTPRequest.OTHER_TYPE,y),Oa=b}function b(a){Qa=a}function c(){return Qa}function d(a){La=a}function f(){return La}function g(a){Ma=a}function h(){return Ma}function j(a){Ga=a}function F(){return isNaN(Ga)?Sa?s:r:Ga}function G(a){Ha=a}function H(){return Ha}function I(a){Ia=a}function J(){return Ia}function K(a){Ja=a}function L(){return Ja}function M(a){Ka=a}function N(){return Ka}function O(a){Ca=a}function P(){return Ca}function Q(a,b){Ea.enabled=a,void 0===b||isNaN(b)||"number"!=typeof b||(Ea.ttl=b)}function R(){return Ea}function S(a,b){Fa.enabled=a,void 0===b||isNaN(b)||"number"!=typeof b||(Fa.ttl=b)}function T(){return Fa}function U(a){Da=a}function V(){return Da}function W(a){Na[i.HTTPRequest.MEDIA_SEGMENT_TYPE]=a}function X(a,b){Na[a]=b}function Y(){return Na[i.HTTPRequest.MEDIA_SEGMENT_TYPE]}function Z(a){return Na[a]}function $(a){Oa[i.HTTPRequest.MEDIA_SEGMENT_TYPE]=a}function _(a,b){Oa[a]=b}function aa(){return Oa[i.HTTPRequest.MEDIA_SEGMENT_TYPE]}function ba(a){return Oa[a]}function ca(a){Pa=a}function da(){return Pa}function ea(a){Ba=a}function fa(){return Ba}function ga(a){za=a}function ha(a){Aa=a}function ia(){return za}function ja(){return Aa}function ka(a){wa=a}function la(){return wa}function ma(a){xa=a}function na(){return xa}function oa(a){ya=a}function pa(){return ya}function qa(a){Ra=!!a}function ra(){return Ra}function sa(){return Sa}function ta(a){Sa=a}function ua(){}var va=void 0,wa=void 0,xa=void 0,ya=void 0,za=void 0,Aa=void 0,Ba=void 0,Ca=void 0,Da=void 0,Ea=void 0,Fa=void 0,Ga=void 0,Ha=void 0,Ia=void 0,Ja=void 0,Ka=void 0,La=void 0,Ma=void 0,Na=void 0,Oa=void 0,Pa=void 0,Qa=void 0,Ra=void 0,Sa=void 0;return va={setBufferOccupancyABREnabled:b,getBufferOccupancyABREnabled:c,setBandwidthSafetyFactor:d,getBandwidthSafetyFactor:f,setAbandonLoadTimeout:g,getAbandonLoadTimeout:h,setLastBitrateCachingInfo:Q,getLastBitrateCachingInfo:R,setLastMediaSettingsCachingInfo:S,getLastMediaSettingsCachingInfo:T,setStableBufferTime:j,getStableBufferTime:F,setBufferTimeAtTopQuality:G,getBufferTimeAtTopQuality:H,setBufferTimeAtTopQualityLongForm:I,getBufferTimeAtTopQualityLongForm:J,setLongFormContentDurationThreshold:K,getLongFormContentDurationThreshold:L,setRichBufferThreshold:M,getRichBufferThreshold:N,setBufferToKeep:O,getBufferToKeep:P,setBufferPruningInterval:U,getBufferPruningInterval:V,setFragmentRetryAttempts:W,getFragmentRetryAttempts:Y,setRetryAttemptsForType:X,getRetryAttemptsForType:Z,setFragmentRetryInterval:$,getFragmentRetryInterval:aa,setRetryIntervalForType:_,getRetryIntervalForType:ba,setWallclockTimeUpdateInterval:ca,getWallclockTimeUpdateInterval:da,setScheduleWhilePaused:ea,getScheduleWhilePaused:fa,getUseSuggestedPresentationDelay:na,setUseSuggestedPresentationDelay:ma,setLiveDelayFragmentCount:ga,getLiveDelayFragmentCount:ia,getLiveDelay:ja,setLiveDelay:ha,setUseManifestDateHeaderTimeSource:ka,getUseManifestDateHeaderTimeSource:la,setUTCTimingSources:oa,getUTCTimingSources:pa,setXHRWithCredentials:qa,getXHRWithCredentials:ra,setFastSwitchEnabled:ta,getFastSwitchEnabled:sa,reset:ua},a(),va}Object.defineProperty(c,"__esModule",{value:!0});var g=a(10),h=d(g),i=a(179),j={scheme:"urn:mpeg:dash:utc:http-xsdate:2014",value:"http://time.akamai.com/?iso"},k=4,l=36e4,m=36e4,n=.9,o=1e4,p=30,q=30,r=12,s=20,t=30,u=60,v=600,w=20,x=3,y=1e3,z=3,A=500,B=1,C=500,D=50,E=!1;f.__dashjs_factory_name="MediaPlayerModel";var F=h.default.getSingletonFactory(f);F.DEFAULT_UTC_TIMING_SOURCE=j,c.default=F,b.exports=c.default},{10:10,179:179}],102:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){T={}}function b(a){a&&a.adapter&&(S=a.adapter)}function c(){Q.trigger(C.default.METRICS_CHANGED)}function d(a){Q.trigger(C.default.METRIC_CHANGED,{mediaType:a}),c()}function e(a,b,c){Q.trigger(C.default.METRIC_UPDATED,{mediaType:a,metric:b,value:c}),d(a)}function f(a,b,c){Q.trigger(C.default.METRIC_ADDED,{mediaType:a,metric:b,value:c}),d(a)}function h(a){delete T[a],d(a)}function k(){T={},c()}function m(a){return T.hasOwnProperty(a)?T[a]:null}function o(a){var b;return T.hasOwnProperty(a)?b=T[a]:(b=new g.default,T[a]=b),b}function q(a,b,c,d,e,g){var h=new i.default;return h.tcpid=b,h.dest=c,h.topen=d,h.tclose=e,h.tconnect=g,o(a).TcpList.push(h),f(a,S.metricsList.TCP_CONNECTION,h),h}function s(a,b,c,d){var e=new j.HTTPRequestTrace;return e.s=b,e.d=c,e.b=d,a.trace.push(e),a.interval||(a.interval=0),a.interval+=c,e}function v(a,b,c,d,e,g,h,i,k,l,m,n,p,q){var r=new j.HTTPRequest;return e&&e!==d&&(v(a,null,c,d,null,null,h,i,null,null,null,n,null,null),r.actualurl=e),r.tcpid=b,r.type=c,r.url=d,r.range=h,r.trequest=i,r.tresponse=k,r.responsecode=m,r._tfinish=l,r._stream=a,r._mediaduration=n,r._responseHeaders=p,r._serviceLocation=g,q?q.forEach(function(a){s(r,a.s,a.d,a.b)}):(delete r.interval,delete r.trace),o(a).HttpList.push(r),f(a,S.metricsList.HTTP_REQUEST,r),r}function x(a,b,c,d,e){var g=new l.default;return g.t=b,g.mt=c,g.to=d,e?g.lto=e:delete g.lto,o(a).RepSwitchList.push(g),f(a,S.metricsList.TRACK_SWITCH,g),g}function z(a,b,c){var d=new n.default;return d.t=b,d.level=c,o(a).BufferLevel.push(d),f(a,S.metricsList.BUFFER_LEVEL,d),d}function B(a,b,c){var d=new p.default;return d.target=c,d.state=b,o(a).BufferState.push(d),f(a,S.metricsList.BUFFER_STATE,d),d}function D(a,b,c,d){var e=new r.default;return e.time=b,e.range=d,e.manifestInfo=c,o(a).DVRInfo.push(e),f(a,S.metricsList.DVR_INFO,e),e}function E(a,b){var c=new t.default,d=o(a).DroppedFrames;return c.time=b.creationTime,c.droppedFrames=b.droppedVideoFrames,d.length>0&&d[d.length-1]==c?d[d.length-1]:(d.push(c),f(a,S.metricsList.DROPPED_FRAMES,c),c)}function F(a,b,c,d,e,g,h,i,j){var k=new w.default;return k.mediaType=a,k.t=b,k.type=c,k.startTime=d,k.availabilityStartTime=e,k.duration=g,k.quality=h,k.range=i,k.state=j,o(a).SchedulingInfo.push(k),f(a,S.metricsList.SCHEDULING_INFO,k),k}function H(a,b,c){var d=new A.default;d.loadingRequests=b,d.executedRequests=c,o(a).RequestsQueue=d,f(a,S.metricsList.REQUESTS_QUEUE,d)}function I(a,b,c,d,e,g,h,i,j,k){var l=new u.ManifestUpdate,m=o("stream");return l.mediaType=a,l.type=b,l.requestTime=c,l.fetchTime=d,l.availabilityStartTime=e,l.presentationStartTime=g,l.clientTimeOffset=h,l.currentTime=i,l.buffered=j,l.latency=k,m.ManifestUpdate.push(l),f(a,S.metricsList.MANIFEST_UPDATE,l),l}function J(a,b){if(a){for(var c in b)a[c]=b[c];e(a.mediaType,S.metricsList.MANIFEST_UPDATE,a)}}function K(a,b,c,d,f){if(a){var g=new u.ManifestUpdateStreamInfo;return g.id=b,g.index=c,g.start=d,g.duration=f,a.streamInfo.push(g),e(a.mediaType,S.metricsList.MANIFEST_UPDATE_STREAM_INFO,a),g}return null}function L(a,b,c,d,f,g,h,i){if(a){var j=new u.ManifestUpdateTrackInfo;return j.id=b,j.index=c,j.streamIndex=d,j.mediaType=f,j.startNumber=h,j.fragmentInfoType=i,j.presentationTimeOffset=g,a.trackInfo.push(j),e(a.mediaType,S.metricsList.MANIFEST_UPDATE_TRACK_INFO,a),j}return null}function M(a){var b="stream";return a.trace&&Array.isArray(a.trace)?a.trace.forEach(function(a){a.hasOwnProperty("subreplevel")&&!a.subreplevel&&delete a.subreplevel}):delete a.trace,o(b).PlayList.push(a),f(b,S.metricsList.PLAY_LIST,a),a}function N(a){var b="stream";return o(b).DVBErrors.push(a),f(b,S.metricsList.DVB_ERRORS,a),a}function O(a,b){var c=new G.default;return c._s=b,o(a).BolaState=[c],f(a,"BolaState",c),c}var P=this.context,Q=(0,y.default)(P).getInstance(),R=void 0,S=void 0,T=void 0;return R={metricsChanged:c,metricChanged:d,metricUpdated:e,metricAdded:f,clearCurrentMetricsForType:h,clearAllCurrentMetrics:k,getReadOnlyMetricsFor:m,getMetricsFor:o,addTcpConnection:q,addHttpRequest:v,addRepresentationSwitch:x,addBufferLevel:z,addBufferState:B,addDVRInfo:D,addDroppedFrames:E,addSchedulingInfo:F,addRequestsQueue:H,addManifestUpdate:I,updateManifestUpdateInfo:J,addManifestUpdateStreamInfo:K,addManifestUpdateRepresentationInfo:L,addPlayList:M,addDVBErrors:N,updateBolaState:O,setConfig:b},a(),R}Object.defineProperty(c,"__esModule",{value:!0});var f=a(168),g=d(f),h=a(185),i=d(h),j=a(179),k=a(182),l=d(k),m=a(175),n=d(m),o=a(176),p=d(o),q=a(177),r=d(q),s=a(178),t=d(s),u=a(180),v=a(184),w=d(v),x=a(9),y=d(x),z=a(183),A=d(z),B=a(13),C=d(B),D=a(10),E=d(D),F=a(174),G=d(F);e.__dashjs_factory_name="MetricsModel",c.default=E.default.getSingletonFactory(e),b.exports=c.default},{10:10,13:13,168:168,174:174,175:175,176:176,177:177,178:178,179:179,180:180,182:182,183:183,184:184,185:185,9:9}],103:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){h=new g.default,i=[],j=!1}function b(){return h}function c(){return i}function d(){return j}function e(a){function b(a,b,c,d){var e=d[0].split(/[=]/);return d.push({key:e[0],value:e[1]}),d.shift(),d}function c(a,b,c){return b>0&&(l&&0===i.length?i=c[b].split(/[&]/):m&&(e=c[b].split(/[&]/))),c}if(!a)return null;var d,e=[],f=new RegExp(/[?]/),g=new RegExp(/[#]/),k=new RegExp(/^(https:)?\/\//i),l=f.test(a),m=g.test(a);return j=k.test(a),d=a.split(/[?#]/).map(c),i.length>0&&(i=i.reduce(b,null)),e.length>0&&(e=e.reduce(b,null),e.forEach(function(a){h[a.key]=a.value})),a}var f=void 0,h=void 0,i=void 0,j=void 0;return f={initialize:a,parseURI:e,getURIFragmentData:b,getURIQueryData:c,isManifestHTTPS:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(173),g=d(f),h=a(10),i=d(h);e.__dashjs_factory_name="URIQueryAndFragmentModel",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{10:10,173:173}],104:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){v=[]}function b(a){!s||s.readyState<2||(s.playbackRate=a)}function c(a){if(s.currentTime!=a)try{s.currentTime=a}catch(b){0===s.readyState&&b.code===b.INVALID_STATE_ERR&&setTimeout(function(){s.currentTime=a},400)}}function d(){return s}function e(a){s=a,s.preload="auto"}function f(a){a?s.src=a:(s.removeAttribute("src"),s.load())}function g(){return s.src}function h(){return u}function i(a){u=a}function j(){return t}function k(a){t=a,t.style.position="absolute",t.style.display="flex",t.style.overflow="hidden",t.style.pointerEvents="none",t.style.top=0,t.style.left=0}function l(a,b){p(a,b)}function m(){return v.length>0}function n(a){var c=void 0;null===a||s.seeking||v.indexOf(a)!==-1||(v.push(a),1===v.length&&(c=document.createEvent("Event"),c.initEvent("waiting",!0,!1),w=s.playbackRate,b(0),s.dispatchEvent(c)))}function o(a){var c=v.indexOf(a),d=void 0;null!==a&&(c!==-1&&v.splice(c,1),m()===!1&&0===s.playbackRate&&(d=document.createEvent("Event"),d.initEvent("playing",!0,!1),b(w||1),s.dispatchEvent(d)))}function p(a,b){b?n(a):o(a)}function q(){var a="webkitDroppedFrameCount"in s,b="getVideoPlaybackQuality"in s,c=null;return b?c=s.getVideoPlaybackQuality():a&&(c={droppedVideoFrames:s.webkitDroppedFrameCount,creationTime:new Date}),c}var r=void 0,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0;return r={initialize:a,setCurrentTime:c,setStallState:l,getElement:d,setElement:e,setSource:f,getSource:g,getVideoContainer:h,setVideoContainer:i,getTTMLRenderingDiv:j,setTTMLRenderingDiv:k,getPlaybackQuality:q}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="VideoModel",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],105:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),g=a(1),h=d(g),i=function(){function a(){e(this,a)}return f(a,null,[{key:"findCencContentProtection",value:function(a){for(var b=null,c=0;c<a.length;++c){var d=a[c];"urn:mpeg:dash:mp4protection:2011"===d.schemeIdUri.toLowerCase()&&"cenc"===d.value.toLowerCase()&&(b=d)}return b}},{key:"getPSSHData",value:function(a){var b=8,c=new DataView(a),d=c.getUint8(b);return b+=20,d>0&&(b+=4+16*c.getUint32(b)),b+=4,a.slice(b)}},{key:"getPSSHForKeySystem",value:function(b,c){var d=a.parsePSSHList(c);return d.hasOwnProperty(b.uuid.toLowerCase())?d[b.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(a){return"pssh"in a?h.default.decodeArray(a.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(a){if(null===a)return[];for(var b=new DataView(a),c=!1,d={},e=0;!c;){var f,g,h,i,j,k=e;if(e>=b.buffer.byteLength)break;if(f=b.getUint32(e),g=e+f,e+=4,1886614376===b.getUint32(e))if(e+=4,h=b.getUint8(e),0===h||1===h){e++,e+=3,i="";var l,m;for(l=0;l<4;l++)m=b.getUint8(e+l).toString(16),i+=1===m.length?"0"+m:m;for(e+=4,i+="-",l=0;l<2;l++)m=b.getUint8(e+l).toString(16),i+=1===m.length?"0"+m:m;for(e+=2,i+="-",l=0;l<2;l++)m=b.getUint8(e+l).toString(16),i+=1===m.length?"0"+m:m;for(e+=2,i+="-",l=0;l<2;l++)m=b.getUint8(e+l).toString(16),i+=1===m.length?"0"+m:m;for(e+=2,i+="-",l=0;l<6;l++)m=b.getUint8(e+l).toString(16),i+=1===m.length?"0"+m:m;e+=6,i=i.toLowerCase(),j=b.getUint32(e),e+=4,d[i]=b.buffer.slice(k,g),e=g}else e=g;else e=g}return d}}]),a}();c.default=i,b.exports=c.default},{1:1}],106:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var c=null,d=(0,i.default)(e).getInstance();d.setConfig({log:a.log}),d.initialize();var f=b(a);return!c&&f&&(c=(0,g.default)(e).create({protectionModel:f,protectionKeyController:d,adapter:a.adapter,eventBus:a.eventBus,log:a.log}),a.capabilities.setEncryptedMediaSupported(!0)),c}function b(a){var b=a.log,d=a.eventBus,f=a.videoModel.getElement();return void 0!==f.onencrypted&&void 0!==f.mediaKeys&&void 0!==navigator.requestMediaKeySystemAccess&&"function"==typeof navigator.requestMediaKeySystemAccess?(b("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,m.default)(e).create({log:b,eventBus:d})):c(f,u)?(b("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,o.default)(e).create({log:b,eventBus:d,api:c(f,u)})):c(f,t)?(b("EME detected on this user agent! (ProtectionModel_01b)"),(0,q.default)(e).create({log:b,eventBus:d,api:c(f,t)})):(b("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null)}function c(a,b){for(var c=0;c<b.length;c++){var d=b[c];if("function"==typeof a[d[Object.keys(d)[0]]])return d}return null}var d=void 0,e=this.context;return d={createProtectionSystem:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(108),g=d(f),h=a(109),i=d(h),j=a(107),k=d(j),l=a(114),m=d(l),n=a(115),o=d(n),p=a(113),q=d(p),r=a(10),s=d(r),t=[{generateKeyRequest:"generateKeyRequest",addKey:"addKey",cancelKeyRequest:"cancelKeyRequest",needkey:"needkey",keyerror:"keyerror",keyadded:"keyadded",keymessage:"keymessage"},{generateKeyRequest:"webkitGenerateKeyRequest",addKey:"webkitAddKey",cancelKeyRequest:"webkitCancelKeyRequest",needkey:"webkitneedkey",keyerror:"webkitkeyerror",keyadded:"webkitkeyadded",keymessage:"webkitkeymessage"}],u=[{setMediaKeys:"setMediaKeys",MediaKeys:"MediaKeys",release:"close",needkey:"needkey",error:"keyerror",message:"keymessage",ready:"keyadded",close:"keyclose"},{setMediaKeys:"msSetMediaKeys",MediaKeys:"MSMediaKeys",release:"close",needkey:"msneedkey",error:"mskeyerror",message:"mskeymessage",ready:"mskeyadded",close:"mskeyclose"}];e.__dashjs_factory_name="Protection";var v=s.default.getClassFactory(e);v.events=k.default,c.default=v,b.exports=c.default},{10:10,107:107,108:108,109:109,113:113,114:114,115:115}],107:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(14),i=d(h),j=function(a){function b(){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.INTERNAL_KEY_MESSAGE="internalKeyMessage",this.INTERNAL_KEY_SYSTEM_SELECTED="internalKeySystemSelected",this.KEY_ADDED="public_keyAdded",this.KEY_ERROR="public_keyError",this.KEY_MESSAGE="public_keyMessage",this.KEY_SESSION_CLOSED="public_keySessionClosed",this.KEY_SESSION_CREATED="public_keySessionCreated",this.KEY_SESSION_REMOVED="public_keySessionRemoved",this.KEY_STATUSES_CHANGED="public_keyStatusesChanged",this.KEY_SYSTEM_ACCESS_COMPLETE="keySystemAccessComplete",this.KEY_SYSTEM_SELECTED="public_keySystemSelected",this.LICENSE_REQUEST_COMPLETE="public_licenseRequestComplete",this.NEED_KEY="needkey",this.PROTECTION_CREATED="public_protectioncreated",this.PROTECTION_DESTROYED="public_protectiondestroyed",this.SERVER_CERTIFICATE_UPDATED="serverCertificateUpdated",this.TEARDOWN_COMPLETE="protectionTeardownComplete",this.VIDEO_ELEMENT_SELECTED="videoElementSelected"}return f(b,a),b}(i.default),k=new j;c.default=k,b.exports=c.default},{14:14}],108:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){D=x.getKeySystems(),E=[],I=!1,J="temporary",K="",i.default.extend(q.default.events)}function c(a,b,c){if(!I){var d;b||c||(d=z.getStreamsInfo(a)[0]),F=b||(d?z.getMediaInfoForType(a,d,"audio"):null),G=c||(d?z.getMediaInfoForType(a,d,"video"):null);var e=G?G:F,f=x.getSupportedKeySystemsFromContentProtection(e.contentProtection);f&&f.length>0&&t(f,!0),I=!0}}function d(a){var b=g.default.getPSSHForKeySystem(L,a);if(b){for(var c=y.getAllInitData(),d=0;d<c.length;d++)if(x.initDataEquals(b,c[d]))return void B("DRM: Ignoring initData because we have already seen it!");try{y.createKeySession(b,J)}catch(e){A.trigger(i.default.KEY_SESSION_CREATED,{data:null,error:"Error creating key session! "+e.message})}}else A.trigger(i.default.KEY_SESSION_CREATED,{data:null,error:"Selected key system is "+L.systemString+". needkey/encrypted event contains no initData corresponding to that key system!"})}function e(a){y.loadKeySession(a)}function f(a){y.removeKeySession(a)}function h(a){y.closeKeySession(a)}function j(a){y.setServerCertificate(a)}function l(a){a?(y.setMediaElement(a),A.on(i.default.NEED_KEY,w,this),A.on(i.default.INTERNAL_KEY_MESSAGE,v,this)):null===a&&(y.setMediaElement(a),A.off(i.default.NEED_KEY,w,this),A.off(i.default.INTERNAL_KEY_MESSAGE,v,this))}function n(a){J=a}function o(a){K=a}function p(a){H=a}function r(){l(null),L=void 0,y&&(y.reset(),y=null)}function s(a){var b=null,c=a.systemString;return H&&(b=c in H?H[c]:null),b}function t(a,b){var c=this,e=[],f=[];G&&f.push(new k.default(G.codec,K)),F&&e.push(new k.default(F.codec,K));var g,h=new m.default(e,f,"optional","temporary"===J?"optional":"required",[J]),j=[];if(L){for(g=0;g<a.length;g++)if(L===a[g].ks){var l=function(){j.push({ks:a[g].ks,configs:[h]});var e=function e(f){A.off(i.default.KEY_SYSTEM_ACCESS_COMPLETE,e,c),f.error?b||A.trigger(i.default.KEY_SYSTEM_SELECTED,{error:"DRM: KeySystem Access Denied! -- "+f.error}):(B("DRM: KeySystem Access Granted"),A.trigger(i.default.KEY_SYSTEM_SELECTED,{data:f.data}),d(a[g].initData))};return A.on(i.default.KEY_SYSTEM_ACCESS_COMPLETE,e,c),y.requestKeySystemAccess(j),"break"}();if("break"===l)break}}else if(void 0===L){L=null,E.push(a);for(var n=0;n<a.length;n++)j.push({ks:a[n].ks,configs:[h]});var o,p=function a(d){A.off(i.default.KEY_SYSTEM_ACCESS_COMPLETE,a,c),d.error?(L=void 0,A.off(i.default.INTERNAL_KEY_SYSTEM_SELECTED,q,c),b||A.trigger(i.default.KEY_SYSTEM_SELECTED,{data:null,error:"DRM: KeySystem Access Denied! -- "+d.error})):(o=d.data,B("DRM: KeySystem Access Granted ("+o.keySystem.systemString+")! Selecting key system..."),y.selectKeySystem(o))},q=function a(e){if(A.off(i.default.INTERNAL_KEY_SYSTEM_SELECTED,a,c),A.off(i.default.KEY_SYSTEM_ACCESS_COMPLETE,p,c),e.error)L=void 0,b||A.trigger(i.default.KEY_SYSTEM_SELECTED,{data:null,error:"DRM: Error selecting key system! -- "+e.error});else{L=y.getKeySystem(),A.trigger(i.default.KEY_SYSTEM_SELECTED,{data:o});for(var f=0;f<E.length;f++)for(g=0;g<E[f].length;g++)if(L===E[f][g].ks){d(E[f][g].initData);break}}};A.on(i.default.INTERNAL_KEY_SYSTEM_SELECTED,q,c),A.on(i.default.KEY_SYSTEM_ACCESS_COMPLETE,p,c),y.requestKeySystemAccess(j)}else E.push(a)}function u(a,b){A.trigger(i.default.LICENSE_REQUEST_COMPLETE,{data:a,error:b})}function v(a){if(B("DRM: onKeyMessage"),a.error)return void B(a.error);var b=a.data;A.trigger(i.default.KEY_MESSAGE,{data:b});var c=b.messageType?b.messageType:"license-request",d=b.message,e=b.sessionToken,f=s(L),h=L.systemString,j=x.getLicenseServer(L,f,c),k={sessionToken:e,messageType:c};if(!j)return B("DRM: License server request not required for this message (type = "+a.data.messageType+"). Session ID = "+e.getSessionID()),void u(k);if(x.isClearKey(L)){var l=x.processClearKeyLicenseRequest(f,d);if(l)return B("DRM: ClearKey license request handled by application!"),u(k),void y.updateKeySession(e,l)}var m=new XMLHttpRequest,n=null;if(f)if(f.serverURL){var o=f.serverURL;"string"==typeof o&&""!==o?n=o:"object"==typeof o&&o.hasOwnProperty(c)&&(n=o[c])}else f.laURL&&""!==f.laURL&&(n=f.laURL);else n=L.getLicenseServerURLFromInitData(g.default.getPSSHData(e.initData)),n||(n=a.data.laURL);if(n=j.getServerURLFromMessage(n,d,c),!n)return void u(k,"DRM: No license server URL specified!");m.open(j.getHTTPMethod(c),n,!0),m.responseType=j.getResponseType(h,c),m.onload=function(){200==this.status?(u(k),y.updateKeySession(e,j.getLicenseMessage(this.response,h,c))):u(k,"DRM: "+h+' update, XHR status is "'+this.statusText+'" ('+this.status+"), expected to be 200. readyState is "+this.readyState+". Response is "+(this.response?j.getErrorResponse(this.response,h,c):"NONE"))},m.onabort=function(){u(k,"DRM: "+h+' update, XHR aborted. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState)},m.onerror=function(){u(k,"DRM: "+h+' update, XHR error. status is "'+this.statusText+'" ('+this.status+"), readyState is "+this.readyState)};var p=function(a){var b;if(a)for(b in a)"authorization"===b.toLowerCase()&&(m.withCredentials=!0),m.setRequestHeader(b,a[b])};f&&p(f.httpRequestHeaders),p(L.getRequestHeadersFromMessage(d)),f&&f.withCredentials&&(m.withCredentials=!0),m.send(L.getLicenseRequestFromMessage(d))}function w(a){if(B("DRM: onNeedKey"),"cenc"!==a.key.initDataType)return void B("DRM: Only 'cenc' initData is supported! Ignoring initData of type: "+a.key.initDataType);var b=a.key.initData;ArrayBuffer.isView(b)&&(b=b.buffer),B("DRM: initData:",String.fromCharCode.apply(null,new Uint8Array(b)));var c=x.getSupportedKeySystems(b,H);return 0===c.length?void B("DRM: Received needkey event with initData, but we don't support any of the key systems!"):void t(c,!1)}var x=a.protectionKeyController,y=a.protectionModel,z=a.adapter,A=a.eventBus,B=a.log,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0;return C={initialize:c,createKeySession:d,loadKeySession:e,removeKeySession:f,closeKeySession:h,setServerCertificate:j,setMediaElement:l,setSessionType:n,setRobustnessLevel:o,setProtectionData:p,reset:r},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(13),i=d(h),j=a(126),k=d(j),l=a(125),m=d(l),n=a(10),o=d(n),p=a(106),q=d(p);e.__dashjs_factory_name="ProtectionController",c.default=o.default.getClassFactory(e),b.exports=c.default},{10:10,105:105,106:106,125:125,126:126,13:13}],109:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.log&&(t=a.log)}function b(){v=[];var a;a=(0,m.default)(p).getInstance(),v.push(a),a=(0,k.default)(p).getInstance(),v.push(a),a=(0,i.default)(p).getInstance(),v.push(a),w=a}function c(){return v}function d(a){for(var b=0;b<v.length;b++)if(v[b].systemString===a)return v[b];return null}function e(a){return a===w}function f(a,b){if(a.byteLength===b.byteLength){for(var c=new Uint8Array(a),d=new Uint8Array(b),e=0;e<c.length;e++)if(c[e]!==d[e])return!1;return!0}return!1}function h(a){ +var b,c,d,e,f=[];if(a)for(d=0;d<v.length;++d)for(c=v[d],e=0;e<a.length;++e)if(b=a[e],b.schemeIdUri.toLowerCase()===c.schemeIdURI){var g=c.getInitData(b);g&&f.push({ks:v[d],initData:g})}return f}function j(a,b){var c,d=[],e=g.default.parsePSSHList(a);for(c=0;c<v.length;++c){var f=v[c].systemString,h=!b||f in b;v[c].uuid in e&&h&&d.push({ks:v[c],initData:e[v[c].uuid]})}return d}function l(a,b,c){if("license-release"===c||"individualization-request"===c)return null;var d=null;return b&&b.hasOwnProperty("drmtoday")?d=(0,o.default)(p).getInstance():"com.widevine.alpha"===a.systemString?d=(0,s.default)(p).getInstance():"com.microsoft.playready"===a.systemString?d=(0,q.default)(p).getInstance():"org.w3.clearkey"===a.systemString&&(d=(0,u.default)(p).getInstance()),d}function n(a,b){try{return w.getClearKeysFromProtectionData(a,b)}catch(c){return t("Failed to retrieve clearkeys from ProtectionData"),null}}var p=this.context,r=void 0,t=void 0,v=void 0,w=void 0;return r={initialize:b,isClearKey:e,initDataEquals:f,getKeySystems:c,getKeySystemBySystemString:d,getSupportedKeySystemsFromContentProtection:h,getSupportedKeySystems:j,getLicenseServer:l,processClearKeyLicenseRequest:n,setConfig:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(110),i=d(h),j=a(112),k=d(j),l=a(111),m=d(l),n=a(117),o=d(n),p=a(118),q=d(p),r=a(119),s=d(r),t=a(116),u=d(t),v=a(10),w=d(v);e.__dashjs_factory_name="ProtectionKeyController",c.default=w.default.getSingletonFactory(e),b.exports=c.default},{10:10,105:105,110:110,111:111,112:112,116:116,117:117,118:118,119:119}],110:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=null;if(a){for(var d=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b))),e=[],f=0;f<d.kids.length;f++){var h=d.kids[f],j=a.clearkeys.hasOwnProperty(h)?a.clearkeys[h]:null;if(!j)throw new Error("DRM: ClearKey keyID ("+h+") is not known!");e.push(new g.default(h,j))}c=new i.default(e)}return c}function b(a){return k.default.parseInitDataFromContentProtection(a)}function c(){return null}function d(a){return new Uint8Array(a)}function e(){return null}var f=void 0;return f={uuid:n,schemeIdURI:p,systemString:o,getInitData:b,getRequestHeadersFromMessage:c,getLicenseRequestFromMessage:d,getLicenseServerURLFromInitData:e,getClearKeysFromProtectionData:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(123),g=d(f),h=a(120),i=d(h),j=a(105),k=d(j),l=a(10),m=d(l),n="1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",o="org.w3.clearkey",p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemClearKey",c.default=m.default.getSingletonFactory(e),b.exports=c.default},{10:10,105:105,120:120,123:123}],111:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var b,c,d={},e=new DOMParser,f="utf16"===h?new Uint16Array(a):new Uint8Array(a);b=String.fromCharCode.apply(null,f),c=e.parseFromString(b,"application/xml");for(var g=c.getElementsByTagName("name"),i=c.getElementsByTagName("value"),j=0;j<g.length;j++)d[g[j].childNodes[0].nodeValue]=i[j].childNodes[0].nodeValue;return d.hasOwnProperty("Content")&&(d["Content-Type"]=d.Content,delete d.Content),d}function b(a){var b,c,d=null,e=new DOMParser,f="utf16"===h?new Uint16Array(a):new Uint8Array(a);if(b=String.fromCharCode.apply(null,f),c=e.parseFromString(b,"application/xml"),c.getElementsByTagName("Challenge")[0]){var g=c.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;g&&(d=m.default.decode(g))}return d}function c(a){if(a)for(var b=new DataView(a),c=b.getUint16(4,!0),d=6,e=new DOMParser,f=0;f<c;f++){var g=b.getUint16(d,!0);d+=2;var h=b.getUint16(d,!0);if(d+=2,1===g){var i=a.slice(d,d+h),j=String.fromCharCode.apply(null,new Uint16Array(i)),k=e.parseFromString(j,"application/xml");if(k.getElementsByTagName("LA_URL")[0]){var l=k.getElementsByTagName("LA_URL")[0].childNodes[0].nodeValue;if(l)return l}if(k.getElementsByTagName("LUI_URL")[0]){var m=k.getElementsByTagName("LUI_URL")[0].childNodes[0].nodeValue;if(m)return m}}else d+=h}return null}function d(a){var b,c,d,e,f,h=new Uint8Array([112,115,115,104,0,0,0,0]),i=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),j=0,k=null;if("pssh"in a)return g.default.parseInitDataFromContentProtection(a);if("pro"in a)k=m.default.decodeArray(a.pro.__text);else{if(!("prheader"in a))return null;k=m.default.decodeArray(a.prheader.__text)}return b=k.length,c=4+h.length+i.length+4+b,d=new ArrayBuffer(c),e=new Uint8Array(d),f=new DataView(d),f.setUint32(j,c),j+=4,e.set(h,j),j+=h.length,e.set(i,j),j+=i.length,f.setUint32(j,b),j+=4,e.set(k,j),j+=b,e.buffer}function e(a){if("utf8"!==a&&"utf16"!==a)throw new i.default("Illegal PlayReady message format! -- "+a);h=a}var f=void 0,h="utf16";return f={uuid:n,schemeIdURI:p,systemString:o,getInitData:d,getRequestHeadersFromMessage:a,getLicenseRequestFromMessage:b,getLicenseServerURLFromInitData:c,setPlayReadyMessageFormat:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(162),i=d(h),j=a(10),k=d(j),l=a(1),m=d(l),n="9a04f079-9840-4286-ab92-e65be0885f95",o="com.microsoft.playready",p="urn:uuid:"+n;e.__dashjs_factory_name="KeySystemPlayReady",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{1:1,10:10,105:105,162:162}],112:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return g.default.parseInitDataFromContentProtection(a)}function b(){return null}function c(a){return new Uint8Array(a)}function d(){return null}var e=void 0;return e={uuid:j,schemeIdURI:l,systemString:k,getInitData:a,getRequestHeadersFromMessage:b,getLicenseRequestFromMessage:c,getLicenseServerURLFromInitData:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(105),g=d(f),h=a(10),i=d(h),j="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",k="com.widevine.alpha",l="urn:uuid:"+j;e.__dashjs_factory_name="KeySystemWidevine",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{10:10,105:105}],113:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){E=null,F=null,I=[],J=[],G=(0,g.default)(z).getInstance(),H=(0,u.default)(z).getInstance(),L=w()}function c(){E&&y();for(var a=0;a<J.length;a++)p(J[a]);A.trigger(s.default.TEARDOWN_COMPLETE)}function d(){return F}function e(){for(var a=[],b=0;b<I.length;b++)a.push(I[b].initData);for(var b=0;b<J.length;b++)a.push(J[b].initData);return a}function f(a){var b=E;b||(b=document.createElement("video"));for(var c=!1,d=0;d<a.length;d++)for(var e=a[d].ks.systemString,f=a[d].configs,g=null,h=null,i=0;i<f.length;i++){var j=f[i].videoCapabilities;if(j&&0!==j.length){h=[];for(var k=0;k<j.length;k++)""!==b.canPlayType(j[k].contentType,e)&&h.push(j[k])}if(!(!g&&!h||g&&0===g.length||h&&0===h.length)){c=!0;var l=new o.default(g,h),m=G.getKeySystemBySystemString(e);A.trigger(s.default.KEY_SYSTEM_ACCESS_COMPLETE,{data:new q.default(m,l)});break}}c||A.trigger(s.default.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){F=a.keySystem,A.trigger(s.default.INTERNAL_KEY_SYSTEM_SELECTED)}function j(a){E!==a&&(E&&y(),E=a,E&&(E.addEventListener(C.keyerror,L),E.addEventListener(C.needkey,L),E.addEventListener(C.keymessage,L),E.addEventListener(C.keyadded,L),A.trigger(s.default.VIDEO_ELEMENT_SELECTED)))}function l(a){if(!F)throw new Error("Can not create sessions until you have selected a key system");if(K||0===J.length){var b={sessionID:null,initData:a,getSessionID:function(){return this.sessionID},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"}};return I.push(b),E[C.generateKeyRequest](F.systemString,new Uint8Array(a)),b}throw new Error("Multiple sessions not allowed!")}function n(a,b){var c=a.sessionID;if(G.isClearKey(F))for(var d=0;d<b.keyPairs.length;d++)E[C.addKey](F.systemString,b.keyPairs[d].key,b.keyPairs[d].keyID,c);else E[C.addKey](F.systemString,new Uint8Array(b),a.initData,c)}function p(a){E[C.cancelKeyRequest](F.systemString,a.sessionID)}function r(){}function t(){}function v(){}function w(){return{handleEvent:function(a){var b=null;switch(a.type){case C.needkey:var c=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;A.trigger(s.default.NEED_KEY,{key:new i.default(c,"cenc")});break;case C.keyerror:if(b=x(J,a.sessionId),b||(b=x(I,a.sessionId)),b){var d="";switch(a.errorCode.code){case 1:d+="MEDIA_KEYERR_UNKNOWN - An unspecified error occurred. This value is used for errors that don't match any of the other codes.";break;case 2:d+="MEDIA_KEYERR_CLIENT - The Key System could not be installed or updated.";break;case 3:d+="MEDIA_KEYERR_SERVICE - The message passed into update indicated an error from the license service.";break;case 4:d+="MEDIA_KEYERR_OUTPUT - There is no available output device with the required characteristics for the content protection system.";break;case 5:d+="MEDIA_KEYERR_HARDWARECHANGE - A hardware configuration change caused a content protection error.";break;case 6:d+="MEDIA_KEYERR_DOMAIN - An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain."}d+=" System Code = "+a.systemCode,A.trigger(s.default.KEY_ERROR,{data:new k.default(b,d)})}else B("No session token found for key error");break;case C.keyadded:b=x(J,a.sessionId),b||(b=x(I,a.sessionId)),b?(B("DRM: Key added."),A.trigger(s.default.KEY_ADDED,{data:b})):B("No session token found for key added");break;case C.keymessage:if(K=null!==a.sessionId&&void 0!==a.sessionId,K?(b=x(J,a.sessionId),!b&&I.length>0&&(b=I.shift(),J.push(b),b.sessionID=a.sessionId)):I.length>0&&(b=I.shift(),J.push(b),0!==I.length&&H.mediaKeyMessageError("Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!")),b){var e=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;b.keyMessage=e,A.trigger(s.default.INTERNAL_KEY_MESSAGE,{data:new m.default(b,e,a.defaultURL)})}else B("No session token found for key message")}}}}function x(a,b){if(b&&a){for(var c=a.length,d=0;d<c;d++)if(a[d].sessionID==b)return a[d];return null}return null}function y(){E.removeEventListener(C.keyerror,L),E.removeEventListener(C.needkey,L),E.removeEventListener(C.keymessage,L),E.removeEventListener(C.keyadded,L)}var z=this.context,A=a.eventBus,B=a.log,C=a.api,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0,K=void 0,L=void 0;return D={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:t,removeKeySession:v,reset:c},b(),D}Object.defineProperty(c,"__esModule",{value:!0});var f=a(109),g=d(f),h=a(127),i=d(h),j=a(121),k=d(j),l=a(122),m=d(l),n=a(125),o=d(n),p=a(124),q=d(p),r=a(13),s=d(r),t=a(151),u=d(t),v=a(10),w=d(v);e.__dashjs_factory_name="ProtectionModel_01b",c.default=w.default.getClassFactory(e),b.exports=c.default},{10:10,109:109,121:121,122:122,124:124,125:125,127:127,13:13,151:151}],114:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){A=null,B=null,C=null,D=[],F=(0,g.default)(G).getInstance(),E=w()}function c(){var a,b=D.length;if(0!==b)for(var c=function(a){x(a),0===D.length&&(B?(B.removeEventListener("encrypted",E),B.setMediaKeys(null).then(function(){H.trigger(q.default.TEARDOWN_COMPLETE)})):H.trigger(q.default.TEARDOWN_COMPLETE))},d=0;d<b;d++)a=D[d],function(b){a.session.closed.then(function(){c(b)}),v(a).catch(function(){c(b)})}(a);else H.trigger(q.default.TEARDOWN_COMPLETE)}function d(){return A}function e(){for(var a=[],b=0;b<D.length;b++)a.push(D[b].initData);return a}function f(a){u(a,0)}function h(a){a.mksa.createMediaKeys().then(function(b){A=a.keySystem,C=b,B&&B.setMediaKeys(C),H.trigger(q.default.INTERNAL_KEY_SYSTEM_SELECTED)}).catch(function(){H.trigger(q.default.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+a.keySystem.systemString+")! Could not create MediaKeys -- TODO"})})}function j(a){B!==a&&(B&&(B.removeEventListener("encrypted",E),B.setMediaKeys(null)),B=a,B&&(B.addEventListener("encrypted",E),C&&B.setMediaKeys(C)))}function l(a){if(!A||!C)throw new Error("Can not set server certificate until you have selected a key system");C.setServerCertificate(a).then(function(){I("DRM: License server certificate successfully updated."),H.trigger(q.default.SERVER_CERTIFICATE_UPDATED)}).catch(function(a){H.trigger(q.default.SERVER_CERTIFICATE_UPDATED,{error:"Error updating server certificate -- "+a.name})})}function n(a,b){if(!A||!C)throw new Error("Can not create sessions until you have selected a key system");var c=C.createSession(b),d=y(c,a,b);c.generateRequest("cenc",a).then(function(){I("DRM: Session created. SessionID = "+d.getSessionID()),H.trigger(q.default.KEY_SESSION_CREATED,{data:d})}).catch(function(a){x(d),H.trigger(q.default.KEY_SESSION_CREATED,{data:null,error:"Error generating key request -- "+a.name})})}function p(a,b){var c=a.session;F.isClearKey(A)&&(b=b.toJWK()),c.update(b).catch(function(b){H.trigger(q.default.KEY_ERROR,{data:new k.default(a,"Error sending update() message! "+b.name)})})}function r(a){if(!A||!C)throw new Error("Can not load sessions until you have selected a key system");var b=C.createSession();b.load(a).then(function(c){if(c){var d=y(b);I("DRM: Session created. SessionID = "+d.getSessionID()),H.trigger(q.default.KEY_SESSION_CREATED,{data:d})}else H.trigger(q.default.KEY_SESSION_CREATED,{data:null,error:"Could not load session! Invalid Session ID ("+a+")"})}).catch(function(b){H.trigger(q.default.KEY_SESSION_CREATED,{data:null,error:"Could not load session ("+a+")! "+b.name})})}function s(a){var b=a.session;b.remove().then(function(){I("DRM: Session removed. SessionID = "+a.getSessionID()),H.trigger(q.default.KEY_SESSION_REMOVED,{data:a.getSessionID()})},function(b){H.trigger(q.default.KEY_SESSION_REMOVED,{data:null,error:"Error removing session ("+a.getSessionID()+"). "+b.name})})}function t(a){v(a).catch(function(b){x(a),H.trigger(q.default.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+a.getSessionID()+") "+b.name})})}function u(a,b){!function(b){var c=a[b].ks,d=a[b].configs;navigator.requestMediaKeySystemAccess(c.systemString,d).then(function(a){var b="function"==typeof a.getConfiguration?a.getConfiguration():null,d=new o.default(c,b);d.mksa=a,H.trigger(q.default.KEY_SYSTEM_ACCESS_COMPLETE,{data:d})}).catch(function(){++b<a.length?u(a,b):H.trigger(q.default.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied!"})})}(b)}function v(a){var b=a.session;return b.removeEventListener("keystatuseschange",a),b.removeEventListener("message",a),b.close()}function w(){return{handleEvent:function(a){switch(a.type){case"encrypted":if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;H.trigger(q.default.NEED_KEY,{key:new i.default(b,a.initDataType)})}}}}}function x(a){for(var b=0;b<D.length;b++)if(D[b]===a){D.splice(b,1);break}}function y(a,b,c){var d={session:a,initData:b,handleEvent:function(a){switch(a.type){case"keystatuseschange":H.trigger(q.default.KEY_STATUSES_CHANGED,{data:this});break;case"message":var b=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;H.trigger(q.default.INTERNAL_KEY_MESSAGE,{data:new m.default(this,b,(void 0),a.messageType)})}},getSessionID:function(){return a.sessionId},getExpirationTime:function(){return a.expiration},getKeyStatuses:function(){return a.keyStatuses},getSessionType:function(){return c}};return a.addEventListener("keystatuseschange",d),a.addEventListener("message",d),a.closed.then(function(){x(d),I("DRM: Session closed. SessionID = "+d.getSessionID()),H.trigger(q.default.KEY_SESSION_CLOSED,{data:d.getSessionID()})}),D.push(d),d}var z,A,B,C,D,E,F,G=this.context,H=a.eventBus,I=a.log;return z={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,setServerCertificate:l,createKeySession:n,updateKeySession:p,loadKeySession:r,removeKeySession:s,closeKeySession:t,reset:c},b(),z}Object.defineProperty(c,"__esModule",{value:!0});var f=a(109),g=d(f),h=a(127),i=d(h),j=a(121),k=d(j),l=a(122),m=d(l),n=a(124),o=d(n),p=a(13),q=d(p),r=a(10),s=d(r);e.__dashjs_factory_name="ProtectionModel_21Jan2015",c.default=s.default.getClassFactory(e),b.exports=c.default},{10:10,109:109,121:121,122:122,124:124,127:127,13:13}],115:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){D=null,E=null,F=null,G=null,H=[],J=(0,g.default)(y).getInstance(),I=v()}function c(){try{for(var a=0;a<H.length;a++)p(H[a]);D&&D.removeEventListener(B.needkey,I),z.trigger(s.default.TEARDOWN_COMPLETE)}catch(b){z.trigger(s.default.TEARDOWN_COMPLETE,{error:"Error tearing down key sessions and MediaKeys! -- "+b.message})}}function d(){return E}function e(){for(var a=[],b=0;b<H.length;b++)a.push(H[b].initData);return a}function f(a){for(var b=!1,c=0;c<a.length;c++)for(var d=a[c].ks.systemString,e=a[c].configs,f=null,g=null,h=0;h<e.length;h++){var i=e[h].audioCapabilities,j=e[h].videoCapabilities;if(i&&0!==i.length){f=[];for(var k=0;k<i.length;k++)window[B.MediaKeys].isTypeSupported(d,i[k].contentType)&&f.push(i[k])}if(j&&0!==j.length){g=[];for(var l=0;l<j.length;l++)window[B.MediaKeys].isTypeSupported(d,j[l].contentType)&&g.push(j[l])}if(!(!f&&!g||f&&0===f.length||g&&0===g.length)){b=!0;var m=new o.default(f,g),n=J.getKeySystemBySystemString(d);z.trigger(s.default.KEY_SYSTEM_ACCESS_COMPLETE,{data:new q.default(n,m)});break}}b||z.trigger(s.default.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})}function h(a){try{F=a.mediaKeys=new window[B.MediaKeys](a.keySystem.systemString),E=a.keySystem,G=a,D&&w(),z.trigger(s.default.INTERNAL_KEY_SYSTEM_SELECTED)}catch(b){z.trigger(s.default.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+E.systemString+")! Could not create MediaKeys -- TODO"})}}function j(a){D!==a&&(D&&D.removeEventListener(B.needkey,I),D=a,D&&(D.addEventListener(B.needkey,I),F&&w()))}function l(a){if(!E||!F||!G)throw new Error("Can not create sessions until you have selected a key system");var b=null;if(null!==G.ksConfiguration.videoCapabilities&&G.ksConfiguration.videoCapabilities.length>0&&(b=G.ksConfiguration.videoCapabilities[0]),null===b&&null!==G.ksConfiguration.audioCapabilities&&G.ksConfiguration.audioCapabilities.length>0&&(b=G.ksConfiguration.audioCapabilities[0]),null===b)throw new Error("Can not create sessions for unknown content types.");var c=b.contentType,d=F.createSession(c,new Uint8Array(a)),e=x(d,a);d.addEventListener(B.error,e),d.addEventListener(B.message,e),d.addEventListener(B.ready,e),d.addEventListener(B.close,e),H.push(e),A("DRM: Session created. SessionID = "+e.getSessionID()),z.trigger(s.default.KEY_SESSION_CREATED,{data:e})}function n(a,b){var c=a.session;J.isClearKey(E)?c.update(new Uint8Array(b.toJWK())):c.update(new Uint8Array(b))}function p(a){var b=a.session;b.removeEventListener(B.error,a),b.removeEventListener(B.message,a),b.removeEventListener(B.ready,a),b.removeEventListener(B.close,a);for(var c=0;c<H.length;c++)if(H[c]===a){H.splice(c,1);break}b[B.release]()}function r(){}function t(){}function u(){}function v(){return{handleEvent:function(a){switch(a.type){case B.needkey:if(a.initData){var b=ArrayBuffer.isView(a.initData)?a.initData.buffer:a.initData;z.trigger(s.default.NEED_KEY,{key:new i.default(b,"cenc")})}}}}}function w(){var a=null,b=function(){D.removeEventListener("loadedmetadata",a),D[B.setMediaKeys](F),z.trigger(s.default.VIDEO_ELEMENT_SELECTED)};D.readyState>=1?b():(a=b.bind(this),D.addEventListener("loadedmetadata",a))}function x(a,b){return{session:a,initData:b,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(a){switch(a.type){case B.error:var b="KeyError";z.trigger(s.default.KEY_ERROR,{data:new k.default(this,b)});break;case B.message:var c=ArrayBuffer.isView(a.message)?a.message.buffer:a.message;z.trigger(s.default.INTERNAL_KEY_MESSAGE,{data:new m.default(this,c,a.destinationURL)});break;case B.ready:A("DRM: Key added."),z.trigger(s.default.KEY_ADDED);break;case B.close:A("DRM: Session closed. SessionID = "+this.getSessionID()),z.trigger(s.default.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}var y=this.context,z=a.eventBus,A=a.log,B=a.api,C=void 0,D=void 0,E=void 0,F=void 0,G=void 0,H=void 0,I=void 0,J=void 0;return C={getAllInitData:e,requestKeySystemAccess:f,getKeySystem:d,selectKeySystem:h,setMediaElement:j,createKeySession:l,updateKeySession:n,closeKeySession:p,setServerCertificate:r,loadKeySession:t,removeKeySession:u,reset:c},b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(109),g=d(f),h=a(127),i=d(h),j=a(121),k=d(j),l=a(122),m=d(l),n=a(125),o=d(n),p=a(124),q=d(p),r=a(13),s=d(r),t=a(10),u=d(t);e.__dashjs_factory_name="ProtectionModel_3Feb2014",c.default=u.default.getClassFactory(e),b.exports=c.default},{10:10,109:109,121:121,122:122,124:124,125:125,127:127,13:13}],116:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(b)));a+="/?";for(var d=0;d<c.kids.length;d++)a+=c.kids[d]+"&";return a=a.substring(0,a.length-1)}function b(){return"GET"}function c(){return"json"}function d(a){if(!a.hasOwnProperty("keys"))return null;for(var b=[],c=0;c<a.keys.length;c++){var d=a.keys[c],e=d.kid.replace(/=/g,""),f=d.k.replace(/=/g,"");b.push(new g.default(e,f))}return new i.default(b)}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}var f=void 0;return f={getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(123),g=d(f),h=a(120),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="ClearKey",c.default=k.default.getSingletonFactory(e),b.exports=c.default},{10:10,120:120,123:123}],117:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(){return"POST"}function c(a){return f[a].responseType}function d(a,b){return f[b].getLicenseMessage(a)}function e(a,b){return f[b].getErrorResponse(a)}var f={"com.widevine.alpha":{responseType:"json",getLicenseMessage:function(a){return i.default.decodeArray(a.license)},getErrorResponse:function(a){return a}},"com.microsoft.playready":{responseType:"arraybuffer",getLicenseMessage:function(a){return a},getErrorResponse:function(a){return String.fromCharCode.apply(null,new Uint8Array(a))}}},g=void 0;return g={getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(1),i=d(h);e.__dashjs_factory_name="DRMToday",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{1:1,10:10}],118:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(){return"POST"}function c(){return"arraybuffer"}function d(a){return a}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}var f=void 0;return f={getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="PlayReady",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],119:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(){return"POST"}function c(){return"arraybuffer"}function d(a){return a}function e(a){return String.fromCharCode.apply(null,new Uint8Array(a))}var f=void 0;return f={getServerURLFromMessage:a,getHTTPMethod:b,getResponseType:c,getLicenseMessage:d,getErrorResponse:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="Widevine",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],120:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),f=function(){function a(b,c){if(d(this,a),c&&"persistent"!==c&&"temporary"!==c)throw new Error("Invalid ClearKey key set type! Must be one of 'persistent' or 'temporary'");this.keyPairs=b,this.type=c}return e(a,[{key:"toJWK",value:function(){var a,b=this.keyPairs.length,c={keys:[]};for(a=0;a<b;a++){var d={kty:"oct",alg:"A128KW",kid:this.keyPairs[a].keyID,k:this.keyPairs[a].key};c.keys.push(d)}this.type&&(c.type=this.type);var e=JSON.stringify(c),f=e.length,g=new ArrayBuffer(f),h=new Uint8Array(g);for(a=0;a<f;a++)h[a]=e.charCodeAt(a);return g}}]),a}();c.default=f,b.exports=c.default},{}],121:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.sessionToken=b,this.error=c};c.default=e,b.exports=c.default},{}],122:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e,f){d(this,a),this.sessionToken=b,this.message=c,this.defaultURL=e,this.messageType=f?f:"license-request"};c.default=e,b.exports=c.default},{}],123:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.keyID=b,this.key=c};c.default=e,b.exports=c.default},{}],124:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.keySystem=b,this.ksConfiguration=c};c.default=e,b.exports=c.default},{}],125:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e,f,g){d(this,a),this.initDataTypes=["cenc"],this.audioCapabilities=b,this.videoCapabilities=c,this.distinctiveIdentifier=e,this.persistentState=f,this.sessionTypes=g};c.default=e,b.exports=c.default},{}],126:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.contentType=b,this.robustness=c};c.default=e,b.exports=c.default},{}],127:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c){d(this,a),this.initData=b,this.initDataType=c};c.default=e,b.exports=c.default},{}],128:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return i.mediaInfo.streamInfo}function c(){return i.mediaInfo}function d(){return i}function e(){return k}function f(){return i.mediaInfo.streamInfo.manifestInfo}function g(){return j}var h=void 0,i=a.streamProcessor.getCurrentRepresentationInfo(),j=a.streamProcessor,k=a.currentValue;return h={getStreamInfo:b,getMediaInfo:c,getTrackInfo:d,getCurrentValue:e,getManifestInfo:f,getStreamProcessor:g}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="RulesContext",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10}],129:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){j={}}function b(a){a&&(a.abrRulesCollection&&(j[p]=a.abrRulesCollection),a.synchronizationRulesCollection&&(j[q]=a.synchronizationRulesCollection))}function c(a,b,c,d,f){var g,h,j={},k={},l=a.length,m=l,n=e(b,d),o=function(a){var b,e,g;if(a.value!==i.default.NO_CHANGE){var h=f(j[a.priority],a.value);h!==j[a.priority]&&(j[a.priority]=h,k[a.priority]=a.reason)}--l||(j[i.default.WEAK]!==i.default.NO_CHANGE&&(g=i.default.WEAK,b=j[i.default.WEAK],e=k[i.default.WEAK]),j[i.default.DEFAULT]!==i.default.NO_CHANGE&&(g=i.default.DEFAULT,b=j[i.default.DEFAULT],e=k[i.default.DEFAULT]),j[i.default.STRONG]!==i.default.NO_CHANGE&&(g=i.default.STRONG,b=j[i.default.STRONG],e=k[i.default.STRONG]),g!=i.default.STRONG&&g!=i.default.WEAK&&(g=i.default.DEFAULT),c(void 0!==b?{value:b,confidence:g,reason:e}:{value:d,confidence:g,reason:{name:"NO_CHANGE"}}))};for(j[i.default.STRONG]=i.default.NO_CHANGE,j[i.default.WEAK]=i.default.NO_CHANGE,j[i.default.DEFAULT]=i.default.NO_CHANGE,h=0;h<m;h++)g=a[h],g.execute(n,o)}function d(){var a,b,c=j[p],d=j[q],e=(c.getRules(k.default.QUALITY_SWITCH_RULES)||[]).concat(c.getRules(k.default.ABANDON_FRAGMENT_RULES)||[]).concat(d.getRules(m.default.TIME_SYNCHRONIZED_RULES)||[]).concat(d.getRules(m.default.BEST_GUESS_RULES)||[]),f=e.length;for(b=0;b<f;b++)a=e[b],"function"==typeof a.reset&&a.reset();j={}}function e(a,b){return(0,g.default)(f).create({streamProcessor:a,currentValue:b})}var f=this.context,h=void 0,j=void 0;return h={initialize:a,setConfig:b,applyRules:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(128),g=d(f),h=a(130),i=d(h),j=a(131),k=d(j),l=a(144),m=d(l),n=a(10),o=d(n),p=0,q=1;e.__dashjs_factory_name="RulesController";var r=o.default.getSingletonFactory(e);r.ABR_RULE=p,r.SYNC_RULE=q,c.default=r,b.exports=c.default},{10:10,128:128,130:130,131:131,144:144}],130:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b,c){var d=void 0===a?h:a,e=void 0===b?i:b,f=void 0===c?null:c,g={value:d,priority:e,reason:f};return g}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=999,i=.5,j=1,k=0;e.__dashjs_factory_name="SwitchRequest";var l=g.default.getClassFactory(e);l.NO_CHANGE=h,l.DEFAULT=i,l.STRONG=j,l.WEAK=k,c.default=l,b.exports=c.default},{10:10}],131:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){e=[],f=[];var a=(0,u.default)(c).getInstance(),b=(0,w.default)(c).getInstance(),d=(0,s.default)(c).getInstance();d.getBufferOccupancyABREnabled()?(e.push((0,o.default)(c).create({metricsModel:a,dashMetrics:(0,w.default)(c).getInstance()})),f.push((0,q.default)(c).create({metricsModel:a,dashMetrics:(0,w.default)(c).getInstance()}))):(e.push((0,g.default)(c).create({metricsModel:a,dashMetrics:b})),e.push((0,i.default)(c).create({metricsModel:a,dashMetrics:b})),e.push((0,k.default)(c).create({metricsModel:a})),f.push((0,m.default)(c).create()))}function b(a){switch(a){case z:return e;case A:return f;default:return null}}var c=this.context,d=void 0,e=void 0,f=void 0;return d={initialize:a,getRules:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(137),g=d(f),h=a(135),i=d(h),j=a(136),k=d(j),l=a(132),m=d(l),n=a(134),o=d(n),p=a(133),q=d(p),r=a(101),s=d(r),t=a(102),u=d(t),v=a(17),w=d(v),x=a(10),y=d(x),z="qualitySwitchRules",A="abandonFragmentRules";e.__dashjs_factory_name="ABRRulesCollection";var B=y.default.getSingletonFactory(e);B.QUALITY_SWITCH_RULES=z,B.ABANDON_FRAGMENT_RULES=A,c.default=B,b.exports=c.default},{10:10,101:101,102:102,132:132,133:133,134:134,135:135,136:136,137:137,17:17}],132:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){o={},p={},q=[],r=(0,i.default)(l).getInstance(); +}function b(a,b){o[a]=o[a]||{},o[a][b]=o[a][b]||{}}function c(a,b){q[a]=q[a]||[],q[a].push(b)}function d(a,d){var f=a.getMediaInfo(),i=f.type,m=a.getCurrentValue().request,s=(0,g.default)(l).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name});if(!isNaN(m.index)){b(i,m.index);var t=o[i][m.index];if(null===t||null===m.firstByteDate||p.hasOwnProperty(t.id))return void d(s);if(void 0===t.firstByteTime&&(q[i]=[],t.firstByteTime=m.firstByteDate.getTime(),t.segmentDuration=m.duration,t.bytesTotal=m.bytesTotal,t.id=m.index),t.bytesLoaded=m.bytesLoaded,t.elapsedTime=(new Date).getTime()-t.firstByteTime,t.bytesLoaded>0&&t.elapsedTime>0&&c(i,Math.round(8*t.bytesLoaded/t.elapsedTime)),q[i].length>=k&&t.elapsedTime>j&&t.bytesLoaded<t.bytesTotal){var u=q[i].reduce(function(a,b){return a+b},0);if(t.measuredBandwidthInKbps=Math.round(u/q[i].length),t.estimatedTimeOfDownload=(8*t.bytesTotal/t.measuredBandwidthInKbps/1e3).toFixed(2),t.estimatedTimeOfDownload<t.segmentDuration*h||0===a.getTrackInfo().quality)return void d(s);if(!p.hasOwnProperty(t.id)){var v=a.getStreamProcessor().getABRController(),w=t.bytesTotal-t.bytesLoaded,x=v.getBitrateList(f),y=v.getQualityForBitrate(f,t.measuredBandwidthInKbps*r.getBandwidthSafetyFactor()),z=t.bytesTotal*x[y].bitrate/x[v.getQualityFor(i,f.streamInfo)].bitrate;w>z&&(s.value=y,s.priority=g.default.STRONG,s.reason.throughput=t.measuredBandwidthInKbps,p[t.id]=t,n("AbandonRequestsRule ( ",i,"frag id",t.id,") is asking to abandon and switch to quality to ",y," measured bandwidth was",t.measuredBandwidthInKbps),delete o[i][t.id])}}else t.bytesLoaded===t.bytesTotal&&delete o[i][t.id]}d(s)}function f(){a()}var h=1.8,j=500,k=5,l=this.context,n=(0,m.default)(l).getInstance().log,o=void 0,p=void 0,q=void 0,r=void 0,s={execute:d,reset:f};return a(),s}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(101),i=d(h),j=a(10),k=d(j),l=a(8),m=d(l);e.__dashjs_factory_name="AbandonRequestsRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,130:130,8:8}],133:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){s={},t=(0,i.default)(l).getInstance()}function c(a,b,c){s[a]={index:b,quality:c}}function d(a,b,c){var d=s[a];return!d||(b!==d.index||c<d.quality)}function f(a,b){var f=a.getMediaInfo(),h=f.type,i=q.getReadOnlyMetricsFor(h),m=a.getCurrentValue(),r=m.request,t=(0,g.default)(l).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name});if(0===i.BolaState.length)return n("WARNING: executing BolaAbandonRule before initializing BolaRule"),s[h]=null,void b(t);var u=i.BolaState[0]._s,v=r.index,w=r.quality;if(isNaN(v)||0===w||!d(h,v,w)||!r.firstByteDate)return void b(t);var x=Date.now(),y=x-r.firstByteDate.getTime(),z=r.bytesLoaded,A=r.bytesTotal,B=A-z,C=r.duration,D=p.getCurrentBufferLevel(i)?p.getCurrentBufferLevel(i):0,E=D+u.virtualBuffer,F=8*z/(.001*y),G=u.bandwidthSafetyFactor*F,H=.001*(r.firstByteDate.getTime()-r.requestStartDate.getTime());H<.001*k&&(H=.001*k);var I=H+8*A/G,J="";o.default.BOLA_DEBUG&&(J="index="+v+" quality="+w+" bytesLoaded/bytesTotal="+z+"/"+A+" bufferLevel="+D+" timeSince1stByte="+(y/1e3).toFixed(3)+" estThroughput="+(G/1e6).toFixed(3)+" latency="+H.toFixed(3));var K=A*u.bitrates[0]/u.bitrates[w],L=B-H*G/8;if(L<1&&(L=1),y<j||B<=K||D>u.bufferTarget||L<=K||I<=C)return void b(t);var M=E-H;M<0&&(M=0);for(var N=0;N+1<w&&A*u.bitrates[N+1]/u.bitrates[w]<L;)++N;var O=w;if(u.state===o.default.BOLA_STATE_STARTUP){O=0;for(var P=0;P<=N&&(K=A*u.bitrates[P]/u.bitrates[w],!(8*K/C>G));++P)O=P}else for(var Q=(u.Vp*(u.utilities[w]+u.gp)-M)/L,P=0;P<=N;++P){K=A*u.bitrates[P]/u.bitrates[w];var R=(u.Vp*(u.utilities[P]+u.gp)-M)/K;R>Q&&(O=P,Q=R)}var S=u.rebufferSafetyFactor*F*(D-H)/8;if(O===w&&L>S&&(O=N),O===w)return void b(t);for(;O>0&&(K=A*u.bitrates[O]/u.bitrates[w],!(K<=S));)--O;u.lastQuality=O,q.updateBolaState(h,u),o.default.BOLA_DEBUG&&n("BolaDebug "+h+" BolaAbandonRule abandon to "+O+" - "+J),c(h,v,w),t.value=O,t.priority=g.default.STRONG,t.reason.state=u.state,t.reason.throughput=F,t.reason.bufferLevel=D,t.reason.bytesLoaded=r.bytesLoaded,t.reason.bytesTotal=r.bytesTotal,t.reason.elapsedTimeMs=y,b(t)}function h(){s={}}var j=500,k=200,l=this.context,n=(0,m.default)(l).getInstance().log,p=a.dashMetrics,q=a.metricsModel,r=void 0,s=void 0,t=void 0;return r={execute:f,reset:h},b(),r}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(101),i=d(h),j=a(10),k=d(j),l=a(8),m=d(l),n=a(134),o=d(n);e.__dashjs_factory_name="BolaAbandonRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,130:130,134:134,8:8}],134:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){N={},O=[],P=(0,k.default)(H).getInstance(),Q=(0,m.default)(H).getInstance(),R=(0,p.default)(H).getInstance(),L.on(t.default.BUFFER_EMPTY,q,M),L.on(t.default.PLAYBACK_SEEKING,s,M),L.on(t.default.PERIOD_SWITCH_STARTED,u,M)}function c(a){return a.map(function(a){return Math.log(a)})}function d(a,b,d,e){var f=NaN;if(e?(f=0,e.forEach(function(a,b){a>e[f]&&(f=b)})):(e=c(d),f=e.length-1),0===f)return null;var g=1-e[0]+(e[f]-e[0])/(b/a-1),h=a/(e[0]+g-1);return{utilities:e,gp:g,Vp:h}}function f(a){var b={},c=a.getMediaInfo(),e=a.getStreamProcessor(),f=a.getStreamInfo(),g=a.getTrackInfo(),h=e.isDynamic(),i=f.manifestInfo.duration,j=g.fragmentDuration,k=c.bitrateList.map(function(a){return a.bandwidth}),l=d(A,B,k,null);if(null===l)return b.state=w,b;if(b.state=x,b.bitrates=k,b.utilities=l.utilities,b.Vp=l.Vp,b.gp=l.gp,b.isDynamic=h,b.movieDuration=i,b.fragmentDuration=j,b.bandwidthSafetyFactor=P.getBandwidthSafetyFactor(),b.rebufferSafetyFactor=C,b.bufferTarget=P.getStableBufferTime(),b.lastQuality=0,b.virtualBuffer=0,b.throughputCount=h?F:G,z){for(var m="",n=0;n<k.length;++n){var o=l.utilities[n],p=k[n],q=0;if(n>0){var r=l.utilities[n-1],s=k[n-1];q=l.Vp*((r*p-o*s)/(p-s)+l.gp)}var t=l.Vp*(o+l.gp);m+="\n"+n+":"+(1e-6*k[n]).toFixed(3)+"Mbps "+q.toFixed(3)+"/"+t.toFixed(3)}I("BolaDebug "+c.type+" bitrates"+m)}return b}function h(a,b){for(var c=a.bitrates.length,d=NaN,e=NaN,f=0;f<c;++f){var g=(a.Vp*(a.utilities[f]+a.gp)-b)/a.bitrates[f];(isNaN(e)||g>=e)&&(e=g,d=f)}return d}function i(a,b){for(var c=J.getHttpRequests(a),d=[],e=c.length-1;e>=0&&d.length<b;--e){var f=c[e];f.type===n.HTTPRequest.MEDIA_SEGMENT_TYPE&&f._tfinish&&f.tresponse&&f.trace&&d.push(f)}return d}function j(a,b,c){var d=i(a,b);if(0===d.length)return 0;for(var e=0,f="",g=0;g<d.length;++g){var h=.001*(d[g]._tfinish.getTime()-d[g].trequest.getTime()),j=8*d[g].trace.reduce(function(a,b){return a+b.b[0]},0);z&&(f+=" "+(1e-6*j).toFixed(3)+"/"+h.toFixed(3)+"="+(1e-6*j/h).toFixed(3)+"Mbps"),e+=h/j}return z&&I("BolaDebug "+c+" BolaRule recent throughput = "+(d.length/(1e6*e)).toFixed(3)+"Mbps:"+f),d.length/e}function l(a,b){var c=0;return a.bitrates.some(function(a,d){return a>b||(c=d,!1)}),c}function o(a,b){var c=i(a,1);if(0===c.length)return 0;var d=c[0],e=Date.now(),f=d._tfinish.getTime();f>e&&(f=e);var g=N[b];N[b]=e;var h=0;return h=g&&g>f?e-g:e-f,h<=0?0:.001*h}function q(){z&&I("BolaDebug BUFFER_EMPTY"),O.forEach(function(a){var b=K.getReadOnlyMetricsFor(a);if(0!==b.BolaState.length){var c=b.BolaState[0]._s;c.state===y&&(c.virtualBuffer=0,K.updateBolaState(a,c))}})}function s(a){z&&I("BolaDebug PLAYBACK_SEEKING "+a.seekTime.toFixed(3)),O.forEach(function(a){var b=K.getReadOnlyMetricsFor(a);if(0!==b.BolaState.length){var c=b.BolaState[0]._s;c.state!==w&&(c.state=x),K.updateBolaState(a,c)}})}function u(){}function D(a,b){var c=a.getStreamProcessor();c.getScheduleController().setTimeToLoadDelay(0);var d=(0,g.default)(H).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name}),i=a.getMediaInfo(),k=i.type,m=K.getReadOnlyMetricsFor(k);if(0===m.BolaState.length){z&&I("BolaDebug "+k+"\nBolaDebug "+k+" BolaRule for state=- fragmentStart="+R.getIndexHandlerTime(a.getStreamProcessor()).toFixed(3));var n=f(a);K.updateBolaState(k,n);var p=0;if(n.state!==w){O.push(k);var q=j(m,n.throughputCount,k);if(0===q)return z&&I("BolaDebug "+k+" BolaRule quality unchanged for INITIALIZE"),void b(d);p=l(n,q*n.bandwidthSafetyFactor),n.lastQuality=p,d.value=p,d.priority=g.default.DEFAULT,d.reason.state=n.state,d.reason.throughput=q}return z&&I("BolaDebug "+k+" BolaRule quality "+p+" for INITIALIZE"),void b(d)}var r=m.BolaState[0]._s;if(r.state===w)return z&&I("BolaDebug "+k+" BolaRule quality 0 for ONE_BITRATE"),void b(d);var s=r.bitrates,t=r.utilities;z&&I("BolaDebug "+k+"\nBolaDebug "+k+" EXECUTE BolaRule for state="+r.state+" fragmentStart="+R.getIndexHandlerTime(a.getStreamProcessor()).toFixed(3));var u=J.getCurrentBufferLevel(m)?J.getCurrentBufferLevel(m):0,v=j(m,r.throughputCount,k);u<=.1&&(r.virtualBuffer=0);var A=o(m,k);A>0&&(r.virtualBuffer+=A),r.virtualBuffer<0&&(r.virtualBuffer=0);var B=u+r.virtualBuffer,D=h(r,B);if(z&&I("BolaDebug "+k+" BolaRule bufferLevel="+u.toFixed(3)+"(+"+r.virtualBuffer.toFixed(3)+"="+B.toFixed(3)+") recentThroughput="+(1e-6*v).toFixed(3)+" tentativeQuality="+D),r.state===x){var p=l(r,v*r.bandwidthSafetyFactor);if(u>r.fragmentDuration/C){r.state=y;for(var E=0,F=0;F<p;++F){var G=r.Vp*(r.gp+(s[p]*t[F]-s[F]*t[p])/(s[p]-s[F]));G>E&&(E=G)}E>u&&(r.virtualBuffer=E-u)}return z&&I("BolaDebug "+k+" BolaRule quality "+p+" for STARTUP"),r.lastQuality=p,K.updateBolaState(k,r),d.value=p,d.priority=g.default.DEFAULT,d.reason.state=x,d.reason.throughput=v,void b(d)}if(D>r.lastQuality){var p=l(r,v);D>p&&(p<r.lastQuality&&(p=r.lastQuality),D=p)}if(v>0)for(var L=C*v*u/r.fragmentDuration;D>0&&s[D]>L;)--D;var M=0,N=r.Vp*(t[D]+r.gp);M=B-N,M>0&&(M>r.virtualBuffer?(M-=r.virtualBuffer,r.virtualBuffer=0):(r.virtualBuffer-=M,M=0)),M>0?D===s.length-1?M=0:c.getScheduleController().setTimeToLoadDelay(1e3*M):M=0,r.lastQuality=D,K.updateBolaState(k,r),d.value=D,d.priority=g.default.DEFAULT,d.reason.state=r.state,d.reason.throughput=v,d.reason.bufferLevel=u,z&&I("BolaDebug "+k+" BolaRule quality "+D+" delay="+M.toFixed(3)+" for STEADY"),b(d)}function E(){L.off(t.default.BUFFER_EMPTY,q,M),L.off(t.default.PLAYBACK_SEEKING,s,M),L.off(t.default.PERIOD_SWITCH_STARTED,u,M),b()}var F=2,G=3,H=this.context,I=(0,v.default)(H).getInstance().log,J=a.dashMetrics,K=a.metricsModel,L=(0,r.default)(H).getInstance(),M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0;return M={execute:D,reset:E},b(),M}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(10),i=d(h),j=a(101),k=d(j),l=a(68),m=d(l),n=a(179),o=a(15),p=d(o),q=a(9),r=d(q),s=a(13),t=d(s),u=a(8),v=d(u),w=0,x=1,y=2,z=!1,A=10,B=30,C=.5;e.__dashjs_factory_name="BolaRule";var D=i.default.getClassFactory(e);D.BOLA_STATE_ONE_BITRATE=w,D.BOLA_STATE_STARTUP=x,D.BOLA_STATE_STEADY=y,D.BOLA_DEBUG=z,c.default=D,b.exports=c.default},{10:10,101:101,13:13,130:130,15:15,179:179,68:68,8:8,9:9}],135:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){n=0,p=(0,i.default)(h).getInstance()}function c(a,b){var c=(new Date).getTime()/1e3,d=a.getMediaInfo(),f=a.getTrackInfo(),i=d.type,o=isNaN(f.fragmentDuration)?2:f.fragmentDuration/2,q=a.getCurrentValue(),r=a.getStreamProcessor(),s=r.getABRController(),t=l.getReadOnlyMetricsFor(i),u=m.getCurrentBufferLevel(t),v=t.BufferState.length>0?t.BufferState[t.BufferState.length-1]:null,w=!1,x=d.representationCount-1,y=(0,g.default)(h).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name});return c-n<o||s.getAbandonmentStateFor(i)===k.default.ABANDON_LOAD?void b(y):(null!==v&&u>v.target&&(w=u-v.target>p.getRichBufferThreshold(),w&&d.representationCount>1&&(y.value=x,y.priority=g.default.STRONG,y.reason.bufferLevel=u,y.reason.bufferTarget=v.target)),y.value!==g.default.NO_CHANGE&&y.value!==q&&j("BufferOccupancyRule requesting switch to index: ",y.value,"type: ",i," Priority: ",y.priority===g.default.DEFAULT?"Default":y.priority===g.default.STRONG?"Strong":"Weak"),void b(y))}function d(){n=0}var f=void 0,h=this.context,j=(0,o.default)(h).getInstance().log,l=a.metricsModel,m=a.dashMetrics,n=void 0,p=void 0;return f={execute:c,reset:d},b(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(101),i=d(h),j=a(60),k=d(j),l=a(10),m=d(l),n=a(8),o=d(n);e.__dashjs_factory_name="BufferOccupancyRule",c.default=m.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,130:130,60:60,8:8}],136:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){r={},s=0,t=1e3,n.on(m.default.PLAYBACK_SEEKING,f,p)}function c(a,b){var c=(new Date).getTime(),f=a.getMediaInfo().type,h=a.getCurrentValue(),k=o.getReadOnlyMetricsFor(f),m=k.BufferState.length>0?k.BufferState[k.BufferState.length-1]:null,n=(0,g.default)(j).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name});return c-s<t||null===m?void b(n):(d(f,m.state),m.state===i.default.BUFFER_EMPTY&&void 0!==r[f].firstBufferLoadedEvent&&(n.value=0,n.priority=g.default.STRONG,n.reason.bufferState=m.state,n=(0,g.default)(j).create(0,g.default.STRONG)),n.value!==g.default.NO_CHANGE&&n.value!==h&&l("InsufficientBufferRule requesting switch to index: ",n.value,"type: ",f," Priority: ",n.priority===g.default.DEFAULT?"Default":n.priority===g.default.STRONG?"Strong":"Weak"),s=c,void b(n))}function d(a,b){r[a]=r[a]||{},r[a].state=b,b!==i.default.BUFFER_LOADED||r[a].firstBufferLoadedEvent||(r[a].firstBufferLoadedEvent=!0)}function f(){r={}}function h(){n.off(m.default.PLAYBACK_SEEKING,f,p),r={},s=0}var j=this.context,l=(0,q.default)(j).getInstance().log,n=(0,k.default)(j).getInstance(),o=a.metricsModel,p=void 0,r=void 0,s=void 0,t=void 0;return p={execute:c,reset:h},b(),p}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(63),i=d(h),j=a(9),k=d(j),l=a(13),m=d(l),n=a(10),o=d(n),p=a(8),q=d(p);e.__dashjs_factory_name="InsufficientBufferRule",c.default=o.default.getClassFactory(e),b.exports=c.default},{10:10,13:13,130:130,63:63,8:8,9:9}],137:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){z=[],A={audio:{threshold:s,value:NaN},video:{threshold:q,value:NaN}},B=(0,m.default)(v).getInstance()}function c(a,b){z[a]=z[a]||[],z[a].push(b)}function d(a,b){var c=Math.min(z[a].length,b?o:p),d=z[a].slice(c*-1,z[a].length);return d.length>1&&d.reduce(function(a,b){return(a*u<=b||a>=b*t)&&c++,b}),c=Math.min(z[a].length,c),z[a].slice(c*-1,z[a].length)}function f(a,b){var c=d(a,b),e=0;if(c.length>0){var f=c.reduce(function(a,b){return a+b},0);e=f/c.length}return z[a].length>=l&&z[a].shift(),e/1e3*B.getBandwidthSafetyFactor()}function h(a,b){var d=a.getMediaInfo(),h=d.type,j=a.getCurrentValue(),l=y.getReadOnlyMetricsFor(h),m=a.getStreamProcessor(),o=m.getABRController(),p=m.isDynamic(),q=x.getCurrentHttpRequest(l),r=l.BufferState.length>0?l.BufferState[l.BufferState.length-1]:null,s=(0,g.default)(v).create(g.default.NO_CHANGE,g.default.WEAK,{name:e.__dashjs_factory_name});if(!l||!q||q.type!==n.HTTPRequest.MEDIA_SEGMENT_TYPE||!r)return void b(s);var t=void 0;if(q.trace&&q.trace.length){t=q._tfinish.getTime()-q.tresponse.getTime()+1;var u=q.trace.reduce(function(a,b){return a+b.b[0]},0),z=Math.round(8*u/(t/1e3));t<=A[h].threshold?A[h].value=z/1e3:(A[h].value=NaN,c(h,z))}var B=Math.round(isNaN(A[h].value)?f(h,p):A[h].value);if(o.setAverageThroughput(h,B),o.getAbandonmentStateFor(h)!==k.default.ABANDON_LOAD){if(r.state===i.default.BUFFER_LOADED||p){var C=o.getQualityForBitrate(d,B);m.getScheduleController().setTimeToLoadDelay(0),s.value=C,s.priority=g.default.DEFAULT,s.reason.throughput=B}s.value!==g.default.NO_CHANGE&&s.value!==j&&w("ThroughputRule requesting switch to index: ",s.value,"type: ",h," Priority: ",s.priority===g.default.DEFAULT?"Default":s.priority===g.default.STRONG?"Strong":"Weak","Average throughput",Math.round(B),"kbps")}b(s)}function j(){b()}var l=20,o=3,p=4,q=50,s=5,t=1.3,u=1.3,v=this.context,w=(0,r.default)(v).getInstance().log,x=a.dashMetrics,y=a.metricsModel,z=void 0,A=void 0,B=void 0,C={execute:h,reset:j};return b(),C}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(63),i=d(h),j=a(60),k=d(j),l=a(101),m=d(l),n=a(179),o=a(10),p=d(o),q=a(8),r=d(q);e.__dashjs_factory_name="ThroughputRule",c.default=p.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,130:130,179:179,60:60,63:63,8:8}],138:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b,c=0;return a&&a.some(function(a,b){return c=b,!d.contains(a.serviceLocation)})&&(b=a[c]),b}var c=void 0,d=a.blacklistController;return c={select:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="BasicSelector",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10}],139:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a){var b=[],c=function(a){return!b.length||!a.dvb_priority||b.indexOf(a.dvb_priority)===-1},d=function(a){return!f.contains(a.serviceLocation)||(a.dvb_priority&&b.push(a.dvb_priority),!1)};return a.filter(d).filter(c)}function c(a){var b,c,d=function(a,b){var c=a.dvb_priority-b.dvb_priority;return isNaN(c)?0:c},e=function(a,b,c){return!b||c[0].dvb_priority&&a.dvb_priority&&c[0].dvb_priority===a.dvb_priority},f=0,g=[],h=0;if(c=a.sort(d).filter(e),c.length)return c.length>1&&(c.forEach(function(a){f+=a.dvb_weight,g.push(f)}),b=Math.floor(Math.random()*(f-1)),g.every(function(a,c){return h=c,!(b<a)})),c[h]}function d(a){return a&&c(b(a))}var e=void 0,f=a.blacklistController;return e={select:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="DVBSelector",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10}],140:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){k=(0,g.default)(e).getInstance(),l=(0,i.default)(e).getInstance()}function c(a,b,c){var e=f.getCurrentBufferLevel(h.getReadOnlyMetricsFor(b));return e<d(a,b,c)}function d(a,b,c){var d=NaN,e=a.getCurrentRepresentationInfo();if("fragmentedText"===b)d=j.getAllTracksAreDisabled()?0:e.fragmentDuration;else if("audio"===b&&c){var g=f.getCurrentBufferLevel(h.getReadOnlyMetricsFor("video"));d=Math.floor(Math.max(g,e.fragmentDuration))}else{var i=e.mediaInfo.streamInfo,l=a.getABRController();if(l.isPlayingAtTopQuality(i)){var m=i.manifestInfo.duration>=k.getLongFormContentDurationThreshold();d=m?k.getBufferTimeAtTopQualityLongForm():k.getBufferTimeAtTopQuality()}else d=k.getStableBufferTime()}return d}var e=this.context,f=a.dashMetrics,h=a.metricsModel,j=a.textSourceBuffer,k=void 0,l=void 0,m={execute:c,getBufferTarget:d};return b(),m}Object.defineProperty(c,"__esModule",{value:!0});var f=a(101),g=d(f),h=a(68),i=d(h),j=a(10),k=d(j);e.__dashjs_factory_name="BufferLevelRule",c.default=k.default.getClassFactory(e),b.exports=c.default},{10:10,101:101,68:68}],141:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=a.getCurrentRepresentationInfo(),g=c.mediaInfo,i=g.type,j=a.getScheduleController(),k=j.getSeekTarget(),l=!isNaN(k),m=a.getBuffer(),n=l?k:e.getIndexHandlerTime(a);if(isNaN(n)||"fragmentedText"===i&&h.getAllTracksAreDisabled())return null;if(l&&j.setSeekTarget(NaN),m){var o=f.getBufferRange(a.getBuffer(),n);null!==o&&(d("Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end.",n," was changed to ",o.end),n=o.end)}var p=void 0;return b?(n=b.startTime+b.duration/2,p=e.getFragmentRequestForTime(a,c,n,{timeThreshold:0,ignoreIsFinished:!0})):(p=e.getFragmentRequestForTime(a,c,n,{keepIdx:!l}),p&&a.getFragmentModel().isFragmentLoaded(p)&&(p=e.getNextFragmentRequest(a,c)),p&&(e.setIndexHandlerTime(a,p.startTime+p.duration),p.delayLoadingTime=(new Date).getTime()+j.getTimeToLoadDelay(),j.setTimeToLoadDelay(0))),p}var c=this.context,d=(0,g.default)(c).getInstance().log,e=a.adapter,f=a.sourceBufferController,h=a.textSourceBuffer,i={execute:b};return i}Object.defineProperty(c,"__esModule",{value:!0});var f=a(8),g=d(f),h=a(10),i=d(h);e.__dashjs_factory_name="NextFragmentRequestRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{10:10,8:8}],142:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){r=NaN,s=null,t=NaN,u=null,v=!1,w=NaN,x=g.default.DEFAULT}function c(a,b){var c,d;if(y=b,A=a.getStreamProcessor(),z=A.getFragmentLoader(),u=a.getTrackInfo(),w=u.fragmentDuration,d=u.DVRWindow,r=d.end,u.useCalculatedLiveEdgeTime){var i=p.getExpectedLiveEdge();return p.setExpectedLiveEdge(r),void y((0,g.default)(l).create(i,x))}s={start:Math.max(0,r-n),end:r+n},t=Math.floor((d.end-d.start)/2),c=o.getFragmentRequestForTime(A,u,r,{ignoreIsFinished:!0}),e(r,h,f,c)}function d(){r=NaN,s=null,t=NaN,u=null,v=!1,w=NaN,A=null,z=null}function e(a,b,c,d){var f;if(null===d)f=o.generateFragmentRequestForTime(A,u,a),e(a,b,c,f);else{var g=function d(e){m.off(k.default.CHECK_FOR_EXISTENCE_COMPLETED,d,this),e.exists?b(e.request,a):c(e.request,a)};m.on(k.default.CHECK_FOR_EXISTENCE_COMPLETED,g,this),z.checkForExistence(d)}}function f(a,b){var c,d,i;return v?void j(!1,b):(i=b-r,c=i>0?r-i:r+Math.abs(i)+t,void(c<s.start&&c>s.end?y((0,g.default)(l).create(null,x)):(d=o.getFragmentRequestForTime(A,u,c,{ignoreIsFinished:!0}),e(c,h,f,d))))}function h(a,b){var c,d,f=a.startTime;if(!v){if(!u.fragmentDuration)return void y((0,g.default)(l).create(f,x));if(v=!0,s.end=f+2*t,b===r)return d=b+w,c=o.getFragmentRequestForTime(A,u,d,{ignoreIsFinished:!0}),void e(d,function(){j(!0,d)},function(){y((0,g.default)(l).create(d,x))},c)}j(!0,b)}function j(a,b){var c,d,i;a?s.start=b:s.end=b,c=Math.floor(s.end-s.start)<=w,c?y((0,g.default)(l).create(a?b:b-w,x)):(i=(s.start+s.end)/2,d=o.getFragmentRequestForTime(A,u,i,{ignoreIsFinished:!0}),e(i,h,f,d))}var l=this.context,m=(0,i.default)(l).getInstance(),o=a.adapter,p=a.timelineConverter,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0,x=void 0,y=void 0,z=void 0,A=void 0;return q={execute:c,reset:d},b(),q}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(9),i=d(h),j=a(13),k=d(j),l=a(10),m=d(l),n=43200;e.__dashjs_factory_name="LiveEdgeBinarySearchRule",c.default=m.default.getClassFactory(e),b.exports=c.default},{10:10,13:13,130:130,9:9}],143:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(a,b){var c=a.getTrackInfo(),f=c.DVRWindow.end,h=g.default.DEFAULT;if(c.useCalculatedLiveEdgeTime){var i=e.getExpectedLiveEdge();e.setExpectedLiveEdge(f),b((0,g.default)(d).create(i,h))}else b((0,g.default)(d).create(f,h))}var c=void 0,d=this.context,e=a.timelineConverter;return c={execute:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(130),g=d(f),h=a(10),i=d(h);e.__dashjs_factory_name="LiveEdgeWithTimeSynchronizationRule",c.default=i.default.getClassFactory(e),b.exports=c.default},{10:10,130:130}],144:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){e=[],f=[],e.push((0,m.default)(c).create({timelineConverter:(0,i.default)(c).getInstance()})),f.push((0,k.default)(c).create({timelineConverter:(0,i.default)(c).getInstance(),adapter:(0,o.default)(c).getInstance()}))}function b(a){switch(a){case p:return e;case q:return f;default:return null}}var c=this.context,d=void 0,e=void 0,f=void 0;return d={initialize:a,getRules:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(37),i=d(h),j=a(142),k=d(j),l=a(143),m=d(l),n=a(15),o=d(n),p="withAccurateTimeSourceRules",q="bestGuestRules";e.__dashjs_factory_name="SynchronizationRulesCollection";var r=g.default.getSingletonFactory(e);r.TIME_SYNCHRONIZED_RULES=p,r.BEST_GUESS_RULES=q,c.default=r,b.exports=c.default},{10:10,142:142,143:143,15:15,37:37}],145:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){l=(0,m.default)(e).create({updateEventName:i.default.SERVICE_LOCATION_BLACKLIST_CHANGED,loadFailedEventName:i.default.FRAGMENT_LOADING_COMPLETED}),n=(0,q.default)(e).create({blacklistController:l}),p=(0,o.default)(e).create({blacklistController:l}),r=n}function b(a){r=h.getIsDVB(a)?p:n}function c(a){var b=a.baseUrls,c=a.selectedIdx;if(!isNaN(c))return b[c];var d=r.select(b);return d?(a.selectedIdx=b.indexOf(d),d):void f.trigger(i.default.URL_RESOLUTION_FAILED,{error:new Error(t,u)})}function d(){l.reset()}var e=this.context,f=(0,g.default)(e).getInstance(),h=(0,k.default)(e).getInstance(),j=void 0,l=void 0,n=void 0,p=void 0,r=void 0;return j={chooseSelectorFromManifest:b,select:c,reset:d},a(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(22),k=d(j),l=a(62),m=d(l),n=a(139),o=d(n),p=a(138),q=d(p),r=a(10),s=d(r),t=1,u="Failed to resolve a valid URL";e.__dashjs_factory_name="BaseURLSelector";var v=s.default.getClassFactory(e);v.URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE=t,v.URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE=u,c.default=v,b.exports=c.default},{10:10,13:13,138:138,139:139,22:22,62:62,9:9}],146:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){if(!a)return null;void 0===a.fileStart&&(a.fileStart=0);var b=k.default.parseBuffer(a),d=(0,g.default)(c).create();return d.setData(b),d}var b=void 0,c=this.context;return b={parse:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(153),g=d(f),h=a(10),i=d(h),j=a(6),k=d(j);e.__dashjs_factory_name="BoxParser",c.default=i.default.getSingletonFactory(e),b.exports=c.default},{10:10,153:153,6:6}],147:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){g=!1}function b(){var a="WebKitMediaSource"in window,b="MediaSource"in window;return a||b}function c(){return g}function d(a){g=a}function e(a,b){var c=a.canPlayType(b);return"probably"===c||"maybe"===c}var f=void 0,g=void 0;return f={supportsMediaSource:b,supportsEncryptedMedia:c,supportsCodec:e,setEncryptedMediaSupported:d},a(),f}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="Capabilities",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],148:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){var c=0;for(c=0;c<this.customTimeRangeArray.length&&a>this.customTimeRangeArray[c].start;c++);for(this.customTimeRangeArray.splice(c,0,{start:a,end:b}),c=0;c<this.customTimeRangeArray.length-1;c++)this.mergeRanges(c,c+1)&&c--;this.length=this.customTimeRangeArray.length}function b(){this.customTimeRangeArray=[],this.length=0}function c(a,b){for(var c=0;c<this.customTimeRangeArray.length;c++)if(a<=this.customTimeRangeArray[c].start&&b>=this.customTimeRangeArray[c].end)this.customTimeRangeArray.splice(c,1),c--;else{if(a>this.customTimeRangeArray[c].start&&b<this.customTimeRangeArray[c].end){this.customTimeRangeArray.splice(c+1,0,{start:b,end:this.customTimeRangeArray[c].end}),this.customTimeRangeArray[c].end=a;break}a>this.customTimeRangeArray[c].start&&a<this.customTimeRangeArray[c].end?this.customTimeRangeArray[c].end=a:b>this.customTimeRangeArray[c].start&&b<this.customTimeRangeArray[c].end&&(this.customTimeRangeArray[c].start=b)}this.length=this.customTimeRangeArray.length}function d(a,b){var c=this.customTimeRangeArray[a],d=this.customTimeRangeArray[b];return c.start<=d.start&&d.start<=c.end&&c.end<=d.end?(c.end=d.end,this.customTimeRangeArray.splice(b,1),!0):d.start<=c.start&&c.start<=d.end&&d.end<=c.end?(c.start=d.start,this.customTimeRangeArray.splice(b,1),!0):d.start<=c.start&&c.start<=d.end&&c.end<=d.end?(this.customTimeRangeArray.splice(a,1),!0):c.start<=d.start&&d.start<=c.end&&d.end<=c.end&&(this.customTimeRangeArray.splice(b,1),!0)}function e(a){return this.customTimeRangeArray[a].start}function f(a){return this.customTimeRangeArray[a].end}var g=[],h=0;return{customTimeRangeArray:g,length:h,add:a,clear:b,remove:c,mergeRanges:d,start:e,end:f}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="CustomTimeRanges",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10}],149:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){if(void 0!==t)return t;t=!1;var b,c="1",d="1";try{"undefined"!=typeof window&&(b=window[a])}catch(e){return r("Warning: DOMStorage access denied: "+e.message),t}if(!b||a!==o&&a!==p)return t;try{b.setItem(c,d),b.removeItem(c),t=!0}catch(e){r("Warning: DOMStorage is supported, but cannot be used: "+e.message)}return t}function b(){a(o)&&l.forEach(function(a){var b=localStorage.getItem(a.oldKey);if(b){localStorage.removeItem(a.oldKey);try{localStorage.setItem(a.newKey,b)}catch(c){r(c.message)}}})}function c(){u=(0,i.default)(q).getInstance(),b()}function d(){var a=6e5;return Math.round((new Date).getTime()/a)*a}function e(b,c){return a(b)&&u["get"+c+"CachingInfo"]().enabled}function f(a){if(!e(o,"LastMediaSettings"))return null;var b=n.replace(/\?/,a),c=JSON.parse(localStorage.getItem(b))||{},d=(new Date).getTime()-parseInt(c.timestamp,10)>=u.getLastMediaSettingsCachingInfo().ttl||!1,f=c.settings;return d&&(localStorage.removeItem(b),f=null),f}function g(a){var b=NaN;if(e(o,"LastBitrate")){var c=m.replace(/\?/,a),d=JSON.parse(localStorage.getItem(c))||{},f=(new Date).getTime()-parseInt(d.timestamp,10)>=u.getLastBitrateCachingInfo().ttl||!1,g=parseInt(d.bitrate,10);isNaN(g)||f?f&&localStorage.removeItem(c):(b=g,r("Last saved bitrate for "+a+" was "+g))}return b}function h(a,b){if(e(o,"LastMediaSettings")){var c=n.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({settings:b,timestamp:d()}))}catch(f){r(f.message)}}}function j(a,b){if(e(o,"LastBitrate")&&b){var c=m.replace(/\?/,a);try{localStorage.setItem(c,JSON.stringify({bitrate:b/1e3,timestamp:d()}))}catch(f){r(f.message)}}}var q=this.context,r=(0,k.default)(q).getInstance().log,s=void 0,t=void 0,u=void 0;return s={getSavedBitrateSettings:g,setSavedBitrateSettings:j,getSavedMediaSettings:f,setSavedMediaSettings:h,isSupported:a},c(),s}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(101),i=d(h),j=a(8),k=d(j),l=[{oldKey:"dashjs_vbitrate",newKey:"dashjs_video_bitrate"},{oldKey:"dashjs_abitrate",newKey:"dashjs_audio_bitrate"},{oldKey:"dashjs_vsettings",newKey:"dashjs_video_settings"},{oldKey:"dashjs_asettings",newKey:"dashjs_audio_settings"}],m="dashjs_?_bitrate",n="dashjs_?_settings",o="localStorage",p="sessionStorage";e.__dashjs_factory_name="DOMStorage";var q=g.default.getSingletonFactory(e);c.default=q,b.exports=c.default},{10:10,101:101,8:8}],150:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a){function b(){return o}function c(a){o=a}function d(a,b){var c=!0,d=0,e=void 0,f=void 0;if(void 0===b&&(b=!1),a.tag>16777215?(n.getUint32(o)!==a.tag&&(c=!1),d=4):a.tag>65535?(e=n.getUint16(o),f=n.getUint8(o+2),256*e+f!==a.tag&&(c=!1),d=3):a.tag>255?(n.getUint16(o)!==a.tag&&(c=!1),d=2):(n.getUint8(o)!==a.tag&&(c=!1),d=1),!c&&a.required&&!b)throw new i.default("required tag not found");return c&&(o+=d),c}function e(a,b){var c=d(a,b);return c&&h(),c}function f(a){var b=void 0;return d(a),b=h(),m[a.parse](b)}function g(a,b){var c=d(a,b),e=void 0;return c&&(e=h(),o+=e),c}function h(a){var b=1,c=128,d=8,e=-1,f=0,g=n.getUint8(o),h=void 0;for(h=0;h<d;h+=1){if((g&c)===c){f=void 0===a?g&~c:g,e=h;break}c>>=1}for(h=0;h<e;h+=1,b+=1)f=f<<8|255&n.getUint8(o+b);return o+=b,f}function j(a){var b=void 0;switch(a){case 4:b=n.getFloat32(o),o+=4;break;case 8:b=n.getFloat64(o),o+=8}return b}function k(a){var b=0,c=void 0;for(c=0;c<a;c+=1)b<<=8,b|=255&n.getUint8(o+c);return o+=a,b}function l(){return o<n.byteLength}var m=void 0,n=new DataView(a.data),o=0;return m={getPos:b, +setPos:c,consumeTag:d,consumeTagAndSize:e,parseTag:f,skipOverElement:g,getMatroskaCodedNum:h,getMatroskaFloat:j,getMatroskaUint:k,moreData:l}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(162),i=d(h);e.__dashjs_factory_name="EBMLParser",c.default=g.default.getClassFactory(e),b.exports=c.default},{10:10,162:162}],151:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){l.trigger(i.default.ERROR,{error:"capability",event:a})}function b(a,b,c){l.trigger(i.default.ERROR,{error:"download",event:{id:a,url:b,request:c}})}function c(a,b,c,d){l.trigger(i.default.ERROR,{error:"manifestError",event:{message:a,id:b,manifest:c,event:d}})}function d(a,b,c){l.trigger(i.default.ERROR,{error:"cc",event:{message:a,id:b,cc:c}})}function e(a){l.trigger(i.default.ERROR,{error:"mediasource",event:a})}function f(a){l.trigger(i.default.ERROR,{error:"key_session",event:a})}function h(a){l.trigger(i.default.ERROR,{error:"key_message",event:a})}var j=void 0,k=this.context,l=(0,g.default)(k).getInstance();return j={capabilityError:a,downloadError:b,manifestError:c,timedTextError:d,mediaSourceError:e,mediaKeySessionError:f,mediaKeyMessageError:h}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(9),g=d(f),h=a(13),i=d(h),j=a(10),k=d(j),l="mediasource",m="mediakeys",n="manifest",o="SIDX",p="content",q="initialization",r="xlink",s="codec",t="parse",u="nostreams",v="parse";e.__dashjs_factory_name="ErrorHandler";var w=k.default.getSingletonFactory(e);w.CAPABILITY_ERROR_MEDIASOURCE=l,w.CAPABILITY_ERROR_MEDIAKEYS=m,w.DOWNLOAD_ERROR_ID_MANIFEST=n,w.DOWNLOAD_ERROR_ID_SIDX=o,w.DOWNLOAD_ERROR_ID_CONTENT=p,w.DOWNLOAD_ERROR_ID_INITIALIZATION=q,w.DOWNLOAD_ERROR_ID_XLINK=r,w.MANIFEST_ERROR_ID_CODEC=s,w.MANIFEST_ERROR_ID_PARSE=t,w.MANIFEST_ERROR_ID_NOSTREAMS=u,w.TIMED_TEXT_ERROR_ID_PARSE=v,c.default=w,b.exports=c.default},{10:10,13:13,9:9}],152:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var b=a.streamId,c=a.mediaInfo.type,e=a.quality;d[b]=d[b]||{},d[b][c]=d[b][c]||{},d[b][c][e]=a}function b(a,b,c){return d[a][b][c]}function c(){d={}}var d={},e={save:a,extract:b,reset:c};return e}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="InitCache",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],153:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a&&k&&k.boxes&&0!==k.boxes.length?i(k.fetch(a)):null}function b(a){for(var b,c=k.fetchAll(a),d=[],e=0,f=c.length;e<f;e++)b=i(c[e]),b&&d.push(b);return d}function c(a){k=a}function d(){if(!k||!k.boxes||!k.boxes.length)return null;var a=k.boxes[k.boxes.length-1].type,c=b(a);return c[c.length-1]}function e(){return k._cursor.offset}function f(){l={offset:"_offset",size:"size",type:"type"},m={references:"references",timescale:"timescale",earliest_presentation_time:"earliest_presentation_time",first_offset:"first_offset"},n={reference_type:"reference_type",referenced_size:"referenced_size",subsegment_duration:"subsegment_duration"},o={id:"id",value:"value",timescale:"timescale",scheme_id_uri:"scheme_id_uri",presentation_time_delta:"presentation_time_delta",event_duration:"event_duration",message_data:"message_data"},p={timescale:"timescale"},q={sequence_number:"sequence_number"},r={base_data_offset:"base_data_offset",sample_description_index:"sample_description_index",default_sample_duration:"default_sample_duration",default_sample_size:"default_sample_size",default_sample_flags:"default_sample_flags",flags:"flags"},s={version:"version",baseMediaDecodeTime:"baseMediaDecodeTime",flags:"flags"},t={sample_count:"sample_count",first_sample_flags:"first_sample_flags",data_offset:"data_offset",flags:"flags",samples:"samples"},u={sample_size:"sample_size",sample_duration:"sample_duration",sample_composition_time_offset:"sample_composition_time_offset"}}function h(a,b,c){for(var d in c)b[d]=a[c[d]]}function i(a){if(!a)return null;var b,c,d=new g.default;switch(h(a,d,l),a.hasOwnProperty("_incomplete")&&(d.isComplete=!a._incomplete),d.type){case"sidx":if(h(a,d,m),d.references)for(b=0,c=d.references.length;b<c;b++)h(a.references[b],d.references[b],n);break;case"emsg":h(a,d,o);break;case"mdhd":h(a,d,p);break;case"mfhd":h(a,d,q);break;case"tfhd":h(a,d,r);break;case"tfdt":h(a,d,s);break;case"trun":if(h(a,d,t),d.samples)for(b=0,c=d.samples.length;b<c;b++)h(a.samples[b],d.samples[b],u)}return d}var j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o=void 0,p=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0;return j={getBox:a,getBoxes:b,setData:c,getLastBox:d,getOffset:e},f(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(165),g=d(f),h=a(10),i=d(h);e.__dashjs_factory_name="IsoFile",c.default=i.default.getClassFactory(e),b.exports=c.default},{10:10,165:165}],154:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){n=a,p=b,s=!1,t=NaN,v=null,q=(0,o.default)(h).getInstance(),w=g.default.BEST_GUESS_RULES,j.on(m.default.STREAM_INITIALIZED,f,this)}function b(){s=!1,t=NaN}function c(){return v}function d(){j.off(m.default.STREAM_INITIALIZED,f,this),b(),v=null,n=null,p=null,s=!1,t=NaN,w=null,q=null}function e(a){var b=((new Date).getTime()-t)/1e3;v=a.value,j.trigger(m.default.LIVE_EDGE_SEARCH_COMPLETED,{liveEdge:v,searchTime:b,error:null===v?new i.default(r,"live edge has not been found",null):null})}function f(a){!p.isDynamic()||s||a.error||(w=n.isTimeSyncCompleted()?g.default.TIME_SYNCHRONIZED_RULES:g.default.BEST_GUESS_RULES,u=(0,g.default)(h).getInstance().getRules(w),s=!0,t=(new Date).getTime(),q.applyRules(u,p,e,null,function(a,b){return b}))}var h=this.context,j=(0,k.default)(h).getInstance(),l=void 0,n=void 0,p=void 0,q=void 0,s=void 0,t=void 0,u=void 0,v=void 0,w=void 0;return l={initialize:a,abortSearch:b,getLiveEdge:c,reset:d}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(144),g=d(f),h=a(162),i=d(h),j=a(9),k=d(j),l=a(13),m=d(l),n=a(129),o=d(n),p=a(10),q=d(p),r=1;e.__dashjs_factory_name="LiveEdgeFinder";var s=q.default.getSingletonFactory(e);s.LIVE_EDGE_NOT_FOUND_ERROR_CODE=r,c.default=s,b.exports=c.default},{10:10,129:129,13:13,144:144,162:162,9:9}],155:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a,b){return JSON.stringify(a)===JSON.stringify(b)}var b=void 0;return b={areSimpleEquivalent:a}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="ObjectUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],156:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){return a}function b(a){return a}var c=void 0;return c={modifyRequestURL:a,modifyRequestHeader:b}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="RequestModifier",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],157:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){a&&a.videoModel&&(ba=a.videoModel)}function b(a){if(a.hasOwnProperty("begin")&&a.hasOwnProperty("end")){var b=o(a.begin),c=o(a.end);return[b,c]}return null}function c(){var a="cue_TTML_"+ca;return ca++,a}function d(a,b,c){function d(a,b){if(a.hasOwnProperty(b)){var c=a[b];f.indexOf(c)<0&&f.push(c)}}for(var e=[],f=[],g=[],h=0;h<a.length;h++){var i=a[h];d(i,"begin"),d(i,"end")}if(0===f.length)return g;if("undefined"!=typeof b&&"undefined"!=typeof c){for(var h=0;h<f.length;h++){var j=o(f[h]);b<j&&j<c&&e.push(j)}e.push(b),e.push(c)}else for(var h=0;h<f.length;h++)e.push(o(f[h]));e.sort(function(a,b){return a-b});for(var h=0;h<e.length-1;h++)g.push([e[h],e[h+1]]);return g}function e(a,b){return"undefined"!=typeof startInterval&&a<b&&(a=b),a}function f(a,b){return"undefined"!=typeof b&&a>b&&(a=b),a}function g(a,b,c){var d=o(a.begin),g=o(a.end);return d=e(d,b),g=f(g,c),"undefined"!=typeof b&&"undefined"!=typeof c&&(g<b||d>c)?(L("TTML: Cue "+d+"-"+g+" outside interval "+b+"-"+c),null):[d,g]}function h(a,c){var d=!0;if(a.hasOwnProperty("span")){var e=b(a.span);null!==e&&(d=e[0]<c[1]&&e[1]>c[0])}return d}function j(a,e,f){var j=void 0,k=void 0,l=void 0,m=void 0,n=void 0,o="",r=new i.default([],"",(!1));if(O=r.xml_str2json(a),!O)throw new Error("TTML document could not be parsed");if(ba.getTTMLRenderingDiv()&&(n="html"),j=O.tt,!j)throw new Error("TTML document lacks tt element");var s=p(j,"http://www.w3.org/ns/ttml");if(s&&q(j,s),m=j["tts:extent"],k=j.head,!k)throw new Error("TTML document lacks head element");if(k.layout&&(Q=k.layout.region_asArray),k.styling&&(P=k.styling.style_asArray),l=j.body,!l)throw new Error("TTML document lacks body element");var w=E(),x=ba.getElement().clientWidth,y=ba.getElement().clientHeight,z=[x/w[0],y/w[1]];V["font-size"]=z[1]+"px;";var D=[];if(Q)for(var J=0;J<Q.length;J++)D.push(B(JSON.parse(JSON.stringify(Q[J])),z));var K=p(O.tt,"http://www.w3.org/ns/ttml#parameter");j.hasOwnProperty(K+":frameRate")&&(j.frameRate=parseInt(j[K+":frameRate"],10));for(var M=[],N=j.body_asArray[0].__children,U=0;U<N.length;U++){var W=N[U].div,X=null;if(null===(X=b(W))){var Y=W.p_asArray;if(null===X&&(!Y||0===Y.length))return o="TTML has div that contains no timing and no paragraphs.",L(o),M;for(var Z=0;Z<Y.length;Z++){var $=Y[Z],_=$.span_asArray,aa=[];if($.hasOwnProperty("begin")&&$.hasOwnProperty("end")){var ca=g($,e,f);null!==ca&&aa.push(ca)}else aa=d(_,e,f);if(0!==aa.length)for(var da=$.__children,ea=0;ea<aa.length;ea++){for(var fa=aa[ea],ga=[],ha=0;ha<da.length;ha++){var ia=da[ha];h(ia,fa)&&ga.push(ia)}if(0!==ga.length)if("html"===n){S={},T={},R={};var ja=H($,W,z),ka=I($,z),la=ka[1];ka=ka[0];var ma=document.createElement("div");ma.className=la;var na=G(ga,z);na.className="cueDirUniWrapper",t("unicode-bidi",ka)&&(na.style.cssText+=u("unicode-bidi",ka),v("unicode-bidi",ka)),t("direction",ka)&&(na.style.cssText+=u("direction",ka),v("direction",ka)),t("padding-left",ka)&&t("padding-right",ka)&&(na.innerHTML=F(na,ka)),t("padding-left",ka)&&t("padding-right",ka)&&(v("padding-left",ka),v("padding-right",ka));var oa="";if(t("regionID",ja)){var pa=u("regionID",ja);oa=pa.slice(pa.indexOf(":")+1,pa.length-1)}ka&&(ma.style.cssText=ka.join(" ")+"display:flex;"),ja&&(ja=ja.join(" ")),ma.appendChild(na);var qa=document.createElement("div");qa.appendChild(ma),qa.id=c(),qa.style.cssText="position: absolute; margin: 0; display: flex; box-sizing: border-box; pointer-events: none;"+ja,0===Object.keys(R).length&&(R.defaultFontSize="100"),M.push({start:fa[0],end:fa[1],type:"html",cueHTMLElement:qa,regions:D,regionID:oa,cueID:qa.id,videoHeight:y,videoWidth:x,cellResolution:w,fontSize:R||{defaultFontSize:"100"},lineHeight:S,linePadding:T})}else{var ra="",sa=ga;sa.length&&sa.forEach(function(a){if(a.hasOwnProperty("span")){var b=a.span.__children;b.forEach(function(a){b.hasOwnProperty("metadata")||(a.hasOwnProperty("#text")?ra+=a["#text"].replace(/[\r\n]+/gm," ").trim():"br"in a&&(ra+="\n"))})}else ra+=a.hasOwnProperty("br")?"\n":a["#text"].replace(/[\r\n]+/gm," ").trim()}),M.push({start:fa[0],end:fa[1],data:ra,type:"text"})}}else o="TTML: Empty paragraph"}}else{var ta=void 0;if(W.region){var ua=C(Q,W.region);ta=A(ua,m)}ta||(ta=A(W,m));var va=j.head.metadata.image_asArray;if(void 0!==W["smpte:backgroundImage"])for(var wa=0;wa<va.length;wa++)"#"+va[wa]["xml:id"]===W["smpte:backgroundImage"]&&M.push({start:X[0],end:X[1],id:c(),data:"data:image/"+va[wa].imagetype.toLowerCase()+";base64, "+va[wa].__text,type:"image",layout:ta})}}if(""!==o&&L(o),M.length>0)return M;throw new Error(o)}function n(){N=/^([0-9][0-9]+):([0-5][0-9]):([0-5][0-9])|(60)(\.([0-9])+)?$/,R={},S={},T={},U={top:"auto;",left:"auto;",width:"90%;",height:"10%;","align-items":"flex-start;",overflow:"visible;","-ms-writing-mode":"lr-tb, horizontal-tb;","-webkit-writing-mode":"horizontal-tb;","-moz-writing-mode":"horizontal-tb;","writing-mode":"horizontal-tb;"},V={color:"rgb(255,255,255);",direction:"ltr;","font-family":"monospace, sans-serif;","font-style":"normal;","line-height":"normal;","font-weight":"normal;","text-align":"start;","justify-content":"flex-start;","text-decoration":"none;","unicode-bidi":"normal;","white-space":"normal;",width:"100%;"},W={monospace:"font-family: monospace;",sansSerif:"font-family: sans-serif;",serif:"font-family: serif;",monospaceSansSerif:"font-family: monospace, sans-serif;",monospaceSerif:"font-family: monospace, serif;",proportionalSansSerif:"font-family: Arial;",proportionalSerif:"font-family: Times New Roman;",default:"font-family: monospace, sans-serif;"},X={right:["justify-content: flex-end;","text-align: right;"],start:["justify-content: flex-start;","text-align: start;"],center:["justify-content: center;","text-align: center;"],end:["justify-content: flex-end;","text-align: end;"],left:["justify-content: flex-start;","text-align: left;"]},Y={start:"text-align: start;",center:"text-align: center;",end:"text-align: end;",auto:""},Z={wrap:"white-space: normal;",noWrap:"white-space: nowrap;"},$={normal:"unicode-bidi: normal;",embed:"unicode-bidi: embed;",bidiOverride:"unicode-bidi: bidi-override;"},_={before:"align-items: flex-start;",center:"align-items: center;",after:"align-items: flex-end;"},aa={lrtb:"-webkit-writing-mode: horizontal-tb;writing-mode: horizontal-tb;",rltb:"-webkit-writing-mode: horizontal-tb;writing-mode: horizontal-tb;direction: rtl;unicode-bidi: bidi-override;",tbrl:"-webkit-writing-mode: vertical-rl;writing-mode: vertical-rl;-webkit-text-orientation: upright;text-orientation: upright;",tblr:"-webkit-writing-mode: vertical-lr;writing-mode: vertical-lr;-webkit-text-orientation: upright;text-orientation: upright;",lr:"-webkit-writing-mode: horizontal-tb;writing-mode: horizontal-tb;",rl:"-webkit-writing-mode: horizontal-tb;writing-mode: horizontal-tb;direction: rtl;",tb:"-webkit-writing-mode: vertical-rl;writing-mode: vertical-rl;-webkit-text-orientation: upright;text-orientation: upright;"}}function o(a){var b,c,d,e=N.test(a);if(!e)return NaN;if(b=a.split(":"),c=parseFloat(b[0])*l+parseFloat(b[1])*m+parseFloat(b[2]),b[3]){if(d=O.tt.frameRate,!d||isNaN(d))return NaN;c+=parseFloat(b[3])/d}return c}function p(a,b){var c=Object.keys(a).filter(function(c){return("xmlns"===c.split(":")[0]||"xmlns"===c.split(":")[1])&&a[c]===b}).map(function(a){return a.split(":")[2]||a.split(":")[1]});return 1!=c.length?null:c[0]}function q(a,b){for(var c in a)if(a.hasOwnProperty(c)){if(("object"==typeof a[c]||a[c]instanceof Object)&&!Array.isArray(a[c]))q(a[c],b);else if(Array.isArray(a[c]))for(var d=0;d<a[c].length;d++)q(a[c][d],b);var e=c.slice(c.indexOf(b)+b.length+1);a[e]=a[c],delete a[c]}}function r(a){return a.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function s(a){var b=a.slice(1),c=b.match(/.{2}/g),d=parseFloat(parseInt(parseInt(c[3],16)/255*1e3,10)/1e3),e=c.slice(0,3).map(function(a){return parseInt(a,16)});return"rgba("+e.join(",")+","+d+");"}function t(a,b){for(var c=0;c<b.length;c++)if(b[c].indexOf(a)>-1)return!0;return!1}function u(a,b){for(var c=0;c<b.length;c++)if(b[c].indexOf(a)>-1)return b[c];return null}function v(a,b){b.splice(b.indexOf(u(a,b)),1)}function w(a,b){for(var c=0;c<a.length;c++)for(var d=0;d<b.length;d++)a[c]&&a[c].split(":")[0].indexOf(b[d].split(":")[0])>-1&&a.splice(c,1);return a.concat(b)}function x(a,b,c){var d=[];for(var e in a)if(a.hasOwnProperty(e)){var f=e.replace("ebutts:","");f=f.replace("xml:",""),f=f.replace("tts:",""),f=r(f),a[f]=a[e],delete a[e]}if("line-padding"in a){var g=parseFloat(a["line-padding"].slice(a["line-padding"].indexOf(":")+1,a["line-padding"].indexOf("c")));"id"in a&&(T[a.id]=g);var h=g*b[0]+"px;";d.push("padding-left:"+h),d.push("padding-right:"+h)}if("font-size"in a){var i=parseFloat(a["font-size"].slice(a["font-size"].indexOf(":")+1,a["font-size"].indexOf("%")));"id"in a&&(R[a.id]=i);var j=i/100*b[1]+"px;";d.push("font-size:"+j)}if("line-height"in a)if("normal"===a["line-height"])d.push("line-height: normal;");else{var k=parseFloat(a["line-height"].slice(a["line-height"].indexOf(":")+1,a["line-height"].indexOf("%")));"id"in a&&(S[a.id]=k);var l=k/100*b[1]+"px;";d.push("line-height:"+l)}"font-family"in a&&(a["font-family"]in W?d.push(W[a["font-family"]]):d.push("font-family:"+a["font-family"]+";")),"text-align"in a&&a["text-align"]in X&&(d.push(X[a["text-align"]][0]),d.push(X[a["text-align"]][1])),"multi-row-align"in a&&(t("text-align",d)&&"auto"!=a["multi-row-align"]&&v("text-align",d),a["multi-row-align"]in Y&&d.push(Y[a["multi-row-align"]]));var m;return"background-color"in a&&(a["background-color"].indexOf("#")>-1&&a["background-color"].length-1===8?(m=s(a["background-color"]),d.push("background-color: "+m)):d.push("background-color:"+a["background-color"]+";")),"color"in a&&(a.color.indexOf("#")>-1&&a.color.length-1===8?(m=s(a.color),d.push("color: "+m)):d.push("color:"+a.color+";")),"wrap-option"in a&&(a["wrap-option"]in Z?d.push(Z[a["wrap-option"]]):d.push("white-space:"+a["wrap-option"])),"unicode-bidi"in a&&(a["unicode-bidi"]in $?d.push($[a["unicode-bidi"]]):d.push("unicode-bidi:"+a["unicode-bidi"])),"font-style"in a&&d.push("font-style:"+a["font-style"]+";"),"font-weight"in a&&d.push("font-weight:"+a["font-weight"]+";"),"direction"in a&&d.push("direction:"+a.direction+";"),"text-decoration"in a&&d.push("text-decoration:"+a["text-decoration"]+";"),c&&(d=d.concat(B(a,b))),O.tt.hasOwnProperty("xml:space")&&"preserve"===O.tt["xml:space"]&&d.push("white-space: pre;"),d}function y(a,b){for(var c=0;c<a.length;c++){var d=a[c];if(d["xml:id"]===b||d.id===b)return d}return null}function z(a,b,c){var d=[],e=a.match(/\S+/g);return e.forEach(function(a){var e=y(P,a);if(e){var f=x(JSON.parse(JSON.stringify(e)),b,c);d=d.concat(f)}}),d}function A(a,b){var c=/([\d\.]+)(%|px)\s+([\d\.]+)(%|px)/;if("tts:extent"in a&&"tts:origin"in a){var d=c.exec(a["tts:extent"]),e=c.exec(a["tts:origin"]);if(null===d||null===e)return L("Bad extent or origin: "+a["tts:extent"]+" "+a["tts:origin"]),null;var f=parseFloat(d[1]),g=parseFloat(d[3]),h=parseFloat(e[1]),i=parseFloat(e[3]);if(b){var j=c.exec(b);if(null===j||"px"!==j[2]||"px"!==j[4])return L("Bad tt.extent: "+b),null;var k=parseFloat(j[1]),l=parseFloat(j[3]);"px"===d[2]&&(f=f/k*100),"px"===d[4]&&(g=g/l*100),"px"===e[2]&&(h=h/k*100),"px"===e[4]&&(i=i/l*100)}return{left:h,top:i,width:f,height:g}}return null}function B(a,b){var c=[];for(var d in a){var e=d.replace("tts:","");e=e.replace("xml:",""),e=r(e),a[e]=a[d],e!==d&&delete a[d]}if("extent"in a){var f=a.extent.split(/\s/);c.push("width: "+f[0]+";"),c.push("height: "+f[1]+";")}if("origin"in a){var g=a.origin.split(/\s/);c.push("left: "+g[0]+";"),c.push("top: "+g[1]+";")}if("display-align"in a&&c.push(_[a["display-align"]]),"writing-mode"in a&&c.push(aa[a["writing-mode"]]),"style"in a){var h=z(a.style,b,!0);c=c.concat(h)}return"padding"in a&&c.push("padding:"+a.padding+";"),"overflow"in a&&c.push("overflow:"+a.overflow+";"),"show-background"in a&&c.push("show-background:"+a["show-background"]+";"),"id"in a&&c.push("regionID:"+a.id+";"),c}function C(a,b){for(var c=0;c<a.length;c++){var d=a[c];if(d["xml:id"]===b||d.id===b)return d}return null}function D(a,b){var c=[],d=a.match(/\S+/g);return d.forEach(function(a){var d=C(Q,a);if(d){var e=B(JSON.parse(JSON.stringify(d)),b);c=c.concat(e)}}),c}function E(){var a=[32,15];return O.tt.hasOwnProperty("ttp:cellResolution")?O.tt["ttp:cellResolution"].split(" ").map(parseFloat):a}function F(a,b){for(var c=u("padding-left",b),d=u("padding-right",b),e=c.concat(" "+d+" "),f="",g="",h="",i=Array.prototype.slice.call(a.children),j=a.getElementsByClassName("lineBreak")[0],k=i.indexOf(j),l=[];k!=-1;)l.push(k),k=i.indexOf(j,k+1);var m="</span>",n="<br>",o='<span class="spanPadding" style="-webkit-box-decoration-break: clone; box-decoration-break: clone; ';if(l.length)l.forEach(function(a,b){if(0===b){for(var c="",d=0;d<a;d++)f+=i[d].outerHTML,0===d&&(c=e.concat(i[d].style.cssText));f=o+c+'">'+f}for(var j="",k=a+1;k<i.length;k++)g+=i[k].outerHTML,k===i.length-1&&(j+=e.concat(i[k].style.cssText));g=o+j+'">'+g,f&&g&&b===l.length-1?h+=f+m+n+g+m:f&&g&&b!==l.length-1?h+=f+m+n+g+m+n:f&&!g?h+=f+m:!f&&g&&b===l.length-1?h+=g+m:!f&&g&&b!==l.length-1&&(h+=g+m+n)});else{for(var p="",q=0;q<i.length;q++)p+=i[q].style.cssText;h=o+e+p+'">'+a.innerHTML+m}return h}function G(a,b){var c=document.createElement("div");return a.forEach(function(a){if(!a.hasOwnProperty("metadata"))if(a.hasOwnProperty("span")){var d=a.span.__children,e=document.createElement("span");if(a.span.hasOwnProperty("style")){var f=z(a.span.style,b);e.className="spanPadding "+a.span.style,e.style.cssText=f.join(" ")}d.forEach(function(a){if(!d.hasOwnProperty("metadata"))if(a.hasOwnProperty("#text")){var b=document.createTextNode(a["#text"]);e.appendChild(b)}else if("br"in a){e.hasChildNodes()&&c.appendChild(e);var f=document.createElement("br");f.className="lineBreak",c.appendChild(f);var g=document.createElement("span");g.className=e.className,g.style.cssText=e.style.cssText,e=g}}),c.appendChild(e)}else if(a.hasOwnProperty("br")){var g=document.createElement("br");g.className="lineBreak",c.appendChild(g)}else if(a.hasOwnProperty("#text")){var h=document.createElement("span");h.textContent=a["#text"],c.appendChild(h)}}),c}function H(a,b,c){var d,e,f=[],g=a.region,h=b.region;return h&&(d=D(h,c)),g?(e=f.concat(D(g,c)),f=d?w(d,e):e):d&&(f=d),J(f,U),f}function I(a,b){var c,d,e,f=[],g=a.style,h=O.tt.body.style,i=O.tt.body.div.style,j="";return h&&(c=z(h,b),j="paragraph "+h),i&&(d=z(i,b),c?(d=w(c,d),j+=" "+i):j="paragraph "+i),g?(e=z(g,b),c&&d?(f=w(d,e),j+=" "+g):c?(f=w(c,e),j+=" "+g):d?(f=w(d,e),j+=" "+g):(f=e,j="paragraph "+g)):c&&!d?f=c:!c&&d&&(f=d),J(f,V),[f,j]}function J(a,b){for(var c in b)b.hasOwnProperty(c)&&(t(c,a)||a.push(c+":"+b[c]))}var K=this.context,L=(0,k.default)(K).getInstance().log,M=void 0,N=void 0,O=void 0,P=void 0,Q=void 0,R=void 0,S=void 0,T=void 0,U=void 0,V=void 0,W=void 0,X=void 0,Y=void 0,Z=void 0,$=void 0,_=void 0,aa=void 0,ba=void 0,ca=0;return M={parse:j,setConfig:a},n(),M}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(4),i=d(h),j=a(8),k=d(j),l=3600,m=60;e.__dashjs_factory_name="TTMLParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10,4:4,8:8}],158:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(a){var b="";return a.indexOf("/")!==-1&&(a.indexOf("?")!==-1&&(a=a.substring(0,a.indexOf("?"))),b=a.substring(0,a.lastIndexOf("/")+1)),b}function b(a){var b=a.match(i);return b?b[1]:""}function c(a){return!g.test(a)}function d(a){return g.test(a)&&"/"===a.charAt(0)}function e(a){return h.test(a)}var f=void 0,g=/^(?:(?:[a-z]+:)?\/)?\//i,h=/^https?:\/\//i,i=/^(https?:\/\/[^\/]+)\/?/i;return f={parseBaseUrl:a,parseOrigin:b,isRelative:c,isPathAbsolute:d,isHTTPURL:e}}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f);e.__dashjs_factory_name="URLUtils",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10}],159:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(){function a(){k=/(?:\r\n|\r|\n)/gm,l=/-->/,m=/(^[\s]+|[\s]+$)/g,n=/\s\b/g}function b(a){var b,e,g=[];a=a.split(k),b=a.length,e=-1;for(var i=0;i<b;i++){var j=a[i];if(j.length>0&&"WEBVTT"!==j&&j.match(l)){var n=d(j),o=n.cuePoints,p=n.styles,q=f(a,i+1),r=c(o[0].replace(m,"")),s=c(o[1].replace(m,""));!isNaN(r)&&!isNaN(s)&&r>=e&&s>r?""!==q?(e=r,g.push({start:r,end:s,data:q,styles:p})):h("Skipping cue due to empty/malformed cue text"):h("Skipping cue due to incorrect cue timing")}}return g}function c(a){var b=a.split(":"),c=b.length-1;return a=60*parseInt(b[c-1],10)+parseFloat(b[c]),2===c&&(a+=3600*parseInt(b[0],10)),a}function d(a){var b=a.split(l),c=b[1].split(n);return c.shift(),b[1]=c[0],c.shift(),{cuePoints:b,styles:e(c)}}function e(a){var b={};return a.forEach(function(a){if(a.split(/:/).length>1){var c=a.split(/:/)[1];c&&c.search(/%/)!=-1&&(c=parseInt(c.replace(/%/,""),10)),(a.match(/align/)||a.match(/A/))&&(b.align=c),(a.match(/line/)||a.match(/L/))&&(b.line=c),(a.match(/position/)||a.match(/P/))&&(b.position=c),(a.match(/size/)||a.match(/S/))&&(b.size=c)}}),b}function f(a,b){for(var c,d=b,e="",f="";""!==a[d]&&d<a.length;)d++;if(c=d-b,c>1)for(var g=0;g<c;g++){if(f=a[b+g],f.match(l)){e="";break}e+=f,g!==c-1&&(e+="\n")}else f=a[b],f.match(l)||(e=f);return decodeURI(e)}var g=this.context,h=(0,i.default)(g).getInstance().log,j=void 0,k=void 0,l=void 0,m=void 0,n=void 0;return j={parse:b},a(),j}Object.defineProperty(c,"__esModule",{value:!0});var f=a(10),g=d(f),h=a(8),i=d(h);e.__dashjs_factory_name="VTTParser",c.default=g.default.getSingletonFactory(e),b.exports=c.default},{10:10,8:8}],160:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.bitrate=null,this.width=null,this.height=null,this.qualityIndex=NaN};c.default=e,b.exports=c.default},{}],161:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.streamId=null,this.mediaInfo=null,this.segmentType=null,this.quality=NaN,this.index=NaN,this.bytes=null,this.start=NaN,this.end=NaN,this.duration=NaN};c.default=e,b.exports=c.default},{}],162:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(b,c,e){d(this,a),this.code=b||null,this.message=c||null,this.data=e||null};c.default=e,b.exports=c.default},{}],163:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.action=a.ACTION_DOWNLOAD,this.startTime=NaN,this.mediaType=null,this.mediaInfo=null,this.type=null,this.duration=NaN,this.timescale=NaN,this.range=null,this.url=null,this.serviceLocation=null,this.requestStartDate=null,this.firstByteDate=null,this.requestEndDate=null,this.quality=NaN,this.index=NaN,this.availabilityStartTime=null,this.availabilityEndTime=null,this.wallStartTime=null,this.bytesLoaded=NaN,this.bytesTotal=NaN,this.delayLoadingTime=NaN,this.responseType="arraybuffer"};e.ACTION_DOWNLOAD="download",e.ACTION_COMPLETE="complete",c.default=e,b.exports=c.default},{}],164:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(163),i=d(h),j=function(a){function b(a){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.url=a||null,this.checkForExistenceOnly=!0}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{163:163}],165:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.offset=NaN,this.type=null,this.size=NaN,this.isComplete=!0};c.default=e,b.exports=c.default},{}],166:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.DVRWindowSize=NaN,this.loadedTime=null,this.availableFrom=null,this.minBufferTime=NaN,this.duration=NaN,this.isDynamic=!1,this.maxFragmentDuration=null};c.default=e,b.exports=c.default},{}],167:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=null,this.type=null,this.streamInfo=null,this.representationCount=0,this.lang=null,this.viewpoint=null,this.accessibility=null,this.audioChannelConfiguration=null,this.roles=null,this.codec=null,this.mimeType=null,this.contentProtection=null,this.isText=!1,this.KID=null,this.bitrateList=null};c.default=e,b.exports=c.default},{}],168:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.TcpList=[],this.HttpList=[],this.RepSwitchList=[],this.BufferLevel=[],this.BufferState=[],this.PlayList=[],this.DroppedFrames=[],this.SchedulingInfo=[],this.DVRInfo=[],this.ManifestUpdate=[],this.RequestsQueue=null,this.DVBErrors=[],this.BolaState=[]};c.default=e,b.exports=c.default},{}],169:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.index=null,this.start=NaN,this.duration=NaN,this.manifestInfo=null,this.isLast=!0,this.isFirst=!0};c.default=e,b.exports=c.default},{}],170:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}Object.defineProperty(c,"__esModule",{value:!0});var g=function(a,b,c){for(var d=!0;d;){var e=a,f=b,g=c;d=!1,null===e&&(e=Function.prototype);var h=Object.getOwnPropertyDescriptor(e,f);if(void 0!==h){if("value"in h)return h.value;var i=h.get;if(void 0===i)return;return i.call(g)}var j=Object.getPrototypeOf(e);if(null===j)return;a=j,b=f,c=g,d=!0,h=j=void 0}},h=a(163),i=d(h),j=function(a){function b(a,c){e(this,b),g(Object.getPrototypeOf(b.prototype),"constructor",this).call(this),this.url=a||null,this.type=c||null,this.mediaType="stream",this.responseType="text"}return f(b,a),b}(i.default);c.default=j,b.exports=c.default},{163:163}],171:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.video=null,this.captionData=null,this.label=null,this.lang=null,this.defaultTrack=!1,this.kind=null,this.isFragmented=!1,this.isEmbedded=!1};c.default=e,b.exports=c.default},{}],172:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.id=null,this.quality=null,this.DVRWindow=null,this.fragmentDuration=null,this.mediaInfo=null,this.MSETimeOffset=null};c.default=e,b.exports=c.default},{}],173:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){ +d(this,a),this.t=null,this.xywh=null,this.track=null,this.id=null,this.s=null};c.default=e,b.exports=c.default},{}],174:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this._s=void 0};c.default=e,b.exports=c.default},{}],175:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.t=null,this.level=null};c.default=e,b.exports=c.default},{}],176:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{default:a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(63),g=d(f),h=function a(){e(this,a),this.target=null,this.state=g.default.BUFFER_EMPTY};c.default=h,b.exports=c.default},{63:63}],177:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.time=null,this.range=null,this.manifestInfo=null};c.default=e,b.exports=c.default},{}],178:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.time=null,this.droppedFrames=null};c.default=e,b.exports=c.default},{}],179:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.tcpid=null,this.type=null,this.url=null,this.actualurl=null,this.range=null,this.trequest=null,this.tresponse=null,this.responsecode=null,this.interval=null,this.trace=[],this._stream=null,this._tfinish=null,this._mediaduration=null,this._responseHeaders=null,this._serviceLocation=null},f=function a(){d(this,a),this.s=null,this.d=null,this.b=[]};e.MPD_TYPE="MPD",e.XLINK_EXPANSION_TYPE="XLinkExpansion",e.INIT_SEGMENT_TYPE="InitializationSegment",e.INDEX_SEGMENT_TYPE="IndexSegment",e.MEDIA_SEGMENT_TYPE="MediaSegment",e.BITSTREAM_SWITCHING_SEGMENT_TYPE="BitstreamSwitchingSegment",e.OTHER_TYPE="other",c.HTTPRequest=e,c.HTTPRequestTrace=f},{}],180:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.type=null,this.requestTime=null,this.fetchTime=null,this.availabilityStartTime=null,this.presentationStartTime=0,this.clientTimeOffset=0,this.currentTime=null,this.buffered=null,this.latency=0,this.streamInfo=[],this.trackInfo=[]},f=function a(){d(this,a),this.id=null,this.index=null,this.start=null,this.duration=null},g=function a(){d(this,a),this.id=null,this.index=null,this.mediaType=null,this.streamIndex=null,this.presentationTimeOffset=null,this.startNumber=null,this.fragmentInfoType=null};c.ManifestUpdate=e,c.ManifestUpdateStreamInfo=f,c.ManifestUpdateTrackInfo=g},{}],181:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.start=null,this.mstart=null,this.starttype=null,this.trace=[]};e.INITIAL_PLAYOUT_START_REASON="initial_playout",e.SEEK_START_REASON="seek",e.RESUME_FROM_PAUSE_START_REASON="resume",e.METRICS_COLLECTION_START_REASON="metrics_collection_start";var f=function a(){d(this,a),this.representationid=null,this.subreplevel=null,this.start=null,this.mstart=null,this.duration=null,this.playbackspeed=null,this.stopreason=null};f.REPRESENTATION_SWITCH_STOP_REASON="representation_switch",f.REBUFFERING_REASON="rebuffering",f.USER_REQUEST_STOP_REASON="user_request",f.END_OF_PERIOD_STOP_REASON="end_of_period",f.END_OF_CONTENT_STOP_REASON="end_of_content",f.METRICS_COLLECTION_STOP_REASON="metrics_collection_end",f.FAILURE_STOP_REASON="failure",c.PlayList=e,c.PlayListTrace=f},{}],182:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.t=null,this.mt=null,this.to=null,this.lto=null};c.default=e,b.exports=c.default},{}],183:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.loadingRequests=[],this.executedRequests=[]};c.default=e,b.exports=c.default},{}],184:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.mediaType=null,this.t=null,this.type=null,this.startTime=null,this.availabilityStartTime=null,this.duration=null,this.quality=null,this.range=null,this.state=null};c.default=e,b.exports=c.default},{}],185:[function(a,b,c){"use strict";function d(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var e=function a(){d(this,a),this.tcpid=null,this.dest=null,this.topen=null,this.tclose=null,this.tconnect=null};c.default=e,b.exports=c.default},{}]},{},[5]); +//# sourceMappingURL=dash.all.min.js.map \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/deps/hls.min.js b/src/main/webapp/static/js/paella/player/resources/deps/hls.min.js new file mode 100644 index 0000000000000000000000000000000000000000..6687506934a03c491eb159231fe4b03f3cd30482 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/deps/hls.min.js @@ -0,0 +1,32 @@ +// Copyright (c) 2017 Dailymotion (http://www.dailymotion.com) + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// src/remux/mp4-generator.js and src/demux/exp-golomb.js implementation in this project +// are derived from the HLS library for video.js (https://github.com/videojs/videojs-contrib-hls) + +// That work is also covered by the Apache 2 License, following copyright: +// Copyright (c) 2013-2015 Brightcove + + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Hls=e():t.Hls=e()}("undefined"!=typeof self?self:this,function(){return function(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/dist/",e(e.s=27)}([function(t,e,r){"use strict";function i(){}function a(t,e){return e="["+t+"] > "+e}function n(t){var e=self.console[t];return e?function(){for(var r=arguments.length,i=Array(r),n=0;n<r;n++)i[n]=arguments[n];i[0]&&(i[0]=a(t,i[0])),e.apply(self.console,i)}:i}function o(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];r.forEach(function(e){u[e]=t[e]?t[e].bind(t):n(e)})}r.d(e,"a",function(){return d}),r.d(e,"b",function(){return c});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l={trace:i,debug:i,log:i,warn:i,info:i,error:i},u=l,d=function(t){if(!0===t||"object"===(void 0===t?"undefined":s(t))){o(t,"debug","log","info","warn","error");try{u.log()}catch(t){u=l}}else u=l},c=u},function(t,e,r){"use strict";var i={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_CREATED:"hlsBufferCreated",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_SWITCHING:"hlsLevelSwitching",LEVEL_SWITCHED:"hlsLevelSwitched",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",AUDIO_TRACKS_UPDATED:"hlsAudioTracksUpdated",AUDIO_TRACK_SWITCHING:"hlsAudioTrackSwitching",AUDIO_TRACK_SWITCHED:"hlsAudioTrackSwitched",AUDIO_TRACK_LOADING:"hlsAudioTrackLoading",AUDIO_TRACK_LOADED:"hlsAudioTrackLoaded",SUBTITLE_TRACKS_UPDATED:"hlsSubtitleTracksUpdated",SUBTITLE_TRACK_SWITCH:"hlsSubtitleTrackSwitch",SUBTITLE_TRACK_LOADING:"hlsSubtitleTrackLoading",SUBTITLE_TRACK_LOADED:"hlsSubtitleTrackLoaded",SUBTITLE_FRAG_PROCESSED:"hlsSubtitleFragProcessed",INIT_PTS_FOUND:"hlsInitPtsFound",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_DECRYPTED:"hlsFragDecrypted",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",FPS_DROP_LEVEL_CAPPING:"hlsFpsDropLevelCapping",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded",STREAM_STATE_TRANSITION:"hlsStreamStateTransition"};e.a=i},function(t,e,r){"use strict";r.d(e,"b",function(){return i}),r.d(e,"a",function(){return a});var i={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",KEY_SYSTEM_ERROR:"keySystemError",MUX_ERROR:"muxError",OTHER_ERROR:"otherError"},a={KEY_SYSTEM_NO_KEYS:"keySystemNoKeys",KEY_SYSTEM_NO_ACCESS:"keySystemNoAccess",KEY_SYSTEM_NO_SESSION:"keySystemNoSession",KEY_SYSTEM_LICENSE_REQUEST_FAILED:"keySystemLicenseRequestFailed",MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",AUDIO_TRACK_LOAD_ERROR:"audioTrackLoadError",AUDIO_TRACK_LOAD_TIMEOUT:"audioTrackLoadTimeOut",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",REMUX_ALLOC_ERROR:"remuxAllocError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_ADD_CODEC_ERROR:"bufferAddCodecError",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",BUFFER_NUDGE_ON_STALL:"bufferNudgeOnStall",INTERNAL_EXCEPTION:"internalException"}},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(0),n=r(2),o=r(1),s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},l=new Set(["hlsEventGeneric","hlsHandlerDestroying","hlsHandlerDestroyed"]),u=function(){function t(e){i(this,t),this.hls=e,this.onEvent=this.onEvent.bind(this);for(var r=arguments.length,a=Array(r>1?r-1:0),n=1;n<r;n++)a[n-1]=arguments[n];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return t.prototype.destroy=function(){this.onHandlerDestroying(),this.unregisterListeners(),this.onHandlerDestroyed()},t.prototype.onHandlerDestroying=function(){},t.prototype.onHandlerDestroyed=function(){},t.prototype.isEventHandler=function(){return"object"===s(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent},t.prototype.registerListeners=function(){this.isEventHandler()&&this.handledEvents.forEach(function(t){if(l.has(t))throw new Error("Forbidden event-name: "+t);this.hls.on(t,this.onEvent)},this)},t.prototype.unregisterListeners=function(){this.isEventHandler()&&this.handledEvents.forEach(function(t){this.hls.off(t,this.onEvent)},this)},t.prototype.onEvent=function(t,e){this.onEventGeneric(t,e)},t.prototype.onEventGeneric=function(t,e){var r=function(t,e){var r="on"+t.replace("hls","");if("function"!=typeof this[r])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+r+")");return this[r].bind(this,e)};try{r.call(this,t,e).call()}catch(e){a.b.error("An internal error happened while handling event "+t+'. Error message: "'+e.message+'". Here is a stacktrace:',e),this.hls.trigger(o.a.ERROR,{type:n.b.OTHER_ERROR,details:n.a.INTERNAL_EXCEPTION,fatal:!1,event:t,err:e})}},t}();e.a=u},function(t,e,r){!function(e){var r=/^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,i=/^([^\/;?#]*)(.*)$/,a=/(?:\/|^)\.(?=\/)/g,n=/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,o={buildAbsoluteURL:function(t,e,r){if(r=r||{},t=t.trim(),!(e=e.trim())){if(!r.alwaysNormalize)return t;var a=o.parseURL(t);if(!a)throw new Error("Error trying to parse base URL.");return a.path=o.normalizePath(a.path),o.buildURLFromParts(a)}var n=o.parseURL(e);if(!n)throw new Error("Error trying to parse relative URL.");if(n.scheme)return r.alwaysNormalize?(n.path=o.normalizePath(n.path),o.buildURLFromParts(n)):e;var s=o.parseURL(t);if(!s)throw new Error("Error trying to parse base URL.");if(!s.netLoc&&s.path&&"/"!==s.path[0]){var l=i.exec(s.path);s.netLoc=l[1],s.path=l[2]}s.netLoc&&!s.path&&(s.path="/");var u={scheme:s.scheme,netLoc:n.netLoc,path:null,params:n.params,query:n.query,fragment:n.fragment};if(!n.netLoc&&(u.netLoc=s.netLoc,"/"!==n.path[0]))if(n.path){var d=s.path,c=d.substring(0,d.lastIndexOf("/")+1)+n.path;u.path=o.normalizePath(c)}else u.path=s.path,n.params||(u.params=s.params,n.query||(u.query=s.query));return null===u.path&&(u.path=r.alwaysNormalize?o.normalizePath(n.path):n.path),o.buildURLFromParts(u)},parseURL:function(t){var e=r.exec(t);return e?{scheme:e[1]||"",netLoc:e[2]||"",path:e[3]||"",params:e[4]||"",query:e[5]||"",fragment:e[6]||""}:null},normalizePath:function(t){for(t=t.split("").reverse().join("").replace(a,"");t.length!==(t=t.replace(n,"")).length;);return t.split("").reverse().join("")},buildURLFromParts:function(t){return t.scheme+t.netLoc+t.path+t.params+t.query+t.fragment}};t.exports=o}()},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}r.d(e,"b",function(){return n});var a=function(){function t(){i(this,t)}return t.isHeader=function(t,e){return e+10<=t.length&&73===t[e]&&68===t[e+1]&&51===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},t.isFooter=function(t,e){return e+10<=t.length&&51===t[e]&&68===t[e+1]&&73===t[e+2]&&t[e+3]<255&&t[e+4]<255&&t[e+6]<128&&t[e+7]<128&&t[e+8]<128&&t[e+9]<128},t.getID3Data=function(e,r){for(var i=r,a=0;t.isHeader(e,r);){a+=10;a+=t._readSize(e,r+6),t.isFooter(e,r+10)&&(a+=10),r+=a}if(a>0)return e.subarray(i,i+a)},t._readSize=function(t,e){var r=0;return r=(127&t[e])<<21,r|=(127&t[e+1])<<14,r|=(127&t[e+2])<<7,r|=127&t[e+3]},t.getTimeStamp=function(e){for(var r=t.getID3Frames(e),i=0;i<r.length;i++){var a=r[i];if(t.isTimeStampFrame(a))return t._readTimeStamp(a)}},t.isTimeStampFrame=function(t){return t&&"PRIV"===t.key&&"com.apple.streaming.transportStreamTimestamp"===t.info},t._getFrameData=function(e){var r=String.fromCharCode(e[0],e[1],e[2],e[3]),i=t._readSize(e,4);return{type:r,size:i,data:e.subarray(10,10+i)}},t.getID3Frames=function(e){for(var r=0,i=[];t.isHeader(e,r);){var a=t._readSize(e,r+6);r+=10;for(var n=r+a;r+8<n;){var o=t._getFrameData(e.subarray(r)),s=t._decodeFrame(o);s&&i.push(s),r+=o.size+10}t.isFooter(e,r)&&(r+=10)}return i},t._decodeFrame=function(e){return"PRIV"===e.type?t._decodePrivFrame(e):"T"===e.type[0]?t._decodeTextFrame(e):"W"===e.type[0]?t._decodeURLFrame(e):void 0},t._readTimeStamp=function(t){if(8===t.data.byteLength){var e=new Uint8Array(t.data),r=1&e[3],i=(e[4]<<23)+(e[5]<<15)+(e[6]<<7)+e[7];return i/=45,r&&(i+=47721858.84),Math.round(i)}},t._decodePrivFrame=function(e){if(!(e.size<2)){var r=t._utf8ArrayToStr(e.data,!0),i=new Uint8Array(e.data.subarray(r.length+1));return{key:e.type,info:r,data:i.buffer}}},t._decodeTextFrame=function(e){if(!(e.size<2)){if("TXXX"===e.type){var r=1,i=t._utf8ArrayToStr(e.data.subarray(r));r+=i.length+1;var a=t._utf8ArrayToStr(e.data.subarray(r));return{key:e.type,info:i,data:a}}var n=t._utf8ArrayToStr(e.data.subarray(1));return{key:e.type,data:n}}},t._decodeURLFrame=function(e){if("WXXX"===e.type){if(e.size<2)return;var r=1,i=t._utf8ArrayToStr(e.data.subarray(r));r+=i.length+1;var a=t._utf8ArrayToStr(e.data.subarray(r));return{key:e.type,info:i,data:a}}var n=t._utf8ArrayToStr(e.data);return{key:e.type,data:n}},t._utf8ArrayToStr=function(t){for(var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.length,i=void 0,a=void 0,n=void 0,o="",s=0;s<r;){if(0===(i=t[s++])&&e)return o;if(0!==i&&3!==i)switch(i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:o+=String.fromCharCode(i);break;case 12:case 13:a=t[s++],o+=String.fromCharCode((31&i)<<6|63&a);break;case 14:a=t[s++],n=t[s++],o+=String.fromCharCode((15&i)<<12|(63&a)<<6|(63&n)<<0)}}return o},t}(),n=a._utf8ArrayToStr;e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(4),n=r.n(a),o=r(16),s=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),l=function(){function t(){var e;i(this,t),this._url=null,this._byteRange=null,this._decryptdata=null,this.tagList=[],this._elementaryStreams=(e={},e[t.ElementaryStreamTypes.AUDIO]=!1,e[t.ElementaryStreamTypes.VIDEO]=!1,e)}return t.prototype.addElementaryStream=function(t){this._elementaryStreams[t]=!0},t.prototype.hasElementaryStream=function(t){return!0===this._elementaryStreams[t]},t.prototype.createInitializationVector=function(t){for(var e=new Uint8Array(16),r=12;r<16;r++)e[r]=t>>8*(15-r)&255;return e},t.prototype.fragmentDecryptdataFromLevelkey=function(t,e){var r=t;return t&&t.method&&t.uri&&!t.iv&&(r=new o.a,r.method=t.method,r.baseuri=t.baseuri,r.reluri=t.reluri,r.iv=this.createInitializationVector(e)),r},s(t,[{key:"url",get:function(){return!this._url&&this.relurl&&(this._url=n.a.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url},set:function(t){this._url=t}},{key:"programDateTime",get:function(){return!this._programDateTime&&this.rawProgramDateTime&&(this._programDateTime=new Date(Date.parse(this.rawProgramDateTime))),this._programDateTime}},{key:"byteRange",get:function(){if(!this._byteRange&&!this.rawByteRange)return[];if(this._byteRange)return this._byteRange;var t=[];if(this.rawByteRange){var e=this.rawByteRange.split("@",2);if(1===e.length){var r=this.lastByteRangeEndOffset;t[0]=r||0}else t[0]=parseInt(e[1]);t[1]=parseInt(e[0])+t[0],this._byteRange=t}return t}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"decryptdata",get:function(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}}],[{key:"ElementaryStreamTypes",get:function(){return{AUDIO:"audio",VIDEO:"video"}}}]),t}();e.a=l},function(t,e,r){"use strict";var i={search:function(t,e){for(var r=0,i=t.length-1,a=null,n=null;r<=i;){a=(r+i)/2|0,n=t[a];var o=e(n);if(o>0)r=a+1;else{if(!(o<0))return n;i=a-1}}return null}};e.a=i},function(t,e,r){"use strict";var i={isBuffered:function(t,e){try{if(t)for(var r=t.buffered,i=0;i<r.length;i++)if(e>=r.start(i)&&e<=r.end(i))return!0}catch(t){}return!1},bufferInfo:function(t,e,r){try{if(t){var i=t.buffered,a=[],n=void 0;for(n=0;n<i.length;n++)a.push({start:i.start(n),end:i.end(n)});return this.bufferedInfo(a,e,r)}}catch(t){}return{len:0,start:e,end:e,nextStart:void 0}},bufferedInfo:function(t,e,r){var i=[],a=void 0,n=void 0,o=void 0,s=void 0,l=void 0;for(t.sort(function(t,e){var r=t.start-e.start;return r||e.end-t.end}),l=0;l<t.length;l++){var u=i.length;if(u){var d=i[u-1].end;t[l].start-d<r?t[l].end>d&&(i[u-1].end=t[l].end):i.push(t[l])}else i.push(t[l])}for(l=0,a=0,n=o=e;l<i.length;l++){var c=i[l].start,h=i[l].end;if(e+r>=c&&e<h)n=c,o=h,a=o-e;else if(e+r<c){s=c;break}}return{len:a,start:n,end:o,nextStart:s}}};e.a=i},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(33),n=r(34),o=r(35),s=r(2),l=r(0),u=function(){function t(e,r){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=a.removePKCS7Padding,o=void 0===n||n;if(i(this,t),this.logEnabled=!0,this.observer=e,this.config=r,this.removePKCS7Padding=o,o)try{var s=crypto||self.crypto;this.subtle=s.subtle||s.webkitSubtle}catch(t){}this.disableWebCrypto=!this.subtle}return t.prototype.isSync=function(){return this.disableWebCrypto&&this.config.enableSoftwareAES},t.prototype.decrypt=function(t,e,r,i){var s=this;if(this.disableWebCrypto&&this.config.enableSoftwareAES){this.logEnabled&&(l.b.log("JS AES decrypt"),this.logEnabled=!1);var u=this.decryptor;u||(this.decryptor=u=new o.a),u.expandKey(e),i(u.decrypt(t,0,r,this.removePKCS7Padding))}else{this.logEnabled&&(l.b.log("WebCrypto AES decrypt"),this.logEnabled=!1);var d=this.subtle;this.key!==e&&(this.key=e,this.fastAesKey=new n.a(d,e)),this.fastAesKey.expandKey().then(function(n){new a.a(d,r).decrypt(t,n).catch(function(a){s.onWebCryptoError(a,t,e,r,i)}).then(function(t){i(t)})}).catch(function(a){s.onWebCryptoError(a,t,e,r,i)})}},t.prototype.onWebCryptoError=function(t,e,r,i,a){this.config.enableSoftwareAES?(l.b.log("WebCrypto Error, disable WebCrypto API"),this.disableWebCrypto=!0,this.logEnabled=!0,this.decrypt(e,r,i,a)):(l.b.error("decrypting error : "+t.message),this.observer.trigger(Event.ERROR,{type:s.b.MEDIA_ERROR,details:s.a.FRAG_DECRYPT_ERROR,fatal:!0,reason:t.message}))},t.prototype.destroy=function(){var t=this.decryptor;t&&(t.destroy(),this.decryptor=void 0)},t}();e.a=u},function(t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return"function"==typeof t}function a(t){return"number"==typeof t}function n(t){return"object"==typeof t&&null!==t}function o(t){return void 0===t}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(t){if(!a(t)||t<0||isNaN(t))throw TypeError("n must be a positive number");return this._maxListeners=t,this},r.prototype.emit=function(t){var e,r,a,s,l,u;if(this._events||(this._events={}),"error"===t&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((e=arguments[1])instanceof Error)throw e;var d=new Error('Uncaught, unspecified "error" event. ('+e+")");throw d.context=e,d}if(r=this._events[t],o(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),r.apply(this,s)}else if(n(r))for(s=Array.prototype.slice.call(arguments,1),u=r.slice(),a=u.length,l=0;l<a;l++)u[l].apply(this,s);return!0},r.prototype.addListener=function(t,e){var a;if(!i(e))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",t,i(e.listener)?e.listener:e),this._events[t]?n(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,n(this._events[t])&&!this._events[t].warned&&(a=o(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&a>0&&this._events[t].length>a&&(this._events[t].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[t].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(t,e){function r(){this.removeListener(t,r),a||(a=!0,e.apply(this,arguments))}if(!i(e))throw TypeError("listener must be a function");var a=!1;return r.listener=e,this.on(t,r),this},r.prototype.removeListener=function(t,e){var r,a,o,s;if(!i(e))throw TypeError("listener must be a function");if(!this._events||!this._events[t])return this;if(r=this._events[t],o=r.length,a=-1,r===e||i(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit("removeListener",t,e);else if(n(r)){for(s=o;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){a=s;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",t,e)}return this},r.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)"removeListener"!==e&&this.removeAllListeners(e);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[t],i(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},r.prototype.listeners=function(t){return this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},r.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(i(e))return 1;if(e)return e.length}return 0},r.listenerCount=function(t,e){return t.listenerCount(e)}},function(t,e,r){"use strict";function i(){if("undefined"!=typeof window)return window.MediaSource||window.WebKitMediaSource}e.a=i},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}r.d(e,"a",function(){return l}),r.d(e,"b",function(){return u});var o=r(3),s=r(1),l={NOT_LOADED:"NOT_LOADED",APPENDING:"APPENDING",PARTIAL:"PARTIAL",OK:"OK"},u=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,s.a.BUFFER_APPENDED,s.a.FRAG_BUFFERED,s.a.FRAG_LOADED));return n.bufferPadding=.2,n.fragments=Object.create(null),n.timeRanges=Object.create(null),n.config=r.config,n}return n(e,t),e.prototype.destroy=function(){this.fragments=null,this.timeRanges=null,this.config=null,o.a.prototype.destroy.call(this),t.prototype.destroy.call(this)},e.prototype.getBufferedFrag=function(t,e){var r=this.fragments,i=Object.keys(r).filter(function(i){var a=r[i];if(a.body.type!==e)return!1;if(!a.buffered)return!1;var n=a.body;return n.startPTS<=t&&t<=n.endPTS});if(0===i.length)return null;var a=i.pop();return r[a].body},e.prototype.detectEvictedFragments=function(t,e){var r=this,i=void 0,a=void 0;Object.keys(this.fragments).forEach(function(n){var o=r.fragments[n];if(!0===o.buffered){var s=o.range[t];if(s){i=s.time;for(var l=0;l<i.length;l++)if(a=i[l],!1===r.isTimeBuffered(a.startPTS,a.endPTS,e)){r.removeFragment(o.body);break}}}})},e.prototype.detectPartialFragments=function(t){var e=this,r=this.getFragmentKey(t),i=this.fragments[r];i&&(i.buffered=!0,Object.keys(this.timeRanges).forEach(function(r){if(!0===t.hasElementaryStream(r)){var a=e.timeRanges[r];i.range[r]=e.getBufferedTimes(t.startPTS,t.endPTS,a)}}))},e.prototype.getBufferedTimes=function(t,e,r){for(var i=[],a=void 0,n=void 0,o=!1,s=0;s<r.length;s++){if(a=r.start(s)-this.bufferPadding,n=r.end(s)+this.bufferPadding,t>=a&&e<=n){i.push({startPTS:Math.max(t,r.start(s)),endPTS:Math.min(e,r.end(s))});break}if(t<n&&e>a)i.push({startPTS:Math.max(t,r.start(s)),endPTS:Math.min(e,r.end(s))}),o=!0;else if(e<=a)break}return{time:i,partial:o}},e.prototype.getFragmentKey=function(t){return t.type+"_"+t.level+"_"+t.sn},e.prototype.getPartialFragment=function(t){var e=this,r=void 0,i=void 0,a=void 0,n=null,o=0;return Object.keys(this.fragments).forEach(function(s){var l=e.fragments[s];e.isPartial(l)&&(i=l.body.startPTS-e.bufferPadding,a=l.body.endPTS+e.bufferPadding,t>=i&&t<=a&&(r=Math.min(t-i,a-t),o<=r&&(n=l.body,o=r)))}),n},e.prototype.getState=function(t){var e=this.getFragmentKey(t),r=this.fragments[e],i=l.NOT_LOADED;return void 0!==r&&(i=r.buffered?!0===this.isPartial(r)?l.PARTIAL:l.OK:l.APPENDING),i},e.prototype.isPartial=function(t){return!0===t.buffered&&(void 0!==t.range.video&&!0===t.range.video.partial||void 0!==t.range.audio&&!0===t.range.audio.partial)},e.prototype.isTimeBuffered=function(t,e,r){for(var i=void 0,a=void 0,n=0;n<r.length;n++){if(i=r.start(n)-this.bufferPadding,a=r.end(n)+this.bufferPadding,t>=i&&e<=a)return!0;if(e<=i)return!1}return!1},e.prototype.onFragLoaded=function(t){var e=t.frag;if(!isNaN(e.sn)){var r=this.getFragmentKey(e),i={body:e,range:Object.create(null),buffered:!1};this.fragments[r]=i}},e.prototype.onBufferAppended=function(t){var e=this;this.timeRanges=t.timeRanges,Object.keys(this.timeRanges).forEach(function(t){var r=e.timeRanges[t];e.detectEvictedFragments(t,r)})},e.prototype.onFragBuffered=function(t){this.detectPartialFragments(t.frag)},e.prototype.hasFragment=function(t){var e=this.getFragmentKey(t);return void 0!==this.fragments[e]},e.prototype.removeFragment=function(t){var e=this.getFragmentKey(t);delete this.fragments[e]},e.prototype.removeAllFragments=function(){this.fragments=Object.create(null)},e}(o.a)},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(3),s=function(t){function e(r){i(this,e);for(var n=arguments.length,o=Array(n>1?n-1:0),s=1;s<n;s++)o[s-1]=arguments[s];var l=a(this,t.call.apply(t,[this,r].concat(o)));return l._tickInterval=null,l._tickCallCount=0,l}return n(e,t),e.prototype.destroy=function(){this.clearInterval(),t.prototype.destroy.call(this)},e.prototype.hasInterval=function(){return null!==this._tickInterval},e.prototype.setInterval=function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(t){return!this._tickInterval&&(this._tickInterval=setInterval(this.tick.bind(this,!1),t),!0)}),e.prototype.clearInterval=function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}(function(){return!!this._tickInterval&&(clearInterval(this._tickInterval),this._tickInterval=null,!0)}),e.prototype.tick=function(){1===++this._tickCallCount&&(this.doTick(),this._tickCallCount>1&&setTimeout(this.tick.bind(this),0),this._tickCallCount=0)},e.prototype.doTick=function(){throw new Error("TaskLoop is abstract and `doLoop` must be implemented")},e}(o.a);e.a=s},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(2),u=r(0),d=r(15),c=r(28),h=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),f={MANIFEST:"manifest",LEVEL:"level",AUDIO_TRACK:"audioTrack",SUBTITLE_TRACK:"subtitleTrack"},p={MAIN:"main",AUDIO:"audio",SUBTITLE:"subtitle"},v=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MANIFEST_LOADING,o.a.LEVEL_LOADING,o.a.AUDIO_TRACK_LOADING,o.a.SUBTITLE_TRACK_LOADING));return n.loaders={},n}return n(e,t),e.canHaveQualityLevels=function(t){return t!==f.AUDIO_TRACK&&t!==f.SUBTITLE_TRACK},e.mapContextToLevelType=function(t){switch(t.type){case f.AUDIO_TRACK:return p.AUDIO;case f.SUBTITLE_TRACK:return p.SUBTITLE;default:return p.MAIN}},e.getResponseUrl=function(t,e){var r=t.url;return void 0!==r&&0!==r.indexOf("data:")||(r=e.url),r},e.prototype.createInternalLoader=function(t){var e=this.hls.config,r=e.pLoader,i=e.loader,a=r||i,n=new a(e);return t.loader=n,this.loaders[t.type]=n,n},e.prototype.getInternalLoader=function(t){return this.loaders[t.type]},e.prototype.resetInternalLoader=function(t){this.loaders[t]&&delete this.loaders[t]},e.prototype.destroyInternalLoaders=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy(),this.resetInternalLoader(t)}},e.prototype.destroy=function(){this.destroyInternalLoaders(),t.prototype.destroy.call(this)},e.prototype.onManifestLoading=function(t){this.load(t.url,{type:f.MANIFEST})},e.prototype.onLevelLoading=function(t){this.load(t.url,{type:f.LEVEL,level:t.level,id:t.id})},e.prototype.onAudioTrackLoading=function(t){this.load(t.url,{type:f.AUDIO_TRACK,id:t.id})},e.prototype.onSubtitleTrackLoading=function(t){this.load(t.url,{type:f.SUBTITLE_TRACK,id:t.id})},e.prototype.load=function(t,e){var r=this.hls.config,i=this.getInternalLoader(e);if(i){var a=i.context;if(a&&a.url===t)return u.b.trace("playlist request ongoing"),!1;u.b.warn("aborting previous loader for type: "+e.type),i.abort()}var n=void 0,o=void 0,s=void 0,l=void 0;switch(e.type){case f.MANIFEST:n=r.manifestLoadingMaxRetry,o=r.manifestLoadingTimeOut,s=r.manifestLoadingRetryDelay,l=r.manifestLoadingMaxRetryTimeout;break;case f.LEVEL:n=0,o=r.levelLoadingTimeOut;break;default:n=r.levelLoadingMaxRetry,o=r.levelLoadingTimeOut,s=r.levelLoadingRetryDelay,l=r.levelLoadingMaxRetryTimeout,u.b.log("Playlist loader for "+e.type+" "+(e.level||e.id))}i=this.createInternalLoader(e),e.url=t,e.responseType=e.responseType||"";var d=void 0,c=void 0;return d={timeout:o,maxRetry:n,retryDelay:s,maxRetryDelay:l},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},i.load(e,d,c),!0},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(r.isSidxRequest)return this._handleSidxRequest(t,r),void this._handlePlaylistLoaded(t,e,r,i);this.resetInternalLoader(r.type);var a=t.data;if(e.tload=performance.now(),0!==a.indexOf("#EXTM3U"))return void this._handleManifestParsingError(t,r,"no EXTM3U delimiter",i);a.indexOf("#EXTINF:")>0||a.indexOf("#EXT-X-TARGETDURATION:")>0?this._handleTrackOrLevelPlaylist(t,e,r,i):this._handleMasterPlaylist(t,e,r,i)},e.prototype.loaderror=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._handleNetworkError(e,r)},e.prototype.loadtimeout=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._handleNetworkError(e,r,!0)},e.prototype._handleMasterPlaylist=function(t,r,i,a){var n=this.hls,s=t.data,l=e.getResponseUrl(t,i),d=c.a.parseMasterPlaylist(s,l);if(!d.length)return void this._handleManifestParsingError(t,i,"no level found in manifest",a);var h=d.map(function(t){return{id:t.attrs.AUDIO,codec:t.audioCodec}}),f=c.a.parseMasterPlaylistMedia(s,l,"AUDIO",h),p=c.a.parseMasterPlaylistMedia(s,l,"SUBTITLES");if(f.length){var v=!1;f.forEach(function(t){t.url||(v=!0)}),!1===v&&d[0].audioCodec&&!d[0].attrs.AUDIO&&(u.b.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main"}))}n.trigger(o.a.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:p,url:l,stats:r,networkDetails:a})},e.prototype._handleTrackOrLevelPlaylist=function(t,r,i,a){var n=this.hls,s=i.id,l=i.level,u=i.type,d=e.getResponseUrl(t,i),h=isNaN(l)?isNaN(s)?0:s:l,p=e.mapContextToLevelType(i),v=c.a.parseLevelPlaylist(t.data,d,h,p);if(v.tload=r.tload,u===f.MANIFEST){var g={url:d,details:v};n.trigger(o.a.MANIFEST_LOADED,{levels:[g],audioTracks:[],url:d,stats:r,networkDetails:a})}if(r.tparsed=performance.now(),v.needSidxRanges){var y=v.initSegment.url;return void this.load(y,{isSidxRequest:!0,type:u,level:l,levelDetails:v,id:s,rangeStart:0,rangeEnd:2048,responseType:"arraybuffer"})}i.levelDetails=v,this._handlePlaylistLoaded(t,r,i,a)},e.prototype._handleSidxRequest=function(t,e){var r=d.a.parseSegmentIndex(new Uint8Array(t.data));r.references.forEach(function(t,r){var i=t.info,a=e.levelDetails.fragments[r];0===a.byteRange.length&&(a.rawByteRange=String(1+i.end-i.start)+"@"+String(i.start))}),e.levelDetails.initSegment.rawByteRange=String(r.moovEndOffset)+"@0"},e.prototype._handleManifestParsingError=function(t,e,r,i){this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:l.a.MANIFEST_PARSING_ERROR,fatal:!0,url:t.url,reason:r,networkDetails:i})},e.prototype._handleNetworkError=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=void 0,a=void 0,n=this.getInternalLoader(t);switch(t.type){case f.MANIFEST:i=r?l.a.MANIFEST_LOAD_TIMEOUT:l.a.MANIFEST_LOAD_ERROR,a=!0;break;case f.LEVEL:i=r?l.a.LEVEL_LOAD_TIMEOUT:l.a.LEVEL_LOAD_ERROR,a=!1;break;case f.AUDIO_TRACK:i=r?l.a.AUDIO_TRACK_LOAD_TIMEOUT:l.a.AUDIO_TRACK_LOAD_ERROR,a=!1;break;default:a=!1}n&&(n.abort(),this.resetInternalLoader(t.type)),this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:i,fatal:a,url:n.url,loader:n,context:t,networkDetails:e})},e.prototype._handlePlaylistLoaded=function(t,r,i,a){var n=i.type,s=i.level,l=i.id,u=i.levelDetails;if(!u.targetduration)return void this._handleManifestParsingError(t,i,"invalid target duration",a);if(e.canHaveQualityLevels(i.type))this.hls.trigger(o.a.LEVEL_LOADED,{details:u,level:s||0,id:l||0,stats:r,networkDetails:a});else switch(n){case f.AUDIO_TRACK:this.hls.trigger(o.a.AUDIO_TRACK_LOADED,{details:u,id:l,stats:r,networkDetails:a});break;case f.SUBTITLE_TRACK:this.hls.trigger(o.a.SUBTITLE_TRACK_LOADED,{details:u,id:l,stats:r,networkDetails:a})}},h(e,null,[{key:"ContextType",get:function(){return f}},{key:"LevelType",get:function(){return p}}]),e}(s.a);e.a=v},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(0),n=r(1),o=Math.pow(2,32)-1,s=function(){function t(e,r){i(this,t),this.observer=e,this.remuxer=r}return t.prototype.resetTimeStamp=function(t){this.initPTS=t},t.prototype.resetInitSegment=function(e,r,i,a){if(e&&e.byteLength){var o=this.initData=t.parseInitSegment(e);null==r&&(r="mp4a.40.5"),null==i&&(i="avc1.42e01e");var s={};o.audio&&o.video?s.audiovideo={container:"video/mp4",codec:r+","+i,initSegment:a?e:null}:(o.audio&&(s.audio={container:"audio/mp4",codec:r,initSegment:a?e:null}),o.video&&(s.video={container:"video/mp4",codec:i,initSegment:a?e:null})),this.observer.trigger(n.a.FRAG_PARSING_INIT_SEGMENT,{tracks:s})}else r&&(this.audioCodec=r),i&&(this.videoCodec=i)},t.probe=function(e){return t.findBox({data:e,start:0,end:Math.min(e.length,16384)},["moof"]).length>0},t.bin2str=function(t){return String.fromCharCode.apply(null,t)},t.readUint16=function(t,e){t.data&&(e+=t.start,t=t.data);var r=t[e]<<8|t[e+1];return r<0?65536+r:r},t.readUint32=function(t,e){t.data&&(e+=t.start,t=t.data);var r=t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3];return r<0?4294967296+r:r},t.writeUint32=function(t,e,r){t.data&&(e+=t.start,t=t.data),t[e]=r>>24,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=255&r},t.findBox=function(e,r){var i=[],a=void 0,n=void 0,o=void 0,s=void 0,l=void 0,u=void 0,d=void 0;if(e.data?(u=e.start,s=e.end,e=e.data):(u=0,s=e.byteLength),!r.length)return null;for(a=u;a<s;)n=t.readUint32(e,a),o=t.bin2str(e.subarray(a+4,a+8)),d=n>1?a+n:s,o===r[0]&&(1===r.length?i.push({data:e,start:a+8,end:d}):(l=t.findBox({data:e,start:a+8,end:d},r.slice(1)),l.length&&(i=i.concat(l)))),a=d;return i},t.parseSegmentIndex=function(e){var r=t.findBox(e,["moov"])[0],i=r?r.end:null,a=0,n=t.findBox(e,["sidx"]),o=void 0;if(!n||!n[0])return null;o=[],n=n[0];var s=n.data[0];a=0===s?8:16;var l=t.readUint32(n,a);a+=4;a+=0===s?8:16,a+=2;var u=n.end+0,d=t.readUint16(n,a);a+=2;for(var c=0;c<d;c++){var h=a,f=t.readUint32(n,h);h+=4;var p=2147483647&f;if(1===(2147483648&f)>>>31)return void console.warn("SIDX has hierarchical references (not supported)");var v=t.readUint32(n,h);h+=4,o.push({referenceSize:p,subsegmentDuration:v,info:{duration:v/l,start:u,end:u+p-1}}),u+=p,h+=4,a=h}return{earliestPresentationTime:0,timescale:l,version:s,referencesCount:d,references:o,moovEndOffset:i}},t.parseInitSegment=function(e){var r=[];return t.findBox(e,["moov","trak"]).forEach(function(e){var i=t.findBox(e,["tkhd"])[0];if(i){var n=i.data[i.start],o=0===n?12:20,s=t.readUint32(i,o),l=t.findBox(e,["mdia","mdhd"])[0];if(l){n=l.data[l.start],o=0===n?12:20;var u=t.readUint32(l,o),d=t.findBox(e,["mdia","hdlr"])[0];if(d){var c=t.bin2str(d.data.subarray(d.start+8,d.start+12)),h={soun:"audio",vide:"video"}[c];if(h){var f=t.findBox(e,["mdia","minf","stbl","stsd"]);if(f.length){f=f[0];var p=t.bin2str(f.data.subarray(f.start+12,f.start+16));a.b.log("MP4Demuxer:"+h+":"+p+" found")}r[s]={timescale:u,type:h},r[h]={timescale:u,id:s}}}}}}),r},t.getStartDTS=function(e,r){var i=void 0,a=void 0,n=void 0;return i=t.findBox(r,["moof","traf"]),a=[].concat.apply([],i.map(function(r){return t.findBox(r,["tfhd"]).map(function(i){var a=void 0,n=void 0;return a=t.readUint32(i,4),n=e[a].timescale||9e4,t.findBox(r,["tfdt"]).map(function(e){var r=void 0,i=void 0;return r=e.data[e.start],i=t.readUint32(e,4),1===r&&(i*=Math.pow(2,32),i+=t.readUint32(e,8)),i})[0]/n})})),n=Math.min.apply(null,a),isFinite(n)?n:0},t.offsetStartDTS=function(e,r,i){t.findBox(r,["moof","traf"]).map(function(r){return t.findBox(r,["tfhd"]).map(function(a){var n=t.readUint32(a,4),s=e[n].timescale||9e4;t.findBox(r,["tfdt"]).map(function(e){var r=e.data[e.start],a=t.readUint32(e,4);if(0===r)t.writeUint32(e,4,a-i*s);else{a*=Math.pow(2,32),a+=t.readUint32(e,8),a-=i*s,a=Math.max(a,0);var n=Math.floor(a/(o+1)),l=Math.floor(a%(o+1));t.writeUint32(e,4,n),t.writeUint32(e,8,l)}})})})},t.prototype.append=function(e,r,i,a){var o=this.initData;o||(this.resetInitSegment(e,this.audioCodec,this.videoCodec,!1),o=this.initData);var s=void 0,l=this.initPTS;if(void 0===l){var u=t.getStartDTS(o,e);this.initPTS=l=u-r,this.observer.trigger(n.a.INIT_PTS_FOUND,{initPTS:l})}t.offsetStartDTS(o,e,l),s=t.getStartDTS(o,e),this.remuxer.remux(o.audio,o.video,null,null,s,i,a,e)},t.prototype.destroy=function(){},t}();e.a=s},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(4),n=r.n(a),o=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),s=function(){function t(){i(this,t),this.method=null,this.key=null,this.iv=null,this._uri=null}return o(t,[{key:"uri",get:function(){return!this._uri&&this.reluri&&(this._uri=n.a.buildAbsoluteURL(this.baseuri,this.reluri,{alwaysNormalize:!0})),this._uri}}]),t}();e.a=s},function(t,e,r){"use strict";function i(t,e){var r=n[e];return!!r&&!0===r[t.slice(0,4)]}function a(t,e){return MediaSource.isTypeSupported((e||"video")+'/mp4;codecs="'+t+'"')}r.d(e,"b",function(){return i}),r.d(e,"a",function(){return a});var n={audio:{a3ds:!0,"ac-3":!0,"ac-4":!0,alac:!0,alaw:!0,dra1:!0,"dts+":!0,"dts-":!0,dtsc:!0,dtse:!0,dtsh:!0,"ec-3":!0,enca:!0,g719:!0,g726:!0,m4ae:!0,mha1:!0,mha2:!0,mhm1:!0,mhm2:!0,mlpa:!0,mp4a:!0,"raw ":!0,Opus:!0,samr:!0,sawb:!0,sawp:!0,sevc:!0,sqcp:!0,ssmv:!0,twos:!0,ulaw:!0},video:{avc1:!0,avc2:!0,avc3:!0,avc4:!0,avcp:!0,drac:!0,dvav:!0,dvhe:!0,encv:!0,hev1:!0,hvc1:!0,mjp2:!0,mp4v:!0,mvc1:!0,mvc2:!0,mvc3:!0,mvc4:!0,resv:!0,rv60:!0,s263:!0,svc1:!0,svc2:!0,"vc-1":!0,vp08:!0,vp09:!0}}},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(1),n=r(19),o=r(0),s=r(2),l=r(10),u=r.n(l),d=r(45),c=r.n(d),h=r(11),f=Object(h.a)(),p=function(){function t(e,r){i(this,t),this.hls=e,this.id=r;var l=this.observer=new u.a,d=e.config;l.trigger=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];l.emit.apply(l,[t,t].concat(r))},l.off=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];l.removeListener.apply(l,[t].concat(r))};var h=function(t,r){r=r||{},r.frag=this.frag,r.id=this.id,e.trigger(t,r)}.bind(this);l.on(a.a.FRAG_DECRYPTED,h),l.on(a.a.FRAG_PARSING_INIT_SEGMENT,h),l.on(a.a.FRAG_PARSING_DATA,h),l.on(a.a.FRAG_PARSED,h),l.on(a.a.ERROR,h),l.on(a.a.FRAG_PARSING_METADATA,h),l.on(a.a.FRAG_PARSING_USERDATA,h),l.on(a.a.INIT_PTS_FOUND,h);var p={mp4:f.isTypeSupported("video/mp4"),mpeg:f.isTypeSupported("audio/mpeg"),mp3:f.isTypeSupported('audio/mp4; codecs="mp3"')},v=navigator.vendor;if(d.enableWorker&&"undefined"!=typeof Worker){o.b.log("demuxing in webworker");var g=void 0;try{g=this.w=c()(46),this.onwmsg=this.onWorkerMessage.bind(this),g.addEventListener("message",this.onwmsg),g.onerror=function(t){e.trigger(a.a.ERROR,{type:s.b.OTHER_ERROR,details:s.a.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",err:{message:t.message+" ("+t.filename+":"+t.lineno+")"}})},g.postMessage({cmd:"init",typeSupported:p,vendor:v,id:r,config:JSON.stringify(d)})}catch(t){o.b.error("error while initializing DemuxerWorker, fallback on DemuxerInline"),g&&URL.revokeObjectURL(g.objectURL),this.demuxer=new n.a(l,p,d,v),this.w=void 0}}else this.demuxer=new n.a(l,p,d,v)}return t.prototype.destroy=function(){var t=this.w;if(t)t.removeEventListener("message",this.onwmsg),t.terminate(),this.w=null;else{var e=this.demuxer;e&&(e.destroy(),this.demuxer=null)}var r=this.observer;r&&(r.removeAllListeners(),this.observer=null)},t.prototype.push=function(t,e,r,i,a,n,s,l){var u=this.w,d=isNaN(a.startDTS)?a.start:a.startDTS,c=a.decryptdata,h=this.frag,f=!(h&&a.cc===h.cc),p=!(h&&a.level===h.level),v=h&&a.sn===h.sn+1,g=!p&&v;if(f&&o.b.log(this.id+":discontinuity detected"),p&&o.b.log(this.id+":switch detected"),this.frag=a,u)u.postMessage({cmd:"demux",data:t,decryptdata:c,initSegment:e,audioCodec:r,videoCodec:i,timeOffset:d,discontinuity:f,trackSwitch:p,contiguous:g,duration:n,accurateTimeOffset:s,defaultInitPTS:l},t instanceof ArrayBuffer?[t]:[]);else{var y=this.demuxer;y&&y.push(t,c,e,r,i,d,f,p,g,n,s,l)}},t.prototype.onWorkerMessage=function(t){var e=t.data,r=this.hls;switch(e.event){case"init":URL.revokeObjectURL(this.w.objectURL);break;case a.a.FRAG_PARSING_DATA:e.data.data1=new Uint8Array(e.data1),e.data2&&(e.data.data2=new Uint8Array(e.data2));default:e.data=e.data||{},e.data.frag=this.frag,e.data.id=this.id,r.trigger(e.event,e.data)}},t}();e.a=p},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(1),n=r(2),o=r(9),s=r(36),l=r(15),u=r(37),d=r(40),c=r(41),h=r(44),f=function(){function t(e,r,a,n){i(this,t),this.observer=e,this.typeSupported=r,this.config=a,this.vendor=n}return t.prototype.destroy=function(){var t=this.demuxer;t&&t.destroy()},t.prototype.push=function(t,e,r,i,n,s,l,u,d,c,h,f){if(t.byteLength>0&&null!=e&&null!=e.key&&"AES-128"===e.method){var p=this.decrypter;null==p&&(p=this.decrypter=new o.a(this.observer,this.config));var v=this,g=void 0;try{g=performance.now()}catch(t){g=Date.now()}p.decrypt(t,e.key.buffer,e.iv.buffer,function(t){var o=void 0;try{o=performance.now()}catch(t){o=Date.now()}v.observer.trigger(a.a.FRAG_DECRYPTED,{stats:{tstart:g,tdecrypt:o}}),v.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,n,s,l,u,d,c,h,f)})}else this.pushDecrypted(new Uint8Array(t),e,new Uint8Array(r),i,n,s,l,u,d,c,h,f)},t.prototype.pushDecrypted=function(t,e,r,i,o,f,p,v,g,y,m,b){var E=this.demuxer;if(!E||(p||v)&&!this.probe(t)){for(var T=this.observer,S=this.typeSupported,R=this.config,A=[{demux:u.a,remux:c.a},{demux:l.a,remux:h.a},{demux:s.a,remux:c.a},{demux:d.a,remux:c.a}],_=0,w=A.length;_<w;_++){var L=A[_],D=L.demux.probe;if(D(t)){var I=this.remuxer=new L.remux(T,R,S,this.vendor);E=new L.demux(T,I,R,S),this.probe=D;break}}if(!E)return void T.trigger(a.a.ERROR,{type:n.b.MEDIA_ERROR,details:n.a.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"});this.demuxer=E}var O=this.remuxer;(p||v)&&(E.resetInitSegment(r,i,o,y),O.resetInitSegment()),p&&(E.resetTimeStamp(b),O.resetTimeStamp(b)),"function"==typeof E.setDecryptData&&E.setDecryptData(e),E.append(t,f,g,m)},t}();e.a=f},function(t,e,r){"use strict";function i(t,e,r,i){var a=void 0,n=void 0,o=void 0,s=void 0,l=void 0,u=navigator.userAgent.toLowerCase(),d=i,c=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return a=1+((192&e[r+2])>>>6),(n=(60&e[r+2])>>>2)>c.length-1?void t.trigger(Event.ERROR,{type:p.b.MEDIA_ERROR,details:p.a.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+n}):(s=(1&e[r+2])<<2,s|=(192&e[r+3])>>>6,f.b.log("manifest codec:"+i+",ADTS data:type:"+a+",sampleingIndex:"+n+"["+c[n]+"Hz],channelConfig:"+s),/firefox/i.test(u)?n>=6?(a=5,l=new Array(4),o=n-3):(a=2,l=new Array(2),o=n):-1!==u.indexOf("android")?(a=2,l=new Array(2),o=n):(a=5,l=new Array(4),i&&(-1!==i.indexOf("mp4a.40.29")||-1!==i.indexOf("mp4a.40.5"))||!i&&n>=6?o=n-3:((i&&-1!==i.indexOf("mp4a.40.2")&&(n>=6&&1===s||/vivaldi/i.test(u))||!i&&1===s)&&(a=2,l=new Array(2)),o=n)),l[0]=a<<3,l[0]|=(14&n)>>1,l[1]|=(1&n)<<7,l[1]|=s<<3,5===a&&(l[1]|=(14&o)>>1,l[2]=(1&o)<<7,l[2]|=8,l[3]=0),{config:l,samplerate:c[n],channelCount:s,codec:"mp4a.40."+a,manifestCodec:d})}function a(t,e){return 255===t[e]&&240==(246&t[e+1])}function n(t,e){return 1&t[e+1]?7:9}function o(t,e){return(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5}function s(t,e){return!!(e+1<t.length&&a(t,e))}function l(t,e){if(e+1<t.length&&a(t,e)){var r=n(t,e),i=r;e+5<t.length&&(i=o(t,e));var s=e+i;if(s===t.length||s+1<t.length&&a(t,s))return!0}return!1}function u(t,e,r,a,n){if(!t.samplerate){var o=i(e,r,a,n);t.config=o.config,t.samplerate=o.samplerate,t.channelCount=o.channelCount,t.codec=o.codec,t.manifestCodec=o.manifestCodec,f.b.log("parsed codec:"+t.codec+",rate:"+o.samplerate+",nb channel:"+o.channelCount)}}function d(t){return 9216e4/t}function c(t,e,r,i,a){var s=void 0,l=void 0,u=void 0,d=t.length;if(s=n(t,e),l=o(t,e),(l-=s)>0&&e+s+l<=d)return u=r+i*a,{headerLength:s,frameLength:l,stamp:u}}function h(t,e,r,i,a){var n=d(t.samplerate),o=c(e,r,i,a,n);if(o){var s=o.stamp,l=o.headerLength,u=o.frameLength,h={unit:e.subarray(r+l,r+l+u),pts:s,dts:s};return t.samples.push(h),t.len+=u,{sample:h,length:u+l}}}e.d=s,e.e=l,e.c=u,e.b=d,e.a=h;var f=r(0),p=r(2)},function(t,e,r){"use strict";var i={BitratesMap:[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],SamplingRateMap:[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],SamplesCoefficients:[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],BytesInSlot:[0,1,1,4],appendFrame:function(t,e,r,i,a){if(!(r+24>e.length)){var n=this.parseHeader(e,r);if(n&&r+n.frameLength<=e.length){var o=9e4*n.samplesPerFrame/n.sampleRate,s=i+a*o,l={unit:e.subarray(r,r+n.frameLength),pts:s,dts:s};return t.config=[],t.channelCount=n.channelCount,t.samplerate=n.sampleRate,t.samples.push(l),t.len+=n.frameLength,{sample:l,length:n.frameLength}}}},parseHeader:function(t,e){var r=t[e+1]>>3&3,a=t[e+1]>>1&3,n=t[e+2]>>4&15,o=t[e+2]>>2&3,s=t[e+2]>>1&1;if(1!==r&&0!==n&&15!==n&&3!==o){var l=3===r?3-a:3===a?3:4,u=1e3*i.BitratesMap[14*l+n-1],d=3===r?0:2===r?1:2,c=i.SamplingRateMap[3*d+o],h=t[e+3]>>6==3?1:2,f=i.SamplesCoefficients[r][a],p=i.BytesInSlot[a],v=8*f*p;return{sampleRate:c,channelCount:h,frameLength:parseInt(f*u/c+s,10)*p,samplesPerFrame:v}}},isHeaderPattern:function(t,e){return 255===t[e]&&224==(224&t[e+1])&&0!=(6&t[e+1])},isHeader:function(t,e){return!!(e+1<t.length&&this.isHeaderPattern(t,e))},probe:function(t,e){if(e+1<t.length&&this.isHeaderPattern(t,e)){var r=this.parseHeader(t,e),i=4;r&&r.frameLength&&(i=r.frameLength);var a=e+i;if(a===t.length||a+1<t.length&&this.isHeaderPattern(t,a))return!0}return!1}};e.a=i},function(t,e,r){"use strict";function i(t,e,r){var i=t[e],a=t[r],n=a.startPTS;isNaN(n)?a.start=r>e?i.start+i.duration:Math.max(i.start-a.duration,0):r>e?(i.duration=n-i.start,i.duration<0&&o.b.warn("negative duration computed for frag "+i.sn+",level "+i.level+", there should be some duration drift between playlist and fragment!")):(a.duration=i.start-n,a.duration<0&&o.b.warn("negative duration computed for frag "+a.sn+",level "+a.level+", there should be some duration drift between playlist and fragment!"))}function a(t,e,r,a,n,o){var s=r;if(!isNaN(e.startPTS)){var l=Math.abs(e.startPTS-r);isNaN(e.deltaPTS)?e.deltaPTS=l:e.deltaPTS=Math.max(l,e.deltaPTS),s=Math.max(r,e.startPTS),r=Math.min(r,e.startPTS),a=Math.max(a,e.endPTS),n=Math.min(n,e.startDTS),o=Math.max(o,e.endDTS)}var u=r-e.start;e.start=e.startPTS=r,e.maxStartPTS=s,e.endPTS=a,e.startDTS=n,e.endDTS=o,e.duration=a-r;var d=e.sn;if(!t||d<t.startSN||d>t.endSN)return 0;var c=void 0,h=void 0,f=void 0;for(c=d-t.startSN,h=t.fragments,h[c]=e,f=c;f>0;f--)i(h,f,f-1);for(f=c;f<h.length-1;f++)i(h,f,f+1);return t.PTSKnown=!0,u}function n(t,e){var r=Math.max(t.startSN,e.startSN)-e.startSN,i=Math.min(t.endSN,e.endSN)-e.startSN,n=e.startSN-t.startSN,s=t.fragments,l=e.fragments,u=0,d=void 0;if(e.initSegment&&t.initSegment&&(e.initSegment=t.initSegment),i<r)return void(e.PTSKnown=!1);for(var c=r;c<=i;c++){var h=s[n+c],f=l[c];f&&h&&(u=h.cc-f.cc,isNaN(h.startPTS)||(f.start=f.startPTS=h.startPTS,f.endPTS=h.endPTS,f.duration=h.duration,f.backtracked=h.backtracked,f.dropped=h.dropped,d=f))}if(u)for(o.b.log("discontinuity sliding from playlist, take drift into account"),c=0;c<l.length;c++)l[c].cc+=u;if(d)a(e,d,d.startPTS,d.endPTS,d.startDTS,d.endDTS);else if(n>=0&&n<s.length){var p=s[n].start;for(c=0;c<l.length;c++)l[c].start+=p}e.PTSKnown=t.PTSKnown}e.b=a,e.a=n;var o=r(0)},function(t,e,r){"use strict";var i={toString:function(t){for(var e="",r=t.length,i=0;i<r;i++)e+="["+t.start(i).toFixed(3)+","+t.end(i).toFixed(3)+"]";return e}};e.a=i},function(t,e,r){"use strict";function i(t,e){for(var r=null,i=0;i<t.length;i+=1){var a=t[i];if(a&&a.cc===e){r=a;break}}return r}function a(t,e){return u.a.search(t,function(t){return t.cc<e?1:t.cc>e?-1:0})}function n(t,e,r){var i=!1;return e&&e.details&&r&&(r.endCC>r.startCC||t&&t.cc<r.startCC)&&(i=!0),i}function o(t,e){var r=t.fragments,a=e.fragments;if(!a.length||!r.length)return void d.b.log("No fragments to align");var n=i(r,a[0].cc);return!n||n&&!n.startPTS?void d.b.log("No frag in previous level to align on"):n}function s(t,e){e.fragments.forEach(function(e){if(e){var r=e.start+t;e.start=e.startPTS=r,e.endPTS=r+e.duration}}),e.PTSKnown=!0}function l(t,e,r){if(n(t,e,r)){var i=o(e.details,r);i&&(d.b.log("Adjusting PTS using last level due to CC increase within current level"),s(i.start,r))}if(!1===r.PTSKnown&&e&&e.details&&e.details.fragments&&e.details.fragments.length){var a=e.details.programDateTime,l=r.programDateTime,u=(l-a)/1e3+e.details.fragments[0].start;isNaN(u)||(d.b.log("adjusting PTS using programDateTime delta, sliding:"+u.toFixed(3)),s(u,r))}}e.b=a,e.a=l;var u=r(7),d=r(0)},function(t,e,r){"use strict";function i(t,e){var r=null;try{r=new window.Event("addtrack")}catch(t){r=document.createEvent("Event"),r.initEvent("addtrack",!1,!1)}r.track=t,e.dispatchEvent(r)}function a(t){if(t&&t.cues)for(;t.cues.length>0;)t.removeCue(t.cues[0])}e.b=i,e.a=a},function(t,e,r){"use strict";function i(){this.window=window,this.state="INITIAL",this.buffer="",this.decoder=new d,this.regionList=[]}function a(t){function e(t,e,r,i){return 3600*(0|t)+60*(0|e)+(0|r)+(0|i)/1e3}var r=t.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return r?r[3]?e(r[1],r[2],r[3].replace(":",""),r[4]):r[1]>59?e(r[1],r[2],0,r[4]):e(0,r[1],r[2],r[4]):null}function n(){this.values=Object.create(null)}function o(t,e,r,i){var a=i?t.split(i):[t];for(var n in a)if("string"==typeof a[n]){var o=a[n].split(r);if(2===o.length){var s=o[0],l=o[1];e(s,l)}}}function s(t,e,r){function i(){var e=a(t);if(null===e)throw new Error("Malformed timestamp: "+l);return t=t.replace(/^[^\sa-zA-Z-]+/,""),e}function s(){t=t.replace(/^\s+/,"")}var l=t;if(s(),e.startTime=i(),s(),"--\x3e"!==t.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+l);t=t.substr(3),s(),e.endTime=i(),s(),function(t,e){var i=new n;o(t,function(t,e){switch(t){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===e){i.set(t,r[a].region);break}break;case"vertical":i.alt(t,e,["rl","lr"]);break;case"line":var n=e.split(","),o=n[0];i.integer(t,o),i.percent(t,o)&&i.set("snapToLines",!1),i.alt(t,o,["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",h,"end"]);break;case"position":n=e.split(","),i.percent(t,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",h,"end","line-left","line-right","auto"]);break;case"size":i.percent(t,e);break;case"align":i.alt(t,e,["start",h,"end","left","right"])}},/:/,/\s/),e.region=i.get("region",null),e.vertical=i.get("vertical","");var a=i.get("line","auto");"auto"===a&&-1===c.line&&(a=-1),e.line=a,e.lineAlign=i.get("lineAlign","start"),e.snapToLines=i.get("snapToLines",!0),e.size=i.get("size",100),e.align=i.get("align",h);var s=i.get("position","auto");"auto"===s&&50===c.position&&(s="start"===e.align||"left"===e.align?0:"end"===e.align||"right"===e.align?100:50),e.position=s}(t,e)}function l(t){return t.replace(/<br(?: \/)?>/gi,"\n")}r.d(e,"b",function(){return l});var u=r(61),d=function(){return{decode:function(t){if(!t)return"";if("string"!=typeof t)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(t))}}};n.prototype={set:function(t,e){this.get(t)||""===e||(this.values[t]=e)},get:function(t,e,r){return r?this.has(t)?this.values[t]:e[r]:this.has(t)?this.values[t]:e},has:function(t){return t in this.values},alt:function(t,e,r){for(var i=0;i<r.length;++i)if(e===r[i]){this.set(t,e);break}},integer:function(t,e){/^-?\d+$/.test(e)&&this.set(t,parseInt(e,10))},percent:function(t,e){return!!(e.match(/^([\d]{1,3})(\.[\d]*)?%$/)&&(e=parseFloat(e))>=0&&e<=100)&&(this.set(t,e),!0)}};var c=new u.a(0,0,0),h="middle"===c.align?"middle":"center";i.prototype={parse:function(t){function e(){var t=r.buffer,e=0;for(t=l(t);e<t.length&&"\r"!==t[e]&&"\n"!==t[e];)++e;var i=t.substr(0,e);return"\r"===t[e]&&++e,"\n"===t[e]&&++e,r.buffer=t.substr(e),i}var r=this;t&&(r.buffer+=r.decoder.decode(t,{stream:!0}));try{var i=void 0;if("INITIAL"===r.state){if(!/\r\n|\n/.test(r.buffer))return this;i=e();var a=i.match(/^()?WEBVTT([ \t].*)?$/);if(!a||!a[0])throw new Error("Malformed WebVTT signature.");r.state="HEADER"}for(var n=!1;r.buffer;){if(!/\r\n|\n/.test(r.buffer))return this;switch(n?n=!1:i=e(),r.state){case"HEADER":/:/.test(i)?function(t){o(t,function(t,e){switch(t){case"Region":console.log("parse region",e)}},/:/)}(i):i||(r.state="ID");continue;case"NOTE":i||(r.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(i)){r.state="NOTE";break}if(!i)continue;if(r.cue=new u.a(0,0,""),r.state="CUE",-1===i.indexOf("--\x3e")){r.cue.id=i;continue}case"CUE":try{s(i,r.cue,r.regionList)}catch(t){r.cue=null,r.state="BADCUE";continue}r.state="CUETEXT";continue;case"CUETEXT":var d=-1!==i.indexOf("--\x3e");if(!i||d&&(n=!0)){r.oncue&&r.oncue(r.cue),r.cue=null,r.state="ID";continue}r.cue.text&&(r.cue.text+="\n"),r.cue.text+=i;continue;case"BADCUE":i||(r.state="ID");continue}}}catch(t){"CUETEXT"===r.state&&r.cue&&r.oncue&&r.oncue(r.cue),r.cue=null,r.state="INITIAL"===r.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var t=this;try{if(t.buffer+=t.decoder.decode(),(t.cue||"HEADER"===t.state)&&(t.buffer+="\n\n",t.parse()),"INITIAL"===t.state)throw new Error("Malformed WebVTT signature.")}catch(t){throw t}return t.onflush&&t.onflush(),this}},e.a=i},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=r(4),n=r.n(a),o=r(2),s=r(14),l=r(30),u=r(31),d=r(32),c=r(47),h=r(48),f=r(49),p=r(0),v=r(50),g=r(12),y=r(1),m=r(10),b=r.n(m),E=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}();r(70);var T=function(){function t(){var e=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i(this,t);var a=t.DefaultConfig;if((r.liveSyncDurationCount||r.liveMaxLatencyDurationCount)&&(r.liveSyncDuration||r.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");for(var n in a)n in r||(r[n]=a[n]);if(void 0!==r.liveMaxLatencyDurationCount&&r.liveMaxLatencyDurationCount<=r.liveSyncDurationCount)throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');if(void 0!==r.liveMaxLatencyDuration&&(r.liveMaxLatencyDuration<=r.liveSyncDuration||void 0===r.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');Object(p.a)(r.debug),this.config=r,this._autoLevelCapping=-1;var o=this.observer=new b.a;o.trigger=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];o.emit.apply(o,[t,t].concat(r))},o.off=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i<e;i++)r[i-1]=arguments[i];o.removeListener.apply(o,[t].concat(r))},this.on=o.on.bind(o),this.off=o.off.bind(o),this.trigger=o.trigger.bind(o);var f=this.abrController=new r.abrController(this),v=new r.bufferController(this),y=new r.capLevelController(this),m=new r.fpsController(this),E=new s.a(this),T=new l.a(this),S=new u.a(this),R=new h.a(this),A=this.levelController=new c.a(this),_=new g.b(this),w=this.streamController=new d.a(this,_),L=[A,w],D=r.audioStreamController;D&&L.push(new D(this,_)),this.networkControllers=L;var I=[E,T,S,f,v,y,m,R,_];if(D=r.audioTrackController){var O=new D(this);this.audioTrackController=O,I.push(O)}if(D=r.subtitleTrackController){var k=new D(this);this.subtitleTrackController=k,I.push(k)}if(D=r.emeController){var C=new D(this);this.emeController=C,I.push(C)}[r.subtitleStreamController,r.timelineController].forEach(function(t){t&&I.push(new t(e))}),this.coreComponents=I}return t.isSupported=function(){return Object(f.a)()},E(t,null,[{key:"version",get:function(){return"0.9.1"}},{key:"Events",get:function(){return y.a}},{key:"ErrorTypes",get:function(){return o.b}},{key:"ErrorDetails",get:function(){return o.a}},{key:"DefaultConfig",get:function(){return t.defaultConfig?t.defaultConfig:v.a},set:function(e){t.defaultConfig=e}}]),t.prototype.destroy=function(){p.b.log("destroy"),this.trigger(y.a.DESTROYING),this.detachMedia(),this.coreComponents.concat(this.networkControllers).forEach(function(t){t.destroy()}),this.url=null,this.observer.removeAllListeners(),this._autoLevelCapping=-1},t.prototype.attachMedia=function(t){p.b.log("attachMedia"),this.media=t,this.trigger(y.a.MEDIA_ATTACHING,{media:t})},t.prototype.detachMedia=function(){p.b.log("detachMedia"),this.trigger(y.a.MEDIA_DETACHING),this.media=null},t.prototype.loadSource=function(t){t=n.a.buildAbsoluteURL(window.location.href,t,{alwaysNormalize:!0}),p.b.log("loadSource:"+t),this.url=t,this.trigger(y.a.MANIFEST_LOADING,{url:t})},t.prototype.startLoad=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;p.b.log("startLoad("+t+")"),this.networkControllers.forEach(function(e){e.startLoad(t)})},t.prototype.stopLoad=function(){p.b.log("stopLoad"),this.networkControllers.forEach(function(t){t.stopLoad()})},t.prototype.swapAudioCodec=function(){p.b.log("swapAudioCodec"),this.streamController.swapAudioCodec()},t.prototype.recoverMediaError=function(){p.b.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)},E(t,[{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){p.b.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){p.b.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){p.b.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(t){this.levelController.nextLoadLevel=t}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(t){p.b.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){p.b.log("set startLevel:"+t);var e=this;-1!==t&&(t=Math.max(t,e.minAutoLevel)),e.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(t){p.b.log("set autoLevelCapping:"+t),this._autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){for(var t=this,e=t.levels,r=t.config.minAutoBitrate,i=e?e.length:0,a=0;a<i;a++){if((e[a].realBitrate?Math.max(e[a].realBitrate,e[a].bitrate):e[a].bitrate)>r)return a}return 0}},{key:"maxAutoLevel",get:function(){var t=this,e=t.levels,r=t.autoLevelCapping;return-1===r&&e&&e.length?e.length-1:r}},{key:"nextAutoLevel",get:function(){var t=this;return Math.min(Math.max(t.abrController.nextAutoLevel,t.minAutoLevel),t.maxAutoLevel)},set:function(t){var e=this;e.abrController.nextAutoLevel=Math.max(e.minAutoLevel,t)}},{key:"audioTracks",get:function(){var t=this.audioTrackController;return t?t.audioTracks:[]}},{key:"audioTrack",get:function(){var t=this.audioTrackController;return t?t.audioTrack:-1},set:function(t){var e=this.audioTrackController;e&&(e.audioTrack=t)}},{key:"liveSyncPosition",get:function(){return this.streamController.liveSyncPosition}},{key:"subtitleTracks",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var t=this.subtitleTrackController;return t?t.subtitleTrack:-1},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleTrack=t)}},{key:"subtitleDisplay",get:function(){var t=this.subtitleTrackController;return!!t&&t.subtitleDisplay},set:function(t){var e=this.subtitleTrackController;e&&(e.subtitleDisplay=t)}}]),t}();e.default=T},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(4),n=r.n(a),o=r(6),s=r(16),l=r(29),u=r(0),d=r(17),c=/#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,h=/#EXT-X-MEDIA:(.*)/g,f=new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source,/|(?!#)(\S+)/.source,/|#EXT-X-BYTERANGE:*(.+)/.source,/|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source,/|#.*/.source].join(""),"g"),p=/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,v=function(){function t(){i(this,t)}return t.findGroup=function(t,e){if(!t)return null;for(var r=null,i=0;i<t.length;i++){var a=t[i];a.id===e&&(r=a)}return r},t.convertAVC1ToAVCOTI=function(t){var e=void 0,r=t.split(".");return r.length>2?(e=r.shift()+".",e+=parseInt(r.shift()).toString(16),e+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):e=t,e},t.resolve=function(t,e){return n.a.buildAbsoluteURL(e,t,{alwaysNormalize:!0})},t.parseMasterPlaylist=function(e,r){var i=[],a=void 0;for(c.lastIndex=0;null!=(a=c.exec(e));){var n={},o=n.attrs=new l.a(a[1]);n.url=t.resolve(a[2],r);var s=o.decimalResolution("RESOLUTION");s&&(n.width=s.width,n.height=s.height),n.bitrate=o.decimalInteger("AVERAGE-BANDWIDTH")||o.decimalInteger("BANDWIDTH"),n.name=o.NAME,function(t,e){["video","audio"].forEach(function(r){var i=t.filter(function(t){return Object(d.b)(t,r)});if(i.length){var a=i.filter(function(t){return 0===t.lastIndexOf("avc1",0)||0===t.lastIndexOf("mp4a",0)});e[r+"Codec"]=a.length>0?a[0]:i[0],t=t.filter(function(t){return-1===i.indexOf(t)})}}),e.unknownCodecs=t}([].concat((o.CODECS||"").split(/[ ,]+/)),n),n.videoCodec&&-1!==n.videoCodec.indexOf("avc1")&&(n.videoCodec=t.convertAVC1ToAVCOTI(n.videoCodec)),i.push(n)}return i},t.parseMasterPlaylistMedia=function(e,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],n=void 0,o=[],s=0;for(h.lastIndex=0;null!==(n=h.exec(e));){var u={},d=new l.a(n[1]);if(d.TYPE===i){if(u.groupId=d["GROUP-ID"],u.name=d.NAME,u.type=i,u.default="YES"===d.DEFAULT,u.autoselect="YES"===d.AUTOSELECT,u.forced="YES"===d.FORCED,d.URI&&(u.url=t.resolve(d.URI,r)),u.lang=d.LANGUAGE,u.name||(u.name=u.lang),a.length){var c=t.findGroup(a,u.groupId);u.audioCodec=c?c.codec:a[0].codec}u.id=s++,o.push(u)}}return o},t.parseLevelPlaylist=function(t,e,r,i){var a=0,n=0,d={type:null,version:null,url:e,fragments:[],live:!0,startSN:0},c=new s.a,h=0,v=null,g=new o.a,y=void 0,m=void 0;for(f.lastIndex=0;null!==(y=f.exec(t));){var b=y[1];if(b){g.duration=parseFloat(b);var E=(" "+y[2]).slice(1);g.title=E||null,g.tagList.push(E?["INF",b,E]:["INF",b])}else if(y[3]){if(!isNaN(g.duration)){var T=a++;g.type=i,g.start=n,g.levelkey=c,g.sn=T,g.level=r,g.cc=h,g.baseurl=e,g.relurl=(" "+y[3]).slice(1),d.programDateTime&&(v?g.rawProgramDateTime?g.pdt=Date.parse(g.rawProgramDateTime):g.pdt=v.pdt+1e3*v.duration:g.pdt=Date.parse(d.programDateTime),g.endPdt=g.pdt+1e3*g.duration),d.fragments.push(g),v=g,n+=g.duration,g=new o.a}}else if(y[4]){if(g.rawByteRange=(" "+y[4]).slice(1),v){var S=v.byteRangeEndOffset;S&&(g.lastByteRangeEndOffset=S)}}else if(y[5])g.rawProgramDateTime=(" "+y[5]).slice(1),g.tagList.push(["PROGRAM-DATE-TIME",g.rawProgramDateTime]),void 0===d.programDateTime&&(d.programDateTime=new Date(new Date(Date.parse(y[5]))-1e3*n));else{for(y=y[0].match(p),m=1;m<y.length&&void 0===y[m];m++);var R=(" "+y[m+1]).slice(1),A=(" "+y[m+2]).slice(1);switch(y[m]){case"#":g.tagList.push(A?[R,A]:[R]);break;case"PLAYLIST-TYPE":d.type=R.toUpperCase();break;case"MEDIA-SEQUENCE":a=d.startSN=parseInt(R);break;case"TARGETDURATION":d.targetduration=parseFloat(R);break;case"VERSION":d.version=parseInt(R);break;case"EXTM3U":break;case"ENDLIST":d.live=!1;break;case"DIS":h++,g.tagList.push(["DIS"]);break;case"DISCONTINUITY-SEQ":h=parseInt(R);break;case"KEY":var _=R,w=new l.a(_),L=w.enumeratedString("METHOD"),D=w.URI,I=w.hexadecimalInteger("IV");L&&(c=new s.a,D&&["AES-128","SAMPLE-AES","SAMPLE-AES-CENC"].indexOf(L)>=0&&(c.method=L,c.baseuri=e,c.reluri=D,c.key=null,c.iv=I));break;case"START":var O=R,k=new l.a(O),C=k.decimalFloatingPoint("TIME-OFFSET");isNaN(C)||(d.startTimeOffset=C);break;case"MAP":var P=new l.a(R);g.relurl=P.URI,g.rawByteRange=P.BYTERANGE,g.baseurl=e,g.level=r,g.type=i,g.sn="initSegment",d.initSegment=g,g=new o.a;break;default:u.b.warn("line parsed but not handled: "+y)}}}return g=v,g&&!g.relurl&&(d.fragments.pop(),n-=g.duration),d.totalduration=n,d.averagetargetduration=n/d.fragments.length,d.endSN=a-1,d.startCC=d.fragments[0]?d.fragments[0].cc:0,d.endCC=h,!d.initSegment&&d.fragments.length&&d.fragments.every(function(t){return t.relurl.endsWith(".mp4")})&&(u.b.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"),g=new o.a,g.relurl=d.fragments[0].relurl,g.baseurl=e,g.level=r,g.type=i,g.sn="initSegment",d.initSegment=g,d.needSidxRanges=!0),d},t}();e.a=v},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=/^(\d+)x(\d+)$/,n=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,o=function(){function t(e){i(this,t),"string"==typeof e&&(e=t.parseAttrList(e));for(var r in e)e.hasOwnProperty(r)&&(this[r]=e[r])}return t.prototype.decimalInteger=function(t){var e=parseInt(this[t],10);return e>Number.MAX_SAFE_INTEGER?1/0:e},t.prototype.hexadecimalInteger=function(t){if(this[t]){var e=(this[t]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var r=new Uint8Array(e.length/2),i=0;i<e.length/2;i++)r[i]=parseInt(e.slice(2*i,2*i+2),16);return r}return null},t.prototype.hexadecimalIntegerAsNumber=function(t){var e=parseInt(this[t],16);return e>Number.MAX_SAFE_INTEGER?1/0:e},t.prototype.decimalFloatingPoint=function(t){return parseFloat(this[t])},t.prototype.enumeratedString=function(t){return this[t]},t.prototype.decimalResolution=function(t){var e=a.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}},t.parseAttrList=function(t){var e=void 0,r={};for(n.lastIndex=0;null!==(e=n.exec(t));){var i=e[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[e[1]]=i}return r},t}();e.a=o},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(2),u=r(0),d=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.FRAG_LOADING));return n.loaders={},n}return n(e,t),e.prototype.destroy=function(){var e=this.loaders;for(var r in e){var i=e[r];i&&i.destroy()}this.loaders={},t.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag,r=e.type,i=this.loaders,a=this.hls.config,n=a.fLoader,o=a.loader;e.loaded=0;var s=i[r];s&&(u.b.warn("abort previous fragment loader for type: "+r),s.abort()),s=i[r]=e.loader=a.fLoader?new n(a):new o(a);var l=void 0,d=void 0,c=void 0;l={url:e.url,frag:e,responseType:"arraybuffer",progressData:!1};var h=e.byteRangeStartOffset,f=e.byteRangeEndOffset;isNaN(h)||isNaN(f)||(l.rangeStart=h,l.rangeEnd=f),d={timeout:a.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:a.fragLoadingMaxRetryTimeout},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this),onProgress:this.loadprogress.bind(this)},s.load(l,d,c)},e.prototype.loadsuccess=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=t.data,n=r.frag;n.loader=void 0,this.loaders[n.type]=void 0,this.hls.trigger(o.a.FRAG_LOADED,{payload:a,frag:n,stats:e,networkDetails:i})},e.prototype.loaderror=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:l.a.FRAG_LOAD_ERROR,fatal:!1,frag:e.frag,response:t,networkDetails:r})},e.prototype.loadtimeout=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:l.a.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e.frag,networkDetails:r})},e.prototype.loadprogress=function(t,e,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=e.frag;a.loaded=t.loaded,this.hls.trigger(o.a.FRAG_LOAD_PROGRESS,{frag:a,stats:t,networkDetails:i})},e}(s.a);e.a=d},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(2),u=r(0),d=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.KEY_LOADING));return n.loaders={},n.decryptkey=null,n.decrypturl=null,n}return n(e,t),e.prototype.destroy=function(){for(var t in this.loaders){var e=this.loaders[t];e&&e.destroy()}this.loaders={},s.a.prototype.destroy.call(this)},e.prototype.onKeyLoading=function(t){var e=t.frag,r=e.type,i=this.loaders[r],a=e.decryptdata,n=a.uri;if(n!==this.decrypturl||null===this.decryptkey){var s=this.hls.config;i&&(u.b.warn("abort previous key loader for type:"+r),i.abort()),e.loader=this.loaders[r]=new s.loader(s),this.decrypturl=n,this.decryptkey=null;var l=void 0,d=void 0,c=void 0;l={url:n,frag:e,responseType:"arraybuffer"},d={timeout:s.fragLoadingTimeOut,maxRetry:s.fragLoadingMaxRetry,retryDelay:s.fragLoadingRetryDelay,maxRetryDelay:s.fragLoadingMaxRetryTimeout},c={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},e.loader.load(l,d,c)}else this.decryptkey&&(a.key=this.decryptkey,this.hls.trigger(o.a.KEY_LOADED,{frag:e}))},e.prototype.loadsuccess=function(t,e,r){var i=r.frag;this.decryptkey=i.decryptdata.key=new Uint8Array(t.data),i.loader=void 0,this.loaders[i.type]=void 0,this.hls.trigger(o.a.KEY_LOADED,{frag:i})},e.prototype.loaderror=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:l.a.KEY_LOAD_ERROR,fatal:!1,frag:r,response:t})},e.prototype.loadtimeout=function(t,e){var r=e.frag,i=r.loader;i&&i.abort(),this.loaders[e.type]=void 0,this.hls.trigger(o.a.ERROR,{type:l.b.NETWORK_ERROR,details:l.a.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})},e}(s.a);e.a=d},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(7),s=r(8),l=r(18),u=r(1),d=r(12),c=r(6),h=r(14),f=r(22),p=r(23),v=r(2),g=r(0),y=r(24),m=r(13),b=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),E={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_LEVEL:"WAITING_LEVEL",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR"},T=function(t){function e(r,n){i(this,e);var o=a(this,t.call(this,r,u.a.MEDIA_ATTACHED,u.a.MEDIA_DETACHING,u.a.MANIFEST_LOADING,u.a.MANIFEST_PARSED,u.a.LEVEL_LOADED,u.a.KEY_LOADED,u.a.FRAG_LOADED,u.a.FRAG_LOAD_EMERGENCY_ABORTED,u.a.FRAG_PARSING_INIT_SEGMENT,u.a.FRAG_PARSING_DATA,u.a.FRAG_PARSED,u.a.ERROR,u.a.AUDIO_TRACK_SWITCHING,u.a.AUDIO_TRACK_SWITCHED,u.a.BUFFER_CREATED,u.a.BUFFER_APPENDED,u.a.BUFFER_FLUSHED));return o.fragmentTracker=n,o.config=r.config,o.audioCodecSwap=!1,o._state=E.STOPPED,o}return n(e,t),e.prototype.onHandlerDestroying=function(){this.stopLoad()},e.prototype.onHandlerDestroyed=function(){this.state=E.STOPPED,this.fragmentTracker=null},e.prototype.startLoad=function(t){if(this.levels){var e=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.setInterval(100),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;-1===i&&(i=0,this.bitrateTest=!0),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}e>0&&-1===t&&(g.b.log("override startPosition with lastCurrentTime @"+e.toFixed(3)),t=e),this.state=E.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=t,this.tick()}else this.forceStartLoad=!0,this.state=E.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragmentTracker.removeFragment(t),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.clearInterval(),this.state=E.STOPPED,this.forceStartLoad=!1},e.prototype.doTick=function(){switch(this.state){case E.BUFFER_FLUSHING:this.fragLoadError=0;break;case E.IDLE:this._doTickIdle();break;case E.WAITING_LEVEL:var t=this.levels[this.level];t&&t.details&&(this.state=E.IDLE);break;case E.FRAG_LOADING_WAITING_RETRY:var e=performance.now(),r=this.retryDate;(!r||e>=r||this.media&&this.media.seeking)&&(g.b.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=E.IDLE);break;case E.ERROR:case E.STOPPED:case E.FRAG_LOADING:case E.PARSING:case E.PARSED:case E.ENDED:}this._checkBuffer(),this._checkFragmentChanged()},e.prototype._doTickIdle=function(){var t=this.hls,e=t.config,r=this.media;if(void 0!==this.levelLastLoaded&&(r||!this.startFragRequested&&e.startFragPrefetch)){var i=void 0;i=this.loadedmetadata?r.currentTime:this.nextLoadPosition;var a=t.nextLoadLevel,n=this.levels[a];if(n){var o=n.bitrate,l=void 0;l=o?Math.max(8*e.maxBufferSize/o,e.maxBufferLength):e.maxBufferLength,l=Math.min(l,e.maxMaxBufferLength);var d=s.a.bufferInfo(this.mediaBuffer?this.mediaBuffer:r,i,e.maxBufferHole),c=d.len;if(!(c>=l)){g.b.trace("buffer length of "+c.toFixed(3)+" is below max of "+l.toFixed(3)+". checking for more payload ..."),this.level=t.nextLoadLevel=a;var h=n.details;if(void 0===h||!0===h.live&&this.levelLastLoaded!==a)return void(this.state=E.WAITING_LEVEL);var f=this.fragPrevious;if(!h.live&&f&&!f.backtracked&&f.sn===h.endSN&&!d.nextStart){if(Math.min(r.duration,f.start+f.duration)-Math.max(d.end,f.start)<=Math.max(.2,f.duration)){var p={};return this.altAudio&&(p.type="video"),this.hls.trigger(u.a.BUFFER_EOS,p),void(this.state=E.ENDED)}}this._fetchPayloadOrEos(i,d,h)}}}},e.prototype._fetchPayloadOrEos=function(t,e,r){var i=this.fragPrevious,a=this.level,n=r.fragments,o=n.length;if(0!==o){var s=n[0].start,l=n[o-1].start+n[o-1].duration,u=e.end,d=void 0;if(r.initSegment&&!r.initSegment.data)d=r.initSegment;else if(r.live){var c=this.config.initialLiveManifestSize;if(o<c)return void g.b.warn("Can not start playback of a level, reason: not enough fragments "+o+" < "+c);if(null===(d=this._ensureFragmentAtLivePoint(r,u,s,l,i,n,o)))return}else u<s&&(d=n[0]);d||(d=this._findFragment(s,i,o,n,u,l,r)),d&&this._loadFragmentOrKey(d,a,r,t,u)}},e.prototype._ensureFragmentAtLivePoint=function(t,e,r,i,a,n,s){var l=this.hls.config,u=this.media,d=void 0,c=void 0!==l.liveMaxLatencyDuration?l.liveMaxLatencyDuration:l.liveMaxLatencyDurationCount*t.targetduration;if(e<Math.max(r-l.maxFragLookUpTolerance,i-c)){var h=this.liveSyncPosition=this.computeLivePosition(r,t);g.b.log("buffer end: "+e.toFixed(3)+" is located too far from the end of live sliding playlist, reset currentTime to : "+h.toFixed(3)),e=h,u&&u.readyState&&u.duration>h&&(u.currentTime=h),this.nextLoadPosition=h}if(t.PTSKnown&&e>i&&u&&u.readyState)return null;if(this.startFragRequested&&!t.PTSKnown){if(a)if(t.programDateTime)d=this._findFragmentByPDT(n,a.endPdt+1);else{var f=a.sn+1;if(f>=t.startSN&&f<=t.endSN){var p=n[f-t.startSN];a.cc===p.cc&&(d=p,g.b.log("live playlist, switching playlist, load frag with next SN: "+d.sn))}d||(d=o.a.search(n,function(t){return a.cc-t.cc}))&&g.b.log("live playlist, switching playlist, load frag with same CC: "+d.sn)}d||(d=n[Math.min(s-1,Math.round(s/2))],g.b.log("live playlist, switching playlist, unknown, load middle frag : "+d.sn))}return d},e.prototype._findFragmentByPDT=function(t,e){if(!t||void 0===e)return null;if(e<t[0].pdt)return null;if(e>=t[t.length-1].endPdt)return null;for(var r=0;r<t.length;++r){var i=t[r];if(e<i.endPdt)return i}return null},e.prototype._findFragmentBySN=function(t,e,r,i){var a=this.hls.config,n=void 0,s=a.maxFragLookUpTolerance,l=t?e[t.sn-e[0].sn+1]:void 0,u=function(t){var e=Math.min(s,t.duration+(t.deltaPTS?t.deltaPTS:0));return t.start+t.duration-e<=r?1:t.start-e>r&&t.start?-1:0};return r<i&&(r>i-s&&(s=0),n=l&&!u(l)?l:o.a.search(e,u)),n},e.prototype._findFragment=function(t,e,r,i,a,n,o){var s=this.hls.config,l=void 0,u=void 0;if(u=a<n?o.programDateTime?this._findFragmentByPDT(i,1e3*a+(o.programDateTime?Date.parse(o.programDateTime):0)-1e3*t):this._findFragmentBySN(e,i,a,n):i[r-1]){l=u;var d=l.sn-o.startSN,c=e&&l.level===e.level,h=i[d-1],f=i[d+1];if(e&&l.sn===e.sn)if(c&&!l.backtracked)if(l.sn<o.endSN){var p=e.deltaPTS;p&&p>s.maxBufferHole&&e.dropped&&d?(l=h,g.b.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this")):(l=f,g.b.log("SN just loaded, load next one: "+l.sn))}else l=null;else l.backtracked&&(f&&f.backtracked?(g.b.warn("Already backtracked from fragment "+f.sn+", will not backtrack to fragment "+l.sn+". Loading fragment "+f.sn),l=f):(g.b.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"),l.dropped=0,h?(l=h,l.backtracked=!0):d&&(l=null)))}return l},e.prototype._loadFragmentOrKey=function(t,e,r,i,a){if(t.decryptdata&&null!=t.decryptdata.uri&&null==t.decryptdata.key)g.b.log("Loading key for "+t.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+e),this.state=E.KEY_LOADING,this.hls.trigger(u.a.KEY_LOADING,{frag:t});else{g.b.log("Loading "+t.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+e+", currentTime:"+i.toFixed(3)+",bufferEnd:"+a.toFixed(3));var n=this.fragmentTracker.getState(t);this.fragCurrent=t,this.startFragRequested=!0,isNaN(t.sn)||t.bitrateTest||(this.nextLoadPosition=t.start+t.duration),t.backtracked||n===d.a.NOT_LOADED?(t.autoLevel=this.hls.autoLevelEnabled,t.bitrateTest=this.bitrateTest,this.hls.trigger(u.a.FRAG_LOADING,{frag:t}),this.demuxer||(this.demuxer=new l.a(this.hls,"main")),this.state=E.FRAG_LOADING):n===d.a.APPENDING&&this._reduceMaxBufferLength(t.duration)&&this.fragmentTracker.removeFragment(t)}},e.prototype.getBufferedFrag=function(t){return this.fragmentTracker.getBufferedFrag(t,h.a.LevelType.MAIN)},e.prototype.followingBufferedFrag=function(t){return t?this.getBufferedFrag(t.endPTS+.5):null},e.prototype._checkFragmentChanged=function(){var t=void 0,e=void 0,r=this.media;if(r&&r.readyState&&!1===r.seeking&&(e=r.currentTime,e>r.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),s.a.isBuffered(r,e)?t=this.getBufferedFrag(e):s.a.isBuffered(r,e+.1)&&(t=this.getBufferedFrag(e+.1)),t)){var i=t;if(i!==this.fragPlaying){this.hls.trigger(u.a.FRAG_CHANGED,{frag:i});var a=i.level;this.fragPlaying&&this.fragPlaying.level===a||this.hls.trigger(u.a.LEVEL_SWITCHED,{level:a}),this.fragPlaying=i}}},e.prototype.immediateLevelSwitch=function(){if(g.b.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var t=this.media,e=void 0;t?(e=t.paused,t.pause()):e=!0,this.previouslyPaused=e}var r=this.fragCurrent;r&&r.loader&&r.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)},e.prototype.immediateLevelSwitchEnd=function(){var t=this.media;t&&t.buffered.length&&(this.immediateSwitch=!1,s.a.isBuffered(t,t.currentTime)&&(t.currentTime-=1e-4),this.previouslyPaused||t.play())},e.prototype.nextLevelSwitch=function(){var t=this.media;if(t&&t.readyState){var e=void 0,r=void 0,i=void 0;if(r=this.getBufferedFrag(t.currentTime),r&&r.startPTS>1&&this.flushMainBuffer(0,r.startPTS-1),t.paused)e=0;else{var a=this.hls.nextLoadLevel,n=this.levels[a],o=this.fragLastKbps;e=o&&this.fragCurrent?this.fragCurrent.duration*n.bitrate/(1e3*o)+1:0}if((i=this.getBufferedFrag(t.currentTime+e))&&(i=this.followingBufferedFrag(i))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(i.maxStartPTS,Number.POSITIVE_INFINITY)}}},e.prototype.flushMainBuffer=function(t,e){this.state=E.BUFFER_FLUSHING;var r={startOffset:t,endOffset:e};this.altAudio&&(r.type="video"),this.hls.trigger(u.a.BUFFER_FLUSHING,r)},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended);var r=this.config;this.levels&&r.autoStartLoad&&this.hls.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(g.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var e=this.levels;e&&e.forEach(function(t){t.details&&t.details.fragments.forEach(function(t){t.backtracked=void 0})}),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("seeked",this.onvseeked),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){var t=this.media,e=t?t.currentTime:void 0,r=this.config;isNaN(e)||g.b.log("media seeking to "+e.toFixed(3));var i=this.mediaBuffer?this.mediaBuffer:t,a=s.a.bufferInfo(i,e,this.config.maxBufferHole);if(this.state===E.FRAG_LOADING){var n=this.fragCurrent;if(0===a.len&&n){var o=r.maxFragLookUpTolerance,l=n.start-o,u=n.start+n.duration+o;e<l||e>u?(n.loader&&(g.b.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),n.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.state=E.IDLE):g.b.log("seeking outside of buffer but within currently loaded fragment range")}}else this.state===E.ENDED&&(0===a.len&&(this.fragPrevious=0),this.state=E.IDLE);t&&(this.lastCurrentTime=e),this.loadedmetadata||(this.nextLoadPosition=this.startPosition=e),this.tick()},e.prototype.onMediaSeeked=function(){var t=this.media,e=t?t.currentTime:void 0;isNaN(e)||g.b.log("media seeked to "+e.toFixed(3)),this.tick()},e.prototype.onMediaEnded=function(){g.b.log("media ended"),this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestLoading=function(){g.b.log("trigger BUFFER_RESET"),this.hls.trigger(u.a.BUFFER_RESET),this.fragmentTracker.removeAllFragments(),this.stalled=!1,this.startPosition=this.lastCurrentTime=0},e.prototype.onManifestParsed=function(t){var e=!1,r=!1,i=void 0;t.levels.forEach(function(t){(i=t.audioCodec)&&(-1!==i.indexOf("mp4a.40.2")&&(e=!0),-1!==i.indexOf("mp4a.40.5")&&(r=!0))}),this.audioCodecSwitch=e&&r,this.audioCodecSwitch&&g.b.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1;var a=this.config;(a.autoStartLoad||this.forceStartLoad)&&this.hls.startLoad(a.startPosition)},e.prototype.onLevelLoaded=function(t){var e=t.details,r=t.level,i=this.levels[this.levelLastLoaded],a=this.levels[r],n=e.totalduration,o=0;if(g.b.log("level "+r+" loaded ["+e.startSN+","+e.endSN+"],duration:"+n),e.live){var s=a.details;s&&e.fragments.length>0?(f.a(s,e),o=e.fragments[0].start,this.liveSyncPosition=this.computeLivePosition(o,s),e.PTSKnown&&!isNaN(o)?g.b.log("live playlist sliding:"+o.toFixed(3)):(g.b.log("live playlist - outdated PTS, unknown sliding"),Object(y.a)(this.fragPrevious,i,e))):(g.b.log("live playlist - first load, unknown sliding"),e.PTSKnown=!1,Object(y.a)(this.fragPrevious,i,e))}else e.PTSKnown=!1;if(a.details=e,this.levelLastLoaded=r,this.hls.trigger(u.a.LEVEL_UPDATED,{details:e,level:r}),!1===this.startFragRequested){if(-1===this.startPosition||-1===this.lastCurrentTime){var l=e.startTimeOffset;isNaN(l)?e.live?(this.startPosition=this.computeLivePosition(o,e),g.b.log("configure startPosition to "+this.startPosition)):this.startPosition=0:(l<0&&(g.b.log("negative start time offset "+l+", count from end of last fragment"),l=o+n+l),g.b.log("start time offset found in playlist, adjust startPosition to "+l),this.startPosition=l),this.lastCurrentTime=this.startPosition}this.nextLoadPosition=this.startPosition}this.state===E.WAITING_LEVEL&&(this.state=E.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===E.KEY_LOADING&&(this.state=E.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===E.FRAG_LOADING&&e&&"main"===r.type&&r.level===e.level&&r.sn===e.sn){var i=t.stats,a=this.levels[e.level],n=a.details;if(g.b.log("Loaded "+e.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+e.level),this.bitrateTest=!1,this.stats=i,!0===r.bitrateTest&&this.hls.nextLoadLevel)this.state=E.IDLE,this.startFragRequested=!1,i.tparsed=i.tbuffered=performance.now(),this.hls.trigger(u.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else if("initSegment"===r.sn)this.state=E.IDLE,i.tparsed=i.tbuffered=performance.now(),n.initSegment.data=t.payload,this.hls.trigger(u.a.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.tick();else{this.state=E.PARSING;var o=n.totalduration,s=e.level,d=e.sn,c=this.config.defaultAudioCodec||a.audioCodec;this.audioCodecSwap&&(g.b.log("swapping playlist audio codec"),void 0===c&&(c=this.lastAudioCodec),c&&(c=-1!==c.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingBuffering=!0,this.appended=!1,g.b.log("Parsing "+d+" of ["+n.startSN+" ,"+n.endSN+"],level "+s+", cc "+e.cc);var h=this.demuxer;h||(h=this.demuxer=new l.a(this.hls,"main"));var f=this.media,p=f&&f.seeking,v=!p&&(n.PTSKnown||!n.live),y=n.initSegment?n.initSegment.data:[];h.push(t.payload,y,c,a.videoCodec,e,o,v,void 0)}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===E.PARSING){var i=t.tracks,a=void 0,n=void 0;if(i.audio&&this.altAudio&&delete i.audio,n=i.audio){var o=this.levels[this.level].audioCodec,s=navigator.userAgent.toLowerCase();o&&this.audioCodecSwap&&(g.b.log("swapping playlist audio codec"),o=-1!==o.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==n.metadata.channelCount&&-1===s.indexOf("firefox")&&(o="mp4a.40.5"),-1!==s.indexOf("android")&&"audio/mpeg"!==n.container&&(o="mp4a.40.2",g.b.log("Android: force audio codec to "+o)),n.levelCodec=o,n.id=t.id}n=i.video,n&&(n.levelCodec=this.levels[this.level].videoCodec,n.id=t.id),this.hls.trigger(u.a.BUFFER_CODECS,i);for(a in i){n=i[a],g.b.log("main track:"+a+",container:"+n.container+",codecs[level/parsed]=["+n.levelCodec+"/"+n.codec+"]");var l=n.initSegment;l&&(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(u.a.BUFFER_APPENDING,{type:a,data:l,parent:"main",content:"initSegment"}))}this.tick()}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"main"===t.id&&i.sn===r.sn&&i.level===r.level&&("audio"!==t.type||!this.altAudio)&&this.state===E.PARSING){var a=this.levels[this.level],n=r;if(isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),!0===t.hasAudio&&n.addElementaryStream(c.a.ElementaryStreamTypes.AUDIO),!0===t.hasVideo&&n.addElementaryStream(c.a.ElementaryStreamTypes.VIDEO),g.b.log("Parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb+",dropped:"+(t.dropped||0)),"video"===t.type)if(n.dropped=t.dropped,n.dropped)if(n.backtracked)g.b.warn("Already backtracked on this fragment, appending with the gap");else{var o=a.details;if(!o||n.sn!==o.startSN)return g.b.warn("missing video frame(s), backtracking fragment"),this.fragmentTracker.removeFragment(n),n.backtracked=!0,this.nextLoadPosition=t.startPTS,this.state=E.IDLE,this.fragPrevious=n,void this.tick();g.b.warn("missing video frame(s) on first frag, appending with gap")}else n.backtracked=!1;var s=f.b(a.details,n,t.startPTS,t.endPTS,t.startDTS,t.endDTS),l=this.hls;l.trigger(u.a.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:s,type:t.type,start:t.startPTS,end:t.endPTS}),[t.data1,t.data2].forEach(function(r){r&&r.length&&e.state===E.PARSING&&(e.appended=!0,e.pendingBuffering=!0,l.trigger(u.a.BUFFER_APPENDING,{type:t.type,data:r,parent:"main",content:"data"}))}),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"main"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===E.PARSING&&(this.stats.tparsed=performance.now(),this.state=E.PARSED,this._checkAppendedParsed())},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url,r=t.id;if(!e){if(this.mediaBuffer!==this.media){g.b.log("switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;i.loader&&(g.b.log("switching to main audio track, cancel main fragment load"),i.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=E.IDLE}var a=this.hls;a.trigger(u.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),a.trigger(u.a.AUDIO_TRACK_SWITCHED,{id:r}),this.altAudio=!1}},e.prototype.onAudioTrackSwitched=function(t){var e=t.id,r=!!this.hls.audioTracks[e].url;if(r){var i=this.videoBuffer;i&&this.mediaBuffer!==i&&(g.b.log("switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=r,this.tick()},e.prototype.onBufferCreated=function(t){var e=t.tracks,r=void 0,i=void 0,a=!1;for(var n in e){var o=e[n];"main"===o.id?(i=n,r=o,"video"===n&&(this.videoBuffer=e[n].buffer)):a=!0}a&&r?(g.b.log("alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media},e.prototype.onBufferAppended=function(t){if("main"===t.parent){var e=this.state;e!==E.PARSING&&e!==E.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==E.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent;if(t){var e=this.mediaBuffer?this.mediaBuffer:this.media;g.b.log("main buffered : "+p.a.toString(e.buffered)),this.fragPrevious=t;var r=this.stats;r.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*r.total/(r.tbuffered-r.tfirst)),this.hls.trigger(u.a.FRAG_BUFFERED,{stats:r,frag:t,id:"main"}),this.state=E.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag||this.fragCurrent;if(!e||"main"===e.type){var r=!!this.media&&s.a.isBuffered(this.media,this.media.currentTime)&&s.a.isBuffered(this.media,this.media.currentTime+.5);switch(t.details){case v.a.FRAG_LOAD_ERROR:case v.a.FRAG_LOAD_TIMEOUT:case v.a.KEY_LOAD_ERROR:case v.a.KEY_LOAD_TIMEOUT:if(!t.fatal)if(this.fragLoadError+1<=this.config.fragLoadingMaxRetry){var i=Math.min(Math.pow(2,this.fragLoadError)*this.config.fragLoadingRetryDelay,this.config.fragLoadingMaxRetryTimeout);g.b.warn("mediaController: frag loading failed, retry in "+i+" ms"),this.retryDate=performance.now()+i,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.fragLoadError++,this.state=E.FRAG_LOADING_WAITING_RETRY}else g.b.error("mediaController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=E.ERROR;break;case v.a.LEVEL_LOAD_ERROR:case v.a.LEVEL_LOAD_TIMEOUT:this.state!==E.ERROR&&(t.fatal?(this.state=E.ERROR,g.b.warn("streamController: "+t.details+",switch to "+this.state+" state ...")):t.levelRetry||this.state!==E.WAITING_LEVEL||(this.state=E.IDLE));break;case v.a.BUFFER_FULL_ERROR:"main"!==t.parent||this.state!==E.PARSING&&this.state!==E.PARSED||(r?(this._reduceMaxBufferLength(this.config.maxBufferLength),this.state=E.IDLE):(g.b.warn("buffer full error also media.currentTime is not buffered, flush everything"),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)))}}},e.prototype._reduceMaxBufferLength=function(t){var e=this.config;return e.maxMaxBufferLength>=t&&(e.maxMaxBufferLength/=2,g.b.warn("main:reduce max buffer length to "+e.maxMaxBufferLength+"s"),!0)},e.prototype._checkBuffer=function(){var t=this.media,e=this.config;if(t&&t.readyState){var r=t.currentTime,i=this.mediaBuffer?this.mediaBuffer:t,a=i.buffered;if(!this.loadedmetadata&&a.length){this.loadedmetadata=!0;var n=t.seeking?r:this.startPosition;r!==n&&(g.b.log("target start position not buffered, seek to buffered.start(0) "+n+" from current time"+r+" "),t.currentTime=n)}else if(this.immediateSwitch)this.immediateLevelSwitchEnd();else{var o=s.a.bufferInfo(t,r,e.maxBufferHole),l=!(t.paused&&t.readyState>1||t.ended||0===t.buffered.length),d=r!==this.lastCurrentTime;if(d)this.stallReported&&(g.b.warn("playback not stuck anymore @"+r+", after "+Math.round(performance.now()-this.stalled)+"ms"),this.stallReported=!1),this.stalled=void 0,this.nudgeRetry=0;else if(l){var c=performance.now(),h=this.hls;if(this.stalled){var f=c-this.stalled,p=o.len,y=this.nudgeRetry||0,m=this.fragmentTracker.getPartialFragment(r);if(null!==m)for(var b=0,E=0;E<t.buffered.length;E++){var T=t.buffered.start(E);if(r>=b&&r<T)return t.currentTime=Math.max(T,t.currentTime+.1),g.b.warn("skipping hole, adjusting currentTime from "+r+" to "+t.currentTime),this.stalled=void 0,void h.trigger(u.a.ERROR,{type:v.b.MEDIA_ERROR,details:v.a.BUFFER_SEEK_OVER_HOLE,fatal:!1,reason:"fragment loaded with buffer holes, seeking from "+r+" to "+t.currentTime,frag:m});b=t.buffered.end(E)}if(p>.5&&f>1e3*e.highBufferWatchdogPeriod)if(this.stallReported||(this.stallReported=!0,g.b.warn("playback stalling in high buffer @"+r),h.trigger(u.a.ERROR,{type:v.b.MEDIA_ERROR,details:v.a.BUFFER_STALLED_ERROR,fatal:!1,buffer:p})),this.stalled=void 0,this.nudgeRetry=++y,y<e.nudgeMaxRetry){var S=t.currentTime,R=S+y*e.nudgeOffset;g.b.log("adjust currentTime from "+S+" to "+R),t.currentTime=R,h.trigger(u.a.ERROR,{type:v.b.MEDIA_ERROR,details:v.a.BUFFER_NUDGE_ON_STALL,fatal:!1})}else g.b.error("still stuck in high buffer @"+r+" after "+e.nudgeMaxRetry+", raise fatal error"),h.trigger(u.a.ERROR,{type:v.b.MEDIA_ERROR,details:v.a.BUFFER_STALLED_ERROR,fatal:!0})}else this.stalled=c,this.stallReported=!1}}}},e.prototype.onFragLoadEmergencyAborted=function(){this.state=E.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tick()},e.prototype.onBufferFlushed=function(){var t=this.mediaBuffer?this.mediaBuffer:this.media;this.fragmentTracker.detectEvictedFragments(c.a.ElementaryStreamTypes.VIDEO,t.buffered),this.state=E.IDLE,this.fragPrevious=null},e.prototype.swapAudioCodec=function(){this.audioCodecSwap=!this.audioCodecSwap},e.prototype.computeLivePosition=function(t,e){var r=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*e.targetduration;return t+Math.max(0,e.totalduration-r)},b(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,g.b.log("main stream:"+e+"->"+t),this.hls.trigger(u.a.STREAM_STATE_TRANSITION,{previousState:e,nextState:t})}},get:function(){return this._state}},{key:"currentLevel",get:function(){var t=this.media;if(t){var e=this.getBufferedFrag(t.currentTime);if(e)return e.level}return-1}},{key:"nextBufferedFrag",get:function(){var t=this.media;return t?this.followingBufferedFrag(this.getBufferedFrag(t.currentTime)):null}},{key:"nextLevel",get:function(){var t=this.nextBufferedFrag;return t?t.level:-1}},{key:"liveSyncPosition",get:function(){return this._liveSyncPosition},set:function(t){this._liveSyncPosition=t}}]),e}(m.a);e.a=T},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=function(){function t(e,r){i(this,t),this.subtle=e,this.aesIV=r}return t.prototype.decrypt=function(t,e){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},e,t)},t}();e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=function(){function t(e,r){i(this,t),this.subtle=e,this.key=r}return t.prototype.expandKey=function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])},t}();e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t){var e=t.byteLength,r=e&&new DataView(t).getUint8(e-1);return r?t.slice(0,e-r):t}var n=function(){function t(){i(this,t),this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.initTable()}return t.prototype.uint8ArrayToUint32Array_=function(t){for(var e=new DataView(t),r=new Uint32Array(4),i=0;i<4;i++)r[i]=e.getUint32(4*i);return r},t.prototype.initTable=function(){var t=this.sBox,e=this.invSBox,r=this.subMix,i=r[0],a=r[1],n=r[2],o=r[3],s=this.invSubMix,l=s[0],u=s[1],d=s[2],c=s[3],h=new Uint32Array(256),f=0,p=0,v=0;for(v=0;v<256;v++)h[v]=v<128?v<<1:v<<1^283;for(v=0;v<256;v++){var g=p^p<<1^p<<2^p<<3^p<<4;g=g>>>8^255&g^99,t[f]=g,e[g]=f;var y=h[f],m=h[y],b=h[m],E=257*h[g]^16843008*g;i[f]=E<<24|E>>>8,a[f]=E<<16|E>>>16,n[f]=E<<8|E>>>24,o[f]=E,E=16843009*b^65537*m^257*y^16843008*f,l[g]=E<<24|E>>>8,u[g]=E<<16|E>>>16,d[g]=E<<8|E>>>24,c[g]=E,f?(f=y^h[h[h[b^y]]],p^=h[h[p]]):f=p=1}},t.prototype.expandKey=function(t){for(var e=this.uint8ArrayToUint32Array_(t),r=!0,i=0;i<e.length&&r;)r=e[i]===this.key[i],i++;if(!r){this.key=e;var a=this.keySize=e.length;if(4!==a&&6!==a&&8!==a)throw new Error("Invalid aes key size="+a);var n=this.ksRows=4*(a+6+1),o=void 0,s=void 0,l=this.keySchedule=new Uint32Array(n),u=this.invKeySchedule=new Uint32Array(n),d=this.sBox,c=this.rcon,h=this.invSubMix,f=h[0],p=h[1],v=h[2],g=h[3],y=void 0,m=void 0;for(o=0;o<n;o++)o<a?y=l[o]=e[o]:(m=y,o%a==0?(m=m<<8|m>>>24,m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m],m^=c[o/a|0]<<24):a>6&&o%a==4&&(m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m]),l[o]=y=(l[o-a]^m)>>>0);for(s=0;s<n;s++)o=n-s,m=3&s?l[o]:l[o-4],u[s]=s<4||o<=4?m:f[d[m>>>24]]^p[d[m>>>16&255]]^v[d[m>>>8&255]]^g[d[255&m]],u[s]=u[s]>>>0}},t.prototype.networkToHostOrderSwap=function(t){return t<<24|(65280&t)<<8|(16711680&t)>>8|t>>>24},t.prototype.decrypt=function(t,e,r,i){for(var n=this.keySize+6,o=this.invKeySchedule,s=this.invSBox,l=this.invSubMix,u=l[0],d=l[1],c=l[2],h=l[3],f=this.uint8ArrayToUint32Array_(r),p=f[0],v=f[1],g=f[2],y=f[3],m=new Int32Array(t),b=new Int32Array(m.length),E=void 0,T=void 0,S=void 0,R=void 0,A=void 0,_=void 0,w=void 0,L=void 0,D=void 0,I=void 0,O=void 0,k=void 0,C=void 0,P=void 0,x=this.networkToHostOrderSwap;e<m.length;){for(D=x(m[e]),I=x(m[e+1]),O=x(m[e+2]),k=x(m[e+3]),A=D^o[0],_=k^o[1],w=O^o[2],L=I^o[3],C=4,P=1;P<n;P++)E=u[A>>>24]^d[_>>16&255]^c[w>>8&255]^h[255&L]^o[C],T=u[_>>>24]^d[w>>16&255]^c[L>>8&255]^h[255&A]^o[C+1],S=u[w>>>24]^d[L>>16&255]^c[A>>8&255]^h[255&_]^o[C+2],R=u[L>>>24]^d[A>>16&255]^c[_>>8&255]^h[255&w]^o[C+3],A=E,_=T,w=S,L=R,C+=4;E=s[A>>>24]<<24^s[_>>16&255]<<16^s[w>>8&255]<<8^s[255&L]^o[C],T=s[_>>>24]<<24^s[w>>16&255]<<16^s[L>>8&255]<<8^s[255&A]^o[C+1],S=s[w>>>24]<<24^s[L>>16&255]<<16^s[A>>8&255]<<8^s[255&_]^o[C+2],R=s[L>>>24]<<24^s[A>>16&255]<<16^s[_>>8&255]<<8^s[255&w]^o[C+3],C+=3,b[e]=x(E^p),b[e+1]=x(R^v),b[e+2]=x(S^g),b[e+3]=x(T^y),p=D,v=I,g=O,y=k,e+=4}return i?a(b.buffer):b.buffer},t.prototype.destroy=function(){this.key=void 0,this.keySize=void 0,this.ksRows=void 0,this.sBox=void 0,this.invSBox=void 0,this.subMix=void 0,this.invSubMix=void 0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.rcon=void 0},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(20),n=r(0),o=r(5),s=function(){function t(e,r,a){i(this,t),this.observer=e,this.config=a,this.remuxer=r}return t.prototype.resetInitSegment=function(t,e,r,i){this._audioTrack={container:"audio/adts",type:"audio",id:0,sequenceNumber:0,isAAC:!0,samples:[],len:0,manifestCodec:e,duration:i,inputTimeScale:9e4}},t.prototype.resetTimeStamp=function(){},t.probe=function(t){if(!t)return!1;for(var e=o.a.getID3Data(t,0)||[],r=e.length,i=t.length;r<i;r++)if(a.e(t,r))return n.b.log("ADTS sync word found !"),!0;return!1},t.prototype.append=function(t,e,r,i){for(var s=this._audioTrack,l=o.a.getID3Data(t,0)||[],u=o.a.getTimeStamp(l),d=u?90*u:9e4*e,c=0,h=d,f=t.length,p=l.length,v=[{pts:h,dts:h,data:l}];p<f-1;)if(a.d(t,p)&&p+5<f){a.c(s,this.observer,t,p,s.manifestCodec);var g=a.a(s,t,p,d,c);if(!g){n.b.log("Unable to parse AAC frame");break}p+=g.length,h=g.sample.pts,c++}else o.a.isHeader(t,p)?(l=o.a.getID3Data(t,p),v.push({pts:h,dts:h,data:l}),p+=l.length):p++;this.remuxer.remux(s,{samples:[]},{samples:v,inputTimeScale:9e4},{samples:[]},e,r,i)},t.prototype.destroy=function(){},t}();e.a=s},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(20),n=r(21),o=r(1),s=r(38),l=r(39),u=r(0),d=r(2),c={video:0,audio:1,id3:2,text:3},h=function(){function t(e,r,a,n){i(this,t),this.observer=e,this.config=a,this.typeSupported=n,this.remuxer=r,this.sampleAes=null}return t.prototype.setDecryptData=function(t){null!=t&&null!=t.key&&"SAMPLE-AES"===t.method?this.sampleAes=new l.a(this.observer,this.config,t,this.discardEPB):this.sampleAes=null},t.probe=function(e){var r=t._syncOffset(e);return!(r<0)&&(r&&u.b.warn("MPEG2-TS detected but first sync word found @ offset "+r+", junk ahead ?"),!0)},t._syncOffset=function(t){for(var e=Math.min(1e3,t.length-564),r=0;r<e;){if(71===t[r]&&71===t[r+188]&&71===t[r+376])return r;r++}return-1},t.createTrack=function(t,e){return{container:"video"===t||"audio"===t?"video/mp2t":void 0,type:t,id:c[t],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0,dropped:"video"===t?0:void 0,isAAC:"audio"===t||void 0,duration:"audio"===t?e:void 0}},t.prototype.resetInitSegment=function(e,r,i,a){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack=t.createTrack("video",a),this._audioTrack=t.createTrack("audio",a),this._id3Track=t.createTrack("id3",a),this._txtTrack=t.createTrack("text",a),this.aacOverFlow=null,this.aacLastPTS=null,this.avcSample=null,this.audioCodec=r,this.videoCodec=i,this._duration=a},t.prototype.resetTimeStamp=function(){},t.prototype.append=function(e,r,i,a){var n=void 0,s=e.length,l=void 0,c=void 0,h=void 0,f=void 0,p=!1;this.contiguous=i;var v=this.pmtParsed,g=this._avcTrack,y=this._audioTrack,m=this._id3Track,b=g.pid,E=y.pid,T=m.pid,S=this._pmtId,R=g.pesData,A=y.pesData,_=m.pesData,w=this._parsePAT,L=this._parsePMT,D=this._parsePES,I=this._parseAVCPES.bind(this),O=this._parseAACPES.bind(this),k=this._parseMPEGPES.bind(this),C=this._parseID3PES.bind(this),P=t._syncOffset(e);for(s-=(s+P)%188,n=P;n<s;n+=188)if(71===e[n]){if(l=!!(64&e[n+1]),c=((31&e[n+1])<<8)+e[n+2],(48&e[n+3])>>4>1){if((h=n+5+e[n+4])===n+188)continue}else h=n+4;switch(c){case b:l&&(R&&(f=D(R))&&void 0!==f.pts&&I(f,!1),R={data:[],size:0}),R&&(R.data.push(e.subarray(h,n+188)),R.size+=n+188-h);break;case E:l&&(A&&(f=D(A))&&void 0!==f.pts&&(y.isAAC?O(f):k(f)),A={data:[],size:0}),A&&(A.data.push(e.subarray(h,n+188)),A.size+=n+188-h);break;case T:l&&(_&&(f=D(_))&&void 0!==f.pts&&C(f),_={data:[],size:0}),_&&(_.data.push(e.subarray(h,n+188)),_.size+=n+188-h);break;case 0:l&&(h+=e[h]+1),S=this._pmtId=w(e,h);break;case S:l&&(h+=e[h]+1);var x=L(e,h,!0===this.typeSupported.mpeg||!0===this.typeSupported.mp3,null!=this.sampleAes);b=x.avc,b>0&&(g.pid=b),E=x.audio,E>0&&(y.pid=E,y.isAAC=x.isAAC),T=x.id3,T>0&&(m.pid=T),p&&!v&&(u.b.log("reparse from beginning"),p=!1,n=P-188),v=this.pmtParsed=!0;break;case 17:case 8191:break;default:p=!0}}else this.observer.trigger(o.a.ERROR,{type:d.b.MEDIA_ERROR,details:d.a.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});R&&(f=D(R))&&void 0!==f.pts?(I(f,!0),g.pesData=null):g.pesData=R,A&&(f=D(A))&&void 0!==f.pts?(y.isAAC?O(f):k(f),y.pesData=null):(A&&A.size&&u.b.log("last AAC PES packet truncated,might overlap between fragments"),y.pesData=A),_&&(f=D(_))&&void 0!==f.pts?(C(f),m.pesData=null):m.pesData=_,null==this.sampleAes?this.remuxer.remux(y,g,m,this._txtTrack,r,i,a):this.decryptAndRemux(y,g,m,this._txtTrack,r,i,a)},t.prototype.decryptAndRemux=function(t,e,r,i,a,n,o){if(t.samples&&t.isAAC){var s=this;this.sampleAes.decryptAacSamples(t.samples,0,function(){s.decryptAndRemuxAvc(t,e,r,i,a,n,o)})}else this.decryptAndRemuxAvc(t,e,r,i,a,n,o)},t.prototype.decryptAndRemuxAvc=function(t,e,r,i,a,n,o){if(e.samples){var s=this;this.sampleAes.decryptAvcSamples(e.samples,0,0,function(){s.remuxer.remux(t,e,r,i,a,n,o)})}else this.remuxer.remux(t,e,r,i,a,n,o)},t.prototype.destroy=function(){this._initPTS=this._initDTS=void 0,this._duration=0},t.prototype._parsePAT=function(t,e){return(31&t[e+10])<<8|t[e+11]},t.prototype._parsePMT=function(t,e,r,i){var a=void 0,n=void 0,o=void 0,s=void 0,l={audio:-1,avc:-1,id3:-1,isAAC:!0};for(a=(15&t[e+1])<<8|t[e+2],n=e+3+a-4,o=(15&t[e+10])<<8|t[e+11],e+=12+o;e<n;){switch(s=(31&t[e+1])<<8|t[e+2],t[e]){case 207:if(!i){u.b.log("unkown stream type:"+t[e]);break}case 15:-1===l.audio&&(l.audio=s);break;case 21:-1===l.id3&&(l.id3=s);break;case 219:if(!i){u.b.log("unkown stream type:"+t[e]);break}case 27:-1===l.avc&&(l.avc=s);break;case 3:case 4:r?-1===l.audio&&(l.audio=s,l.isAAC=!1):u.b.log("MPEG audio found, not supported in this browser for now");break;case 36:u.b.warn("HEVC stream type found, not supported for now");break;default:u.b.log("unkown stream type:"+t[e])}e+=5+((15&t[e+3])<<8|t[e+4])}return l},t.prototype._parsePES=function(t){var e=0,r=void 0,i=void 0,a=void 0,n=void 0,o=void 0,s=void 0,l=void 0,d=void 0,c=t.data;if(!t||0===t.size)return null;for(;c[0].length<19&&c.length>1;){var h=new Uint8Array(c[0].length+c[1].length);h.set(c[0]),h.set(c[1],c[0].length),c[0]=h,c.splice(1,1)}if(r=c[0],1===(r[0]<<16)+(r[1]<<8)+r[2]){if((a=(r[4]<<8)+r[5])&&a>t.size-6)return null;i=r[7],192&i&&(s=536870912*(14&r[9])+4194304*(255&r[10])+16384*(254&r[11])+128*(255&r[12])+(254&r[13])/2,s>4294967295&&(s-=8589934592),64&i?(l=536870912*(14&r[14])+4194304*(255&r[15])+16384*(254&r[16])+128*(255&r[17])+(254&r[18])/2,l>4294967295&&(l-=8589934592),s-l>54e5&&(u.b.warn(Math.round((s-l)/9e4)+"s delta between PTS and DTS, align them"),s=l)):l=s),n=r[8],d=n+9,t.size-=d,o=new Uint8Array(t.size);for(var f=0,p=c.length;f<p;f++){r=c[f];var v=r.byteLength;if(d){if(d>v){d-=v;continue}r=r.subarray(d),v-=d,d=0}o.set(r,e),e+=v}return a&&(a-=n+3),{data:o,pts:s,dts:l,len:a}}return null},t.prototype.pushAccesUnit=function(t,e){if(t.units.length&&t.frame){var r=e.samples,i=r.length;!this.config.forceKeyFrameOnDiscontinuity||!0===t.key||e.sps&&(i||this.contiguous)?(t.id=i,r.push(t)):e.dropped++}t.debug.length&&u.b.log(t.pts+"/"+t.dts+":"+t.debug)},t.prototype._parseAVCPES=function(t,e){var r=this,i=this._avcTrack,a=this._parseAVCNALu(t.data),n=void 0,o=this.avcSample,l=void 0,u=!1,d=void 0,c=this.pushAccesUnit.bind(this),h=function(t,e,r,i){return{key:t,pts:e,dts:r,units:[],debug:i}};t.data=null,o&&a.length&&!i.audFound&&(c(o,i),o=this.avcSample=h(!1,t.pts,t.dts,"")),a.forEach(function(e){switch(e.type){case 1:l=!0,o||(o=r.avcSample=h(!0,t.pts,t.dts,"")),o.frame=!0;var a=e.data;if(u&&a.length>4){var f=new s.a(a).readSliceType();2!==f&&4!==f&&7!==f&&9!==f||(o.key=!0)}break;case 5:l=!0,o||(o=r.avcSample=h(!0,t.pts,t.dts,"")),o.key=!0,o.frame=!0;break;case 6:l=!0,n=new s.a(r.discardEPB(e.data)),n.readUByte();for(var p=0,v=0,g=!1,y=0;!g&&n.bytesAvailable>1;){p=0;do{y=n.readUByte(),p+=y}while(255===y);v=0;do{y=n.readUByte(),v+=y}while(255===y);if(4===p&&0!==n.bytesAvailable){g=!0;if(181===n.readUByte()){if(49===n.readUShort()){if(1195456820===n.readUInt()){if(3===n.readUByte()){var m=n.readUByte(),b=n.readUByte(),E=31&m,T=[m,b];for(d=0;d<E;d++)T.push(n.readUByte()),T.push(n.readUByte()),T.push(n.readUByte());r._insertSampleInOrder(r._txtTrack.samples,{type:3,pts:t.pts,bytes:T})}}}}}else if(v<n.bytesAvailable)for(d=0;d<v;d++)n.readUByte()}break;case 7:if(l=!0,u=!0,!i.sps){n=new s.a(e.data);var S=n.readSPS();i.width=S.width,i.height=S.height,i.pixelRatio=S.pixelRatio,i.sps=[e.data],i.duration=r._duration;var R=e.data.subarray(1,4),A="avc1.";for(d=0;d<3;d++){var _=R[d].toString(16);_.length<2&&(_="0"+_),A+=_}i.codec=A}break;case 8:l=!0,i.pps||(i.pps=[e.data]);break;case 9:l=!1,i.audFound=!0,o&&c(o,i),o=r.avcSample=h(!1,t.pts,t.dts,"");break;case 12:l=!1;break;default:l=!1,o&&(o.debug+="unknown NAL "+e.type+" ")}if(o&&l){o.units.push(e)}}),e&&o&&(c(o,i),this.avcSample=null)},t.prototype._insertSampleInOrder=function(t,e){var r=t.length;if(r>0){if(e.pts>=t[r-1].pts)t.push(e);else for(var i=r-1;i>=0;i--)if(e.pts<t[i].pts){t.splice(i,0,e);break}}else t.push(e)},t.prototype._getLastNalUnit=function(){var t=this.avcSample,e=void 0;if(!t||0===t.units.length){var r=this._avcTrack,i=r.samples;t=i[i.length-1]}if(t){var a=t.units;e=a[a.length-1]}return e},t.prototype._parseAVCNALu=function(t){var e=0,r=t.byteLength,i=void 0,a=void 0,n=this._avcTrack,o=n.naluState||0,s=o,l=[],u=void 0,d=void 0,c=-1,h=void 0;for(-1===o&&(c=0,h=31&t[0],o=0,e=1);e<r;)if(i=t[e++],o)if(1!==o)if(i)if(1===i){if(c>=0)u={data:t.subarray(c,e-o-1),type:h},l.push(u);else{var f=this._getLastNalUnit();if(f&&(s&&e<=4-s&&f.state&&(f.data=f.data.subarray(0,f.data.byteLength-s)),(a=e-o-1)>0)){var p=new Uint8Array(f.data.byteLength+a);p.set(f.data,0),p.set(t.subarray(0,a),f.data.byteLength),f.data=p}}e<r?(d=31&t[e],c=e,h=d,o=0):o=-1}else o=0;else o=3;else o=i?0:2;else o=i?0:1;if(c>=0&&o>=0&&(u={data:t.subarray(c,r),type:h,state:o},l.push(u)),0===l.length){var v=this._getLastNalUnit();if(v){var g=new Uint8Array(v.data.byteLength+t.byteLength);g.set(v.data,0),g.set(t,v.data.byteLength),v.data=g}}return n.naluState=o,l},t.prototype.discardEPB=function(t){for(var e=t.byteLength,r=[],i=1,a=void 0,n=void 0;i<e-2;)0===t[i]&&0===t[i+1]&&3===t[i+2]?(r.push(i+2),i+=2):i++;if(0===r.length)return t;a=e-r.length,n=new Uint8Array(a);var o=0;for(i=0;i<a;o++,i++)o===r[0]&&(o++,r.shift()),n[i]=t[o];return n},t.prototype._parseAACPES=function(t){var e=this._audioTrack,r=t.data,i=t.pts,n=this.aacOverFlow,s=this.aacLastPTS,l=void 0,c=void 0,h=void 0,f=void 0,p=void 0;if(n){var v=new Uint8Array(n.byteLength+r.byteLength);v.set(n,0),v.set(r,n.byteLength),r=v}for(h=0,p=r.length;h<p-1&&!a.d(r,h);h++);if(h){var g=void 0,y=void 0;if(h<p-1?(g="AAC PES did not start with ADTS header,offset:"+h,y=!1):(g="no ADTS header found in AAC PES",y=!0),u.b.warn("parsing error:"+g),this.observer.trigger(o.a.ERROR,{type:d.b.MEDIA_ERROR,details:d.a.FRAG_PARSING_ERROR,fatal:y,reason:g}),y)return}if(a.c(e,this.observer,r,h,this.audioCodec),c=0,l=a.b(e.samplerate),n&&s){var m=s+l;Math.abs(m-i)>1&&(u.b.log("AAC: align PTS for overlapping frames by "+Math.round((m-i)/90)),i=m)}for(;h<p;)if(a.d(r,h)&&h+5<p){var b=a.a(e,r,h,i,c);if(!b)break;h+=b.length,f=b.sample.pts,c++}else h++;n=h<p?r.subarray(h,p):null,this.aacOverFlow=n,this.aacLastPTS=f},t.prototype._parseMPEGPES=function(t){for(var e=t.data,r=e.length,i=0,a=0,o=t.pts;a<r;)if(n.a.isHeader(e,a)){var s=n.a.appendFrame(this._audioTrack,e,a,o,i);if(!s)break;a+=s.length,i++}else a++},t.prototype._parseID3PES=function(t){this._id3Track.samples.push(t)},t}();e.a=h},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(0),n=function(){function t(e){i(this,t),this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}return t.prototype.loadWord=function(){var t=this.data,e=this.bytesAvailable,r=t.byteLength-e,i=new Uint8Array(4),a=Math.min(4,e);if(0===a)throw new Error("no bytes available");i.set(t.subarray(r,r+a)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*a,this.bytesAvailable-=a},t.prototype.skipBits=function(t){var e=void 0;this.bitsAvailable>t?(this.word<<=t,this.bitsAvailable-=t):(t-=this.bitsAvailable,e=t>>3,t-=e>>3,this.bytesAvailable-=e,this.loadWord(),this.word<<=t,this.bitsAvailable-=t)},t.prototype.readBits=function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&a.b.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0&&this.bitsAvailable?r<<e|this.readBits(e):r},t.prototype.skipLZ=function(){var t=void 0;for(t=0;t<this.bitsAvailable;++t)if(0!=(this.word&2147483648>>>t))return this.word<<=t,this.bitsAvailable-=t,t;return this.loadWord(),t+this.skipLZ()},t.prototype.skipUEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.skipEG=function(){this.skipBits(1+this.skipLZ())},t.prototype.readUEG=function(){var t=this.skipLZ();return this.readBits(t+1)-1},t.prototype.readEG=function(){var t=this.readUEG();return 1&t?1+t>>>1:-1*(t>>>1)},t.prototype.readBoolean=function(){return 1===this.readBits(1)},t.prototype.readUByte=function(){return this.readBits(8)},t.prototype.readUShort=function(){return this.readBits(16)},t.prototype.readUInt=function(){return this.readBits(32)},t.prototype.skipScalingList=function(t){var e=8,r=8,i=void 0,a=void 0;for(i=0;i<t;i++)0!==r&&(a=this.readEG(),r=(e+a+256)%256),e=0===r?e:r},t.prototype.readSPS=function(){var t=0,e=0,r=0,i=0,a=void 0,n=void 0,o=void 0,s=void 0,l=void 0,u=void 0,d=void 0,c=this.readUByte.bind(this),h=this.readBits.bind(this),f=this.readUEG.bind(this),p=this.readBoolean.bind(this),v=this.skipBits.bind(this),g=this.skipEG.bind(this),y=this.skipUEG.bind(this),m=this.skipScalingList.bind(this);if(c(),a=c(),h(5),v(3),c(),y(),100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a){var b=f();if(3===b&&v(1),y(),y(),v(1),p())for(u=3!==b?8:12,d=0;d<u;d++)p()&&m(d<6?16:64)}y();var E=f();if(0===E)f();else if(1===E)for(v(1),g(),g(),n=f(),d=0;d<n;d++)g();y(),v(1),o=f(),s=f(),l=h(1),0===l&&v(1),v(1),p()&&(t=f(),e=f(),r=f(),i=f());var T=[1,1];if(p()&&p()){switch(c()){case 1:T=[1,1];break;case 2:T=[12,11];break;case 3:T=[10,11];break;case 4:T=[16,11];break;case 5:T=[40,33];break;case 6:T=[24,11];break;case 7:T=[20,11];break;case 8:T=[32,11];break;case 9:T=[80,33];break;case 10:T=[18,11];break;case 11:T=[15,11];break;case 12:T=[64,33];break;case 13:T=[160,99];break;case 14:T=[4,3];break;case 15:T=[3,2];break;case 16:T=[2,1];break;case 255:T=[c()<<8|c(),c()<<8|c()]}}return{width:Math.ceil(16*(o+1)-2*t-2*e),height:(2-l)*(s+1)*16-(l?2:4)*(r+i),pixelRatio:T}},t.prototype.readSliceType=function(){return this.readUByte(),this.readUEG(),this.readUEG()},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(9),n=function(){function t(e,r,n,o){i(this,t),this.decryptdata=n,this.discardEPB=o,this.decrypter=new a.a(e,r,{removePKCS7Padding:!1})}return t.prototype.decryptBuffer=function(t,e){this.decrypter.decrypt(t,this.decryptdata.key.buffer,this.decryptdata.iv.buffer,e)},t.prototype.decryptAacSample=function(t,e,r,i){var a=t[e].unit,n=a.subarray(16,a.length-a.length%16),o=n.buffer.slice(n.byteOffset,n.byteOffset+n.length),s=this;this.decryptBuffer(o,function(n){n=new Uint8Array(n),a.set(n,16),i||s.decryptAacSamples(t,e+1,r)})},t.prototype.decryptAacSamples=function(t,e,r){for(;;e++){if(e>=t.length)return void r();if(!(t[e].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(t,e,r,i),!i)return}}},t.prototype.getAvcEncryptedData=function(t){for(var e=16*Math.floor((t.length-48)/160)+16,r=new Int8Array(e),i=0,a=32;a<=t.length-16;a+=160,i+=16)r.set(t.subarray(a,a+16),i);return r},t.prototype.getAvcDecryptedUnit=function(t,e){e=new Uint8Array(e);for(var r=0,i=32;i<=t.length-16;i+=160,r+=16)t.set(e.subarray(r,r+16),i);return t},t.prototype.decryptAvcSample=function(t,e,r,i,a,n){var o=this.discardEPB(a.data),s=this.getAvcEncryptedData(o),l=this;this.decryptBuffer(s.buffer,function(s){a.data=l.getAvcDecryptedUnit(o,s),n||l.decryptAvcSamples(t,e,r+1,i)})},t.prototype.decryptAvcSamples=function(t,e,r,i){for(;;e++,r=0){if(e>=t.length)return void i();for(var a=t[e].units;!(r>=a.length);r++){var n=a[r];if(!(n.length<=48||1!==n.type&&5!==n.type)){var o=this.decrypter.isSync();if(this.decryptAvcSample(t,e,r,i,n,o),!o)return}}}},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(5),n=r(0),o=r(21),s=function(){function t(e,r,a){i(this,t),this.observer=e,this.config=a,this.remuxer=r}return t.prototype.resetInitSegment=function(t,e,r,i){this._audioTrack={container:"audio/mpeg",type:"audio",id:-1,sequenceNumber:0,isAAC:!1,samples:[],len:0,manifestCodec:e,duration:i,inputTimeScale:9e4}},t.prototype.resetTimeStamp=function(){},t.probe=function(t){var e=void 0,r=void 0,i=a.a.getID3Data(t,0);if(i&&void 0!==a.a.getTimeStamp(i))for(e=i.length,r=Math.min(t.length-1,e+100);e<r;e++)if(o.a.probe(t,e))return n.b.log("MPEG Audio sync word found !"),!0;return!1},t.prototype.append=function(t,e,r,i){for(var n=a.a.getID3Data(t,0),s=a.a.getTimeStamp(n),l=s?90*s:9e4*e,u=n.length,d=t.length,c=0,h=0,f=this._audioTrack,p=[{pts:l,dts:l,data:n}];u<d;)if(o.a.isHeader(t,u)){var v=o.a.appendFrame(f,t,u,l,c);if(!v)break;u+=v.length,h=v.sample.pts,c++}else a.a.isHeader(t,u)?(n=a.a.getID3Data(t,u),p.push({pts:h,dts:h,data:n}),u+=n.length):u++;this.remuxer.remux(f,{samples:[]},{samples:p,inputTimeScale:9e4},{samples:[]},e,r,i)},t.prototype.destroy=function(){},t}();e.a=s},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(42),n=r(1),o=r(0),s=r(43),l=r(2),u=function(){function t(e,r,a,n){i(this,t),this.observer=e,this.config=r,this.typeSupported=a;var o=navigator.userAgent;this.isSafari=n&&n.indexOf("Apple")>-1&&o&&!o.match("CriOS"),this.ISGenerated=!1}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(t){this._initPTS=this._initDTS=t},t.prototype.resetInitSegment=function(){this.ISGenerated=!1},t.prototype.remux=function(t,e,r,i,a,s,l){if(this.ISGenerated||this.generateIS(t,e,a),this.ISGenerated){var u=t.samples.length,d=e.samples.length,c=a,h=a;if(u&&d){var f=(t.samples[0].dts-e.samples[0].dts)/e.inputTimeScale;c+=Math.max(0,f),h+=Math.max(0,-f)}if(u){t.timescale||(o.b.warn("regenerate InitSegment as audio detected"),this.generateIS(t,e,a));var p=this.remuxAudio(t,c,s,l);if(d){var v=void 0;p&&(v=p.endPTS-p.startPTS),e.timescale||(o.b.warn("regenerate InitSegment as video detected"),this.generateIS(t,e,a)),this.remuxVideo(e,h,s,v,l)}}else if(d){var g=this.remuxVideo(e,h,s,0,l);g&&t.codec&&this.remuxEmptyAudio(t,c,s,g)}}r.samples.length&&this.remuxID3(r,a),i.samples.length&&this.remuxText(i,a),this.observer.trigger(n.a.FRAG_PARSED)},t.prototype.generateIS=function(t,e,r){var i=this.observer,a=t.samples,u=e.samples,d=this.typeSupported,c="audio/mp4",h={},f={tracks:h},p=void 0===this._initPTS,v=void 0,g=void 0;if(p&&(v=g=1/0),t.config&&a.length&&(t.timescale=t.samplerate,o.b.log("audio sampling rate : "+t.samplerate),t.isAAC||(d.mpeg?(c="audio/mpeg",t.codec=""):d.mp3&&(t.codec="mp3")),h.audio={container:c,codec:t.codec,initSegment:!t.isAAC&&d.mpeg?new Uint8Array:s.a.initSegment([t]),metadata:{channelCount:t.channelCount}},p&&(v=g=a[0].pts-t.inputTimeScale*r)),e.sps&&e.pps&&u.length){var y=e.inputTimeScale;e.timescale=y,h.video={container:"video/mp4",codec:e.codec,initSegment:s.a.initSegment([e]),metadata:{width:e.width,height:e.height}},p&&(v=Math.min(v,u[0].pts-y*r),g=Math.min(g,u[0].dts-y*r),this.observer.trigger(n.a.INIT_PTS_FOUND,{initPTS:v}))}Object.keys(h).length?(i.trigger(n.a.FRAG_PARSING_INIT_SEGMENT,f),this.ISGenerated=!0,p&&(this._initPTS=v,this._initDTS=g)):i.trigger(n.a.ERROR,{type:l.b.MEDIA_ERROR,details:l.a.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})},t.prototype.remuxVideo=function(t,e,r,i,a){var u=8,d=t.timescale,c=void 0,h=void 0,f=void 0,p=void 0,v=void 0,g=void 0,y=void 0,m=t.samples,b=[],E=m.length,T=this._PTSNormalize,S=this._initDTS,R=this.nextAvcDts,A=this.isSafari;if(0!==E){A&&(r|=m.length&&R&&(a&&Math.abs(e-R/d)<.1||Math.abs(m[0].pts-R-S)<d/5)),r||(R=e*d),m.forEach(function(t){t.pts=T(t.pts-S,R),t.dts=T(t.dts-S,R)}),m.sort(function(t,e){var r=t.dts-e.dts,i=t.pts-e.pts;return r||i||t.id-e.id});var _=m.reduce(function(t,e){return Math.max(Math.min(t,e.pts-e.dts),-18e3)},0);if(_<0){o.b.warn("PTS < DTS detected in video samples, shifting DTS by "+Math.round(_/90)+" ms to overcome this issue");for(var w=0;w<m.length;w++)m[w].dts+=_}var L=m[0];v=Math.max(L.dts,0),p=Math.max(L.pts,0);var D=Math.round((v-R)/90);r&&D&&(D>1?o.b.log("AVC:"+D+" ms hole between fragments detected,filling it"):D<-1&&o.b.log("AVC:"+-D+" ms overlapping between fragments detected"),v=R,m[0].dts=v,p=Math.max(p-D,R),m[0].pts=p,o.b.log("Video/PTS/DTS adjusted: "+Math.round(p/90)+"/"+Math.round(v/90)+",delta:"+D+" ms")),v,L=m[m.length-1],y=Math.max(L.dts,0),g=Math.max(L.pts,0,y),A&&(c=Math.round((y-v)/(m.length-1)));for(var I=0,O=0,k=0;k<E;k++){for(var C=m[k],P=C.units,x=P.length,F=0,N=0;N<x;N++)F+=P[N].data.length;O+=F,I+=x,C.length=F,C.dts=A?v+k*c:Math.max(C.dts,v),C.pts=Math.max(C.pts,C.dts)}var M=O+4*I+8;try{h=new Uint8Array(M)}catch(t){return void this.observer.trigger(n.a.ERROR,{type:l.b.MUX_ERROR,details:l.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:M,reason:"fail allocating video mdat "+M})}var U=new DataView(h.buffer);U.setUint32(0,M),h.set(s.a.types.mdat,4);for(var B=0;B<E;B++){for(var G=m[B],K=G.units,j=0,H=void 0,V=0,Y=K.length;V<Y;V++){var W=K[V],q=W.data,X=W.data.byteLength;U.setUint32(u,X),u+=4,h.set(q,u),u+=X,j+=4+X}if(A)H=Math.max(0,c*Math.round((G.pts-G.dts)/c));else{if(B<E-1)c=m[B+1].dts-G.dts;else{var z=this.config,Q=G.dts-m[B>0?B-1:B].dts;if(z.stretchShortVideoTrack){var J=z.maxBufferHole,$=Math.floor(J*d),Z=(i?p+i*d:this.nextAudioPts)-G.pts;Z>$?(c=Z-Q,c<0&&(c=Q),o.b.log("It is approximately "+Z/90+" ms to the next segment; using duration "+c/90+" ms for the last video frame.")):c=Q}else c=Q}H=Math.round(G.pts-G.dts)}b.push({size:j,duration:c,cts:H,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:G.key?2:1,isNonSync:G.key?0:1}})}this.nextAvcDts=y+c;var tt=t.dropped;if(t.len=0,t.nbNalu=0,t.dropped=0,b.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var et=b[0].flags;et.dependsOn=2,et.isNonSync=0}t.samples=b,f=s.a.moof(t.sequenceNumber++,v,t),t.samples=[];var rt={data1:f,data2:h,startPTS:p/d,endPTS:(g+c)/d,startDTS:v/d,endDTS:this.nextAvcDts/d,type:"video",hasAudio:!1,hasVideo:!0,nb:b.length,dropped:tt};return this.observer.trigger(n.a.FRAG_PARSING_DATA,rt),rt}},t.prototype.remuxAudio=function(t,e,r,i){var u=t.inputTimeScale,d=t.timescale,c=u/d,h=t.isAAC?1024:1152,f=h*c,p=this._PTSNormalize,v=this._initDTS,g=!t.isAAC&&this.typeSupported.mpeg,y=void 0,m=void 0,b=void 0,E=void 0,T=void 0,S=void 0,R=void 0,A=t.samples,_=[],w=this.nextAudioPts;if(r|=A.length&&w&&(i&&Math.abs(e-w/u)<.1||Math.abs(A[0].pts-w-v)<20*f),A.forEach(function(t){t.pts=t.dts=p(t.pts-v,e*u)}),A=A.filter(function(t){return t.pts>=0}),0!==A.length){if(r||(w=i?e*u:A[0].pts),t.isAAC)for(var L=this.config.maxAudioFramesDrift,D=0,I=w;D<A.length;){var O,k=A[D],C=k.pts;O=C-I;var P=Math.abs(1e3*O/u);if(O<=-L*f)o.b.warn("Dropping 1 audio frame @ "+(I/u).toFixed(3)+"s due to "+Math.round(P)+" ms overlap."),A.splice(D,1),t.len-=k.unit.length;else if(O>=L*f&&P<1e4&&I){var x=Math.round(O/f);o.b.warn("Injecting "+x+" audio frame @ "+(I/u).toFixed(3)+"s due to "+Math.round(1e3*O/u)+" ms gap.");for(var F=0;F<x;F++){var N=Math.max(I,0);b=a.a.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),b||(o.b.log("Unable to get silent frame for given audio codec; duplicating last frame instead."),b=k.unit.subarray()),A.splice(D,0,{unit:b,pts:N,dts:N}),t.len+=b.length,I+=f,D++}k.pts=k.dts=I,I+=f,D++}else Math.abs(O),k.pts=k.dts=I,I+=f,D++}for(var M=0,U=A.length;M<U;M++){var B=A[M],G=B.unit,K=B.pts;if(void 0!==R)m.duration=Math.round((K-R)/c);else{var j=Math.round(1e3*(K-w)/u),H=0;if(r&&t.isAAC&&j){if(j>0&&j<1e4)H=Math.round((K-w)/f),o.b.log(j+" ms hole between AAC samples detected,filling it"),H>0&&(b=a.a.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),b||(b=G.subarray()),t.len+=H*b.length);else if(j<-12){o.b.log("drop overlapping AAC sample, expected/parsed/delta:"+(w/u).toFixed(3)+"s/"+(K/u).toFixed(3)+"s/"+-j+"ms"),t.len-=G.byteLength;continue}K=w}if(S=K,!(t.len>0))return;var V=g?t.len:t.len+8;y=g?0:8;try{E=new Uint8Array(V)}catch(t){return void this.observer.trigger(n.a.ERROR,{type:l.b.MUX_ERROR,details:l.a.REMUX_ALLOC_ERROR,fatal:!1,bytes:V,reason:"fail allocating audio mdat "+V})}if(!g){new DataView(E.buffer).setUint32(0,V),E.set(s.a.types.mdat,4)}for(var Y=0;Y<H;Y++)b=a.a.getSilentFrame(t.manifestCodec||t.codec,t.channelCount),b||(o.b.log("Unable to get silent frame for given audio codec; duplicating this frame instead."),b=G.subarray()),E.set(b,y),y+=b.byteLength,m={size:b.byteLength,cts:0,duration:1024,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},_.push(m)}E.set(G,y);var W=G.byteLength;y+=W,m={size:W,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},_.push(m),R=K}var q=0,X=_.length;if(X>=2&&(q=_[X-2].duration,m.duration=q),X){this.nextAudioPts=w=R+c*q,t.len=0,t.samples=_,T=g?new Uint8Array:s.a.moof(t.sequenceNumber++,S/c,t),t.samples=[];var z=S/u,Q=w/u,J={data1:T,data2:E,startPTS:z,endPTS:Q,startDTS:z,endDTS:Q,type:"audio",hasAudio:!0,hasVideo:!1,nb:X};return this.observer.trigger(n.a.FRAG_PARSING_DATA,J),J}return null}},t.prototype.remuxEmptyAudio=function(t,e,r,i){var n=t.inputTimeScale,s=t.samplerate?t.samplerate:n,l=n/s,u=this.nextAudioPts,d=(void 0!==u?u:i.startDTS*n)+this._initDTS,c=i.endDTS*n+this._initDTS,h=1024*l,f=Math.ceil((c-d)/h),p=a.a.getSilentFrame(t.manifestCodec||t.codec,t.channelCount);if(o.b.warn("remux empty Audio"),!p)return void o.b.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!");for(var v=[],g=0;g<f;g++){var y=d+g*h;v.push({unit:p,pts:y,dts:y}),t.len+=p.length}t.samples=v,this.remuxAudio(t,e,r)},t.prototype.remuxID3=function(t,e){var r=t.samples.length,i=void 0,a=t.inputTimeScale,o=this._initPTS,s=this._initDTS;if(r){for(var l=0;l<r;l++)i=t.samples[l],i.pts=(i.pts-o)/a,i.dts=(i.dts-s)/a;this.observer.trigger(n.a.FRAG_PARSING_METADATA,{samples:t.samples})}t.samples=[],e=e},t.prototype.remuxText=function(t,e){t.samples.sort(function(t,e){return t.pts-e.pts});var r=t.samples.length,i=void 0,a=t.inputTimeScale,o=this._initPTS;if(r){for(var s=0;s<r;s++)i=t.samples[s],i.pts=(i.pts-o)/a;this.observer.trigger(n.a.FRAG_PARSING_USERDATA,{samples:t.samples})}t.samples=[],e=e},t.prototype._PTSNormalize=function(t,e){var r=void 0;if(void 0===e)return t;for(r=e<t?-8589934592:8589934592;Math.abs(t-e)>4294967296;)t+=r;return t},t}();e.a=u},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=function(){function t(){i(this,t)}return t.getSilentFrame=function(t,e){switch(t){case"mp4a.40.2":if(1===e)return new Uint8Array([0,200,0,128,35,128]);if(2===e)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===e)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(1===e)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===e)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},t}();e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=Math.pow(2,32)-1,n=function(){function t(){i(this,t)}return t.init=function(){t.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};var e=void 0;for(e in t.types)t.types.hasOwnProperty(e)&&(t.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);var r=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);t.HDLR_TYPES={video:r,audio:i};var a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n=new Uint8Array([0,0,0,0,0,0,0,0]);t.STTS=t.STSC=t.STCO=n,t.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),t.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),t.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),t.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var o=new Uint8Array([105,115,111,109]),s=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);t.FTYP=t.box(t.types.ftyp,o,l,o,s),t.DINF=t.box(t.types.dinf,t.box(t.types.dref,a))},t.box=function(t){for(var e=Array.prototype.slice.call(arguments,1),r=8,i=e.length,a=i,n=void 0;i--;)r+=e[i].byteLength;for(n=new Uint8Array(r),n[0]=r>>24&255,n[1]=r>>16&255,n[2]=r>>8&255,n[3]=255&r,n.set(t,4),i=0,r=8;i<a;i++)n.set(e[i],r),r+=e[i].byteLength;return n},t.hdlr=function(e){return t.box(t.types.hdlr,t.HDLR_TYPES[e])},t.mdat=function(e){return t.box(t.types.mdat,e)},t.mdhd=function(e,r){r*=e;var i=Math.floor(r/(a+1)),n=Math.floor(r%(a+1));return t.box(t.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,85,196,0,0]))},t.mdia=function(e){return t.box(t.types.mdia,t.mdhd(e.timescale,e.duration),t.hdlr(e.type),t.minf(e))},t.mfhd=function(e){return t.box(t.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))},t.minf=function(e){return"audio"===e.type?t.box(t.types.minf,t.box(t.types.smhd,t.SMHD),t.DINF,t.stbl(e)):t.box(t.types.minf,t.box(t.types.vmhd,t.VMHD),t.DINF,t.stbl(e))},t.moof=function(e,r,i){return t.box(t.types.moof,t.mfhd(e),t.traf(i,r))},t.moov=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trak(e[r]);return t.box.apply(null,[t.types.moov,t.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(t.mvex(e)))},t.mvex=function(e){for(var r=e.length,i=[];r--;)i[r]=t.trex(e[r]);return t.box.apply(null,[t.types.mvex].concat(i))},t.mvhd=function(e,r){r*=e;var i=Math.floor(r/(a+1)),n=Math.floor(r%(a+1)),o=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,n>>24,n>>16&255,n>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return t.box(t.types.mvhd,o)},t.sdtp=function(e){var r=e.samples||[],i=new Uint8Array(4+r.length),a=void 0,n=void 0;for(n=0;n<r.length;n++)a=r[n].flags,i[n+4]=a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy;return t.box(t.types.sdtp,i)},t.stbl=function(e){return t.box(t.types.stbl,t.stsd(e),t.box(t.types.stts,t.STTS),t.box(t.types.stsc,t.STSC),t.box(t.types.stsz,t.STSZ),t.box(t.types.stco,t.STCO))},t.avc1=function(e){var r=[],i=[],a=void 0,n=void 0,o=void 0;for(a=0;a<e.sps.length;a++)n=e.sps[a],o=n.byteLength,r.push(o>>>8&255),r.push(255&o),r=r.concat(Array.prototype.slice.call(n));for(a=0;a<e.pps.length;a++)n=e.pps[a],o=n.byteLength,i.push(o>>>8&255),i.push(255&o),i=i.concat(Array.prototype.slice.call(n));var s=t.box(t.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(i))),l=e.width,u=e.height,d=e.pixelRatio[0],c=e.pixelRatio[1];return t.box(t.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),s,t.box(t.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),t.box(t.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,c>>24,c>>16&255,c>>8&255,255&c])))},t.esds=function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))},t.mp4a=function(e){var r=e.samplerate;return t.box(t.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),t.box(t.types.esds,t.esds(e)))},t.mp3=function(e){var r=e.samplerate;return t.box(t.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))},t.stsd=function(e){return"audio"===e.type?e.isAAC||"mp3"!==e.codec?t.box(t.types.stsd,t.STSD,t.mp4a(e)):t.box(t.types.stsd,t.STSD,t.mp3(e)):t.box(t.types.stsd,t.STSD,t.avc1(e))},t.tkhd=function(e){var r=e.id,i=e.duration*e.timescale,n=e.width,o=e.height,s=Math.floor(i/(a+1)),l=Math.floor(i%(a+1));return t.box(t.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,l>>24,l>>16&255,l>>8&255,255&l,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,o>>8&255,255&o,0,0]))},t.traf=function(e,r){var i=t.sdtp(e),n=e.id,o=Math.floor(r/(a+1)),s=Math.floor(r%(a+1));return t.box(t.types.traf,t.box(t.types.tfhd,new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n])),t.box(t.types.tfdt,new Uint8Array([1,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,s>>24,s>>16&255,s>>8&255,255&s])),t.trun(e,i.length+16+20+8+16+8+8),i)},t.trak=function(e){return e.duration=e.duration||4294967295,t.box(t.types.trak,t.tkhd(e),t.mdia(e))},t.trex=function(e){var r=e.id;return t.box(t.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))},t.trun=function(e,r){var i=e.samples||[],a=i.length,n=12+16*a,o=new Uint8Array(n),s=void 0,l=void 0,u=void 0,d=void 0,c=void 0,h=void 0;for(r+=8+n,o.set([0,0,15,1,a>>>24&255,a>>>16&255,a>>>8&255,255&a,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),s=0;s<a;s++)l=i[s],u=l.duration,d=l.size,c=l.flags,h=l.cts,o.set([u>>>24&255,u>>>16&255,u>>>8&255,255&u,d>>>24&255,d>>>16&255,d>>>8&255,255&d,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.paddingValue<<1|c.isNonSync,61440&c.degradPrio,15&c.degradPrio,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*s);return t.box(t.types.trun,o)},t.initSegment=function(e){t.types||t.init();var r=t.moov(e),i=void 0;return i=new Uint8Array(t.FTYP.byteLength+r.byteLength),i.set(t.FTYP),i.set(r,t.FTYP.byteLength),i},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(1),n=function(){function t(e){i(this,t),this.observer=e}return t.prototype.destroy=function(){},t.prototype.resetTimeStamp=function(){},t.prototype.resetInitSegment=function(){},t.prototype.remux=function(t,e,r,i,n,o,s,l){var u=this.observer,d="";t&&(d+="audio"),e&&(d+="video"),u.trigger(a.a.FRAG_PARSING_DATA,{data1:l,startPTS:n,startDTS:n,type:d,hasAudio:!!t,hasVideo:!!e,nb:1,dropped:0}),u.trigger(a.a.FRAG_PARSED)},t}();e.a=n},function(t,e,r){function i(t){function e(i){if(r[i])return r[i].exports;var a=r[i]={i:i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,e),a.l=!0,a.exports}var r={};e.m=t,e.c=r,e.i=function(t){return t},e.d=function(t,r,i){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:i})},e.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="/",e.oe=function(t){throw console.error(t),t};var i=e(e.s=ENTRY_MODULE);return i.default||i}function a(t){return(t+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function n(t,e,i){var n={};n[i]=[];var o=e.toString(),s=o.match(/^function\s?\(\w+,\s*\w+,\s*(\w+)\)/);if(!s)return n;for(var d,c=s[1],h=new RegExp("(\\\\n|\\W)"+a(c)+u,"g");d=h.exec(o);)"dll-reference"!==d[3]&&n[i].push(d[3]);for(h=new RegExp("\\("+a(c)+'\\("(dll-reference\\s('+l+'))"\\)\\)'+u,"g");d=h.exec(o);)t[d[2]]||(n[i].push(d[1]),t[d[2]]=r(d[1]).m),n[d[2]]=n[d[2]]||[],n[d[2]].push(d[4]);return n}function o(t){return Object.keys(t).reduce(function(e,r){return e||t[r].length>0},!1)}function s(t,e){for(var r={main:[e]},i={main:[]},a={main:{}};o(r);)for(var s=Object.keys(r),l=0;l<s.length;l++){var u=s[l],d=r[u],c=d.pop();if(a[u]=a[u]||{},!a[u][c]&&t[u][c]){a[u][c]=!0,i[u]=i[u]||[],i[u].push(c);for(var h=n(t,t[u][c],u),f=Object.keys(h),p=0;p<f.length;p++)r[f[p]]=r[f[p]]||[],r[f[p]]=r[f[p]].concat(h[f[p]])}}return i}var l="[\\.|\\-|\\+|\\w|/|@]+",u="\\((/\\*.*?\\*/)?s?.*?("+l+").*?\\)";t.exports=function(t,e){e=e||{};var a={main:r.m},n=e.all?{main:Object.keys(a)}:s(a,t),o="";Object.keys(n).filter(function(t){return"main"!==t}).forEach(function(t){for(var e=0;n[t][e];)e++;n[t].push(e),a[t][e]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",o=o+"var "+t+" = ("+i.toString().replace("ENTRY_MODULE",JSON.stringify(e))+")({"+n[t].map(function(e){return JSON.stringify(e)+": "+a[t][e].toString()}).join(",")+"});\n"}),o=o+"("+i.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+n.main.map(function(t){return JSON.stringify(t)+": "+a.main[t].toString()}).join(",")+"})(self);";var l=new window.Blob([o],{type:"text/javascript"});if(e.bare)return l;var u=window.URL||window.webkitURL||window.mozURL||window.msURL,d=u.createObjectURL(l),c=new window.Worker(d);return c.objectURL=d,c}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(19),a=r(1),n=r(0),o=r(10),s=r.n(o),l=function(t){var e=new s.a;e.trigger=function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];e.emit.apply(e,[t,t].concat(i))},e.off=function(t){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];e.removeListener.apply(e,[t].concat(i))};var r=function(e,r){t.postMessage({event:e,data:r})};t.addEventListener("message",function(a){var o=a.data;switch(o.cmd){case"init":var s=JSON.parse(o.config);t.demuxer=new i.a(e,o.typeSupported,s,o.vendor);try{Object(n.a)(!0===s.debug)}catch(t){console.warn("demuxerWorker: unable to enable logs")}r("init",null);break;case"demux":t.demuxer.push(o.data,o.decryptdata,o.initSegment,o.audioCodec,o.videoCodec,o.timeOffset,o.discontinuity,o.trackSwitch,o.contiguous,o.duration,o.accurateTimeOffset,o.defaultInitPTS)}}),e.on(a.a.FRAG_DECRYPTED,r),e.on(a.a.FRAG_PARSING_INIT_SEGMENT,r),e.on(a.a.FRAG_PARSED,r),e.on(a.a.ERROR,r),e.on(a.a.FRAG_PARSING_METADATA,r),e.on(a.a.FRAG_PARSING_USERDATA,r),e.on(a.a.INIT_PTS_FOUND,r),e.on(a.a.FRAG_PARSING_DATA,function(e,r){var i=[],a={event:e,data:r};r.data1&&(a.data1=r.data1.buffer,i.push(r.data1.buffer),delete r.data1),r.data2&&(a.data2=r.data2.buffer,i.push(r.data2.buffer),delete r.data2),t.postMessage(a,i)})};e.default=l},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(0),u=r(2),d=r(17),c=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),h=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MANIFEST_LOADED,o.a.LEVEL_LOADED,o.a.FRAG_LOADED,o.a.ERROR));return n.canload=!1,n.currentLevelIndex=null,n.manualLevelIndex=-1,n.timer=null,n}return n(e,t),e.prototype.onHandlerDestroying=function(){this.cleanTimer(),this.manualLevelIndex=-1},e.prototype.cleanTimer=function(){null!==this.timer&&(clearTimeout(this.timer),this.timer=null)},e.prototype.startLoad=function(){var t=this._levels;this.canload=!0,this.levelRetryCount=0,t&&t.forEach(function(t){t.loadError=0;var e=t.details;e&&e.live&&(t.details=void 0)}),null!==this.timer&&this.loadLevel()},e.prototype.stopLoad=function(){this.canload=!1},e.prototype.onManifestLoaded=function(t){var e=[],r=void 0,i={},a=null,n=!1,s=!1,c=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),h=[];if(t.levels.forEach(function(t){t.loadError=0,t.fragmentError=!1,n=n||!!t.videoCodec,s=s||!!t.audioCodec||!(!t.attrs||!t.attrs.AUDIO),!0===c&&t.audioCodec&&-1!==t.audioCodec.indexOf("mp4a.40.34")&&(t.audioCodec=void 0),a=i[t.bitrate],void 0===a?(t.url=[t.url],t.urlId=0,i[t.bitrate]=t,e.push(t)):a.url.push(t.url)}),!0===n&&!0===s&&(e=e.filter(function(t){return!!t.videoCodec})),e=e.filter(function(t){var e=t.audioCodec,r=t.videoCodec;return(!e||Object(d.a)(e))&&(!r||Object(d.a)(r))}),t.audioTracks&&(h=t.audioTracks.filter(function(t){return!t.audioCodec||Object(d.a)(t.audioCodec,"audio")})),e.length>0){r=e[0].bitrate,e.sort(function(t,e){return t.bitrate-e.bitrate}),this._levels=e;for(var f=0;f<e.length;f++)if(e[f].bitrate===r){this._firstLevel=f,l.b.log("manifest loaded,"+e.length+" level(s) found, first bitrate:"+r);break}this.hls.trigger(o.a.MANIFEST_PARSED,{levels:e,audioTracks:h,firstLevel:this._firstLevel,stats:t.stats,audio:s,video:n,altAudio:h.length>0})}else this.hls.trigger(o.a.ERROR,{type:u.b.MEDIA_ERROR,details:u.a.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:this.hls.url,reason:"no level with compatible codecs found in manifest"})},e.prototype.setLevelInternal=function(t){var e=this._levels,r=this.hls;if(t>=0&&t<e.length){if(this.cleanTimer(),this.currentLevelIndex!==t){l.b.log("switching to level "+t),this.currentLevelIndex=t;var i=e[t];i.level=t,r.trigger(o.a.LEVEL_SWITCHING,i)}var a=e[t],n=a.details;if(!n||!0===n.live){var s=a.urlId;r.trigger(o.a.LEVEL_LOADING,{url:a.url[s],level:t,id:s})}}else r.trigger(o.a.ERROR,{type:u.b.OTHER_ERROR,details:u.a.LEVEL_SWITCH_ERROR,level:t,fatal:!1,reason:"invalid level idx"})},e.prototype.onError=function(t){if(!0===t.fatal)return void(t.type===u.b.NETWORK_ERROR&&this.cleanTimer());var e=!1,r=!1,i=void 0;switch(t.details){case u.a.FRAG_LOAD_ERROR:case u.a.FRAG_LOAD_TIMEOUT:case u.a.KEY_LOAD_ERROR:case u.a.KEY_LOAD_TIMEOUT:i=t.frag.level,r=!0;break;case u.a.LEVEL_LOAD_ERROR:case u.a.LEVEL_LOAD_TIMEOUT:i=t.context.level,e=!0;break;case u.a.REMUX_ALLOC_ERROR:i=t.level,e=!0}void 0!==i&&this.recoverLevel(t,i,e,r)},e.prototype.recoverLevel=function(t,e,r,i){var a=this,n=this.hls.config,o=t.details,s=this._levels[e],u=void 0,d=void 0,c=void 0;if(s.loadError++,s.fragmentError=i,!0===r){if(!(this.levelRetryCount+1<=n.levelLoadingMaxRetry))return l.b.error("level controller, cannot recover from "+o+" error"),this.currentLevelIndex=null,this.cleanTimer(),void(t.fatal=!0);d=Math.min(Math.pow(2,this.levelRetryCount)*n.levelLoadingRetryDelay,n.levelLoadingMaxRetryTimeout),this.timer=setTimeout(function(){return a.loadLevel()},d),t.levelRetry=!0,this.levelRetryCount++,l.b.warn("level controller, "+o+", retry in "+d+" ms, current retry count is "+this.levelRetryCount)}!0!==r&&!0!==i||(u=s.url.length,u>1&&s.loadError<u?(l.b.warn("level controller, "+o+" for level "+e+": switching to redundant stream id "+s.urlId),s.urlId=(s.urlId+1)%u,s.details=void 0):-1===this.manualLevelIndex?(c=0===e?this._levels.length-1:e-1,l.b.warn("level controller, "+o+": switch to "+c),this.hls.nextAutoLevel=this.currentLevelIndex=c):!0===i&&(l.b.warn("level controller, "+o+": reload a fragment"),this.currentLevelIndex=null))},e.prototype.onFragLoaded=function(t){var e=t.frag;if(void 0!==e&&"main"===e.type){var r=this._levels[e.level];void 0!==r&&(r.fragmentError=!1,r.loadError=0,this.levelRetryCount=0)}},e.prototype.onLevelLoaded=function(t){var e=this,r=t.level;if(r===this.currentLevelIndex){var i=this._levels[r];!1===i.fragmentError&&(i.loadError=0,this.levelRetryCount=0);var a=t.details;if(a.live){var n=1e3*(a.averagetargetduration?a.averagetargetduration:a.targetduration),o=n,s=i.details;s&&a.endSN===s.endSN&&(o/=2,l.b.log("same live playlist, reload twice faster")),o-=performance.now()-t.stats.trequest,o=Math.max(n/2,Math.round(o)),l.b.log("live playlist, reload in "+Math.round(o)+" ms"),this.timer=setTimeout(function(){return e.loadLevel()},o)}else this.cleanTimer()}},e.prototype.loadLevel=function(){var t=void 0,e=void 0;null!==this.currentLevelIndex&&!0===this.canload&&void 0!==(t=this._levels[this.currentLevelIndex])&&t.url.length>0&&(e=t.urlId,this.hls.trigger(o.a.LEVEL_LOADING,{url:t.url[e],level:this.currentLevelIndex,id:e}))},c(e,[{key:"levels",get:function(){return this._levels}},{key:"level",get:function(){return this.currentLevelIndex},set:function(t){var e=this._levels;e&&(t=Math.min(t,e.length-1),this.currentLevelIndex===t&&void 0!==e[t].details||this.setLevelInternal(t))}},{key:"manualLevel",get:function(){return this.manualLevelIndex},set:function(t){this.manualLevelIndex=t,void 0===this._startLevel&&(this._startLevel=t),-1!==t&&(this.level=t)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(t){this._firstLevel=t}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var t=this.hls.config.startLevel;return void 0!==t?t:this._firstLevel}return this._startLevel},set:function(t){this._startLevel=t}},{key:"nextLoadLevel",get:function(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel},set:function(t){this.level=t,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=t)}}]),e}(s.a);e.a=h},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(5),u=r(25),d=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MEDIA_ATTACHED,o.a.MEDIA_DETACHING,o.a.FRAG_PARSING_METADATA));return n.id3Track=void 0,n.media=void 0,n}return n(e,t),e.prototype.destroy=function(){s.a.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){this.media=t.media,this.media},e.prototype.onMediaDetaching=function(){Object(u.a)(this.id3Track),this.id3Track=void 0,this.media=void 0},e.prototype.getID3Track=function(t){for(var e=0;e<t.length;e++){var r=t[e];if("metadata"===r.kind&&"id3"===r.label)return Object(u.b)(r,this.media),r}return this.media.addTextTrack("metadata","id3")},e.prototype.onFragParsingMetadata=function(t){var e=t.frag,r=t.samples;this.id3Track||(this.id3Track=this.getID3Track(this.media.textTracks),this.id3Track.mode="hidden");for(var i=window.WebKitDataCue||window.VTTCue||window.TextTrackCue,a=0;a<r.length;a++){var n=l.a.getID3Frames(r[a].data);if(n){var o=r[a].pts,s=a<r.length-1?r[a+1].pts:e.endPTS;o===s&&(s+=1e-4);for(var u=0;u<n.length;u++){var d=n[u];if(!l.a.isTimeStampFrame(d)){var c=new i(o,s,"");c.value=d,this.id3Track.addCue(c)}}}}},e}(s.a);e.a=d},function(t,e,r){"use strict";function i(){var t=Object(a.a)(),e=window.SourceBuffer||window.WebKitSourceBuffer,r=t&&"function"==typeof t.isTypeSupported&&t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove;return!!r&&!!i}e.a=i;var a=r(11)},function(t,e,r){"use strict";r.d(e,"a",function(){return g});var i=r(51),a=r(54),n=r(55),o=r(56),s=r(57),l=r(58),u=r(59),d=r(60),c=r(62),h=r(66),f=r(67),p=r(68),v=r(69),g={autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,lowBufferWatchdogPeriod:.5,highBufferWatchdogPeriod:3,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,liveDurationInfinity:!1,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:s.a,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,abrController:i.a,bufferController:a.a,capLevelController:n.a,fpsController:o.a,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,requestMediaKeySystemAccessFunc:v.a};g.subtitleStreamController=f.a,g.subtitleTrackController=h.a,g.timelineController=c.a,g.cueHandler=d,g.enableCEA708Captions=!0,g.enableWebVTT=!0,g.captionsTextTrack1Label="English",g.captionsTextTrack1LanguageCode="en",g.captionsTextTrack2Label="Spanish",g.captionsTextTrack2LanguageCode="es",g.audioStreamController=u.a,g.audioTrackController=l.a,g.emeController=p.a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(8),u=r(2),d=r(0),c=r(52),h=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),f=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.FRAG_LOADING,o.a.FRAG_LOADED,o.a.FRAG_BUFFERED,o.a.ERROR));return n.lastLoadedFragLevel=0,n._nextAutoLevel=-1,n.hls=r,n.timer=null,n._bwEstimator=null,n.onCheck=n._abandonRulesCheck.bind(n),n}return n(e,t),e.prototype.destroy=function(){this.clearTimer(),s.a.prototype.destroy.call(this)},e.prototype.onFragLoading=function(t){var e=t.frag;if("main"===e.type){if(this.timer||(this.timer=setInterval(this.onCheck,100)),!this._bwEstimator){var r=this.hls,i=t.frag.level,a=r.levels[i].details.live,n=r.config,o=void 0,s=void 0;a?(o=n.abrEwmaFastLive,s=n.abrEwmaSlowLive):(o=n.abrEwmaFastVoD,s=n.abrEwmaSlowVoD),this._bwEstimator=new c.a(r,s,o,n.abrEwmaDefaultEstimate)}this.fragCurrent=e}},e.prototype._abandonRulesCheck=function(){var t=this.hls,e=t.media,r=this.fragCurrent,i=r.loader,a=t.minAutoLevel;if(!i||i.stats&&i.stats.aborted)return d.b.warn("frag loader destroy or aborted, disarm abandonRules"),this.clearTimer(),void(this._nextAutoLevel=-1);var n=i.stats;if(e&&n&&(!e.paused&&0!==e.playbackRate||!e.readyState)&&r.autoLevel&&r.level){var s=performance.now()-n.trequest,u=Math.abs(e.playbackRate);if(s>500*r.duration/u){var c=t.levels,h=Math.max(1,n.bw?n.bw/8:1e3*n.loaded/s),f=c[r.level],p=f.realBitrate?Math.max(f.realBitrate,f.bitrate):f.bitrate,v=n.total?n.total:Math.max(n.loaded,Math.round(r.duration*p/8)),g=e.currentTime,y=(v-n.loaded)/h,m=(l.a.bufferInfo(e,g,t.config.maxBufferHole).end-g)/u;if(m<2*r.duration/u&&y>m){var b=void 0,E=void 0;for(E=r.level-1;E>a;E--){var T=c[E].realBitrate?Math.max(c[E].realBitrate,c[E].bitrate):c[E].bitrate;if((b=r.duration*T/(6.4*h))<m)break}b<y&&(d.b.warn("loading too slow, abort fragment loading and switch to level "+E+":fragLoadedDelay["+E+"]<fragLoadedDelay["+(r.level-1)+"];bufferStarvationDelay:"+b.toFixed(1)+"<"+y.toFixed(1)+":"+m.toFixed(1)),t.nextLoadLevel=E,this._bwEstimator.sample(s,n.loaded),i.abort(),this.clearTimer(),t.trigger(o.a.FRAG_LOAD_EMERGENCY_ABORTED,{frag:r,stats:n}))}}}},e.prototype.onFragLoaded=function(t){var e=t.frag;if("main"===e.type&&!isNaN(e.sn)){if(this.clearTimer(),this.lastLoadedFragLevel=e.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var r=this.hls.levels[e.level],i=(r.loaded?r.loaded.bytes:0)+t.stats.loaded,a=(r.loaded?r.loaded.duration:0)+t.frag.duration;r.loaded={bytes:i,duration:a},r.realBitrate=Math.round(8*i/a)}if(t.frag.bitrateTest){var n=t.stats;n.tparsed=n.tbuffered=n.tload,this.onFragBuffered(t)}}},e.prototype.onFragBuffered=function(t){var e=t.stats,r=t.frag;if(!(!0===e.aborted||"main"!==r.type||isNaN(r.sn)||r.bitrateTest&&e.tload!==e.tbuffered)){var i=e.tparsed-e.trequest;d.b.log("latency/loading/parsing/append/kbps:"+Math.round(e.tfirst-e.trequest)+"/"+Math.round(e.tload-e.tfirst)+"/"+Math.round(e.tparsed-e.tload)+"/"+Math.round(e.tbuffered-e.tparsed)+"/"+Math.round(8*e.loaded/(e.tbuffered-e.trequest))),this._bwEstimator.sample(i,e.loaded),e.bwEstimate=this._bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=i/1e3:this.bitrateTestDelay=0}},e.prototype.onError=function(t){switch(t.details){case u.a.FRAG_LOAD_ERROR:case u.a.FRAG_LOAD_TIMEOUT:this.clearTimer()}},e.prototype.clearTimer=function(){clearInterval(this.timer),this.timer=null},e.prototype._findBestLevel=function(t,e,r,i,a,n,o,s,l){for(var u=a;u>=i;u--){var c=l[u],h=c.details,f=h?h.totalduration/h.fragments.length:e,p=!!h&&h.live,v=void 0;v=u<=t?o*r:s*r;var g=l[u].realBitrate?Math.max(l[u].realBitrate,l[u].bitrate):l[u].bitrate,y=g*f/v;if(d.b.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+u+"/"+Math.round(v)+"/"+g+"/"+f+"/"+n+"/"+y),v>g&&(!y||p&&!this.bitrateTestDelay||y<n))return u}return-1},h(e,[{key:"nextAutoLevel",get:function(){var t=this._nextAutoLevel,e=this._bwEstimator;if(!(-1===t||e&&e.canEstimate()))return t;var r=this._nextABRAutoLevel;return-1!==t&&(r=Math.min(t,r)),r},set:function(t){this._nextAutoLevel=t}},{key:"_nextABRAutoLevel",get:function(){var t=this.hls,e=t.maxAutoLevel,r=t.levels,i=t.config,a=t.minAutoLevel,n=t.media,o=this.lastLoadedFragLevel,s=this.fragCurrent?this.fragCurrent.duration:0,u=n?n.currentTime:0,c=n&&0!==n.playbackRate?Math.abs(n.playbackRate):1,h=this._bwEstimator?this._bwEstimator.getEstimate():i.abrEwmaDefaultEstimate,f=(l.a.bufferInfo(n,u,i.maxBufferHole).end-u)/c,p=this._findBestLevel(o,s,h,a,e,f,i.abrBandWidthFactor,i.abrBandWidthUpFactor,r);if(p>=0)return p;d.b.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var v=s?Math.min(s,i.maxStarvationDelay):i.maxStarvationDelay,g=i.abrBandWidthFactor,y=i.abrBandWidthUpFactor;if(0===f){var m=this.bitrateTestDelay;if(m){v=(s?Math.min(s,i.maxLoadingDelay):i.maxLoadingDelay)-m,d.b.trace("bitrate test took "+Math.round(1e3*m)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*v)+" ms"),g=y=1}}return p=this._findBestLevel(o,s,h,a,e,f+v,g,y,r),Math.max(p,0)}}]),e}(s.a);e.a=f},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(53),n=function(){function t(e,r,n,o){i(this,t),this.hls=e,this.defaultEstimate_=o,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new a.a(r),this.fast_=new a.a(n)}return t.prototype.sample=function(t,e){t=Math.max(t,this.minDelayMs_);var r=8e3*e/t,i=t/1e3;this.fast_.sample(i,r),this.slow_.sample(i,r)},t.prototype.canEstimate=function(){var t=this.fast_;return t&&t.getTotalWeight()>=this.minWeight_},t.prototype.getEstimate=function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_},t.prototype.destroy=function(){},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=function(){function t(e){i(this,t),this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=0,this.totalWeight_=0}return t.prototype.sample=function(t,e){var r=Math.pow(this.alpha_,t);this.estimate_=e*(1-r)+r*this.estimate_,this.totalWeight_+=t},t.prototype.getTotalWeight=function(){return this.totalWeight_},t.prototype.getEstimate=function(){if(this.alpha_){var t=1-Math.pow(this.alpha_,this.totalWeight_);return this.estimate_/t}return this.estimate_},t}();e.a=a},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(0),u=r(2),d=r(11),c=Object(d.a)(),h=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MEDIA_ATTACHING,o.a.MEDIA_DETACHING,o.a.MANIFEST_PARSED,o.a.BUFFER_RESET,o.a.BUFFER_APPENDING,o.a.BUFFER_CODECS,o.a.BUFFER_EOS,o.a.BUFFER_FLUSHING,o.a.LEVEL_PTS_UPDATED,o.a.LEVEL_UPDATED));return n._msDuration=null,n._levelDuration=null,n._live=null,n._objectUrl=null,n.onsbue=n.onSBUpdateEnd.bind(n),n.onsbe=n.onSBUpdateError.bind(n),n.pendingTracks={},n.tracks={},n}return n(e,t),e.prototype.destroy=function(){s.a.prototype.destroy.call(this)},e.prototype.onLevelPtsUpdated=function(t){var e=t.type,r=this.tracks.audio;if("audio"===e&&r&&"audio/mpeg"===r.container){var i=this.sourceBuffer.audio;if(Math.abs(i.timestampOffset-t.start)>.1){var a=i.updating;try{i.abort()}catch(t){a=!0,l.b.warn("can not abort audio buffer: "+t)}a?this.audioTimestampOffset=t.start:(l.b.warn("change mpeg audio timestamp offset from "+i.timestampOffset+" to "+t.start),i.timestampOffset=t.start)}}},e.prototype.onManifestParsed=function(t){var e=t.audio,r=t.video||t.levels.length&&t.audio,i=0;t.altAudio&&(e||r)&&(i=(e?1:0)+(r?1:0),l.b.log(i+" sourceBuffer(s) expected")),this.sourceBufferNb=i},e.prototype.onMediaAttaching=function(t){var e=this.media=t.media;if(e){var r=this.mediaSource=new c;this.onmso=this.onMediaSourceOpen.bind(this),this.onmse=this.onMediaSourceEnded.bind(this),this.onmsc=this.onMediaSourceClose.bind(this),r.addEventListener("sourceopen",this.onmso),r.addEventListener("sourceended",this.onmse),r.addEventListener("sourceclose",this.onmsc),e.src=URL.createObjectURL(r),this._objectUrl=e.src}},e.prototype.onMediaDetaching=function(){l.b.log("media source detaching");var t=this.mediaSource;if(t){if("open"===t.readyState)try{t.endOfStream()}catch(t){l.b.warn("onMediaDetaching:"+t.message+" while calling endOfStream")}t.removeEventListener("sourceopen",this.onmso),t.removeEventListener("sourceended",this.onmse),t.removeEventListener("sourceclose",this.onmsc),this.media&&(URL.revokeObjectURL(this._objectUrl),this.media.src===this._objectUrl?(this.media.removeAttribute("src"),this.media.load()):l.b.warn("media.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.pendingTracks={},this.tracks={},this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}this.onmso=this.onmse=this.onmsc=null,this.hls.trigger(o.a.MEDIA_DETACHED)},e.prototype.onMediaSourceOpen=function(){l.b.log("media source opened"),this.hls.trigger(o.a.MEDIA_ATTACHED,{media:this.media});var t=this.mediaSource;t&&t.removeEventListener("sourceopen",this.onmso),this.checkPendingTracks()},e.prototype.checkPendingTracks=function(){var t=this.pendingTracks,e=Object.keys(t).length;e&&(this.sourceBufferNb<=e||0===this.sourceBufferNb)&&(this.createSourceBuffers(t),this.pendingTracks={},this.doAppending())},e.prototype.onMediaSourceClose=function(){l.b.log("media source closed")},e.prototype.onMediaSourceEnded=function(){l.b.log("media source ended")},e.prototype.onSBUpdateEnd=function(){if(this.audioTimestampOffset){var t=this.sourceBuffer.audio;l.b.warn("change mpeg audio timestamp offset from "+t.timestampOffset+" to "+this.audioTimestampOffset),t.timestampOffset=this.audioTimestampOffset,delete this.audioTimestampOffset}this._needsFlush&&this.doFlush(),this._needsEos&&this.checkEos(),this.appending=!1;var e=this.parent,r=this.segments.reduce(function(t,r){return r.parent===e?t+1:t},0),i={},a=this.sourceBuffer;for(var n in a)i[n]=a[n].buffered;this.hls.trigger(o.a.BUFFER_APPENDED,{parent:e,pending:r,timeRanges:i}),this._needsFlush||this.doAppending(),this.updateMediaElementDuration()},e.prototype.onSBUpdateError=function(t){l.b.error("sourceBuffer error:",t),this.hls.trigger(o.a.ERROR,{type:u.b.MEDIA_ERROR,details:u.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferReset=function(){var t=this.sourceBuffer;for(var e in t){var r=t[e];try{this.mediaSource.removeSourceBuffer(r),r.removeEventListener("updateend",this.onsbue),r.removeEventListener("error",this.onsbe)}catch(t){}}this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0},e.prototype.onBufferCodecs=function(t){if(0===Object.keys(this.sourceBuffer).length){for(var e in t)this.pendingTracks[e]=t[e];var r=this.mediaSource;r&&"open"===r.readyState&&this.checkPendingTracks()}},e.prototype.createSourceBuffers=function(t){var e=this.sourceBuffer,r=this.mediaSource;for(var i in t)if(!e[i]){var a=t[i],n=a.levelCodec||a.codec,s=a.container+";codecs="+n;l.b.log("creating sourceBuffer("+s+")");try{var d=e[i]=r.addSourceBuffer(s);d.addEventListener("updateend",this.onsbue),d.addEventListener("error",this.onsbe),this.tracks[i]={codec:n,container:a.container},a.buffer=d}catch(t){l.b.error("error while trying to add sourceBuffer:"+t.message),this.hls.trigger(o.a.ERROR,{type:u.b.MEDIA_ERROR,details:u.a.BUFFER_ADD_CODEC_ERROR,fatal:!1,err:t,mimeType:s})}}this.hls.trigger(o.a.BUFFER_CREATED,{tracks:t})},e.prototype.onBufferAppending=function(t){this._needsFlush||(this.segments?this.segments.push(t):this.segments=[t],this.doAppending())},e.prototype.onBufferAppendFail=function(t){l.b.error("sourceBuffer error:",t.event),this.hls.trigger(o.a.ERROR,{type:u.b.MEDIA_ERROR,details:u.a.BUFFER_APPENDING_ERROR,fatal:!1})},e.prototype.onBufferEos=function(t){var e=this.sourceBuffer,r=t.type;for(var i in e)r&&i!==r||e[i].ended||(e[i].ended=!0,l.b.log(i+" sourceBuffer now EOS"));this.checkEos()},e.prototype.checkEos=function(){var t=this.sourceBuffer,e=this.mediaSource;if(!e||"open"!==e.readyState)return void(this._needsEos=!1);for(var r in t){var i=t[r];if(!i.ended)return;if(i.updating)return void(this._needsEos=!0)}l.b.log("all media data available, signal endOfStream() to MediaSource and stop loading fragment");try{e.endOfStream()}catch(t){l.b.warn("exception while calling mediaSource.endOfStream()")}this._needsEos=!1},e.prototype.onBufferFlushing=function(t){this.flushRange.push({start:t.startOffset,end:t.endOffset,type:t.type}),this.flushBufferCounter=0,this.doFlush()},e.prototype.onLevelUpdated=function(t){var e=t.details;e.fragments.length>0&&(this._levelDuration=e.totalduration+e.fragments[0].start,this._live=e.live,this.updateMediaElementDuration())},e.prototype.updateMediaElementDuration=function(){var t=this.hls.config,e=void 0;if(null!==this._levelDuration&&this.media&&this.mediaSource&&this.sourceBuffer&&0!==this.media.readyState&&"open"===this.mediaSource.readyState){for(var r in this.sourceBuffer)if(!0===this.sourceBuffer[r].updating)return;e=this.media.duration,null===this._msDuration&&(this._msDuration=this.mediaSource.duration),!0===this._live&&!0===t.liveDurationInfinity?(l.b.log("Media Source duration is set to Infinity"),this._msDuration=this.mediaSource.duration=1/0):(this._levelDuration>this._msDuration&&this._levelDuration>e||e===1/0||isNaN(e))&&(l.b.log("Updating Media Source duration to "+this._levelDuration.toFixed(3)),this._msDuration=this.mediaSource.duration=this._levelDuration)}},e.prototype.doFlush=function(){for(;this.flushRange.length;){var t=this.flushRange[0];if(!this.flushBuffer(t.start,t.end,t.type))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var e=0,r=this.sourceBuffer;try{for(var i in r)e+=r[i].buffered.length}catch(t){l.b.error("error while accessing sourceBuffer.buffered")}this.appended=e,this.hls.trigger(o.a.BUFFER_FLUSHED)}},e.prototype.doAppending=function(){var t=this.hls,e=this.sourceBuffer,r=this.segments;if(Object.keys(e).length){if(this.media.error)return this.segments=[],void l.b.error("trying to append although a media error occured, flush segment and abort");if(this.appending)return;if(r&&r.length){var i=r.shift();try{var a=i.type,n=e[a];n?n.updating?r.unshift(i):(n.ended=!1,this.parent=i.parent,n.appendBuffer(i.data),this.appendError=0,this.appended++,this.appending=!0):this.onSBUpdateEnd()}catch(e){l.b.error("error while trying to append buffer:"+e.message),r.unshift(i);var s={type:u.b.MEDIA_ERROR,parent:i.parent};22!==e.code?(this.appendError?this.appendError++:this.appendError=1,s.details=u.a.BUFFER_APPEND_ERROR,this.appendError>t.config.appendErrorMaxRetry?(l.b.log("fail "+t.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),r=[],s.fatal=!0,t.trigger(o.a.ERROR,s)):(s.fatal=!1,t.trigger(o.a.ERROR,s))):(this.segments=[],s.details=u.a.BUFFER_FULL_ERROR,s.fatal=!1,t.trigger(o.a.ERROR,s))}}}},e.prototype.flushBuffer=function(t,e,r){var i=void 0,a=void 0,n=void 0,o=void 0,s=void 0,u=void 0,d=this.sourceBuffer;if(Object.keys(d).length){if(l.b.log("flushBuffer,pos/start/end: "+this.media.currentTime.toFixed(3)+"/"+t+"/"+e),this.flushBufferCounter<this.appended){for(var c in d)if(!r||c===r){if(i=d[c],i.ended=!1,i.updating)return l.b.warn("cannot flush, sb updating in progress"),!1;try{for(a=0;a<i.buffered.length;a++)if(n=i.buffered.start(a),o=i.buffered.end(a),-1!==navigator.userAgent.toLowerCase().indexOf("firefox")&&e===Number.POSITIVE_INFINITY?(s=t,u=e):(s=Math.max(n,t),u=Math.min(o,e)),Math.min(u,o)-s>.5)return this.flushBufferCounter++,l.b.log("flush "+c+" ["+s+","+u+"], of ["+n+","+o+"], pos:"+this.media.currentTime),i.remove(s,u),!1}catch(t){l.b.warn("exception while accessing sourcebuffer, it might have been removed from MediaSource")}}}else l.b.warn("abort flushing too many retries");l.b.log("buffer flushed")}return!0},e}(s.a);e.a=h},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),u=function(t){function e(r){return i(this,e),a(this,t.call(this,r,o.a.FPS_DROP_LEVEL_CAPPING,o.a.MEDIA_ATTACHING,o.a.MANIFEST_PARSED))}return n(e,t),e.prototype.destroy=function(){this.hls.config.capLevelToPlayerSize&&(this.media=this.restrictedLevels=null,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(this.timer=clearInterval(this.timer)))},e.prototype.onFpsDropLevelCapping=function(t){e.isLevelAllowed(t.droppedLevel,this.restrictedLevels)&&this.restrictedLevels.push(t.droppedLevel)},e.prototype.onMediaAttaching=function(t){this.media=t.media instanceof HTMLVideoElement?t.media:null},e.prototype.onManifestParsed=function(t){var e=this.hls;this.restrictedLevels=[],e.config.capLevelToPlayerSize&&(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.levels=t.levels,e.firstLevel=this.getMaxLevel(t.firstLevel),clearInterval(this.timer),this.timer=setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())},e.prototype.detectPlayerSize=function(){if(this.media){var t=this.levels?this.levels.length:0;if(t){var e=this.hls;e.autoLevelCapping=this.getMaxLevel(t-1),e.autoLevelCapping>this.autoLevelCapping&&e.streamController.nextLevelSwitch(),this.autoLevelCapping=e.autoLevelCapping}}},e.prototype.getMaxLevel=function(t){var r=this;if(!this.levels)return-1;var i=this.levels.filter(function(i,a){return e.isLevelAllowed(a,r.restrictedLevels)&&a<=t});return e.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)},e.isLevelAllowed=function(t){return-1===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).indexOf(t)},e.getMaxLevelByMediaSize=function(t,e,r){if(!t||t&&!t.length)return-1;for(var i=t.length-1,a=0;a<t.length;a+=1){var n=t[a];if((n.width>=e||n.height>=r)&&function(t,e){return!e||(t.width!==e.width||t.height!==e.height)}(n,t[a+1])){i=a;break}}return i},l(e,[{key:"mediaWidth",get:function(){var t=void 0,r=this.media;return r&&(t=r.width||r.clientWidth||r.offsetWidth,t*=e.contentScaleFactor),t}},{key:"mediaHeight",get:function(){var t=void 0,r=this.media;return r&&(t=r.height||r.clientHeight||r.offsetHeight,t*=e.contentScaleFactor),t}}],[{key:"contentScaleFactor",get:function(){var t=1;try{t=window.devicePixelRatio}catch(t){}return t}}]),e}(s.a);e.a=u},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(0),u=function(t){function e(r){return i(this,e),a(this,t.call(this,r,o.a.MEDIA_ATTACHING))}return n(e,t),e.prototype.destroy=function(){this.timer&&clearInterval(this.timer),this.isVideoPlaybackQualityAvailable=!1},e.prototype.onMediaAttaching=function(t){var e=this.hls.config;if(e.capLevelOnFPSDrop){"function"==typeof(this.video=t.media instanceof HTMLVideoElement?t.media:null).getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),clearInterval(this.timer),this.timer=setInterval(this.checkFPSInterval.bind(this),e.fpsDroppedMonitoringPeriod)}},e.prototype.checkFPS=function(t,e,r){var i=performance.now();if(e){if(this.lastTime){var a=i-this.lastTime,n=r-this.lastDroppedFrames,s=e-this.lastDecodedFrames,u=1e3*n/a,d=this.hls;if(d.trigger(o.a.FPS_DROP,{currentDropped:n,currentDecoded:s,totalDroppedFrames:r}),u>0&&n>d.config.fpsDroppedMonitoringThreshold*s){var c=d.currentLevel;l.b.warn("drop FPS ratio greater than max allowed value for currentLevel: "+c),c>0&&(-1===d.autoLevelCapping||d.autoLevelCapping>=c)&&(c-=1,d.trigger(o.a.FPS_DROP_LEVEL_CAPPING,{level:c,droppedLevel:d.currentLevel}),d.autoLevelCapping=c,d.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=e}},e.prototype.checkFPSInterval=function(){var t=this.video;if(t)if(this.isVideoPlaybackQualityAvailable){var e=t.getVideoPlaybackQuality();this.checkFPS(t,e.totalVideoFrames,e.droppedVideoFrames)}else this.checkFPS(t,t.webkitDecodedFrameCount,t.webkitDroppedFrameCount)},e}(s.a);e.a=u},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=r(0),n=function(){function t(e){i(this,t),e&&e.xhrSetup&&(this.xhrSetup=e.xhrSetup)}return t.prototype.destroy=function(){this.abort(),this.loader=null},t.prototype.abort=function(){var t=this.loader;t&&4!==t.readyState&&(this.stats.aborted=!0,t.abort()),window.clearTimeout(this.requestTimeout),this.requestTimeout=null,window.clearTimeout(this.retryTimeout),this.retryTimeout=null},t.prototype.load=function(t,e,r){this.context=t,this.config=e,this.callbacks=r,this.stats={trequest:performance.now(),retry:0},this.retryDelay=e.retryDelay,this.loadInternal()},t.prototype.loadInternal=function(){var t=void 0,e=this.context;t=this.loader=new XMLHttpRequest;var r=this.stats;r.tfirst=0,r.loaded=0;var i=this.xhrSetup;try{if(i)try{i(t,e.url)}catch(r){t.open("GET",e.url,!0),i(t,e.url)}t.readyState||t.open("GET",e.url,!0)}catch(r){return void this.callbacks.onError({code:t.status,text:r.message},e,t)}e.rangeEnd&&t.setRequestHeader("Range","bytes="+e.rangeStart+"-"+(e.rangeEnd-1)),t.onreadystatechange=this.readystatechange.bind(this),t.onprogress=this.loadprogress.bind(this),t.responseType=e.responseType,this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),this.config.timeout),t.send()},t.prototype.readystatechange=function(t){var e=t.currentTarget,r=e.readyState,i=this.stats,n=this.context,o=this.config;if(!i.aborted&&r>=2)if(window.clearTimeout(this.requestTimeout),0===i.tfirst&&(i.tfirst=Math.max(performance.now(),i.trequest)),4===r){var s=e.status;if(s>=200&&s<300){i.tload=Math.max(i.tfirst,performance.now());var l=void 0,u=void 0;"arraybuffer"===n.responseType?(l=e.response,u=l.byteLength):(l=e.responseText,u=l.length),i.loaded=i.total=u;var d={url:e.responseURL,data:l};this.callbacks.onSuccess(d,i,n,e)}else i.retry>=o.maxRetry||s>=400&&s<499?(a.b.error(s+" while loading "+n.url),this.callbacks.onError({code:s,text:e.statusText},n,e)):(a.b.warn(s+" while loading "+n.url+", retrying in "+this.retryDelay+"..."),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,o.maxRetryDelay),i.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),o.timeout)},t.prototype.loadtimeout=function(){a.b.warn("timeout while loading "+this.context.url),this.callbacks.onTimeout(this.stats,this.context,null)},t.prototype.loadprogress=function(t){var e=t.currentTarget,r=this.stats;r.loaded=t.loaded,t.lengthComputable&&(r.total=t.total);var i=this.callbacks.onProgress;i&&i(r,this.context,null,e)},t}();e.a=n},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(3),l=r(0),u=r(2),d=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),c=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MANIFEST_LOADING,o.a.MANIFEST_PARSED,o.a.AUDIO_TRACK_LOADED,o.a.ERROR));return n.ticks=0,n.ontick=n.tick.bind(n),n}return n(e,t),e.prototype.destroy=function(){this.cleanTimer(),s.a.prototype.destroy.call(this)},e.prototype.cleanTimer=function(){this.timer&&(clearTimeout(this.timer),this.timer=null)},e.prototype.tick=function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)},e.prototype.doTick=function(){this.updateTrack(this.trackId)},e.prototype.onError=function(t){t.fatal&&t.type===u.b.NETWORK_ERROR&&this.cleanTimer()},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestParsed=function(t){var e=this,r=t.audioTracks||[],i=!1;this.tracks=r,this.hls.trigger(o.a.AUDIO_TRACKS_UPDATED,{audioTracks:r});var a=0;r.forEach(function(t){if(t.default&&!i)return e.audioTrack=a,void(i=!0);a++}),!1===i&&r.length&&(l.b.log("no default audio track defined, use first audio track as default"),this.audioTrack=0)},e.prototype.onAudioTrackLoaded=function(t){t.id<this.tracks.length&&(l.b.log("audioTrack "+t.id+" loaded"),this.tracks[t.id].details=t.details,t.details.live&&!this.timer&&(this.timer=setInterval(this.ontick,1e3*t.details.targetduration)),!t.details.live&&this.timer&&this.cleanTimer())},e.prototype.setAudioTrackInternal=function(t){if(t>=0&&t<this.tracks.length){this.cleanTimer(),this.trackId=t,l.b.log("switching to audioTrack "+t);var e=this.tracks[t],r=this.hls,i=e.type,a=e.url,n={id:t,type:i,url:a};r.trigger(o.a.AUDIO_TRACK_SWITCHING,n);var s=e.details;!a||void 0!==s&&!0!==s.live||(l.b.log("(re)loading playlist for audioTrack "+t),r.trigger(o.a.AUDIO_TRACK_LOADING,{url:a,id:t}))}},e.prototype.updateTrack=function(t){if(t>=0&&t<this.tracks.length){this.cleanTimer(),this.trackId=t,l.b.log("updating audioTrack "+t);var e=this.tracks[t],r=e.url,i=e.details;!r||void 0!==i&&!0!==i.live||(l.b.log("(re)loading playlist for audioTrack "+t),this.hls.trigger(o.a.AUDIO_TRACK_LOADING,{url:r,id:t}))}},d(e,[{key:"audioTracks",get:function(){return this.tracks}},{key:"audioTrack",get:function(){return this.trackId},set:function(t){this.trackId===t&&void 0!==this.tracks[t].details||this.setAudioTrackInternal(t)}}]),e}(s.a);e.a=c},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(7),s=r(8),l=r(18),u=r(1),d=r(22),c=r(23),h=r(2),f=r(0),p=r(24),v=r(13),g=r(12),y=r(6),m=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),b={STOPPED:"STOPPED",STARTING:"STARTING",IDLE:"IDLE",PAUSED:"PAUSED",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS"},E=function(t){function e(r,n){i(this,e);var o=a(this,t.call(this,r,u.a.MEDIA_ATTACHED,u.a.MEDIA_DETACHING,u.a.AUDIO_TRACKS_UPDATED,u.a.AUDIO_TRACK_SWITCHING,u.a.AUDIO_TRACK_LOADED,u.a.KEY_LOADED,u.a.FRAG_LOADED,u.a.FRAG_PARSING_INIT_SEGMENT,u.a.FRAG_PARSING_DATA,u.a.FRAG_PARSED,u.a.ERROR,u.a.BUFFER_RESET,u.a.BUFFER_CREATED,u.a.BUFFER_APPENDED,u.a.BUFFER_FLUSHED,u.a.INIT_PTS_FOUND));return o.fragmentTracker=n,o.config=r.config,o.audioCodecSwap=!1,o._state=b.STOPPED,o.initPTS=[],o.waitingFragment=null,o.videoTrackCC=null,o}return n(e,t),e.prototype.onHandlerDestroying=function(){this.stopLoad()},e.prototype.onHandlerDestroyed=function(){this.state=b.STOPPED,this.fragmentTracker=null},e.prototype.onInitPtsFound=function(t){var e=t.id,r=t.frag.cc,i=t.initPTS;"main"===e&&(this.initPTS[r]=i,this.videoTrackCC=r,f.b.log("InitPTS for cc: "+r+" found from video track: "+i),this.state===b.WAITING_INIT_PTS&&this.tick())},e.prototype.startLoad=function(t){if(this.tracks){var e=this.lastCurrentTime;this.stopLoad(),this.setInterval(100),this.fragLoadError=0,e>0&&-1===t?(f.b.log("audio:override startPosition with lastCurrentTime @"+e.toFixed(3)),this.state=b.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:t,this.state=b.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else this.startPosition=t,this.state=b.STOPPED},e.prototype.stopLoad=function(){var t=this.fragCurrent;t&&(t.loader&&t.loader.abort(),this.fragmentTracker.removeFragment(t),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=b.STOPPED},e.prototype.doTick=function(){var t=void 0,e=void 0,r=void 0,i=this.hls,a=i.config;switch(this.state){case b.ERROR:case b.PAUSED:case b.BUFFER_FLUSHING:break;case b.STARTING:this.state=b.WAITING_TRACK,this.loadedmetadata=!1;break;case b.IDLE:var n=this.tracks;if(!n)break;if(!this.media&&(this.startFragRequested||!a.startFragPrefetch))break;if(this.loadedmetadata)t=this.media.currentTime;else if(void 0===(t=this.nextLoadPosition))break;var l=this.mediaBuffer?this.mediaBuffer:this.media,d=this.videoBuffer?this.videoBuffer:this.media,c=s.a.bufferInfo(l,t,a.maxBufferHole),h=s.a.bufferInfo(d,t,a.maxBufferHole),v=c.len,y=c.end,m=this.fragPrevious,E=Math.min(a.maxBufferLength,a.maxMaxBufferLength),T=Math.max(E,h.len),S=this.audioSwitch,R=this.trackId;if((v<T||S)&&R<n.length){if(void 0===(r=n[R].details)){this.state=b.WAITING_TRACK;break}if(!S&&!r.live&&m&&m.sn===r.endSN&&!c.nextStart&&(!this.media.seeking||this.media.duration-y<m.duration/2)){this.hls.trigger(u.a.BUFFER_EOS,{type:"audio"}),this.state=b.ENDED;break}var A=r.fragments,_=A.length,w=A[0].start,L=A[_-1].start+A[_-1].duration,D=void 0;if(S)if(r.live&&!r.PTSKnown)f.b.log("switching audiotrack, live stream, unknown PTS,load first fragment"),y=0;else if(y=t,r.PTSKnown&&t<w){if(!(c.end>w||c.nextStart))return;f.b.log("alt audio track ahead of main track, seek to start of alt audio track"),this.media.currentTime=w+.05}if(r.initSegment&&!r.initSegment.data)D=r.initSegment;else if(y<=w){if(D=A[0],null!==this.videoTrackCC&&D.cc!==this.videoTrackCC&&(D=Object(p.b)(A,this.videoTrackCC)),r.live&&D.loadIdx&&D.loadIdx===this.fragLoadIdx){var I=c.nextStart?c.nextStart:w;return f.b.log("no alt audio available @currentTime:"+this.media.currentTime+", seeking @"+(I+.05)),void(this.media.currentTime=I+.05)}}else{var O=void 0,k=a.maxFragLookUpTolerance,C=m?A[m.sn-A[0].sn+1]:void 0,P=function(t){var e=Math.min(k,t.duration);return t.start+t.duration-e<=y?1:t.start-e>y&&t.start?-1:0};y<L?(y>L-k&&(k=0),O=C&&!P(C)?C:o.a.search(A,P)):O=A[_-1],O&&(D=O,w=O.start,m&&D.level===m.level&&D.sn===m.sn&&(D.sn<r.endSN?(D=A[D.sn+1-r.startSN],f.b.log("SN just loaded, load next one: "+D.sn)):D=null))}D&&(D.decryptdata&&null!=D.decryptdata.uri&&null==D.decryptdata.key?(f.b.log("Loading key for "+D.sn+" of ["+r.startSN+" ,"+r.endSN+"],track "+R),this.state=b.KEY_LOADING,i.trigger(u.a.KEY_LOADING,{frag:D})):(f.b.log("Loading "+D.sn+", cc: "+D.cc+" of ["+r.startSN+" ,"+r.endSN+"],track "+R+", currentTime:"+t+",bufferEnd:"+y.toFixed(3)),this.fragmentTracker.getState(D)===g.a.NOT_LOADED&&(this.fragCurrent=D,this.startFragRequested=!0,isNaN(D.sn)||(this.nextLoadPosition=D.start+D.duration),i.trigger(u.a.FRAG_LOADING,{frag:D}),this.state=b.FRAG_LOADING)))}break;case b.WAITING_TRACK:e=this.tracks[this.trackId],e&&e.details&&(this.state=b.IDLE);break;case b.FRAG_LOADING_WAITING_RETRY:var x=performance.now(),F=this.retryDate;l=this.media;var N=l&&l.seeking;(!F||x>=F||N)&&(f.b.log("audioStreamController: retryDate reached, switch back to IDLE state"),this.state=b.IDLE);break;case b.WAITING_INIT_PTS:var M=this.videoTrackCC;if(void 0===this.initPTS[M])break;var U=this.waitingFragment;if(U){var B=U.frag.cc;M!==B?(e=this.tracks[this.trackId],e.details&&e.details.live&&(f.b.warn("Waiting fragment CC ("+B+") does not match video track CC ("+M+")"),this.waitingFragment=null,this.state=b.IDLE)):(this.state=b.FRAG_LOADING,this.onFragLoaded(this.waitingFragment),this.waitingFragment=null)}else this.state=b.IDLE;break;case b.STOPPED:case b.FRAG_LOADING:case b.PARSING:case b.PARSED:case b.ENDED:}},e.prototype.onMediaAttached=function(t){var e=this.media=this.mediaBuffer=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("ended",this.onvended);var r=this.config;this.tracks&&r.autoStartLoad&&this.startLoad(r.startPosition)},e.prototype.onMediaDetaching=function(){var t=this.media;t&&t.ended&&(f.b.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),t&&(t.removeEventListener("seeking",this.onvseeking),t.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1,this.stopLoad()},e.prototype.onMediaSeeking=function(){this.state===b.ENDED&&(this.state=b.IDLE),this.media&&(this.lastCurrentTime=this.media.currentTime),this.tick()},e.prototype.onMediaEnded=function(){this.startPosition=this.lastCurrentTime=0},e.prototype.onAudioTracksUpdated=function(t){f.b.log("audio tracks updated"),this.tracks=t.audioTracks},e.prototype.onAudioTrackSwitching=function(t){var e=!!t.url;this.trackId=t.id,this.fragCurrent=null,this.state=b.PAUSED,this.waitingFragment=null,e?this.setInterval(100):this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),e&&(this.audioSwitch=!0,this.state=b.IDLE),this.tick()},e.prototype.onAudioTrackLoaded=function(t){var e=t.details,r=t.id,i=this.tracks[r],a=e.totalduration,n=0;if(f.b.log("track "+r+" loaded ["+e.startSN+","+e.endSN+"],duration:"+a),e.live){var o=i.details;o&&e.fragments.length>0?(d.a(o,e),n=e.fragments[0].start,e.PTSKnown?f.b.log("live audio playlist sliding:"+n.toFixed(3)):f.b.log("live audio playlist - outdated PTS, unknown sliding")):(e.PTSKnown=!1,f.b.log("live audio playlist - first load, unknown sliding"))}else e.PTSKnown=!1;if(i.details=e,!this.startFragRequested){if(-1===this.startPosition){var s=e.startTimeOffset;isNaN(s)?this.startPosition=0:(f.b.log("start time offset found in playlist, adjust startPosition to "+s),this.startPosition=s)}this.nextLoadPosition=this.startPosition}this.state===b.WAITING_TRACK&&(this.state=b.IDLE),this.tick()},e.prototype.onKeyLoaded=function(){this.state===b.KEY_LOADING&&(this.state=b.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag;if(this.state===b.FRAG_LOADING&&e&&"audio"===r.type&&r.level===e.level&&r.sn===e.sn){var i=this.tracks[this.trackId],a=i.details,n=a.totalduration,o=e.level,s=e.sn,d=e.cc,c=this.config.defaultAudioCodec||i.audioCodec||"mp4a.40.2",h=this.stats=t.stats;if("initSegment"===s)this.state=b.IDLE,h.tparsed=h.tbuffered=performance.now(),a.initSegment.data=t.payload,this.hls.trigger(u.a.FRAG_BUFFERED,{stats:h,frag:e,id:"audio"}),this.tick();else{this.state=b.PARSING,this.appended=!1,this.demuxer||(this.demuxer=new l.a(this.hls,"audio"));var p=this.initPTS[d],v=a.initSegment?a.initSegment.data:[];if(a.initSegment||void 0!==p){this.pendingBuffering=!0,f.b.log("Demuxing "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o);this.demuxer.push(t.payload,v,c,null,e,n,!1,p)}else f.b.log("unknown video PTS for continuity counter "+d+", waiting for video PTS before demuxing audio frag "+s+" of ["+a.startSN+" ,"+a.endSN+"],track "+o),this.waitingFragment=t,this.state=b.WAITING_INIT_PTS}}this.fragLoadError=0},e.prototype.onFragParsingInitSegment=function(t){var e=this.fragCurrent,r=t.frag;if(e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===b.PARSING){var i=t.tracks,a=void 0;if(i.video&&delete i.video,a=i.audio){a.levelCodec=a.codec,a.id=t.id,this.hls.trigger(u.a.BUFFER_CODECS,i),f.b.log("audio track:audio,container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var n=a.initSegment;if(n){var o={type:"audio",data:n,parent:"audio",content:"initSegment"};this.audioSwitch?this.pendingData=[o]:(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(u.a.BUFFER_APPENDING,o))}this.tick()}}},e.prototype.onFragParsingData=function(t){var e=this,r=this.fragCurrent,i=t.frag;if(r&&"audio"===t.id&&"audio"===t.type&&i.sn===r.sn&&i.level===r.level&&this.state===b.PARSING){var a=this.trackId,n=this.tracks[a],o=this.hls;isNaN(t.endPTS)&&(t.endPTS=t.startPTS+r.duration,t.endDTS=t.startDTS+r.duration),r.addElementaryStream(y.a.ElementaryStreamTypes.AUDIO),f.b.log("parsed "+t.type+",PTS:["+t.startPTS.toFixed(3)+","+t.endPTS.toFixed(3)+"],DTS:["+t.startDTS.toFixed(3)+"/"+t.endDTS.toFixed(3)+"],nb:"+t.nb),d.b(n.details,r,t.startPTS,t.endPTS);var s=this.audioSwitch,l=this.media,c=!1;if(s&&l)if(l.readyState){var p=l.currentTime;f.b.log("switching audio track : currentTime:"+p),p>=t.startPTS&&(f.b.log("switching audio track : flushing all audio"),this.state=b.BUFFER_FLUSHING,o.trigger(u.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),c=!0,this.audioSwitch=!1,o.trigger(u.a.AUDIO_TRACK_SWITCHED,{id:a}))}else this.audioSwitch=!1,o.trigger(u.a.AUDIO_TRACK_SWITCHED,{id:a});var v=this.pendingData;if(!v)return console.warn("Apparently attempt to enqueue media payload without codec initialization data upfront"),void o.trigger(u.a.ERROR,{type:h.b.MEDIA_ERROR,details:null,fatal:!0});this.audioSwitch||([t.data1,t.data2].forEach(function(e){e&&e.length&&v.push({type:t.type,data:e,parent:"audio",content:"data"})}),!c&&v.length&&(v.forEach(function(t){e.state===b.PARSING&&(e.pendingBuffering=!0,e.hls.trigger(u.a.BUFFER_APPENDING,t))}),this.pendingData=[],this.appended=!0)),this.tick()}},e.prototype.onFragParsed=function(t){var e=this.fragCurrent,r=t.frag;e&&"audio"===t.id&&r.sn===e.sn&&r.level===e.level&&this.state===b.PARSING&&(this.stats.tparsed=performance.now(),this.state=b.PARSED,this._checkAppendedParsed())},e.prototype.onBufferReset=function(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1},e.prototype.onBufferCreated=function(t){var e=t.tracks.audio;e&&(this.mediaBuffer=e.buffer,this.loadedmetadata=!0),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer)},e.prototype.onBufferAppended=function(t){if("audio"===t.parent){var e=this.state;e!==b.PARSING&&e!==b.PARSED||(this.pendingBuffering=t.pending>0,this._checkAppendedParsed())}},e.prototype._checkAppendedParsed=function(){if(!(this.state!==b.PARSED||this.appended&&this.pendingBuffering)){var t=this.fragCurrent,e=this.stats,r=this.hls;if(t){this.fragPrevious=t,e.tbuffered=performance.now(),r.trigger(u.a.FRAG_BUFFERED,{stats:e,frag:t,id:"audio"});var i=this.mediaBuffer?this.mediaBuffer:this.media;f.b.log("audio buffered : "+c.a.toString(i.buffered)),this.audioSwitch&&this.appended&&(this.audioSwitch=!1,r.trigger(u.a.AUDIO_TRACK_SWITCHED,{id:this.trackId})),this.state=b.IDLE}this.tick()}},e.prototype.onError=function(t){var e=t.frag;if(!e||"audio"===e.type)switch(t.details){case h.a.FRAG_LOAD_ERROR:case h.a.FRAG_LOAD_TIMEOUT:if(!t.fatal){var r=this.fragLoadError;r?r++:r=1;var i=this.config;if(r<=i.fragLoadingMaxRetry){this.fragLoadError=r;var a=Math.min(Math.pow(2,r-1)*i.fragLoadingRetryDelay,i.fragLoadingMaxRetryTimeout);f.b.warn("audioStreamController: frag loading failed, retry in "+a+" ms"),this.retryDate=performance.now()+a,this.state=b.FRAG_LOADING_WAITING_RETRY}else f.b.error("audioStreamController: "+t.details+" reaches max retry, redispatch as fatal ..."),t.fatal=!0,this.state=b.ERROR}break;case h.a.AUDIO_TRACK_LOAD_ERROR:case h.a.AUDIO_TRACK_LOAD_TIMEOUT:case h.a.KEY_LOAD_ERROR:case h.a.KEY_LOAD_TIMEOUT:this.state!==b.ERROR&&(this.state=t.fatal?b.ERROR:b.IDLE,f.b.warn("audioStreamController: "+t.details+" while loading frag,switch to "+this.state+" state ..."));break;case h.a.BUFFER_FULL_ERROR:if("audio"===t.parent&&(this.state===b.PARSING||this.state===b.PARSED)){var n=this.mediaBuffer,o=this.media.currentTime;if(n&&s.a.isBuffered(n,o)&&s.a.isBuffered(n,o+.5)){var l=this.config;l.maxMaxBufferLength>=l.maxBufferLength&&(l.maxMaxBufferLength/=2,f.b.warn("audio:reduce max buffer length to "+l.maxMaxBufferLength+"s")),this.state=b.IDLE}else f.b.warn("buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,this.state=b.BUFFER_FLUSHING,this.hls.trigger(u.a.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"})}}},e.prototype.onBufferFlushed=function(){var t=this,e=this.pendingData;e&&e.length?(f.b.log("appending pending audio data on Buffer Flushed"),e.forEach(function(e){t.hls.trigger(u.a.BUFFER_APPENDING,e)}),this.appended=!0,this.pendingData=[],this.state=b.PARSED):(this.state=b.IDLE,this.fragPrevious=null,this.tick())},m(e,[{key:"state",set:function(t){if(this.state!==t){var e=this.state;this._state=t,f.b.log("audio stream:"+e+"->"+t)}},get:function(){return this._state}}]),e}(v.a);e.a=E},function(t,e,r){"use strict";function i(t,e,r,i){for(var n=void 0,o=void 0,s=void 0,l=void 0,u=void 0,d=window.VTTCue||window.TextTrackCue,c=0;c<i.rows.length;c++)if(n=i.rows[c],s=!0,l=0,u="",!n.isEmpty()){for(var h=0;h<n.chars.length;h++)n.chars[h].uchar.match(/\s/)&&s?l++:(u+=n.chars[h].uchar,s=!1);n.cueStartTime=e,e===r&&(r+=1e-4),o=new d(e,r,Object(a.b)(u.trim())),l>=16?l--:l++,navigator.userAgent.match(/Firefox\//)?o.line=c+1:o.line=c>7?c-2:c+1,o.align="left",o.position=Math.max(0,Math.min(100,l/32*100+(navigator.userAgent.match(/Firefox\//)?50:0))),t.addCue(o)}}Object.defineProperty(e,"__esModule",{value:!0}),e.newCue=i;var a=r(26)},function(t,e,r){"use strict";e.a=function(){function t(t){return"string"==typeof t&&(!!n[t.toLowerCase()]&&t.toLowerCase())}function e(t){return"string"==typeof t&&(!!o[t.toLowerCase()]&&t.toLowerCase())}function r(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var i in r)t[i]=r[i]}return t}function i(i,n,o){var s=this,l=function(){if("undefined"!=typeof navigator)return/MSIE\s8\.0/.test(navigator.userAgent)}(),u={};l?s=document.createElement("custom"):u.enumerable=!0,s.hasBeenReset=!1;var d="",c=!1,h=i,f=n,p=o,v=null,g="",y=!0,m="auto",b="start",E=50,T="middle",S=50,R="middle";if(Object.defineProperty(s,"id",r({},u,{get:function(){return d},set:function(t){d=""+t}})),Object.defineProperty(s,"pauseOnExit",r({},u,{get:function(){return c},set:function(t){c=!!t}})),Object.defineProperty(s,"startTime",r({},u,{get:function(){return h},set:function(t){if("number"!=typeof t)throw new TypeError("Start time must be set to a number.");h=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"endTime",r({},u,{get:function(){return f},set:function(t){if("number"!=typeof t)throw new TypeError("End time must be set to a number.");f=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"text",r({},u,{get:function(){return p},set:function(t){p=""+t,this.hasBeenReset=!0}})),Object.defineProperty(s,"region",r({},u,{get:function(){return v},set:function(t){v=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"vertical",r({},u,{get:function(){return g},set:function(e){var r=t(e);if(!1===r)throw new SyntaxError("An invalid or illegal string was specified.");g=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"snapToLines",r({},u,{get:function(){return y},set:function(t){y=!!t,this.hasBeenReset=!0}})),Object.defineProperty(s,"line",r({},u,{get:function(){return m},set:function(t){if("number"!=typeof t&&t!==a)throw new SyntaxError("An invalid number or illegal string was specified.");m=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"lineAlign",r({},u,{get:function(){return b},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");b=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"position",r({},u,{get:function(){return E},set:function(t){if(t<0||t>100)throw new Error("Position must be between 0 and 100.");E=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"positionAlign",r({},u,{get:function(){return T},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");T=r,this.hasBeenReset=!0}})),Object.defineProperty(s,"size",r({},u,{get:function(){return S},set:function(t){if(t<0||t>100)throw new Error("Size must be between 0 and 100.");S=t,this.hasBeenReset=!0}})),Object.defineProperty(s,"align",r({},u,{get:function(){return R},set:function(t){var r=e(t);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");R=r,this.hasBeenReset=!0}})),s.displayState=void 0,l)return s}if("undefined"!=typeof window&&window.VTTCue)return window.VTTCue;var a="auto",n={"":!0,lr:!0,rl:!0},o={start:!0,middle:!0,end:!0,left:!0,right:!0};return i.prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)},i}()},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function o(t,e){return t&&t.label===e.name&&!(t.textTrack1||t.textTrack2)}function s(t,e,r,i){return Math.min(e,i)-Math.max(t,r)}var l=r(1),u=r(3),d=r(63),c=r(64),h=r(65),f=r(0),p=r(25),v=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,l.a.MEDIA_ATTACHING,l.a.MEDIA_DETACHING,l.a.FRAG_PARSING_USERDATA,l.a.FRAG_DECRYPTED,l.a.MANIFEST_LOADING,l.a.MANIFEST_LOADED,l.a.FRAG_LOADED,l.a.LEVEL_SWITCHING,l.a.INIT_PTS_FOUND));if(n.hls=r,n.config=r.config,n.enabled=!0,n.Cues=r.config.cueHandler,n.textTracks=[],n.tracks=[],n.unparsedVttFrags=[],n.initPTS=void 0,n.cueRanges=[],n.config.enableCEA708Captions){var o=new c.a(n,1),s=new c.a(n,2);n.cea608Parser=new d.a(0,o,s)}return n}return n(e,t),e.prototype.addCues=function(t,e,r,i){for(var a=this.cueRanges,n=!1,o=a.length;o--;){var l=a[o],u=s(l[0],l[1],e,r);if(u>=0&&(l[0]=Math.min(l[0],e),l[1]=Math.max(l[1],r),n=!0,u/(r-e)>.5))return}n||a.push([e,r]),this.Cues.newCue(this[t],e,r,i)},e.prototype.onInitPtsFound=function(t){var e=this;void 0===this.initPTS&&(this.initPTS=t.initPTS),this.unparsedVttFrags.length&&(this.unparsedVttFrags.forEach(function(t){e.onFragLoaded(t)}),this.unparsedVttFrags=[])},e.prototype.getExistingTrack=function(t){var e=this.media;if(e)for(var r=0;r<e.textTracks.length;r++){var i=e.textTracks[r],a="textTrack"+t;if(!0===i[a])return i}return null},e.prototype.createCaptionsTrack=function(t){var e="textTrack"+t;if(!this[e]){var r=this.getExistingTrack(t);if(r)this[e]=r,Object(p.a)(this[e]),Object(p.b)(this[e],this.media);else{var i=this.createTextTrack("captions",this.config["captionsTextTrack"+t+"Label"],this.config["captionsTextTrack"+t+"LanguageCode"]);i&&(i[e]=!0,this[e]=i)}}},e.prototype.createTextTrack=function(t,e,r){var i=this.media;if(i)return i.addTextTrack(t,e,r)},e.prototype.destroy=function(){u.a.prototype.destroy.call(this)},e.prototype.onMediaAttaching=function(t){this.media=t.media,this._cleanTracks()},e.prototype.onMediaDetaching=function(){Object(p.a)(this.textTrack1),Object(p.a)(this.textTrack2)},e.prototype.onManifestLoading=function(){this.lastSn=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0},this._cleanTracks()},e.prototype._cleanTracks=function(){var t=this.media;if(t){var e=t.textTracks;if(e)for(var r=0;r<e.length;r++)Object(p.a)(e[r])}},e.prototype.onManifestLoaded=function(t){var e=this;if(this.textTracks=[],this.unparsedVttFrags=this.unparsedVttFrags||[],this.initPTS=void 0,this.cueRanges=[],this.config.enableWebVTT){this.tracks=t.subtitles||[];var r=this.media?this.media.textTracks:[];this.tracks.forEach(function(t,i){var a=void 0;if(i<r.length){var n=r[i];o(n,t)&&(a=n)}a||(a=e.createTextTrack("subtitles",t.name,t.lang)),t.default?a.mode=e.hls.subtitleDisplay?"showing":"hidden":a.mode="disabled",e.textTracks.push(a)})}},e.prototype.onLevelSwitching=function(){this.enabled="NONE"!==this.hls.currentLevel.closedCaptions},e.prototype.onFragLoaded=function(t){var e=t.frag,r=t.payload;if("main"===e.type){var i=e.sn;if(i!==this.lastSn+1){var a=this.cea608Parser;a&&a.reset()}this.lastSn=i}else if("subtitle"===e.type)if(r.byteLength){if(void 0===this.initPTS)return void this.unparsedVttFrags.push(t);var n=e.decryptdata;null!=n&&null!=n.key&&"AES-128"===n.method||this._parseVTTs(e,r)}else this.hls.trigger(l.a.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e})},e.prototype._parseVTTs=function(t,e){var r=this.vttCCs;r[t.cc]||(r[t.cc]={start:t.start,prevCC:this.prevCC,new:!0},this.prevCC=t.cc);var i=this.textTracks,a=this.hls;h.a.parse(e,this.initPTS,r,t.cc,function(e){var r=i[t.trackId];if("disabled"===r.mode)return void a.trigger(l.a.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t});e.forEach(function(t){if(!r.cues.getCueById(t.id))try{r.addCue(t)}catch(i){var e=new window.TextTrackCue(t.startTime,t.endTime,t.text);e.id=t.id,r.addCue(e)}}),a.trigger(l.a.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})},function(e){f.b.log("Failed to parse VTT cue: "+e),a.trigger(l.a.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t})})},e.prototype.onFragDecrypted=function(t){var e=t.payload,r=t.frag;if("subtitle"===r.type){if(void 0===this.initPTS)return void this.unparsedVttFrags.push(t);this._parseVTTs(r,e)}},e.prototype.onFragParsingUserdata=function(t){if(this.enabled&&this.config.enableCEA708Captions)for(var e=0;e<t.samples.length;e++){var r=this.extractCea608Data(t.samples[e].bytes);this.cea608Parser.addData(t.samples[e].pts,r)}},e.prototype.extractCea608Data=function(t){for(var e=31&t[0],r=2,i=void 0,a=void 0,n=void 0,o=void 0,s=void 0,l=[],u=0;u<e;u++)i=t[r++],a=127&t[r++],n=127&t[r++],o=0!=(4&i),s=3&i,0===a&&0===n||o&&0===s&&(l.push(a),l.push(n));return l},e}(u.a);e.a=v},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},n=function(t){var e=t;return a.hasOwnProperty(t)&&(e=a[t]),String.fromCharCode(e)},o=15,s=100,l={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},u={17:2,18:4,21:6,22:8,23:10,19:13,20:15},d={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},c={25:2,26:4,29:6,30:8,31:10,27:13,28:15},h=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],f={verboseFilter:{DATA:3,DEBUG:3,INFO:2,WARNING:2,TEXT:1,ERROR:0},time:null,verboseLevel:0,setTime:function(t){this.time=t},log:function(t,e){var r=this.verboseFilter[t];this.verboseLevel>=r&&console.log(this.time+" ["+t+"] "+e)}},p=function(t){for(var e=[],r=0;r<t.length;r++)e.push(t[r].toString(16));return e},v=function(){function t(e,r,a,n,o){i(this,t),this.foreground=e||"white",this.underline=r||!1,this.italics=a||!1,this.background=n||"black",this.flash=o||!1}return t.prototype.reset=function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1},t.prototype.setStyles=function(t){for(var e=["foreground","underline","italics","background","flash"],r=0;r<e.length;r++){var i=e[r];t.hasOwnProperty(i)&&(this[i]=t[i])}},t.prototype.isDefault=function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash},t.prototype.equals=function(t){return this.foreground===t.foreground&&this.underline===t.underline&&this.italics===t.italics&&this.background===t.background&&this.flash===t.flash},t.prototype.copy=function(t){this.foreground=t.foreground,this.underline=t.underline,this.italics=t.italics,this.background=t.background,this.flash=t.flash},t.prototype.toString=function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash},t}(),g=function(){function t(e,r,a,n,o,s){i(this,t),this.uchar=e||" ",this.penState=new v(r,a,n,o,s)}return t.prototype.reset=function(){this.uchar=" ",this.penState.reset()},t.prototype.setChar=function(t,e){this.uchar=t,this.penState.copy(e)},t.prototype.setPenState=function(t){this.penState.copy(t)},t.prototype.equals=function(t){return this.uchar===t.uchar&&this.penState.equals(t.penState)},t.prototype.copy=function(t){this.uchar=t.uchar,this.penState.copy(t.penState)},t.prototype.isEmpty=function(){return" "===this.uchar&&this.penState.isDefault()},t}(),y=function(){function t(){i(this,t),this.chars=[];for(var e=0;e<s;e++)this.chars.push(new g);this.pos=0,this.currPenState=new v}return t.prototype.equals=function(t){for(var e=!0,r=0;r<s;r++)if(!this.chars[r].equals(t.chars[r])){e=!1;break}return e},t.prototype.copy=function(t){for(var e=0;e<s;e++)this.chars[e].copy(t.chars[e])},t.prototype.isEmpty=function(){for(var t=!0,e=0;e<s;e++)if(!this.chars[e].isEmpty()){t=!1;break}return t},t.prototype.setCursor=function(t){this.pos!==t&&(this.pos=t),this.pos<0?(f.log("ERROR","Negative cursor position "+this.pos),this.pos=0):this.pos>s&&(f.log("ERROR","Too large cursor position "+this.pos),this.pos=s)},t.prototype.moveCursor=function(t){var e=this.pos+t;if(t>1)for(var r=this.pos+1;r<e+1;r++)this.chars[r].setPenState(this.currPenState);this.setCursor(e)},t.prototype.backSpace=function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)},t.prototype.insertChar=function(t){t>=144&&this.backSpace();var e=n(t);if(this.pos>=s)return void f.log("ERROR","Cannot insert "+t.toString(16)+" ("+e+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(e,this.currPenState),this.moveCursor(1)},t.prototype.clearFromPos=function(t){var e=void 0;for(e=t;e<s;e++)this.chars[e].reset()},t.prototype.clear=function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()},t.prototype.clearToEndOfRow=function(){this.clearFromPos(this.pos)},t.prototype.getTextString=function(){for(var t=[],e=!0,r=0;r<s;r++){var i=this.chars[r].uchar;" "!==i&&(e=!1),t.push(i)}return e?"":t.join("")},t.prototype.setPenStyles=function(t){this.currPenState.setStyles(t),this.chars[this.pos].setPenState(this.currPenState)},t}(),m=function(){function t(){i(this,t),this.rows=[];for(var e=0;e<o;e++)this.rows.push(new y);this.currRow=o-1,this.nrRollUpRows=null,this.reset()}return t.prototype.reset=function(){for(var t=0;t<o;t++)this.rows[t].clear();this.currRow=o-1},t.prototype.equals=function(t){for(var e=!0,r=0;r<o;r++)if(!this.rows[r].equals(t.rows[r])){e=!1;break}return e},t.prototype.copy=function(t){for(var e=0;e<o;e++)this.rows[e].copy(t.rows[e])},t.prototype.isEmpty=function(){for(var t=!0,e=0;e<o;e++)if(!this.rows[e].isEmpty()){t=!1;break}return t},t.prototype.backSpace=function(){this.rows[this.currRow].backSpace()},t.prototype.clearToEndOfRow=function(){this.rows[this.currRow].clearToEndOfRow()},t.prototype.insertChar=function(t){this.rows[this.currRow].insertChar(t)},t.prototype.setPen=function(t){this.rows[this.currRow].setPenStyles(t)},t.prototype.moveCursor=function(t){this.rows[this.currRow].moveCursor(t)},t.prototype.setCursor=function(t){f.log("INFO","setCursor: "+t),this.rows[this.currRow].setCursor(t)},t.prototype.setPAC=function(t){f.log("INFO","pacData = "+JSON.stringify(t));var e=t.row-1;if(this.nrRollUpRows&&e<this.nrRollUpRows-1&&(e=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==e){for(var r=0;r<o;r++)this.rows[r].clear();var i=this.currRow+1-this.nrRollUpRows,a=this.lastOutputScreen;if(a){var n=a.rows[i].cueStartTime;if(n&&n<f.time)for(var s=0;s<this.nrRollUpRows;s++)this.rows[e-this.nrRollUpRows+s+1].copy(a.rows[i+s])}}this.currRow=e;var l=this.rows[this.currRow];if(null!==t.indent){var u=t.indent,d=Math.max(u-1,0);l.setCursor(t.indent),t.color=l.chars[d].penState.foreground}var c={foreground:t.color,underline:t.underline,italics:t.italics,background:"black",flash:!1};this.setPen(c)},t.prototype.setBkgData=function(t){f.log("INFO","bkgData = "+JSON.stringify(t)),this.backSpace(),this.setPen(t),this.insertChar(32)},t.prototype.setRollUpRows=function(t){this.nrRollUpRows=t},t.prototype.rollUp=function(){if(null===this.nrRollUpRows)return void f.log("DEBUG","roll_up but nrRollUpRows not set yet");f.log("TEXT",this.getDisplayText());var t=this.currRow+1-this.nrRollUpRows,e=this.rows.splice(t,1)[0];e.clear(),this.rows.splice(this.currRow,0,e),f.log("INFO","Rolling up")},t.prototype.getDisplayText=function(t){t=t||!1;for(var e=[],r="",i=-1,a=0;a<o;a++){var n=this.rows[a].getTextString();n&&(i=a+1,t?e.push("Row "+i+": '"+n+"'"):e.push(n.trim()))}return e.length>0&&(r=t?"["+e.join(" | ")+"]":e.join("\n")),r},t.prototype.getTextAndFormat=function(){return this.rows},t}(),b=function(){function t(e,r){i(this,t),this.chNr=e,this.outputFilter=r,this.mode=null,this.verbose=0,this.displayedMemory=new m,this.nonDisplayedMemory=new m,this.lastOutputScreen=new m,this.currRollUpRow=this.displayedMemory.rows[o-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}return t.prototype.reset=function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[o-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null},t.prototype.getHandler=function(){return this.outputFilter},t.prototype.setHandler=function(t){this.outputFilter=t},t.prototype.setPAC=function(t){this.writeScreen.setPAC(t)},t.prototype.setBkgData=function(t){this.writeScreen.setBkgData(t)},t.prototype.setMode=function(t){t!==this.mode&&(this.mode=t,f.log("INFO","MODE="+t),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=t)},t.prototype.insertChars=function(t){for(var e=0;e<t.length;e++)this.writeScreen.insertChar(t[e]);var r=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";f.log("INFO",r+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(f.log("TEXT","DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())},t.prototype.ccRCL=function(){f.log("INFO","RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")},t.prototype.ccBS=function(){f.log("INFO","BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())},t.prototype.ccAOF=function(){},t.prototype.ccAON=function(){},t.prototype.ccDER=function(){f.log("INFO","DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()},t.prototype.ccRU=function(t){f.log("INFO","RU("+t+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(t)},t.prototype.ccFON=function(){f.log("INFO","FON - Flash On"),this.writeScreen.setPen({flash:!0})},t.prototype.ccRDC=function(){f.log("INFO","RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")},t.prototype.ccTR=function(){f.log("INFO","TR"),this.setMode("MODE_TEXT")},t.prototype.ccRTD=function(){f.log("INFO","RTD"),this.setMode("MODE_TEXT")},t.prototype.ccEDM=function(){f.log("INFO","EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)},t.prototype.ccCR=function(){f.log("CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)},t.prototype.ccENM=function(){f.log("INFO","ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()},t.prototype.ccEOC=function(){if(f.log("INFO","EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var t=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=t,this.writeScreen=this.nonDisplayedMemory,f.log("TEXT","DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)},t.prototype.ccTO=function(t){f.log("INFO","TO("+t+") - Tab Offset"),this.writeScreen.moveCursor(t)},t.prototype.ccMIDROW=function(t){var e={flash:!1};if(e.underline=t%2==1,e.italics=t>=46,e.italics)e.foreground="white";else{var r=Math.floor(t/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];e.foreground=i[r]}f.log("INFO","MIDROW: "+JSON.stringify(e)),this.writeScreen.setPen(e)},t.prototype.outputDataUpdate=function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=f.time;null!==e&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&(this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),!0===t&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue()),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))},t.prototype.cueSplitAtTime=function(t){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,t,this.displayedMemory),this.cueStartTime=t))},t}(),E=function(){function t(e,r,a){i(this,t),this.field=e||1,this.outputs=[r,a],this.channels=[new b(1,r),new b(2,a)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}}return t.prototype.getHandler=function(t){return this.channels[t].getHandler()},t.prototype.setHandler=function(t,e){this.channels[t].setHandler(e)},t.prototype.addData=function(t,e){var r=void 0,i=void 0,a=void 0,n=!1;this.lastTime=t,f.setTime(t);for(var o=0;o<e.length;o+=2)if(i=127&e[o],a=127&e[o+1],0!==i||0!==a){if(f.log("DATA","["+p([e[o],e[o+1]])+"] -> ("+p([i,a])+")"),r=this.parseCmd(i,a),r||(r=this.parseMidrow(i,a)),r||(r=this.parsePAC(i,a)),r||(r=this.parseBackgroundAttributes(i,a)),!r&&(n=this.parseChars(i,a)))if(this.currChNr&&this.currChNr>=0){var s=this.channels[this.currChNr-1];s.insertChars(n)}else f.log("WARNING","No channel found yet. TEXT-MODE?");r?this.dataCounters.cmd+=2:n?this.dataCounters.char+=2:(this.dataCounters.other+=2,f.log("WARNING","Couldn't parse cleaned data "+p([i,a])+" orig: "+p([e[o],e[o+1]])))}else this.dataCounters.padding+=2},t.prototype.parseCmd=function(t,e){var r=null,i=(20===t||28===t)&&e>=32&&e<=47,a=(23===t||31===t)&&e>=33&&e<=35;if(!i&&!a)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,f.log("DEBUG","Repeated command ("+p([t,e])+") is dropped"),!0;r=20===t||23===t?1:2;var n=this.channels[r-1];return 20===t||28===t?32===e?n.ccRCL():33===e?n.ccBS():34===e?n.ccAOF():35===e?n.ccAON():36===e?n.ccDER():37===e?n.ccRU(2):38===e?n.ccRU(3):39===e?n.ccRU(4):40===e?n.ccFON():41===e?n.ccRDC():42===e?n.ccTR():43===e?n.ccRTD():44===e?n.ccEDM():45===e?n.ccCR():46===e?n.ccENM():47===e&&n.ccEOC():n.ccTO(e-32),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.parseMidrow=function(t,e){var r=null;if((17===t||25===t)&&e>=32&&e<=47){if((r=17===t?1:2)!==this.currChNr)return f.log("ERROR","Mismatch channel in midrow parsing"),!1;return this.channels[r-1].ccMIDROW(e),f.log("DEBUG","MIDROW ("+p([t,e])+")"),!0}return!1},t.prototype.parsePAC=function(t,e){var r=null,i=null,a=(t>=17&&t<=23||t>=25&&t<=31)&&e>=64&&e<=127,n=(16===t||24===t)&&e>=64&&e<=95;if(!a&&!n)return!1;if(t===this.lastCmdA&&e===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;r=t<=23?1:2,i=e>=64&&e<=95?1===r?l[t]:d[t]:1===r?u[t]:c[t];var o=this.interpretPAC(i,e);return this.channels[r-1].setPAC(o),this.lastCmdA=t,this.lastCmdB=e,this.currChNr=r,!0},t.prototype.interpretPAC=function(t,e){var r=e,i={color:null,italics:!1,indent:null,underline:!1,row:t};return r=e>95?e-96:e-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i},t.prototype.parseChars=function(t,e){var r=null,i=null,a=null;if(t>=25?(r=2,a=t-8):(r=1,a=t),a>=17&&a<=19){var o=e;o=17===a?e+80:18===a?e+112:e+144,f.log("INFO","Special char '"+n(o)+"' in channel "+r),i=[o]}else t>=32&&t<=127&&(i=0===e?[t]:[t,e]);if(i){var s=p(i);f.log("DEBUG","Char codes = "+s.join(",")),this.lastCmdA=null,this.lastCmdB=null}return i},t.prototype.parseBackgroundAttributes=function(t,e){var r=void 0,i=void 0,a=void 0,n=void 0,o=(16===t||24===t)&&e>=32&&e<=47,s=(23===t||31===t)&&e>=45&&e<=47;return!(!o&&!s)&&(r={},16===t||24===t?(i=Math.floor((e-32)/2),r.background=h[i],e%2==1&&(r.background=r.background+"_semi")):45===e?r.background="transparent":(r.foreground="black",47===e&&(r.underline=!0)),a=t<24?1:2,n=this.channels[a-1],n.setBkgData(r),this.lastCmdA=null,this.lastCmdB=null,!0)},t.prototype.reset=function(){for(var t=0;t<this.channels.length;t++)this.channels[t]&&this.channels[t].reset();this.lastCmdA=null,this.lastCmdB=null},t.prototype.cueSplitAtTime=function(t){for(var e=0;e<this.channels.length;e++)this.channels[e]&&this.channels[e].cueSplitAtTime(t)},t}();e.a=E},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a=function(){function t(e,r){i(this,t),this.timelineController=e,this.track=r,this.startTime=null,this.endTime=null,this.screen=null}return t.prototype.dispatchCue=function(){null!==this.startTime&&(this.timelineController.addCues("textTrack"+this.track,this.startTime,this.endTime,this.screen),this.startTime=null)},t.prototype.newCue=function(t,e,r){(null===this.startTime||this.startTime>t)&&(this.startTime=t),this.endTime=e,this.screen=r,this.timelineController.createCaptionsTrack(this.track)},t}();e.a=a},function(t,e,r){"use strict";var i=r(26),a=r(5),n=function(t,e,r){return t.substr(r||0,e.length)===e},o=function(t){var e=parseInt(t.substr(-3)),r=parseInt(t.substr(-6,2)),i=parseInt(t.substr(-9,2)),a=t.length>9?parseInt(t.substr(0,t.indexOf(":"))):0;return isNaN(e)||isNaN(r)||isNaN(i)||isNaN(a)?-1:(e+=1e3*r,e+=6e4*i,e+=36e5*a)},s=function(t){for(var e=5381,r=t.length;r;)e=33*e^t.charCodeAt(--r);return(e>>>0).toString()},l=function(t,e,r){var i=t[e],a=t[i.prevCC];if(!a||!a.new&&i.new)return t.ccOffset=t.presentationOffset=i.start,void(i.new=!1);for(;a&&a.new;)t.ccOffset+=i.start-a.start,i.new=!1,i=a,a=t[i.prevCC];t.presentationOffset=r},u={parse:function(t,e,r,u,d,c){var h=/\r\n|\n\r|\n|\r/g,f=Object(a.b)(new Uint8Array(t)).trim().replace(h,"\n").split("\n"),p="00:00.000",v=0,g=0,y=0,m=[],b=void 0,E=!0,T=new i.a;T.oncue=function(t){var e=r[u],i=r.ccOffset;e&&e.new&&(void 0!==g?i=r.ccOffset=e.start:l(r,u,y)),y&&(i=y+r.ccOffset-r.presentationOffset),t.startTime+=i-g,t.endTime+=i-g,t.id=s(t.startTime.toString())+s(t.endTime.toString())+s(t.text),t.text=decodeURIComponent(encodeURIComponent(t.text)),t.endTime>0&&m.push(t)},T.onparsingerror=function(t){b=t},T.onflush=function(){if(b&&c)return void c(b);d(m)},f.forEach(function(t){if(E){if(n(t,"X-TIMESTAMP-MAP=")){E=!1,t.substr(16).split(",").forEach(function(t){n(t,"LOCAL:")?p=t.substr(6):n(t,"MPEGTS:")&&(v=parseInt(t.substr(7)))});try{e=e<0?e+8589934592:e,v-=e,g=o(p)/1e3,y=v/9e4,-1===g&&(b=new Error("Malformed X-TIMESTAMP-MAP: "+t))}catch(e){b=new Error("Malformed X-TIMESTAMP-MAP: "+t)}return}""===t&&(E=!1)}T.parse(t+"\n")}),T.flush()}};e.a=u},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function o(t){for(var e=[],r=0;r<t.length;r++)"subtitles"===t[r].kind&&e.push(t[r]);return e}var s=r(1),l=r(3),u=r(0),d=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),c=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,s.a.MEDIA_ATTACHED,s.a.MEDIA_DETACHING,s.a.MANIFEST_LOADING,s.a.MANIFEST_LOADED,s.a.SUBTITLE_TRACK_LOADED));return n.tracks=[],n.trackId=-1,n.media=void 0,n.subtitleDisplay=!1,n}return n(e,t),e.prototype._onTextTracksChanged=function(){if(this.media){for(var t=-1,e=o(this.media.textTracks),r=0;r<e.length;r++)if("hidden"===e[r].mode)t=r;else if("showing"===e[r].mode){t=r;break}this.subtitleTrack=t}},e.prototype.destroy=function(){l.a.prototype.destroy.call(this)},e.prototype.onMediaAttached=function(t){var e=this;this.media=t.media,this.media&&(void 0!==this.queuedDefaultTrack&&(this.subtitleTrack=this.queuedDefaultTrack,delete this.queuedDefaultTrack),this.trackChangeListener=this._onTextTracksChanged.bind(this),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.subtitlePollingInterval=setInterval(function(){e.trackChangeListener()},500):this.media.textTracks.addEventListener("change",this.trackChangeListener))},e.prototype.onMediaDetaching=function(){this.media&&(this.useTextTrackPolling?clearInterval(this.subtitlePollingInterval):this.media.textTracks.removeEventListener("change",this.trackChangeListener),this.media=void 0)},e.prototype.onManifestLoading=function(){this.tracks=[],this.trackId=-1},e.prototype.onManifestLoaded=function(t){var e=this,r=t.subtitles||[];this.tracks=r,this.trackId=-1,this.hls.trigger(s.a.SUBTITLE_TRACKS_UPDATED,{subtitleTracks:r}),r.forEach(function(t){t.default&&(e.media?e.subtitleTrack=t.id:e.queuedDefaultTrack=t.id)})},e.prototype.onTick=function(){var t=this.trackId,e=this.tracks[t];if(e){var r=e.details;void 0!==r&&!0!==r.live||(u.b.log("(re)loading playlist for subtitle track "+t),this.hls.trigger(s.a.SUBTITLE_TRACK_LOADING,{url:e.url,id:t}))}},e.prototype.onSubtitleTrackLoaded=function(t){var e=this;t.id<this.tracks.length&&(u.b.log("subtitle track "+t.id+" loaded"),this.tracks[t.id].details=t.details,t.details.live&&!this.timer&&(this.timer=setInterval(function(){e.onTick()},1e3*t.details.targetduration,this)),!t.details.live&&this.timer&&(clearInterval(this.timer),this.timer=null))},e.prototype.setSubtitleTrackInternal=function(t){if(!(t<-1||t>=this.tracks.length)){this.timer&&(clearInterval(this.timer),this.timer=null);var e=o(this.media.textTracks);if(-1!==this.trackId&&(e[this.trackId].mode="disabled"),this.trackId=t,u.b.log("switching to subtitle track "+t),this.hls.trigger(s.a.SUBTITLE_TRACK_SWITCH,{id:t}),-1!==t){var r=this.tracks[t];t<e.length&&(e[t].mode=this.subtitleDisplay?"showing":"hidden");var i=r.details;void 0!==i&&!0!==i.live||(u.b.log("(re)loading playlist for subtitle track "+t),this.hls.trigger(s.a.SUBTITLE_TRACK_LOADING,{url:r.url,id:t}))}}},d(e,[{key:"subtitleTracks",get:function(){return this.tracks}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(t){this.trackId!==t&&this.setSubtitleTrackInternal(t)}}]),e}(l.a);e.a=c},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(1),s=r(0),l=r(9),u=r(13),d={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING"},c=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,o.a.MEDIA_ATTACHED,o.a.ERROR,o.a.KEY_LOADED,o.a.FRAG_LOADED,o.a.SUBTITLE_TRACKS_UPDATED,o.a.SUBTITLE_TRACK_SWITCH,o.a.SUBTITLE_TRACK_LOADED,o.a.SUBTITLE_FRAG_PROCESSED));return n.config=r.config,n.vttFragSNsProcessed={},n.vttFragQueues=void 0,n.currentlyProcessing=null,n.state=d.STOPPED,n.currentTrackId=-1,n.decrypter=new l.a(r.observer,r.config),n}return n(e,t),e.prototype.onHandlerDestroyed=function(){this.state=d.STOPPED},e.prototype.clearVttFragQueues=function(){var t=this;this.vttFragQueues={},this.tracks.forEach(function(e){t.vttFragQueues[e.id]=[]})},e.prototype.nextFrag=function(){if(null===this.currentlyProcessing&&this.currentTrackId>-1&&this.vttFragQueues[this.currentTrackId].length){var t=this.currentlyProcessing=this.vttFragQueues[this.currentTrackId].shift();this.fragCurrent=t,this.hls.trigger(o.a.FRAG_LOADING,{frag:t}),this.state=d.FRAG_LOADING}},e.prototype.onSubtitleFragProcessed=function(t){t.success&&this.vttFragSNsProcessed[t.frag.trackId].push(t.frag.sn),this.currentlyProcessing=null,this.state=d.IDLE,this.nextFrag()},e.prototype.onMediaAttached=function(){this.state=d.IDLE},e.prototype.onError=function(t){var e=t.frag;e&&"subtitle"!==e.type||this.currentlyProcessing&&(this.currentlyProcessing=null,this.nextFrag())},e.prototype.doTick=function(){var t=this;switch(this.state){case d.IDLE:var e=this.tracks,r=this.currentTrackId,i=this.vttFragSNsProcessed[r],a=this.vttFragQueues[r],n=this.currentlyProcessing?this.currentlyProcessing.sn:-1,l=function(t){return i.indexOf(t.sn)>-1},u=function(t){return a.some(function(e){return e.sn===t.sn})};if(!e)break;var c;if(r<e.length&&(c=e[r].details),void 0===c)break;c.fragments.forEach(function(e){l(e)||e.sn===n||u(e)||(e.decryptdata&&null!=e.decryptdata.uri&&null==e.decryptdata.key?(s.b.log("Loading key for "+e.sn),t.state=d.KEY_LOADING,t.hls.trigger(o.a.KEY_LOADING,{frag:e})):(e.trackId=r,a.push(e),t.nextFrag()))})}},e.prototype.onSubtitleTracksUpdated=function(t){var e=this;s.b.log("subtitle tracks updated"),this.tracks=t.subtitleTracks,this.clearVttFragQueues(),this.vttFragSNsProcessed={},this.tracks.forEach(function(t){e.vttFragSNsProcessed[t.id]=[]})},e.prototype.onSubtitleTrackSwitch=function(t){if(this.currentTrackId=t.id,-1!==this.currentTrackId){void 0!==this.tracks[this.currentTrackId].details&&this.tick()}},e.prototype.onSubtitleTrackLoaded=function(){this.tick()},e.prototype.onKeyLoaded=function(){this.state===d.KEY_LOADING&&(this.state=d.IDLE,this.tick())},e.prototype.onFragLoaded=function(t){var e=this.fragCurrent,r=t.frag.decryptdata,i=t.frag,a=this.hls;if(this.state===d.FRAG_LOADING&&e&&"subtitle"===t.frag.type&&e.sn===t.frag.sn&&t.payload.byteLength>0&&null!=r&&null!=r.key&&"AES-128"===r.method){var n=void 0;try{n=performance.now()}catch(t){n=Date.now()}this.decrypter.decrypt(t.payload,r.key.buffer,r.iv.buffer,function(t){var e=void 0;try{e=performance.now()}catch(t){e=Date.now()}a.trigger(o.a.FRAG_DECRYPTED,{frag:i,payload:t,stats:{tstart:n,tdecrypt:e}})})}},e}(u.a);e.a=c},function(t,e,r){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function n(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}var o=r(3),s=r(1),l=r(2),u=r(0),d=function(){function t(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,r,i){return r&&t(e.prototype,r),i&&t(e,i),e}}(),c={WIDEVINE:"com.widevine.alpha",PLAYREADY:"com.microsoft.playready"},h=function(t,e,r){var i={videoCapabilities:[]};return e.forEach(function(t){i.videoCapabilities.push({contentType:'video/mp4; codecs="'+t+'"'})}),[i]},f=function(t,e,r){switch(t){case c.WIDEVINE:return h(0,r);default:throw Error("Unknown key-system: "+t)}},p=function(t){function e(r){i(this,e);var n=a(this,t.call(this,r,s.a.MEDIA_ATTACHED,s.a.MANIFEST_PARSED));return n._widevineLicenseUrl=r.config.widevineLicenseUrl,n._licenseXhrSetup=r.config.licenseXhrSetup,n._emeEnabled=r.config.emeEnabled,n._requestMediaKeySystemAccess=r.config.requestMediaKeySystemAccessFunc,n._mediaKeysList=[],n._media=null,n._hasSetMediaKeys=!1,n._isMediaEncrypted=!1,n._requestLicenseFailureCount=0,n}return n(e,t),e.prototype.getLicenseServerUrl=function(t){var e=void 0;switch(t){case c.WIDEVINE:e=this._widevineLicenseUrl;break;default:e=null}return e||(u.b.error('No license server URL configured for key-system "'+t+'"'),this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0})),e},e.prototype._attemptKeySystemAccess=function(t,e,r){var i=this,a=f(t,0,r);if(!a)return void u.b.warn("Can not create config for key-system (maybe because platform is not supported):",t);u.b.log("Requesting encrypted media key-system access"),this.requestMediaKeySystemAccess(t,a).then(function(e){i._onMediaKeySystemAccessObtained(t,e)}).catch(function(e){u.b.error('Failed to obtain key-system "'+t+'" access:',e)})},e.prototype._onMediaKeySystemAccessObtained=function(t,e){var r=this;u.b.log('Access for key-system "'+t+'" obtained');var i={mediaKeys:null,mediaKeysSession:null,mediaKeysSessionInitialized:!1,mediaKeySystemAccess:e,mediaKeySystemDomain:t};this._mediaKeysList.push(i),e.createMediaKeys().then(function(e){i.mediaKeys=e,u.b.log('Media-keys created for key-system "'+t+'"'),r._onMediaKeysCreated()}).catch(function(t){u.b.error("Failed to create media-keys:",t)})},e.prototype._onMediaKeysCreated=function(){var t=this;this._mediaKeysList.forEach(function(e){e.mediaKeysSession||(e.mediaKeysSession=e.mediaKeys.createSession(),t._onNewMediaKeySession(e.mediaKeysSession))})},e.prototype._onNewMediaKeySession=function(t){var e=this;u.b.log("New key-system session "+t.sessionId),t.addEventListener("message",function(r){e._onKeySessionMessage(t,r.message)},!1)},e.prototype._onKeySessionMessage=function(t,e){u.b.log("Got EME message event, creating license request"),this._requestLicense(e,function(e){u.b.log("Received license data, updating key-session"),t.update(e)})},e.prototype._onMediaEncrypted=function(t,e){u.b.log('Media is encrypted using "'+t+'" init data type'),this._isMediaEncrypted=!0,this._mediaEncryptionInitDataType=t,this._mediaEncryptionInitData=e,this._attemptSetMediaKeys(),this._generateRequestWithPreferredKeySession()},e.prototype._attemptSetMediaKeys=function(){if(!this._hasSetMediaKeys){var t=this._mediaKeysList[0];if(!t||!t.mediaKeys)return u.b.error("Fatal: Media is encrypted but no CDM access or no keys have been obtained yet"),void this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_NO_KEYS,fatal:!0});u.b.log("Setting keys for encrypted media"),this._media.setMediaKeys(t.mediaKeys),this._hasSetMediaKeys=!0}},e.prototype._generateRequestWithPreferredKeySession=function(){var t=this,e=this._mediaKeysList[0];if(!e)return u.b.error("Fatal: Media is encrypted but not any key-system access has been obtained yet"),void this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_NO_ACCESS,fatal:!0});if(e.mediaKeysSessionInitialized)return void u.b.warn("Key-Session already initialized but requested again");var r=e.mediaKeysSession;r||(u.b.error("Fatal: Media is encrypted but no key-session existing"),this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_NO_SESSION,fatal:!0}));var i=this._mediaEncryptionInitDataType,a=this._mediaEncryptionInitData;u.b.log('Generating key-session request for "'+i+'" init data type'),e.mediaKeysSessionInitialized=!0,r.generateRequest(i,a).then(function(){u.b.debug("Key-session generation succeeded")}).catch(function(e){u.b.error("Error generating key-session request:",e),t.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_NO_SESSION,fatal:!1})})},e.prototype._createLicenseXhr=function(t,e,r){var i=new XMLHttpRequest,a=this._licenseXhrSetup;try{if(a)try{a(i,t)}catch(e){i.open("POST",t,!0),a(i,t)}i.readyState||i.open("POST",t,!0)}catch(t){return u.b.error("Error setting up key-system license XHR",t),void this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0})}return i.responseType="arraybuffer",i.onreadystatechange=this._onLicenseRequestReadyStageChange.bind(this,i,t,e,r),i},e.prototype._onLicenseRequestReadyStageChange=function(t,e,r,i){switch(t.readyState){case 4:if(200===t.status)this._requestLicenseFailureCount=0,u.b.log("License request succeeded"),i(t.response);else{if(u.b.error("License Request XHR failed ("+e+"). Status: "+t.status+" ("+t.statusText+")"),++this._requestLicenseFailureCount<=3){var a=3-this._requestLicenseFailureCount+1;return u.b.warn("Retrying license request, "+a+" attempts left"),void this._requestLicense(r,i)}this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0})}}},e.prototype._generateLicenseRequestChallenge=function(t,e){var r=void 0;return t.mediaKeySystemDomain===c.PLAYREADY?u.b.error("PlayReady is not supported (yet)"):t.mediaKeySystemDomain===c.WIDEVINE?r=e:u.b.error("Unsupported key-system:",t.mediaKeySystemDomain),r},e.prototype._requestLicense=function(t,e){u.b.log("Requesting content license for key-system");var r=this._mediaKeysList[0];if(!r)return u.b.error("Fatal error: Media is encrypted but no key-system access has been obtained yet"),void this.hls.trigger(s.a.ERROR,{type:l.b.KEY_SYSTEM_ERROR,details:l.a.KEY_SYSTEM_NO_ACCESS,fatal:!0});var i=this.getLicenseServerUrl(r.mediaKeySystemDomain),a=this._createLicenseXhr(i,t,e);u.b.log("Sending license request to URL: "+i),a.send(this._generateLicenseRequestChallenge(r,t))},e.prototype.onMediaAttached=function(t){var e=this;if(this._emeEnabled){var r=t.media;this._media=r,r.addEventListener("encrypted",function(t){e._onMediaEncrypted(t.initDataType,t.initData)})}},e.prototype.onManifestParsed=function(t){if(this._emeEnabled){var e=t.levels.map(function(t){return t.audioCodec}),r=t.levels.map(function(t){return t.videoCodec});this._attemptKeySystemAccess(c.WIDEVINE,e,r)}},d(e,[{key:"requestMediaKeySystemAccess",get:function(){if(!this._requestMediaKeySystemAccess)throw new Error("No requestMediaKeySystemAccess function configured");return this._requestMediaKeySystemAccess}}]),e}(o.a);e.a=p},function(t,e,r){"use strict";r.d(e,"a",function(){return i});var i=function(){return window.navigator&&window.navigator.requestMediaKeySystemAccess?window.navigator.requestMediaKeySystemAccess.bind(window.navigator):null}()},function(t,e){/*! http://mths.be/endswith v0.2.0 by @mathias */ +String.prototype.endsWith||function(){"use strict";var t=function(){try{var t={},e=Object.defineProperty,r=e(t,t,t)&&e}catch(t){}return r}(),e={}.toString,r=function(t){if(null==this)throw TypeError();var r=String(this);if(t&&"[object RegExp]"==e.call(t))throw TypeError();var i=r.length,a=String(t),n=a.length,o=i;if(arguments.length>1){var s=arguments[1];void 0!==s&&(o=s?Number(s):0)!=o&&(o=0)}var l=Math.min(Math.max(o,0),i),u=l-n;if(u<0)return!1;for(var d=-1;++d<n;)if(r.charCodeAt(u+d)!=a.charCodeAt(d))return!1;return!0};t?t(String.prototype,"endsWith",{value:r,configurable:!0,writable:!0}):String.prototype.endsWith=r}()}]).default}); +//# sourceMappingURL=hls.min.js.map \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/deps/random_name_generator.js b/src/main/webapp/static/js/paella/player/resources/deps/random_name_generator.js new file mode 100644 index 0000000000000000000000000000000000000000..fbec6794e8338b510100576c294e949949b6a04d --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/deps/random_name_generator.js @@ -0,0 +1,20 @@ +function capFirst(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} + +function getRandomInt(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} + +function generateName(){ + var animals = ['aardvark', 'albatross', 'alligator', 'alpaca', 'ant', 'anteater', 'antelope', 'ape', 'armadillo', 'donkey', 'baboon', 'badger', 'barracuda', 'bat', 'bear', 'beaver', 'bee', 'bison', 'boar', 'buffalo', 'butterfly', 'camel', 'capybara', 'caribou', 'cassowary', 'cat', 'caterpillar', 'cattle', 'chamois', 'cheetah', 'chicken', 'chimpanzee', 'chinchilla', 'chough', 'clam', 'cobra', 'cockroach', 'cod', 'cormorant', 'coyote', 'crab', 'crane', 'crocodile', 'crow', 'curlew', 'deer', 'dinosaur', 'dog', 'dogfish', 'dolphin', 'dotterel', 'dove', 'dragonfly', 'duck', 'dugong', 'dunlin', 'eagle', 'echidna', 'eel', 'eland', 'elephant', 'elk', 'emu', 'falcon', 'ferret', 'finch', 'fish', 'flamingo', 'fly', 'fox', 'frog', 'gaur', 'gazelle', 'gerbil', 'giraffe', 'gnat', 'gnu', 'goat', 'goldfinch', 'goldfish', 'goose', 'gorilla', 'goshawk', 'grasshopper', 'grouse', 'guanaco', 'gull', 'hamster', 'hare', 'hawk', 'hedgehog', 'heron', 'herring', 'hippopotamus', 'hornet', 'horse', 'human', 'hummingbird', 'hyena', 'ibex', 'ibis', 'jackal', 'jaguar', 'jay', 'jellyfish', 'kangaroo', 'kingfisher', 'koala', 'kookabura', 'kouprey', 'kudu', 'lapwing', 'lark', 'lemur', 'leopard', 'lion', 'llama', 'lobster', 'locust', 'loris', 'louse', 'lyrebird', 'magpie', 'mallard', 'manatee', 'mandrill', 'mantis', 'marten', 'meerkat', 'mink', 'mole', 'mongoose', 'monkey', 'moose', 'mosquito', 'mouse', 'mule', 'narwhal', 'newt', 'nightingale', 'octopus', 'okapi', 'opossum', 'oryx', 'ostrich', 'otter', 'owl', 'oyster', 'panther', 'parrot', 'partridge', 'peafowl', 'pelican', 'penguin', 'pheasant', 'pig', 'pigeon', 'pony', 'porcupine', 'porpoise', 'quail', 'quelea', 'quetzal', 'rabbit', 'raccoon', 'rail', 'ram', 'rat', 'raven', 'red deer', 'red panda', 'reindeer', 'rhinoceros', 'rook', 'salamander', 'salmon', 'sand dollar', 'sandpiper', 'sardine', 'scorpion', 'seahorse', 'seal', 'shark', 'sheep', 'shrew', 'skunk', 'snail', 'snake', 'sparrow', 'spider', 'spoonbill', 'squid', 'squirrel', 'starling', 'stingray', 'stinkbug', 'stork', 'swallow', 'swan', 'tapir', 'tarsier', 'termite', 'tiger', 'toad', 'trout', 'turkey', 'turtle', 'viper', 'vulture', 'wallaby', 'walrus', 'wasp', 'weasel', 'whale', 'wildcat', 'wolf', 'wolverine', 'wombat', 'woodcock', 'woodpecker', 'worm', 'wren', 'yak', 'zebra'] + + var adjectives = ['aback', 'abaft', 'abandoned', 'abashed', 'aberrant', 'abhorrent', 'abiding', 'abject', 'ablaze', 'able', 'abnormal', 'aboriginal', 'abortive', 'abounding', 'abrasive', 'abrupt', 'absent', 'absorbed', 'absorbing', 'abstracted', 'absurd', 'abundant', 'abusive', 'acceptable', 'accessible', 'accidental', 'accurate', 'acid', 'acidic', 'acoustic', 'acrid', 'adamant', 'adaptable', 'addicted', 'adhesive', 'adjoining', 'adorable', 'adventurous', 'afraid', 'aggressive', 'agonizing', 'agreeable', 'ahead', 'ajar', 'alert', 'alike', 'alive', 'alleged', 'alluring', 'aloof', 'amazing', 'ambiguous', 'ambitious', 'amuck', 'amused', 'amusing', 'ancient', 'angry', 'animated', 'annoyed', 'annoying', 'anxious', 'apathetic', 'aquatic', 'aromatic', 'arrogant', 'ashamed', 'aspiring', 'assorted', 'astonishing', 'attractive', 'auspicious', 'automatic', 'available', 'average', 'aware', 'awesome', 'axiomatic', 'bad', 'barbarous', 'bashful', 'bawdy', 'beautiful', 'befitting', 'belligerent', 'beneficial', 'bent', 'berserk', 'bewildered', 'big', 'billowy', 'bite-sized', 'bitter', 'bizarre', 'black', 'black-and-white', 'bloody', 'blue', 'blue-eyed', 'blushing', 'boiling', 'boorish', 'bored', 'boring', 'bouncy', 'boundless', 'brainy', 'brash', 'brave', 'brawny', 'breakable', 'breezy', 'brief', 'bright', 'broad', 'broken', 'brown', 'bumpy', 'burly', 'bustling', 'busy', 'cagey', 'calculating', 'callous', 'calm', 'capable', 'capricious', 'careful', 'careless', 'caring', 'cautious', 'ceaseless', 'certain', 'changeable', 'charming', 'cheap', 'cheerful', 'chemical', 'chief', 'childlike', 'chilly', 'chivalrous', 'chubby', 'chunky', 'clammy', 'classy', 'clean', 'clear', 'clever', 'cloistered', 'cloudy', 'closed', 'clumsy', 'cluttered', 'coherent', 'cold', 'colorful', 'colossal', 'combative', 'comfortable', 'common', 'complete', 'complex', 'concerned', 'condemned', 'confused', 'conscious', 'cooing', 'cool', 'cooperative', 'coordinated', 'courageous', 'cowardly', 'crabby', 'craven', 'crazy', 'creepy', 'crooked', 'crowded', 'cruel', 'cuddly', 'cultured', 'cumbersome', 'curious', 'curly', 'curved', 'curvy', 'cut', 'cute', 'cynical', 'daffy', 'daily', 'damaged', 'damaging', 'damp', 'dangerous', 'dapper', 'dark', 'dashing', 'dazzling', 'dead', 'deadpan', 'deafening', 'dear', 'debonair', 'decisive', 'decorous', 'deep', 'deeply', 'defeated', 'defective', 'defiant', 'delicate', 'delicious', 'delightful', 'demonic', 'delirious', 'dependent', 'depressed', 'deranged', 'descriptive', 'deserted', 'detailed', 'determined', 'devilish', 'didactic', 'different', 'difficult', 'diligent', 'direful', 'dirty', 'disagreeable', 'disastrous', 'discreet', 'disgusted', 'disgusting', 'disillusioned', 'dispensable', 'distinct', 'disturbed', 'divergent', 'dizzy', 'domineering', 'doubtful', 'drab', 'draconian', 'dramatic', 'dreary', 'drunk', 'dry', 'dull', 'dusty', 'dynamic', 'dysfunctional', 'eager', 'early', 'earsplitting', 'earthy', 'easy', 'eatable', 'economic', 'educated', 'efficacious', 'efficient', 'elastic', 'elated', 'elderly', 'electric', 'elegant', 'elfin', 'elite', 'embarrassed', 'eminent', 'empty', 'enchanted', 'enchanting', 'encouraging', 'endurable', 'energetic', 'enormous', 'entertaining', 'enthusiastic', 'envious', 'equable', 'equal', 'erect', 'erratic', 'ethereal', 'evanescent', 'evasive', 'even', 'excellent', 'excited', 'exciting', 'exclusive', 'exotic', 'expensive', 'extra-large', 'extra-small', 'exuberant', 'exultant', 'fabulous', 'faded', 'faint', 'fair', 'faithful', 'fallacious', 'false', 'familiar', 'famous', 'fanatical', 'fancy', 'fantastic', 'far', 'far-flung', 'fascinated', 'fast', 'fat', 'faulty', 'fearful', 'fearless', 'feeble', 'feigned', 'female', 'fertile', 'festive', 'few', 'fierce', 'filthy', 'fine', 'finicky', 'first', 'fixed', 'flagrant', 'flaky', 'flashy', 'flat', 'flawless', 'flimsy', 'flippant', 'flowery', 'fluffy', 'fluttering', 'foamy', 'foolish', 'foregoing', 'forgetful', 'fortunate', 'frail', 'fragile', 'frantic', 'free', 'freezing', 'frequent', 'fresh', 'fretful', 'friendly', 'frightened', 'frightening', 'full', 'fumbling', 'functional', 'funny', 'furry', 'furtive', 'future', 'futuristic', 'fuzzy', 'gabby', 'gainful', 'gamy', 'gaping', 'garrulous', 'gaudy', 'general', 'gentle', 'giant', 'giddy', 'gifted', 'gigantic', 'glamorous', 'gleaming', 'glib', 'glistening', 'glorious', 'glossy', 'godly', 'good', 'goofy', 'gorgeous', 'graceful', 'grandiose', 'grateful', 'gratis', 'gray', 'greasy', 'great', 'greedy', 'green', 'grey', 'grieving', 'groovy', 'grotesque', 'grouchy', 'grubby', 'gruesome', 'grumpy', 'guarded', 'guiltless', 'gullible', 'gusty', 'guttural', 'habitual', 'half', 'hallowed', 'halting', 'handsome', 'handy', 'hanging', 'hapless', 'happy', 'hard', 'hard-to-find', 'harmonious', 'harsh', 'hateful', 'heady', 'healthy', 'heartbreaking', 'heavenly', 'heavy', 'hellish', 'helpful', 'helpless', 'hesitant', 'hideous', 'high', 'highfalutin', 'high-pitched', 'hilarious', 'hissing', 'historical', 'holistic', 'hollow', 'homeless', 'homely', 'honorable', 'horrible', 'hospitable', 'hot', 'huge', 'hulking', 'humdrum', 'humorous', 'hungry', 'hurried', 'hurt', 'hushed', 'husky', 'hypnotic', 'hysterical', 'icky', 'icy', 'idiotic', 'ignorant', 'ill', 'illegal', 'ill-fated', 'ill-informed', 'illustrious', 'imaginary', 'immense', 'imminent', 'impartial', 'imperfect', 'impolite', 'important', 'imported', 'impossible', 'incandescent', 'incompetent', 'inconclusive', 'industrious', 'incredible', 'inexpensive', 'infamous', 'innate', 'innocent', 'inquisitive', 'insidious', 'instinctive', 'intelligent', 'interesting', 'internal', 'invincible', 'irate', 'irritating', 'itchy', 'jaded', 'jagged', 'jazzy', 'jealous', 'jittery', 'jobless', 'jolly', 'joyous', 'judicious', 'juicy', 'jumbled', 'jumpy', 'juvenile', 'keen', 'kind', 'kindhearted', 'kindly', 'knotty', 'knowing', 'knowledgeable', 'known', 'labored', 'lackadaisical', 'lacking', 'lame', 'lamentable', 'languid', 'large', 'last', 'late', 'laughable', 'lavish', 'lazy', 'lean', 'learned', 'left', 'legal', 'lethal', 'level', 'lewd', 'light', 'like', 'likeable', 'limping', 'literate', 'little', 'lively', 'living', 'lonely', 'long', 'longing', 'long-term', 'loose', 'lopsided', 'loud', 'loutish', 'lovely', 'loving', 'low', 'lowly', 'lucky', 'ludicrous', 'lumpy', 'lush', 'luxuriant', 'lying', 'lyrical', 'macabre', 'macho', 'maddening', 'madly', 'magenta', 'magical', 'magnificent', 'majestic', 'makeshift', 'male', 'malicious', 'mammoth', 'maniacal', 'many', 'marked', 'massive', 'married', 'marvelous', 'material', 'materialistic', 'mature', 'mean', 'measly', 'meaty', 'medical', 'meek', 'mellow', 'melodic', 'melted', 'merciful', 'mere', 'messy', 'mighty', 'military', 'milky', 'mindless', 'miniature', 'minor', 'miscreant', 'misty', 'mixed', 'moaning', 'modern', 'moldy', 'momentous', 'motionless', 'mountainous', 'muddled', 'mundane', 'murky', 'mushy', 'mute', 'mysterious', 'naive', 'nappy', 'narrow', 'nasty', 'natural', 'naughty', 'nauseating', 'near', 'neat', 'nebulous', 'necessary', 'needless', 'needy', 'neighborly', 'nervous', 'new', 'next', 'nice', 'nifty', 'nimble', 'nippy', 'noiseless', 'noisy', 'nonchalant', 'nondescript', 'nonstop', 'normal', 'nostalgic', 'nosy', 'noxious', 'numberless', 'numerous', 'nutritious', 'nutty', 'oafish', 'obedient', 'obeisant', 'obese', 'obnoxious', 'obscene', 'obsequious', 'observant', 'obsolete', 'obtainable', 'oceanic', 'odd', 'offbeat', 'old', 'old-fashioned', 'omniscient', 'onerous', 'open', 'opposite', 'optimal', 'orange', 'ordinary', 'organic', 'ossified', 'outgoing', 'outrageous', 'outstanding', 'oval', 'overconfident', 'overjoyed', 'overrated', 'overt', 'overwrought', 'painful', 'painstaking', 'pale', 'paltry', 'panicky', 'panoramic', 'parallel', 'parched', 'parsimonious', 'past', 'pastoral', 'pathetic', 'peaceful', 'penitent', 'perfect', 'periodic', 'permissible', 'perpetual', 'petite', 'phobic', 'physical', 'picayune', 'pink', 'piquant', 'placid', 'plain', 'plant', 'plastic', 'plausible', 'pleasant', 'plucky', 'pointless', 'poised', 'polite', 'political', 'poor', 'possessive', 'possible', 'powerful', 'precious', 'premium', 'present', 'pretty', 'previous', 'pricey', 'prickly', 'private', 'probable', 'productive', 'profuse', 'protective', 'proud', 'psychedelic', 'psychotic', 'public', 'puffy', 'pumped', 'puny', 'purple', 'purring', 'pushy', 'puzzled', 'puzzling', 'quaint', 'quarrelsome', 'questionable', 'quick', 'quiet', 'quirky', 'quixotic', 'quizzical', 'rabid', 'racial', 'ragged', 'rainy', 'rambunctious', 'rampant', 'rapid', 'rare', 'raspy', 'ratty', 'ready', 'real', 'rebel', 'receptive', 'recondite', 'red', 'redundant', 'reflective', 'regular', 'relieved', 'remarkable', 'reminiscent', 'repulsive', 'resolute', 'resonant', 'responsible', 'rhetorical', 'rich', 'right', 'righteous', 'rightful', 'rigid', 'ripe', 'ritzy', 'roasted', 'robust', 'romantic', 'roomy', 'rotten', 'rough', 'round', 'royal', 'ruddy', 'rude', 'rural', 'rustic', 'ruthless', 'sable', 'sad', 'safe', 'salty', 'same', 'sassy', 'satisfying', 'savory', 'scandalous', 'scarce', 'scared', 'scary', 'scattered', 'scientific', 'scintillating', 'scrawny', 'screeching', 'second', 'second-hand', 'secret', 'secretive', 'sedate', 'seemly', 'selective', 'selfish', 'separate', 'serious', 'shaggy', 'shaky', 'shallow', 'sharp', 'shiny', 'shivering', 'shocking', 'short', 'shrill', 'shut', 'shy', 'sick', 'silent', 'silky', 'silly', 'simple', 'simplistic', 'sincere', 'skillful', 'skinny', 'sleepy', 'slim', 'slimy', 'slippery', 'sloppy', 'slow', 'small', 'smart', 'smelly', 'smiling', 'smoggy', 'smooth', 'sneaky', 'snobbish', 'snotty', 'soft', 'soggy', 'solid', 'somber', 'sophisticated', 'sordid', 'sore', 'sour', 'sparkling', 'special', 'spectacular', 'spicy', 'spiffy', 'spiky', 'spiritual', 'spiteful', 'splendid', 'spooky', 'spotless', 'spotted', 'spotty', 'spurious', 'squalid', 'square', 'squealing', 'squeamish', 'staking', 'stale', 'standing', 'statuesque', 'steadfast', 'steady', 'steep', 'stereotyped', 'sticky', 'stiff', 'stimulating', 'stingy', 'stormy', 'straight', 'strange', 'striped', 'strong', 'stupendous', 'sturdy', 'subdued', 'subsequent', 'substantial', 'successful', 'succinct', 'sudden', 'sulky', 'super', 'superb', 'superficial', 'supreme', 'swanky', 'sweet', 'sweltering', 'swift', 'symptomatic', 'synonymous', 'taboo', 'tacit', 'tacky', 'talented', 'tall', 'tame', 'tan', 'tangible', 'tangy', 'tart', 'tasteful', 'tasteless', 'tasty', 'tawdry', 'tearful', 'tedious', 'teeny', 'teeny-tiny', 'telling', 'temporary', 'ten', 'tender', 'tense', 'tenuous', 'terrific', 'tested', 'testy', 'thankful', 'therapeutic', 'thick', 'thin', 'thinkable', 'third', 'thirsty', 'thoughtful', 'thoughtless', 'threatening', 'thundering', 'tidy', 'tight', 'tightfisted', 'tiny', 'tired', 'tiresome', 'toothsome', 'torpid', 'tough', 'towering', 'tranquil', 'trashy', 'tremendous', 'tricky', 'trite', 'troubled', 'truculent', 'true', 'truthful', 'typical', 'ubiquitous', 'ultra', 'unable', 'unaccountable', 'unadvised', 'unarmed', 'unbecoming', 'unbiased', 'uncovered', 'understood', 'undesirable', 'unequal', 'unequaled', 'uneven', 'unhealthy', 'uninterested', 'unique', 'unkempt', 'unknown', 'unnatural', 'unruly', 'unsightly', 'unsuitable', 'untidy', 'unused', 'unusual', 'unwieldy', 'unwritten', 'upbeat', 'uppity', 'upset', 'uptight', 'used', 'useful', 'useless', 'utopian', 'vacuous', 'vagabond', 'vague', 'valuable', 'various', 'vast', 'vengeful', 'venomous', 'verdant', 'versed', 'victorious', 'vigorous', 'violent', 'violet', 'vivacious', 'voiceless', 'volatile', 'voracious', 'vulgar', 'wacky', 'waggish', 'waiting', 'wakeful', 'wandering', 'wanting', 'warlike', 'warm', 'wary', 'wasteful', 'watery', 'weak', 'wealthy', 'weary', 'well-groomed', 'well-made', 'well-off', 'well-to-do', 'wet', 'whimsical', 'whispering', 'white', 'whole', 'wholesale', 'wicked', 'wide', 'wide-eyed', 'wiggly', 'wild', 'willing', 'windy', 'wiry', 'wise', 'wistful', 'witty', 'woebegone', 'womanly', 'wonderful', 'wooden', 'woozy', 'workable', 'worried', 'worthless', 'wrathful', 'wretched', 'wrong', 'wry', 'yellow', 'yielding', 'young', 'youthful', 'yummy', 'zany', 'zealous', 'zesty', 'zippy', 'zonked']; + + var adjective = adjectives[getRandomInt(0, adjectives.length + 1)] + var animal = animals[getRandomInt(0, animals.length + 1)] + var name = capFirst(adjective) + ' ' + capFirst(animal); + var mail = "mailto:" + adjective + animal + "@" + "example.com" + return {"name": name, "email": mail}; + +} diff --git a/src/main/webapp/static/js/paella/player/resources/deps/xapiwrapper.min.js b/src/main/webapp/static/js/paella/player/resources/deps/xapiwrapper.min.js new file mode 100644 index 0000000000000000000000000000000000000000..f55aa30d2bf8b2b6afa66ce792a3b34c3e4e6c4d --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/deps/xapiwrapper.min.js @@ -0,0 +1,3 @@ +/*! xAPIWrapper v 1.10.1 | Built on 2017-07-27 16:08:46+0100 */ +function toBase64(a){return CryptoJS&&CryptoJS.enc.Base64?CryptoJS.enc.Base64.stringify(CryptoJS.enc.Latin1.parse(a)):Base64.encode(a)}function toSHA1(a){return CryptoJS&&CryptoJS.SHA1?CryptoJS.SHA1(a).toString():Crypto.util.bytesToHex(Crypto.SHA1(a,{asBytes:!0}))}function toSHA256(a){return CryptoJS&&CryptoJS.SHA256?CryptoJS.SHA256(a).toString():void 0}function isDate(a){if("[object Date]"===Object.prototype.toString.call(a))var b=a;else var b=new Date(a);return"[object Date]"===Object.prototype.toString.call(b)?isNaN(b.valueOf())?(ADL.XAPIWrapper.log("Invalid date String passed"),null):b:(ADL.XAPIWrapper.log("Invalid date object"),null)}var CryptoJS=CryptoJS||function(a,b){var c={},d=c.lib={},e=d.Base=function(){function a(){}return{extend:function(b){a.prototype=this;var c=new a;return b&&c.mixIn(b),c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)}),c.init.prototype=c,c.$super=this,c},create:function(){var a=this.extend();return a.init.apply(a,arguments),a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),f=d.WordArray=e.extend({init:function(a,c){a=this.words=a||[],c!=b?this.sigBytes=c:this.sigBytes=4*a.length},toString:function(a){return(a||h).stringify(this)},concat:function(a){var b=this.words,c=a.words,d=this.sigBytes,e=a.sigBytes;if(this.clamp(),d%4)for(var f=0;e>f;f++){var g=c[f>>>2]>>>24-f%4*8&255;b[d+f>>>2]|=g<<24-(d+f)%4*8}else if(c.length>65535)for(var f=0;e>f;f+=4)b[d+f>>>2]=c[f>>>2];else b.push.apply(b,c);return this.sigBytes+=e,this},clamp:function(){var b=this.words,c=this.sigBytes;b[c>>>2]&=4294967295<<32-c%4*8,b.length=a.ceil(c/4)},clone:function(){var a=e.clone.call(this);return a.words=this.words.slice(0),a},random:function(b){for(var c=[],d=0;b>d;d+=4)c.push(4294967296*a.random()|0);return new f.init(c,b)}}),g=c.enc={},h=g.Hex={stringify:function(a){for(var b=a.words,c=a.sigBytes,d=[],e=0;c>e;e++){var f=b[e>>>2]>>>24-e%4*8&255;d.push((f>>>4).toString(16)),d.push((15&f).toString(16))}return d.join("")},parse:function(a){for(var b=a.length,c=[],d=0;b>d;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-d%8*4;return new f.init(c,b/2)}},i=g.Latin1={stringify:function(a){for(var b=a.words,c=a.sigBytes,d=[],e=0;c>e;e++){var f=b[e>>>2]>>>24-e%4*8&255;d.push(String.fromCharCode(f))}return d.join("")},parse:function(a){for(var b=a.length,c=[],d=0;b>d;d++)c[d>>>2]|=(255&a.charCodeAt(d))<<24-d%4*8;return new f.init(c,b)}},j=g.Utf8={stringify:function(a){try{return decodeURIComponent(escape(i.stringify(a)))}catch(b){throw new Error("Malformed UTF-8 data")}},parse:function(a){return i.parse(unescape(encodeURIComponent(a)))}},k=(g.Base64={stringify:function(a){var b=a.words,c=a.sigBytes,d=this._map;a.clamp();for(var e=[],f=0;c>f;f+=3)for(var g=b[f>>>2]>>>24-f%4*8&255,h=b[f+1>>>2]>>>24-(f+1)%4*8&255,i=b[f+2>>>2]>>>24-(f+2)%4*8&255,j=g<<16|h<<8|i,k=0;4>k&&c>f+.75*k;k++)e.push(d.charAt(j>>>6*(3-k)&63));var l=d.charAt(64);if(l)for(;e.length%4;)e.push(l);return e.join("")},parse:function(a){var b=a.length,c=this._map,d=c.charAt(64);if(d){var e=a.indexOf(d);-1!=e&&(b=e)}for(var g=[],h=0,i=0;b>i;i++)if(i%4){var j=c.indexOf(a.charAt(i-1))<<i%4*2,k=c.indexOf(a.charAt(i))>>>6-i%4*2;g[h>>>2]|=(j|k)<<24-h%4*8,h++}return f.create(g,h)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},d.BufferedBlockAlgorithm=e.extend({reset:function(){this._data=new f.init,this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=j.parse(a)),this._data.concat(a),this._nDataBytes+=a.sigBytes},_process:function(b){var c=this._data,d=c.words,e=c.sigBytes,g=this.blockSize,h=4*g,i=e/h;i=b?a.ceil(i):a.max((0|i)-this._minBufferSize,0);var j=i*g,k=a.min(4*j,e);if(j){for(var l=0;j>l;l+=g)this._doProcessBlock(d,l);var m=d.splice(0,j);c.sigBytes-=k}return new f.init(m,k)},clone:function(){var a=e.clone.call(this);return a._data=this._data.clone(),a},_minBufferSize:0})),l=d.Hasher=k.extend({cfg:e.extend(),init:function(a){this.cfg=this.cfg.extend(a),this.reset()},reset:function(){k.reset.call(this),this._doReset()},update:function(a){return this._append(a),this._process(),this},finalize:function(a){a&&this._append(a);var b=this._doFinalize();return b},blockSize:16,_createHelper:function(a){return function(b,c){return new a.init(c).finalize(b)}},_createHmacHelper:function(a){return function(b,c){return new m.HMAC.init(a,c).finalize(b)}}}),m=c.algo={},n=[],o=m.SHA1=l.extend({_doReset:function(){this._hash=new f.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(a,b){for(var c=this._hash.words,d=c[0],e=c[1],f=c[2],g=c[3],h=c[4],i=0;80>i;i++){if(16>i)n[i]=0|a[b+i];else{var j=n[i-3]^n[i-8]^n[i-14]^n[i-16];n[i]=j<<1|j>>>31}var k=(d<<5|d>>>27)+h+n[i];k+=20>i?(e&f|~e&g)+1518500249:40>i?(e^f^g)+1859775393:60>i?(e&f|e&g|f&g)-1894007588:(e^f^g)-899497514,h=g,g=f,f=e<<30|e>>>2,e=d,d=k}c[0]=c[0]+d|0,c[1]=c[1]+e|0,c[2]=c[2]+f|0,c[3]=c[3]+g|0,c[4]=c[4]+h|0},_doFinalize:function(){var b=this._data,c=b.words,d=8*this._nDataBytes,e=8*b.sigBytes;return c[e>>>5]|=128<<24-e%32,c[(e+64>>>9<<4)+14]=a.floor(d/4294967296),c[(e+64>>>9<<4)+15]=d,b.sigBytes=4*c.length,this._process(),this._hash},clone:function(){var a=l.clone.call(this);return a._hash=this._hash.clone(),a}});return c.SHA1=l._createHelper(o),c.HmacSHA1=l._createHmacHelper(o),c}(Math),CryptoJS=CryptoJS||function(a,b){var c={},d=c.lib={},e=function(){},f=d.Base={extend:function(a){e.prototype=this;var b=new e;return a&&b.mixIn(a),b.hasOwnProperty("init")||(b.init=function(){b.$super.init.apply(this,arguments)}),b.init.prototype=b,b.$super=this,b},create:function(){var a=this.extend();return a.init.apply(a,arguments),a},init:function(){},mixIn:function(a){for(var b in a)a.hasOwnProperty(b)&&(this[b]=a[b]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},g=d.WordArray=f.extend({init:function(a,c){a=this.words=a||[],this.sigBytes=c!=b?c:4*a.length},toString:function(a){return(a||i).stringify(this)},concat:function(a){var b=this.words,c=a.words,d=this.sigBytes;if(a=a.sigBytes,this.clamp(),d%4)for(var e=0;a>e;e++)b[d+e>>>2]|=(c[e>>>2]>>>24-8*(e%4)&255)<<24-8*((d+e)%4);else if(65535<c.length)for(e=0;a>e;e+=4)b[d+e>>>2]=c[e>>>2];else b.push.apply(b,c);return this.sigBytes+=a,this},clamp:function(){var b=this.words,c=this.sigBytes;b[c>>>2]&=4294967295<<32-8*(c%4),b.length=a.ceil(c/4)},clone:function(){var a=f.clone.call(this);return a.words=this.words.slice(0),a},random:function(b){for(var c=[],d=0;b>d;d+=4)c.push(4294967296*a.random()|0);return new g.init(c,b)}}),h=c.enc={},i=h.Hex={stringify:function(a){var b=a.words;a=a.sigBytes;for(var c=[],d=0;a>d;d++){var e=b[d>>>2]>>>24-8*(d%4)&255;c.push((e>>>4).toString(16)),c.push((15&e).toString(16))}return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;b>d;d+=2)c[d>>>3]|=parseInt(a.substr(d,2),16)<<24-4*(d%8);return new g.init(c,b/2)}},j=h.Latin1={stringify:function(a){var b=a.words;a=a.sigBytes;for(var c=[],d=0;a>d;d++)c.push(String.fromCharCode(b[d>>>2]>>>24-8*(d%4)&255));return c.join("")},parse:function(a){for(var b=a.length,c=[],d=0;b>d;d++)c[d>>>2]|=(255&a.charCodeAt(d))<<24-8*(d%4);return new g.init(c,b)}},k=h.Utf8={stringify:function(a){try{return decodeURIComponent(escape(j.stringify(a)))}catch(b){throw Error("Malformed UTF-8 data")}},parse:function(a){return j.parse(unescape(encodeURIComponent(a)))}},l=d.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new g.init,this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=k.parse(a)),this._data.concat(a),this._nDataBytes+=a.sigBytes},_process:function(b){var c=this._data,d=c.words,e=c.sigBytes,f=this.blockSize,h=e/(4*f),h=b?a.ceil(h):a.max((0|h)-this._minBufferSize,0);if(b=h*f,e=a.min(4*b,e),b){for(var i=0;b>i;i+=f)this._doProcessBlock(d,i);i=d.splice(0,b),c.sigBytes-=e}return new g.init(i,e)},clone:function(){var a=f.clone.call(this);return a._data=this._data.clone(),a},_minBufferSize:0});d.Hasher=l.extend({cfg:f.extend(),init:function(a){this.cfg=this.cfg.extend(a),this.reset()},reset:function(){l.reset.call(this),this._doReset()},update:function(a){return this._append(a),this._process(),this},finalize:function(a){return a&&this._append(a),this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,c){return new a.init(c).finalize(b)}},_createHmacHelper:function(a){return function(b,c){return new m.HMAC.init(a,c).finalize(b)}}});var m=c.algo={};return c}(Math);!function(a){for(var b=CryptoJS,c=b.lib,d=c.WordArray,e=c.Hasher,c=b.algo,f=[],g=[],h=function(a){return 4294967296*(a-(0|a))|0},i=2,j=0;64>j;){var k;a:{k=i;for(var l=a.sqrt(k),m=2;l>=m;m++)if(!(k%m)){k=!1;break a}k=!0}k&&(8>j&&(f[j]=h(a.pow(i,.5))),g[j]=h(a.pow(i,1/3)),j++),i++}var n=[],c=c.SHA256=e.extend({_doReset:function(){this._hash=new d.init(f.slice(0))},_doProcessBlock:function(a,b){for(var c=this._hash.words,d=c[0],e=c[1],f=c[2],h=c[3],i=c[4],j=c[5],k=c[6],l=c[7],m=0;64>m;m++){if(16>m)n[m]=0|a[b+m];else{var o=n[m-15],p=n[m-2];n[m]=((o<<25|o>>>7)^(o<<14|o>>>18)^o>>>3)+n[m-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+n[m-16]}o=l+((i<<26|i>>>6)^(i<<21|i>>>11)^(i<<7|i>>>25))+(i&j^~i&k)+g[m]+n[m],p=((d<<30|d>>>2)^(d<<19|d>>>13)^(d<<10|d>>>22))+(d&e^d&f^e&f),l=k,k=j,j=i,i=h+o|0,h=f,f=e,e=d,d=o+p|0}c[0]=c[0]+d|0,c[1]=c[1]+e|0,c[2]=c[2]+f|0,c[3]=c[3]+h|0,c[4]=c[4]+i|0,c[5]=c[5]+j|0,c[6]=c[6]+k|0,c[7]=c[7]+l|0},_doFinalize:function(){var b=this._data,c=b.words,d=8*this._nDataBytes,e=8*b.sigBytes;return c[e>>>5]|=128<<24-e%32,c[(e+64>>>9<<4)+14]=a.floor(d/4294967296),c[(e+64>>>9<<4)+15]=d,b.sigBytes=4*c.length,this._process(),this._hash},clone:function(){var a=e.clone.call(this);return a._hash=this._hash.clone(),a}});b.SHA256=e._createHelper(c),b.HmacSHA256=e._createHmacHelper(c)}(Math),function(){var a=CryptoJS,b=a.enc.Utf8;a.algo.HMAC=a.lib.Base.extend({init:function(a,c){a=this._hasher=new a.init,"string"==typeof c&&(c=b.parse(c));var d=a.blockSize,e=4*d;c.sigBytes>e&&(c=a.finalize(c)),c.clamp();for(var f=this._oKey=c.clone(),g=this._iKey=c.clone(),h=f.words,i=g.words,j=0;d>j;j++)h[j]^=1549556828,i[j]^=909522486;f.sigBytes=g.sigBytes=e,this.reset()},reset:function(){var a=this._hasher;a.reset(),a.update(this._iKey)},update:function(a){return this._hasher.update(a),this},finalize:function(a){var b=this._hasher;return a=b.finalize(a),b.reset(),b.finalize(this._oKey.clone().concat(a))}})}(),function(a){a.activityTypes={assessment:"http://adlnet.gov/expapi/activities/assessment",attempt:"http://adlnet.gov/expapi/activities/attempt",course:"http://adlnet.gov/expapi/activities/course",file:"http://adlnet.gov/expapi/activities/file",interaction:"http://adlnet.gov/expapi/activities/interaction",lesson:"http://adlnet.gov/expapi/activities/lesson",link:"http://adlnet.gov/expapi/activities/link",media:"http://adlnet.gov/expapi/activities/media",meeting:"http://adlnet.gov/expapi/activities/meeting",module:"http://adlnet.gov/expapi/activities/module",objective:"http://adlnet.gov/expapi/activities/objective",performance:"http://adlnet.gov/expapi/activities/performance",profile:"http://adlnet.gov/expapi/activities/profile",question:"http://adlnet.gov/expapi/activities/question",simulation:"http://adlnet.gov/expapi/activities/simulation"}}(window.ADL=window.ADL||{}),function(a){a.verbs={abandoned:{id:"https://w3id.org/xapi/adl/verbs/abandoned",display:{"en-US":"abandoned"}},answered:{id:"http://adlnet.gov/expapi/verbs/answered",display:{"de-DE":"beantwortete","en-US":"answered","fr-FR":"a répondu","es-ES":"contestó"}},asked:{id:"http://adlnet.gov/expapi/verbs/asked",display:{"de-DE":"fragte","en-US":"asked","fr-FR":"a demandé","es-ES":"preguntó"}},attempted:{id:"http://adlnet.gov/expapi/verbs/attempted",display:{"de-DE":"versuchte","en-US":"attempted","fr-FR":"a essayé","es-ES":"intentó"}},attended:{id:"http://adlnet.gov/expapi/verbs/attended",display:{"de-DE":"nahm teil an","en-US":"attended","fr-FR":"a suivi","es-ES":"asistió"}},commented:{id:"http://adlnet.gov/expapi/verbs/commented",display:{"de-DE":"kommentierte","en-US":"commented","fr-FR":"a commenté","es-ES":"comentó"}},completed:{id:"http://adlnet.gov/expapi/verbs/completed",display:{"de-DE":"beendete","en-US":"completed","fr-FR":"a terminé","es-ES":"completó"}},exited:{id:"http://adlnet.gov/expapi/verbs/exited",display:{"de-DE":"verließ","en-US":"exited","fr-FR":"a quitté","es-ES":"salió"}},experienced:{id:"http://adlnet.gov/expapi/verbs/experienced",display:{"de-DE":"erlebte","en-US":"experienced","fr-FR":"a éprouvé","es-ES":"experimentó"}},failed:{id:"http://adlnet.gov/expapi/verbs/failed",display:{"de-DE":"verfehlte","en-US":"failed","fr-FR":"a échoué","es-ES":"fracasó"}},imported:{id:"http://adlnet.gov/expapi/verbs/imported",display:{"de-DE":"importierte","en-US":"imported","fr-FR":"a importé","es-ES":"importó"}},initialized:{id:"http://adlnet.gov/expapi/verbs/initialized",display:{"de-DE":"initialisierte","en-US":"initialized","fr-FR":"a initialisé","es-ES":"inicializó"}},interacted:{id:"http://adlnet.gov/expapi/verbs/interacted",display:{"de-DE":"interagierte","en-US":"interacted","fr-FR":"a interagi","es-ES":"interactuó"}},launched:{id:"http://adlnet.gov/expapi/verbs/launched",display:{"de-DE":"startete","en-US":"launched","fr-FR":"a lancé","es-ES":"lanzó"}},mastered:{id:"http://adlnet.gov/expapi/verbs/mastered",display:{"de-DE":"meisterte","en-US":"mastered","fr-FR":"a maîtrisé","es-ES":"dominó"}},passed:{id:"http://adlnet.gov/expapi/verbs/passed",display:{"de-DE":"bestand","en-US":"passed","fr-FR":"a réussi","es-ES":"aprobó"}},preferred:{id:"http://adlnet.gov/expapi/verbs/preferred",display:{"de-DE":"bevorzugte","en-US":"preferred","fr-FR":"a préféré","es-ES":"prefirió"}},progressed:{id:"http://adlnet.gov/expapi/verbs/progressed",display:{"de-DE":"machte Fortschritt mit","en-US":"progressed","fr-FR":"a progressé","es-ES":"progresó"}},registered:{id:"http://adlnet.gov/expapi/verbs/registered",display:{"de-DE":"registrierte","en-US":"registered","fr-FR":"a enregistré","es-ES":"registró"}},responded:{id:"http://adlnet.gov/expapi/verbs/responded",display:{"de-DE":"reagierte","en-US":"responded","fr-FR":"a répondu","es-ES":"respondió"}},resumed:{id:"http://adlnet.gov/expapi/verbs/resumed",display:{"de-DE":"setzte fort","en-US":"resumed","fr-FR":"a repris","es-ES":"continuó"}},satisfied:{id:"https://w3id.org/xapi/adl/verbs/satisfied",display:{"en-US":"satisfied"}},scored:{id:"http://adlnet.gov/expapi/verbs/scored",display:{"de-DE":"erreichte","en-US":"scored","fr-FR":"a marqué","es-ES":"anotó"}},shared:{id:"http://adlnet.gov/expapi/verbs/shared",display:{"de-DE":"teilte","en-US":"shared","fr-FR":"a partagé","es-ES":"compartió"}},suspended:{id:"http://adlnet.gov/expapi/verbs/suspended",display:{"de-DE":"pausierte","en-US":"suspended","fr-FR":"a suspendu","es-ES":"aplazó"}},terminated:{id:"http://adlnet.gov/expapi/verbs/terminated",display:{"de-DE":"beendete","en-US":"terminated","fr-FR":"a terminé","es-ES":"terminó"}},voided:{id:"http://adlnet.gov/expapi/verbs/voided",display:{"de-DE":"entwertete","en-US":"voided","fr-FR":"a annulé","es-ES":"anuló"}},waived:{id:"https://w3id.org/xapi/adl/verbs/waived",display:{"en-US":"waived"}}}}(window.ADL=window.ADL||{}),Date.prototype.toISOString||!function(){function a(a){var b=String(a);return 1===b.length&&(b="0"+b),b}Date.prototype.toISOString=function(){return this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"."+String((this.getUTCMilliseconds()/1e3).toFixed(3)).slice(2,5)+"Z"}}(),function(a){function b(){try{return void 0!=this.lrs.endpoint&&""!=this.lrs.endpoint}catch(a){return!1}}function c(a){if(!c.debug)return!1;try{return console.log(a),!0}catch(b){return!1}}function d(a,b){for(var e in b){prop=b[e],c(e+" : "+prop);try{b[e].constructor==Object?a[e]=d(a[e],b[e]):(void 0==a&&(a=new Object),a[e]=b[e])}catch(f){void 0==a&&(a=new Object),a[e]=b[e]}}return a}function e(a){var b,c,e=["endpoint","auth","actor","registration","activity_id","grouping","activity_platform"],g=new Object;if(b=f(),void 0!==b&&0!==Object.keys(b).length){for(var h=0;h<e.length;h++)c=e[h],b[c]&&(g[c]=b[c],delete b[c]);0!==Object.keys(b).length&&(g.extended=b),g=d(a,g)}else g=a;return g}function f(){var a,b,c,d,e;for(a=window.location.search.substr(1),b=a.split("&"),e={},d=0;d<b.length;d++)c=b[d].split("="),2===c.length&&c[0]&&(e[c[0]]=decodeURIComponent(c[1]));return e}function g(){var b=new XMLHttpRequest,c=window.location+"?forcenocache="+a.ruuid();b.open("GET",c,!1),b.send(null)}function h(a,b,c,d){var e=b,f=new Array,g=e.indexOf("?");if(g>0&&(f.push(e.substr(g+1)),e=e.substr(0,g)),e=e+"?method="+a,null!==c)for(var h in c)f.push(h+"="+encodeURIComponent(c[h]));return null!==d&&f.push("content="+encodeURIComponent(d)),{method:"POST",url:e,headers:{},data:f.join("&")}}c.debug=!1;var i=function(){var a={};a.endpoint="http://localhost:8000/xapi/";try{a.auth="Basic "+toBase64("tom:1234")}catch(b){c("Exception in Config trying to encode auth: "+b)}return a}();XAPIWrapper=function(c,f){function g(b){var c=document.createElement("a");return c.href=b,c.protocol&&c.host?c.protocol+"//"+c.host:void a.XAPIWrapper.log("Couldn't create base url from endpoint: "+this.lrs.endpoint)}function h(a,b,c){a.auth="Basic "+toBase64(b+":"+c)}this.lrs=e(c||{}),this.lrs.user&&this.lrs.password&&h(this.lrs,this.lrs.user,this.lrs.password),this.base=g(this.lrs.endpoint),this.withCredentials=!1,this.withCredentials=c&&c.withCredentials,this.strictCallbacks=!1,this.strictCallbacks=c&&c.strictCallbacks,f&&b.call(this)&&window.ADL.XHR_request(this.lrs,this.lrs.endpoint+"about","GET",null,null,function(b){if(200==b.status)try{var c=JSON.parse(b.response),d=!1;for(var e in c.version)if(c.version[e]==a.XAPIWrapper.xapiVersion){d=!0;break}d||a.XAPIWrapper.log("The lrs version ["+c.version+"] does not match this wrapper's XAPI version ["+a.XAPIWrapper.xapiVersion+"]")}catch(f){a.XAPIWrapper.log("The response was not an about object")}else a.XAPIWrapper.log("The request to get information about the LRS failed: "+b)},null,!1,null,this.withCredentials,!1),this.searchParams=function(){var a={format:"exact"};return a},this.hash=function(b){if(!b)return null;try{return toSHA1(b)}catch(c){return a.XAPIWrapper.log("Error trying to hash -- "+c),null}},this.changeConfig=function(b){try{a.XAPIWrapper.log("updating lrs object with new configuration"),this.lrs=d(this.lrs,b),b.user&&b.password&&this.updateAuth(this.lrs,b.user,b.password),this.base=g(this.lrs.endpoint),this.withCredentials=b.withCredentials,this.strictCallbacks=b.strictCallbacks}catch(c){a.XAPIWrapper.log("error while changing configuration -- "+c)}},this.updateAuth=h},XAPIWrapper.prototype.xapiVersion="1.0.1",XAPIWrapper.prototype.prepareStatement=function(a){void 0===a.actor?a.actor=JSON.parse(this.lrs.actor):"string"==typeof a.actor&&(a.actor=JSON.parse(a.actor)),(this.lrs.grouping||this.lrs.registration||this.lrs.activity_platform)&&(a.context||(a.context={})),this.lrs.grouping&&(a.context.contextActivities||(a.context.contextActivities={}),a.context.contextActivities.grouping=[{id:this.lrs.grouping}]),this.lrs.registration&&(a.context.registration=this.lrs.registration),this.lrs.activity_platform&&(a.context.platform=this.lrs.activity_platform)},XAPIWrapper.prototype.testConfig=b,XAPIWrapper.prototype.log=c,XAPIWrapper.prototype.sendStatement=function(b,c,d){if(this.testConfig()){this.prepareStatement(b);var e;b.id?e=b.id:(e=a.ruuid(),b.id=e);var f=JSON.stringify(b),g=null;d&&d.length>0&&(g={},f=this.buildMultipartPost(b,d,g));var h=a.XHR_request(this.lrs,this.lrs.endpoint+"statements","POST",f,this.lrs.auth,c,{id:e},null,g,this.withCredentials,this.strictCallbacks);if(!c)return{xhr:h,id:e}}},XAPIWrapper.prototype.buildMultipartPost=function(a,b,c){a.attachments=[];for(var d=0;d<b.length;d++)"signature"==b[d].type&&(b[d].type={usageType:"http://adlnet.gov/expapi/attachments/signature",display:{"en-US":"A JWT signature"},description:{"en-US":"A signature proving the statement was not modified"},contentType:"application/octet-stream"}),b[d].type.length=b[d].value.length,b[d].type.sha2=toSHA256(b[d].value),a.attachments.push(b[d].type);var e="",f="\r\n",g=(Math.random()+" ").substring(2,10)+(Math.random()+" ").substring(2,10);c["Content-Type"]="multipart/mixed; boundary="+g,e+=f+"--"+g+f+"Content-Type:application/json"+f+'Content-Disposition: form-data; name="statement"'+f+f,e+=JSON.stringify(a);for(var d in b)e+=f+"--"+g+f+"X-Experience-API-Hash:"+b[d].type.sha2+f+"Content-Type:application/octet-stream"+f+"Content-Transfer-Encoding: binary"+f+f,e+=b[d].value;return e+=f+"--"+g+"--"+f},XAPIWrapper.prototype.sendStatements=function(b,c){if(this.testConfig()){for(var d in b)this.prepareStatement(b[d]);var e=a.XHR_request(this.lrs,this.lrs.endpoint+"statements","POST",JSON.stringify(b),this.lrs.auth,c,null,!1,null,this.withCredentials,this.strictCallbacks);if(!c)return e}},XAPIWrapper.prototype.getStatements=function(b,c,d){if(this.testConfig()){var e=this.lrs.endpoint+"statements";if(c)e=this.base+c;else{var f=new Array;for(s in b)if("until"==s||"since"==s){var g=new Date(b[s]);f.push(s+"="+encodeURIComponent(g.toISOString()))}else f.push(s+"="+encodeURIComponent(b[s]));f.length>0&&(e=e+"?"+f.join("&"))}var h=a.XHR_request(this.lrs,e,"GET",null,this.lrs.auth,d,null,!1,null,this.withCredentials,this.strictCallbacks);if(void 0===h||404==h.status)return null;try{return JSON.parse(h.response)}catch(i){return h.response}}},XAPIWrapper.prototype.getActivities=function(b,c){if(this.testConfig()){var d=this.lrs.endpoint+"activities?activityId=<activityid>";d=d.replace("<activityid>",encodeURIComponent(b));var e=a.XHR_request(this.lrs,d,"GET",null,this.lrs.auth,c,null,!0,null,this.withCredentials,this.strictCallbacks);if(void 0===e||404==e.status)return null;try{return JSON.parse(e.response)}catch(f){return e.response}}},XAPIWrapper.prototype.sendState=function(b,d,e,f,g,h,i,j){if(this.testConfig()){var k=this.lrs.endpoint+"activities/state?activityId=<activity ID>&agent=<agent>&stateId=<stateid>";k=k.replace("<activity ID>",encodeURIComponent(b)),k=k.replace("<agent>",encodeURIComponent(JSON.stringify(d))),k=k.replace("<stateid>",encodeURIComponent(e)),f&&(k+="®istration="+encodeURIComponent(f));var l=null;h&&i?c("Can't have both If-Match and If-None-Match"):h?l={"If-Match":a.formatHash(h)}:i&&(l={"If-None-Match":a.formatHash(i)});var m="PUT";if(!g)return this.log("No activity state was included."),!1;g instanceof Array?(g=JSON.stringify(g),l=l||{},l["Content-Type"]="application/json"):g instanceof Object?(g=JSON.stringify(g),l=l||{},l["Content-Type"]="application/json",m="POST"):(l=l||{},l["Content-Type"]="application/octet-stream"),a.XHR_request(this.lrs,k,m,g,this.lrs.auth,j,null,null,l,this.withCredentials,this.strictCallbacks)}},XAPIWrapper.prototype.getState=function(b,c,d,e,f,g){if(this.testConfig()){var h=this.lrs.endpoint+"activities/state?activityId=<activity ID>&agent=<agent>";h=h.replace("<activity ID>",encodeURIComponent(b)),h=h.replace("<agent>",encodeURIComponent(JSON.stringify(c))),d&&(h+="&stateId="+encodeURIComponent(d)),e&&(h+="®istration="+encodeURIComponent(e)),f&&(f=isDate(f),null!=f&&(h+="&since="+encodeURIComponent(f.toISOString())));var i=a.XHR_request(this.lrs,h,"GET",null,this.lrs.auth,g,null,!0,null,this.withCredentials,this.strictCallbacks);if(void 0===i||404==i.status)return null;try{return JSON.parse(i.response)}catch(j){return i.response}}},XAPIWrapper.prototype.deleteState=function(b,d,e,f,g,h,i){if(this.testConfig()){var j=this.lrs.endpoint+"activities/state?activityId=<activity ID>&agent=<agent>&stateId=<stateid>";j=j.replace("<activity ID>",encodeURIComponent(b)),j=j.replace("<agent>",encodeURIComponent(JSON.stringify(d))),j=j.replace("<stateid>",encodeURIComponent(e)),f&&(j+="®istration="+encodeURIComponent(f));var k=null;g&&h?c("Can't have both If-Match and If-None-Match"):g?k={"If-Match":a.formatHash(g)}:h&&(k={"If-None-Match":a.formatHash(h)});var l=a.XHR_request(this.lrs,j,"DELETE",null,this.lrs.auth,i,null,!1,k,this.withCredentials,this.strictCallbacks);if(void 0===l||404==l.status)return null;try{return JSON.parse(l.response)}catch(m){return l}}},XAPIWrapper.prototype.sendActivityProfile=function(b,d,e,f,g,h){if(this.testConfig()){var i=this.lrs.endpoint+"activities/profile?activityId=<activity ID>&profileId=<profileid>";i=i.replace("<activity ID>",encodeURIComponent(b)),i=i.replace("<profileid>",encodeURIComponent(d));var j=null;f&&g?c("Can't have both If-Match and If-None-Match"):f?j={"If-Match":a.formatHash(f)}:g&&(j={"If-None-Match":a.formatHash(g)});var k="PUT";if(!e)return this.log("No activity profile was included."),!1;e instanceof Array?(e=JSON.stringify(e),j=j||{},j["Content-Type"]="application/json"):e instanceof Object?(e=JSON.stringify(e),j=j||{},j["Content-Type"]="application/json",k="POST"):(j=j||{},j["Content-Type"]="application/octet-stream"),a.XHR_request(this.lrs,i,k,e,this.lrs.auth,h,null,!1,j,this.withCredentials,this.strictCallbacks)}},XAPIWrapper.prototype.getActivityProfile=function(b,c,d,e){if(this.testConfig()){var f=this.lrs.endpoint+"activities/profile?activityId=<activity ID>";f=f.replace("<activity ID>",encodeURIComponent(b)),c&&(f+="&profileId="+encodeURIComponent(c)),d&&(d=isDate(d),null!=d&&(f+="&since="+encodeURIComponent(d.toISOString())));var g=a.XHR_request(this.lrs,f,"GET",null,this.lrs.auth,e,null,!0,null,this.withCredentials,this.strictCallbacks);if(void 0===g||404==g.status)return null;try{return JSON.parse(g.response)}catch(h){return g.response}}},XAPIWrapper.prototype.deleteActivityProfile=function(b,d,e,f,g){if(this.testConfig()){var h=this.lrs.endpoint+"activities/profile?activityId=<activity ID>&profileId=<profileid>";h=h.replace("<activity ID>",encodeURIComponent(b)),h=h.replace("<profileid>",encodeURIComponent(d));var i=null;e&&f?c("Can't have both If-Match and If-None-Match"):e?i={"If-Match":a.formatHash(e)}:f&&(i={"If-None-Match":a.formatHash(f)});var j=a.XHR_request(this.lrs,h,"DELETE",null,this.lrs.auth,g,null,!1,i,this.withCredentials,this.strictCallbacks);if(void 0===j||404==j.status)return null;try{return JSON.parse(j.response)}catch(k){return j}}},XAPIWrapper.prototype.getAgents=function(b,c){if(this.testConfig()){var d=this.lrs.endpoint+"agents?agent=<agent>";d=d.replace("<agent>",encodeURIComponent(JSON.stringify(b)));var e=a.XHR_request(this.lrs,d,"GET",null,this.lrs.auth,c,null,!0,null,this.withCredentials,this.strictCallbacks);if(void 0===e||404==e.status)return null;try{return JSON.parse(e.response)}catch(f){return e.response}}},XAPIWrapper.prototype.sendAgentProfile=function(b,d,e,f,g,h){if(this.testConfig()){var i=this.lrs.endpoint+"agents/profile?agent=<agent>&profileId=<profileid>";i=i.replace("<agent>",encodeURIComponent(JSON.stringify(b))),i=i.replace("<profileid>",encodeURIComponent(d));var j=null;f&&g?c("Can't have both If-Match and If-None-Match"):f?j={"If-Match":a.formatHash(f)}:g&&(j={"If-None-Match":a.formatHash(g)});var k="PUT";if(!e)return this.log("No agent profile was included."),!1;e instanceof Array?(e=JSON.stringify(e),j=j||{},j["Content-Type"]="application/json"):e instanceof Object?(e=JSON.stringify(e),j=j||{},j["Content-Type"]="application/json",k="POST"):(j=j||{},j["Content-Type"]="application/octet-stream"),a.XHR_request(this.lrs,i,k,e,this.lrs.auth,h,null,!1,j,this.withCredentials,this.strictCallbacks)}},XAPIWrapper.prototype.getAgentProfile=function(b,c,d,e){if(this.testConfig()){var f=this.lrs.endpoint+"agents/profile?agent=<agent>";f=f.replace("<agent>",encodeURIComponent(JSON.stringify(b))),f=f.replace("<profileid>",encodeURIComponent(c)),c&&(f+="&profileId="+encodeURIComponent(c)),d&&(d=isDate(d),null!=d&&(f+="&since="+encodeURIComponent(d.toISOString())));var g=a.XHR_request(this.lrs,f,"GET",null,this.lrs.auth,e,null,!0,null,this.withCredentials,this.strictCallbacks);if(void 0===g||404==g.status)return null;try{return JSON.parse(g.response)}catch(h){return g.response}}},XAPIWrapper.prototype.deleteAgentProfile=function(b,d,e,f,g){if(this.testConfig()){var h=this.lrs.endpoint+"agents/profile?agent=<agent>&profileId=<profileid>";h=h.replace("<agent>",encodeURIComponent(JSON.stringify(b))),h=h.replace("<profileid>",encodeURIComponent(d));var i=null;e&&f?c("Can't have both If-Match and If-None-Match"):e?i={"If-Match":a.formatHash(e)}:f&&(i={"If-None-Match":a.formatHash(f)});var j=a.XHR_request(this.lrs,h,"DELETE",null,this.lrs.auth,g,null,!1,i,this.withCredentials,this.strictCallbacks);if(void 0===j||404==j.status)return null;try{return JSON.parse(j.response)}catch(k){return j}}},a.ruuid=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})},a.dateFromISOString=function(a){var b="([0-9]{4})(-([0-9]{2})(-([0-9]{2})([T| ]([0-9]{2}):([0-9]{2})(:([0-9]{2})(.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?",c=a.match(new RegExp(b)),d=0,e=new Date(c[1],0,1);c[3]&&e.setMonth(c[3]-1),c[5]&&e.setDate(c[5]),c[7]&&e.setHours(c[7]),c[8]&&e.setMinutes(c[8]),c[10]&&e.setSeconds(c[10]),c[12]&&e.setMilliseconds(1e3*Number("0."+c[12])),c[14]&&(d=60*Number(c[16])+Number(c[17]),d*="-"==c[15]?1:-1),d-=e.getTimezoneOffset(),time=Number(e)+60*d*1e3;var f=new Date;return f.setTime(Number(time)),f},a.XHR_request=function(b,c,d,e,f,i,j,k,l,m,n){"use strict";function o(){if(u)return s;u=!0;var b=k&&404===p.status;if(!(void 0===p.status||p.status>=200&&p.status<400||b)){var e;try{e="There was a problem communicating with the Learning Record Store. ( "+p.status+" | "+p.response+" )"+c}catch(f){e=f.toString()}return a.XAPIWrapper.log(e),a.xhrRequestOnError(p,d,c,i,j,n),s=p,p}if(!i)return s=p,p;if(j)n?i(null,p,j):i(p,j);else{var g;try{g=JSON.parse(p.responseText)}catch(h){g=p.responseText}n?i(null,p,g):i(p,g)}}var p,q,r,s,t,u=!1,v=!1,w=!1,x=c.toLowerCase().match(/^(.+):\/\/([^:\/]*):?(\d+)?(\/.*)?$/),y=window.location,z={};if(z["Content-Type"]="application/json",z.Authorization=f,z["X-Experience-API-Version"]=a.XAPIWrapper.xapiVersion,null!==l)for(var A in l)z[A]=l[A];v=y.protocol.toLowerCase()!==x[1]||y.hostname.toLowerCase()!==x[2],v||(r=null===x[3]?"http"===x[1]?"80":"443":x[3],v=r===y.port);var B=window.XDomainRequest&&window.XMLHttpRequest&&void 0===(new XMLHttpRequest).responseType;if(v&&void 0!==B&&B!==!1)w=!0,q=h(d,c,z,e),p=new XDomainRequest,p.open(q.method,q.url);else{p=new XMLHttpRequest,p.withCredentials=m,p.open(d,c,null!=i);for(var A in z)p.setRequestHeader(A,z[A])}if(p.onreadystatechange=function(){return 4===p.readyState?o():void 0},p.onload=o,p.onerror=o,p.send(w?q.data:e),!i){if(w)for(t=1e3+new Date;new Date<t&&4!==p.readyState&&!u;)g();return o()}},a.xhrRequestOnError=function(a,b,c,d,e,f){if(d&&f){var g,h=a?a.status:void 0;if(g=h?new Error("Request error: "+a.status):0===h||null===h?new Error("Request error: aborted"):new Error("Reqeust error: unknown"),e)d(g,a,e);else{var i;try{i=JSON.parse(a.responseText)}catch(j){i=a.responseText}d(g,a,i)}}},a.formatHash=function(a){return"*"===a?a:'"'+a+'"'},a.XAPIWrapper=new XAPIWrapper(i,!1)}(window.ADL=window.ADL||{}),function(a){function b(a,c){var d=c.split("."),e=d[0];return c=d.slice(1).join("."),a[e]||(/\[\]$/.test(e)?(e=e.slice(0,-2),a[e]=[]):a[e]={}),c?b(a[e],c):a[e]}var c=function(b,c,j){if(b&&b.actor&&b.verb&&b.object){var k=b;for(var l in k)"actor"!=l&&"verb"!=l&&"object"!=l&&(this[l]=k[l]);b=k.actor,c=k.verb,j=k.object}b?b instanceof d?this.actor=b:"Agent"!==b.objectType&&b.objectType?"Group"===b.objectType&&(this.actor=new e(b)):this.actor=new d(b):this.actor=null,c?c instanceof f?this.verb=c:this.verb=new f(c):this.verb=null,j?"Activity"!==j.objectType&&j.objectType?"Agent"===j.objectType?j instanceof d?this.object=j:this.object=new d(j):"Group"===j.objectType?j instanceof e?this.object=j:this.object=new e(j):"StatementRef"===j.objectType?j instanceof h?this.object=j:this.object=new h(j):"SubStatement"===j.objectType?j instanceof i?this.object=j:this.object=new i(j):this.object=null:j instanceof g?this.object=j:this.object=new g(j):this.object=null, +this.generateId=function(){this.id=a.ruuid()}};c.prototype.toString=function(){return this.actor.toString()+" "+this.verb.toString()+" "+this.object.toString()},c.prototype.isValid=function(){return this.actor&&this.actor.isValid()&&this.verb&&this.verb.isValid()&&this.object&&this.object.isValid()},c.prototype.generateRegistration=function(){b(this,"context").registration=a.ruuid()},c.prototype.addParentActivity=function(a){b(this,"context.contextActivities.parent[]").push(new g(a))},c.prototype.addGroupingActivity=function(a){b(this,"context.contextActivities.grouping[]").push(new g(a))},c.prototype.addOtherContextActivity=function(a){b(this,"context.contextActivities.other[]").push(new g(a))};var d=function(a,b){if(this.objectType="Agent",this.name=b,a&&(a.mbox||a.mbox_sha1sum||a.openid||a.account))for(var c in a)this[c]=a[c];else/^mailto:/.test(a)?this.mbox=a:/^[0-9a-f]{40}$/i.test(a)?this.mbox_sha1sum=a:/^http[s]?:/.test(a)?this.openid=a:a&&a.homePage&&a.name&&(this.account=a)};d.prototype.toString=function(){return this.name||this.mbox||this.openid||this.mbox_sha1sum||this.account.name},d.prototype.isValid=function(){return this.mbox||this.mbox_sha1sum||this.openid||this.account.homePage&&this.account.name||"Group"===this.objectType&&this.member};var e=function(a,b,c){d.call(this,a,c),this.member=b,this.objectType="Group"};e.prototype=new d;var f=function(a,b){if(a&&a.id)for(var c in a)this[c]=a[c];else this.id=a,b&&("string"==typeof b||b instanceof String?this.display={"en-US":b}:this.display=b)};f.prototype.toString=function(){return this.display&&(this.display["en-US"]||this.display.en)?this.display["en-US"]||this.display.en:this.id},f.prototype.isValid=function(){return this.id};var g=function(a,b,c){if(a&&a.id){var d=a;for(var e in d)this[e]=d[e]}else this.objectType="Activity",this.id=a,(b||c)&&(this.definition={},"string"==typeof b||b instanceof String?this.definition.name={"en-US":b}:b&&(this.definition.name=b),"string"==typeof c||c instanceof String?this.definition.description={"en-US":c}:c&&(this.definition.description=c))};g.prototype.toString=function(){return this.definition&&this.definition.name&&(this.definition.name["en-US"]||this.definition.name.en)?this.definition.name["en-US"]||this.definition.name.en:this.id},g.prototype.isValid=function(){return this.id&&(!this.objectType||"Activity"===this.objectType)};var h=function(a){if(a&&a.id)for(var b in a)this[b]=a[b];else this.objectType="StatementRef",this.id=a};h.prototype.toString=function(){return"statement("+this.id+")"},h.prototype.isValid=function(){return this.id&&this.objectType&&"StatementRef"===this.objectType};var i=function(a,b,d){c.call(this,a,b,d),this.objectType="SubStatement",delete this.id,delete this.stored,delete this.version,delete this.authority};i.prototype=new c,i.prototype.toString=function(){return'"'+i.prototype.prototype.toString.call(this)+'"'},c.Agent=d,c.Group=e,c.Verb=f,c.Activity=g,c.StatementRef=h,c.SubStatement=i,a.XAPIStatement=c}(window.ADL=window.ADL||{}),function(a){var b=a,c=!1;"undefined"!=typeof window&&(b=window.ADL=a.ADL||{},c=!0);var d=function(a){return a.definition&&a.definition.name?b.xapiutil.getLangVal(a.definition.name):void 0},e=function(a){if("SubStatement"===a.objectType&&"SubStatement"!==a.object.objectType&&!(a.id||a.stored||a.version||a.authority)){var c=b.xapiutil.getActorId(a.actor)+":"+b.xapiutil.getVerbDisplay(a.verb)+":"+b.xapiutil.getObjectId(a.object);return c}};b.xapiutil={},b.xapiutil.getLang=function(){var a;if("undefined"!=typeof navigator)a=navigator.language||navigator.browserLanguage||navigator.systemLanguage||navigator.userLanguage;else if(process&&process.env){var b=process.env.LANG;a=b.slice(0,b.indexOf(".")),a=a.replace(/_/,"-")}return a||"en-US"},b.xapiutil.getLangVal=function(a){if(a){var c=Object.keys(a);if(0==c.length)return void 0;var d,e=b.xapiutil.getLang(),f=!1;do a[e]?(d=a[e],f=!0):e.indexOf("-")&&(e=e.substring(0,e.lastIndexOf("-")));while(!f&&""!==e);return d}},b.xapiutil.getMoreStatements=function(a,d,e){if(!c)throw new Error("Node not supported.");var f=[];b.XAPIWrapper.getStatements(e,null,function g(c){if(c&&c.response){var h=JSON.parse(c.response);h.statements&&(f=f.concat(h.statements),a--<=0?d(f):h.more&&""!==h.more?b.XAPIWrapper.getStatements(e,h.more,g):""===h.more&&d(f))}})},b.xapiutil.getActorId=function(a){return a.mbox||a.openid||a.mbox_sha1sum||a.account},b.xapiutil.getActorIdString=function(a){var b=a.mbox||a.openid||a.mbox_sha1sum;return b||(b=a.account?a.account.homePage+":"+a.account.name:a.member?"Anon Group "+a.member:"unknown"),b},b.xapiutil.getActorDisplay=function(a){return a.name||b.xapiutil.getActorIdString(a)},b.xapiutil.getVerbDisplay=function(a){return a?a.display?b.xapiutil.getLangVal(a.display)||a.id:a.id:void 0},b.xapiutil.getObjectType=function(a){return a.objectType||(a.id?"Activity":"Agent")},b.xapiutil.getObjectId=function(a){if(a.id)return a.id;var c=b.xapiutil.getObjectType(a);return"Agent"===c||"Group"===c?b.xapiutil.getActorId(a):void 0},b.xapiutil.getObjectIdString=function(a){if(!a)return"unknown";if(a.id)return a.id;var c=b.xapiutil.getObjectType(a);return"Agent"===c||"Group"===c?b.xapiutil.getActorIdString(a):"SubStatement"==c?e(a):"unknown"},b.xapiutil.getObjectDisplay=function(a){if(!a)return"unknown";var c=d(a)||a.name||a.id;if(!c){var f=b.xapiutil.getObjectType(a);"Agent"===f||"Group"==f?c=b.xapiutil.getActorDisplay(a):"SubStatement"==f&&(c=e(a))}return c}}(this),function(a){function b(a){for(var b=window.location.search.substring(1),c=b.split("&"),d=0;d<c.length;d++){var e=c[d].split("=");if(decodeURIComponent(e[0])==a)return decodeURIComponent(e[1])}}function c(a){return function(){var b=arguments;window.setTimeout(function(){for(var c=[],d=0;d<b.length;d++)c.push(b[d]);a.apply(window,c)},0)}}function d(){var a=document.body,b=new MutationObserver(function(a){a.forEach(function(a){for(var b in a.addedNodes)if(a.addedNodes[b].constructor==HTMLAnchorElement){var c=a.addedNodes[b];e([c])}})}),c={attributes:!0,childList:!0,subtree:!0};b.observe(a,c)}function e(a){var c=b("xAPILaunchKey"),d=b("xAPILaunchService"),e=b("encrypted"),f="xAPILaunchKey="+c+"&xAPILaunchService="+d;e&&(f+="&encrypted=true");for(var g=0;g<a.length;g++){var h=a[g],i=h.href,j=h.attributes.getNamedItem("courselink");j&&"true"==j.value&&(i=i.indexOf("?")>-1?i+"&"+f:i+"?"+f,h.href=i)}}function f(a,h,i){a=c(a);try{var j=b("xAPILaunchKey"),k=b("xAPILaunchService");b("encrypted");if(f.terminate=function(a){var b=new URL(k);b.pathname+="launch/"+j+"/terminate";var c=new XMLHttpRequest;c.withCredentials=!0,c.crossDomain=!0,c.open("POST",b.toString(),!1),c.setRequestHeader("Content-type","application/json"),c.send(JSON.stringify({code:0,description:a||"User closed content"}))},!j||!k)return a("invalid launch parameters");var l=new URL(k);l.pathname+="launch/"+j;var m=new XMLHttpRequest;m.withCredentials=!0,m.crossDomain=!0,m.onerror=function(b){window.setTimeout(function(){return a(b)})},m.onload=function(b){if(200!==m.status)return m.onerror(m.responseText);var c=JSON.parse(m.responseText),j=c,k={};k.endpoint=j.endpoint,k.actor=j.actor,k.withCredentials=!0,k.strictCallbacks=i||!1,window.onunload=function(){h&&f.terminate("User closed content")};var l=new g.XAPIWrapper.constructor;return l.changeConfig(k),e(document.body.querySelectorAll("a")),d(),a(null,c,l)},m.open("POST",l.toString(),!0),m.send()}catch(n){a(n)}}var g=a;g.launch=f}(window.ADL=window.ADL||{}); diff --git a/src/main/webapp/static/js/paella/player/resources/images/chrome.png b/src/main/webapp/static/js/paella/player/resources/images/chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..efb2c0e324d2c6d7c10c1fda8c41bff26c3f76a4 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/chrome.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/error_icon.png b/src/main/webapp/static/js/paella/player/resources/images/error_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b86cdfa410a7a10bc2dd7916789dbc48ce0c5b31 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/error_icon.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/explorer.png b/src/main/webapp/static/js/paella/player/resources/images/explorer.png new file mode 100644 index 0000000000000000000000000000000000000000..245679ddcaf370cd92ec3132ecb9378f7a9679ba Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/explorer.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/firefox.png b/src/main/webapp/static/js/paella/player/resources/images/firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6d484b9154ffb865031eacda6110e80058bdc2 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/firefox.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/paella_icons_dark.png b/src/main/webapp/static/js/paella/player/resources/images/paella_icons_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4c5b4aad900ca07d660e2bdf9aa5c37ddd470a Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/paella_icons_dark.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/paella_icons_light.png b/src/main/webapp/static/js/paella/player/resources/images/paella_icons_light.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e146b64e7a37e48ea1187e4c20d6dd95f522cc Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/paella_icons_light.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/images/play.svg b/src/main/webapp/static/js/paella/player/resources/images/play.svg new file mode 100644 index 0000000000000000000000000000000000000000..a8c06ff68701f720d9c19579c066a3138a80fc82 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/images/play.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 300 300" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"> + <rect id="Play" x="0" y="0" width="300" height="300" style="fill:none;"/> + <g id="Play1" serif:id="Play"> + <g transform="matrix(1.21457,0,0,1.21457,-55.8704,-35.2227)"> + <circle cx="169.5" cy="152.5" r="123.5" style="fill:rgb(128,128,128);"/> + <path d="M169.899,29.001L170.298,29.003L170.697,29.006L171.095,29.01L171.493,29.016L171.891,29.023L172.288,29.031L172.686,29.04L173.082,29.051L173.479,29.063L173.875,29.076L174.271,29.091L174.666,29.106L175.062,29.123L175.457,29.141L175.851,29.161L176.246,29.181L176.64,29.203L177.033,29.226L177.426,29.251L177.819,29.276L178.212,29.303L178.604,29.331L178.996,29.36L179.388,29.391L179.779,29.423L180.17,29.455L180.561,29.49L180.951,29.525L181.341,29.561L181.73,29.599L182.12,29.638L182.508,29.678L182.897,29.72L183.285,29.762L183.673,29.806L184.06,29.851L184.447,29.897L184.834,29.944L185.22,29.993L185.606,30.043L185.992,30.094L186.377,30.146L186.762,30.199L187.146,30.254L187.53,30.309L187.914,30.366L188.297,30.424L188.68,30.483L189.063,30.544L189.445,30.605L189.827,30.668L190.208,30.732L190.589,30.797L190.969,30.863L191.35,30.93L191.729,30.999L192.109,31.069L192.488,31.139L192.866,31.211L193.244,31.285L193.622,31.359L194,31.434L194.376,31.511L194.753,31.589L195.129,31.668L195.505,31.748L195.88,31.829L196.255,31.911L196.629,31.995L197.003,32.079L197.377,32.165L197.75,32.252L198.122,32.34L198.495,32.429L198.867,32.519L199.238,32.61L199.609,32.703L199.979,32.796L200.349,32.891L200.719,32.987L201.088,33.084L201.457,33.182L201.825,33.281L202.193,33.381L202.56,33.482L202.927,33.585L203.293,33.688L203.659,33.793L204.025,33.899L204.39,34.006L204.755,34.114L205.119,34.223L205.482,34.333L205.845,34.444L206.208,34.556L206.57,34.67L206.932,34.784L207.293,34.9L207.654,35.016L208.014,35.134L208.374,35.253L208.734,35.373L209.092,35.493L209.451,35.615L209.809,35.738L210.166,35.863L210.523,35.988L210.879,36.114L211.235,36.241L211.59,36.37L211.945,36.499L212.299,36.63L212.653,36.761L213.007,36.894L213.359,37.027L213.712,37.162L214.064,37.298L214.415,37.434L214.766,37.572L215.116,37.711L215.465,37.851L215.815,37.992L216.163,38.134L216.511,38.277L216.859,38.421L217.206,38.566L217.553,38.712L217.898,38.859L218.244,39.007L218.589,39.156L218.933,39.306L219.277,39.457L219.62,39.609L219.963,39.763L220.305,39.917L220.647,40.072L220.988,40.228L221.328,40.385L221.668,40.543L222.008,40.703L222.346,40.863L222.685,41.024L223.022,41.186L223.36,41.349L223.696,41.514L224.032,41.679L224.368,41.845L224.702,42.012L225.037,42.18L225.37,42.349L225.703,42.519L226.036,42.69L226.368,42.862L226.699,43.035L227.03,43.209L227.36,43.384L227.69,43.56L228.019,43.737L228.347,43.915L228.675,44.094L229.002,44.274L229.329,44.454L229.655,44.636L229.98,44.819L230.305,45.002L230.629,45.187L230.953,45.372L231.276,45.559L231.598,45.746L231.92,45.934L232.241,46.124L232.561,46.314L232.881,46.505L233.2,46.697L233.519,46.89L233.837,47.084L234.154,47.279L234.471,47.475L234.787,47.672L235.103,47.869L235.417,48.068L235.732,48.267L236.045,48.468L236.358,48.669L236.67,48.871L236.982,49.074L237.293,49.279L237.603,49.484L237.913,49.689L238.222,49.896L238.53,50.104L238.838,50.313L239.145,50.522L239.451,50.732L239.757,50.944L240.062,51.156L240.366,51.369L240.67,51.583L240.973,51.798L241.275,52.014L241.577,52.23L241.878,52.448L242.178,52.666L242.478,52.885L242.777,53.106L243.075,53.327L243.372,53.548L243.669,53.771L243.965,53.995L244.261,54.219L244.556,54.445L244.85,54.671L245.143,54.898L245.436,55.126L245.728,55.355L246.019,55.585L246.31,55.815L246.6,56.047L246.889,56.279L247.177,56.512L247.465,56.746L247.752,56.981L248.039,57.216L248.324,57.453L248.609,57.69L248.893,57.928L249.177,58.167L249.459,58.407L249.741,58.647L250.022,58.889L250.303,59.131L250.583,59.374L250.862,59.618L251.14,59.863L251.418,60.109L251.695,60.355L251.971,60.602L252.246,60.85L252.52,61.099L252.794,61.349L253.067,61.599L253.34,61.85L253.611,62.103L253.882,62.355L254.152,62.609L254.421,62.864L254.69,63.119L254.958,63.375L255.225,63.632L255.491,63.889L255.756,64.148L256.021,64.407L256.285,64.667L256.548,64.928L256.811,65.189L257.072,65.452L257.333,65.715L257.593,65.979L257.852,66.244L258.111,66.509L258.368,66.775L258.625,67.042L258.881,67.31L259.136,67.579L259.391,67.848L259.645,68.118L259.897,68.389L260.15,68.66L260.401,68.933L260.651,69.206L260.901,69.48L261.15,69.754L261.398,70.029L261.645,70.305L261.891,70.582L262.137,70.86L262.382,71.138L262.626,71.417L262.869,71.697L263.111,71.978L263.353,72.259L263.593,72.541L263.833,72.823L264.072,73.107L264.31,73.391L264.547,73.676L264.784,73.961L265.019,74.248L265.254,74.535L265.488,74.823L265.721,75.111L265.953,75.4L266.185,75.69L266.415,75.981L266.645,76.272L266.874,76.564L267.102,76.857L267.329,77.15L267.555,77.444L267.781,77.739L268.005,78.035L268.229,78.331L268.452,78.628L268.673,78.925L268.894,79.223L269.115,79.522L269.334,79.822L269.552,80.122L269.77,80.423L269.986,80.725L270.202,81.027L270.417,81.33L270.631,81.634L270.844,81.938L271.056,82.243L271.268,82.549L271.478,82.855L271.687,83.162L271.896,83.47L272.104,83.778L272.311,84.087L272.516,84.397L272.721,84.707L272.926,85.018L273.129,85.33L273.331,85.642L273.532,85.955L273.733,86.268L273.932,86.583L274.131,86.897L274.328,87.213L274.525,87.529L274.721,87.846L274.916,88.163L275.11,88.481L275.303,88.8L275.495,89.119L275.686,89.439L275.876,89.759L276.066,90.08L276.254,90.402L276.441,90.724L276.628,91.047L276.813,91.371L276.998,91.695L277.181,92.02L277.364,92.345L277.546,92.671L277.726,92.998L277.906,93.325L278.085,93.653L278.263,93.981L278.44,94.31L278.616,94.64L278.791,94.97L278.965,95.301L279.138,95.632L279.31,95.964L279.481,96.297L279.651,96.63L279.82,96.963L279.988,97.298L280.155,97.632L280.321,97.968L280.486,98.304L280.651,98.64L280.814,98.978L280.976,99.315L281.137,99.654L281.297,99.992L281.457,100.332L281.615,100.672L281.772,101.012L281.928,101.353L282.083,101.695L282.237,102.037L282.391,102.38L282.543,102.723L282.694,103.067L282.844,103.411L282.993,103.756L283.141,104.102L283.288,104.447L283.434,104.794L283.579,105.141L283.723,105.489L283.866,105.837L284.008,106.185L284.149,106.535L284.289,106.884L284.428,107.234L284.566,107.585L284.702,107.936L284.838,108.288L284.973,108.641L285.106,108.993L285.239,109.347L285.37,109.701L285.501,110.055L285.63,110.41L285.759,110.765L285.886,111.121L286.012,111.477L286.137,111.834L286.262,112.191L286.385,112.549L286.507,112.908L286.627,113.266L286.747,113.626L286.866,113.986L286.984,114.346L287.1,114.707L287.216,115.068L287.33,115.43L287.444,115.792L287.556,116.155L287.667,116.518L287.777,116.881L287.886,117.245L287.994,117.61L288.101,117.975L288.207,118.341L288.312,118.707L288.415,119.073L288.518,119.44L288.619,119.807L288.719,120.175L288.818,120.543L288.916,120.912L289.013,121.281L289.109,121.651L289.204,122.021L289.297,122.391L289.39,122.762L289.481,123.133L289.571,123.505L289.66,123.878L289.748,124.25L289.835,124.623L289.921,124.997L290.005,125.371L290.089,125.745L290.171,126.12L290.252,126.495L290.332,126.871L290.411,127.247L290.489,127.624L290.566,128L290.641,128.378L290.715,128.756L290.789,129.134L290.861,129.512L290.931,129.891L291.001,130.271L291.07,130.65L291.137,131.031L291.203,131.411L291.268,131.792L291.332,132.173L291.395,132.555L291.456,132.937L291.517,133.32L291.576,133.703L291.634,134.086L291.691,134.47L291.746,134.854L291.801,135.238L291.854,135.623L291.906,136.008L291.957,136.394L292.007,136.78L292.056,137.166L292.103,137.553L292.149,137.94L292.194,138.327L292.238,138.715L292.28,139.103L292.322,139.492L292.362,139.88L292.401,140.27L292.439,140.659L292.475,141.049L292.51,141.439L292.545,141.83L292.577,142.221L292.609,142.612L292.64,143.004L292.669,143.396L292.697,143.788L292.724,144.181L292.749,144.574L292.774,144.967L292.797,145.36L292.819,145.754L292.839,146.149L292.859,146.543L292.877,146.938L292.894,147.334L292.909,147.729L292.924,148.125L292.937,148.521L292.949,148.918L292.96,149.314L292.969,149.712L292.977,150.109L292.984,150.507L292.99,150.905L292.994,151.303L292.997,151.702L292.999,152.101L293,152.5L292.999,152.899L292.997,153.298L292.994,153.697L292.99,154.095L292.984,154.493L292.977,154.891L292.969,155.288L292.96,155.686L292.949,156.082L292.937,156.479L292.924,156.875L292.909,157.271L292.894,157.666L292.877,158.062L292.859,158.457L292.839,158.851L292.819,159.246L292.797,159.64L292.774,160.033L292.749,160.426L292.724,160.819L292.697,161.212L292.669,161.604L292.64,161.996L292.609,162.388L292.577,162.779L292.545,163.17L292.51,163.561L292.475,163.951L292.439,164.341L292.401,164.73L292.362,165.12L292.322,165.508L292.28,165.897L292.238,166.285L292.194,166.673L292.149,167.06L292.103,167.447L292.056,167.834L292.007,168.22L291.957,168.606L291.906,168.992L291.854,169.377L291.801,169.762L291.746,170.146L291.691,170.53L291.634,170.914L291.576,171.297L291.517,171.68L291.456,172.063L291.395,172.445L291.332,172.827L291.268,173.208L291.203,173.589L291.137,173.969L291.07,174.35L291.001,174.729L290.931,175.109L290.861,175.488L290.789,175.866L290.715,176.244L290.641,176.622L290.566,177L290.489,177.376L290.411,177.753L290.332,178.129L290.252,178.505L290.171,178.88L290.089,179.255L290.005,179.629L289.921,180.003L289.835,180.377L289.748,180.75L289.66,181.122L289.571,181.495L289.481,181.867L289.39,182.238L289.297,182.609L289.204,182.979L289.109,183.349L289.013,183.719L288.916,184.088L288.818,184.457L288.719,184.825L288.619,185.193L288.518,185.56L288.415,185.927L288.312,186.293L288.207,186.659L288.101,187.025L287.994,187.39L287.886,187.755L287.777,188.119L287.667,188.482L287.556,188.845L287.444,189.208L287.33,189.57L287.216,189.932L287.1,190.293L286.984,190.654L286.866,191.014L286.747,191.374L286.627,191.734L286.507,192.092L286.385,192.451L286.262,192.809L286.137,193.166L286.012,193.523L285.886,193.879L285.759,194.235L285.63,194.59L285.501,194.945L285.37,195.299L285.239,195.653L285.106,196.007L284.973,196.359L284.838,196.712L284.702,197.064L284.566,197.415L284.428,197.766L284.289,198.116L284.149,198.465L284.008,198.815L283.866,199.163L283.723,199.511L283.579,199.859L283.434,200.206L283.288,200.553L283.141,200.898L282.993,201.244L282.844,201.589L282.694,201.933L282.543,202.277L282.391,202.62L282.237,202.963L282.083,203.305L281.928,203.647L281.772,203.988L281.615,204.328L281.457,204.668L281.297,205.008L281.137,205.346L280.976,205.685L280.814,206.022L280.651,206.36L280.486,206.696L280.321,207.032L280.155,207.368L279.988,207.702L279.82,208.037L279.651,208.37L279.481,208.703L279.31,209.036L279.138,209.368L278.965,209.699L278.791,210.03L278.616,210.36L278.44,210.69L278.263,211.019L278.085,211.347L277.906,211.675L277.726,212.002L277.546,212.329L277.364,212.655L277.181,212.98L276.998,213.305L276.813,213.629L276.628,213.953L276.441,214.276L276.254,214.598L276.066,214.92L275.876,215.241L275.686,215.561L275.495,215.881L275.303,216.2L275.11,216.519L274.916,216.837L274.721,217.154L274.525,217.471L274.328,217.787L274.131,218.103L273.932,218.417L273.733,218.732L273.532,219.045L273.331,219.358L273.129,219.67L272.926,219.982L272.721,220.293L272.516,220.603L272.311,220.913L272.104,221.222L271.896,221.53L271.687,221.838L271.478,222.145L271.268,222.451L271.056,222.757L270.844,223.062L270.631,223.366L270.417,223.67L270.202,223.973L269.986,224.275L269.77,224.577L269.552,224.878L269.334,225.178L269.115,225.478L268.894,225.777L268.673,226.075L268.452,226.372L268.229,226.669L268.005,226.965L267.781,227.261L267.555,227.556L267.329,227.85L267.102,228.143L266.874,228.436L266.645,228.728L266.415,229.019L266.185,229.31L265.953,229.6L265.721,229.889L265.488,230.177L265.254,230.465L265.019,230.752L264.784,231.039L264.547,231.324L264.31,231.609L264.072,231.893L263.833,232.177L263.593,232.459L263.353,232.741L263.111,233.022L262.869,233.303L262.626,233.583L262.382,233.862L262.137,234.14L261.891,234.418L261.645,234.695L261.398,234.971L261.15,235.246L260.901,235.52L260.651,235.794L260.401,236.067L260.15,236.34L259.897,236.611L259.645,236.882L259.391,237.152L259.136,237.421L258.881,237.69L258.625,237.958L258.368,238.225L258.111,238.491L257.852,238.756L257.593,239.021L257.333,239.285L257.072,239.548L256.811,239.811L256.548,240.072L256.285,240.333L256.021,240.593L255.756,240.852L255.491,241.111L255.225,241.368L254.958,241.625L254.69,241.881L254.421,242.136L254.152,242.391L253.882,242.645L253.611,242.897L253.34,243.15L253.067,243.401L252.794,243.651L252.52,243.901L252.246,244.15L251.971,244.398L251.695,244.645L251.418,244.891L251.14,245.137L250.862,245.382L250.583,245.626L250.303,245.869L250.022,246.111L249.741,246.353L249.459,246.593L249.177,246.833L248.893,247.072L248.609,247.31L248.324,247.547L248.039,247.784L247.752,248.019L247.465,248.254L247.177,248.488L246.889,248.721L246.6,248.953L246.31,249.185L246.019,249.415L245.728,249.645L245.436,249.874L245.143,250.102L244.85,250.329L244.556,250.555L244.261,250.781L243.965,251.005L243.669,251.229L243.372,251.452L243.075,251.673L242.777,251.894L242.478,252.115L242.178,252.334L241.878,252.552L241.577,252.77L241.275,252.986L240.973,253.202L240.67,253.417L240.366,253.631L240.062,253.844L239.757,254.056L239.451,254.268L239.145,254.478L238.838,254.687L238.53,254.896L238.222,255.104L237.913,255.311L237.603,255.516L237.293,255.721L236.982,255.926L236.67,256.129L236.358,256.331L236.045,256.532L235.732,256.733L235.417,256.932L235.103,257.131L234.787,257.328L234.471,257.525L234.154,257.721L233.837,257.916L233.519,258.11L233.2,258.303L232.881,258.495L232.561,258.686L232.241,258.876L231.92,259.066L231.598,259.254L231.276,259.441L230.953,259.628L230.629,259.813L230.305,259.998L229.98,260.181L229.655,260.364L229.329,260.546L229.002,260.726L228.675,260.906L228.347,261.085L228.019,261.263L227.69,261.44L227.36,261.616L227.03,261.791L226.699,261.965L226.368,262.138L226.036,262.31L225.703,262.481L225.37,262.651L225.037,262.82L224.702,262.988L224.368,263.155L224.032,263.321L223.696,263.486L223.36,263.651L223.022,263.814L222.685,263.976L222.346,264.137L222.008,264.297L221.668,264.457L221.328,264.615L220.988,264.772L220.647,264.928L220.305,265.083L219.963,265.237L219.62,265.391L219.277,265.543L218.933,265.694L218.589,265.844L218.244,265.993L217.898,266.141L217.553,266.288L217.206,266.434L216.859,266.579L216.511,266.723L216.163,266.866L215.815,267.008L215.465,267.149L215.116,267.289L214.766,267.428L214.415,267.566L214.064,267.702L213.712,267.838L213.359,267.973L213.007,268.106L212.653,268.239L212.299,268.37L211.945,268.501L211.59,268.63L211.235,268.759L210.879,268.886L210.523,269.012L210.166,269.137L209.809,269.262L209.451,269.385L209.092,269.507L208.734,269.627L208.374,269.747L208.014,269.866L207.654,269.984L207.293,270.1L206.932,270.216L206.57,270.33L206.208,270.444L205.845,270.556L205.482,270.667L205.119,270.777L204.755,270.886L204.39,270.994L204.025,271.101L203.659,271.207L203.293,271.312L202.927,271.415L202.56,271.518L202.193,271.619L201.825,271.719L201.457,271.818L201.088,271.916L200.719,272.013L200.349,272.109L199.979,272.204L199.609,272.297L199.238,272.39L198.867,272.481L198.495,272.571L198.122,272.66L197.75,272.748L197.377,272.835L197.003,272.921L196.629,273.005L196.255,273.089L195.88,273.171L195.505,273.252L195.129,273.332L194.753,273.411L194.376,273.489L194,273.566L193.622,273.641L193.244,273.715L192.866,273.789L192.488,273.861L192.109,273.931L191.729,274.001L191.35,274.07L190.969,274.137L190.589,274.203L190.208,274.268L189.827,274.332L189.445,274.395L189.063,274.456L188.68,274.517L188.297,274.576L187.914,274.634L187.53,274.691L187.146,274.746L186.762,274.801L186.377,274.854L185.992,274.906L185.606,274.957L185.22,275.007L184.834,275.056L184.447,275.103L184.06,275.149L183.673,275.194L183.285,275.238L182.897,275.28L182.508,275.322L182.12,275.362L181.73,275.401L181.341,275.439L180.951,275.475L180.561,275.51L180.17,275.545L179.779,275.577L179.388,275.609L178.996,275.64L178.604,275.669L178.212,275.697L177.819,275.724L177.426,275.749L177.033,275.774L176.64,275.797L176.246,275.819L175.851,275.839L175.457,275.859L175.062,275.877L174.666,275.894L174.271,275.909L173.875,275.924L173.479,275.937L173.082,275.949L172.686,275.96L172.288,275.969L171.891,275.977L171.493,275.984L171.095,275.99L170.697,275.994L170.298,275.997L169.899,275.999L169.5,276L169.101,275.999L168.702,275.997L168.303,275.994L167.905,275.99L167.507,275.984L167.109,275.977L166.712,275.969L166.314,275.96L165.918,275.949L165.521,275.937L165.125,275.924L164.729,275.909L164.334,275.894L163.938,275.877L163.543,275.859L163.149,275.839L162.754,275.819L162.36,275.797L161.967,275.774L161.574,275.749L161.181,275.724L160.788,275.697L160.396,275.669L160.004,275.64L159.612,275.609L159.221,275.577L158.83,275.545L158.439,275.51L158.049,275.475L157.659,275.439L157.27,275.401L156.88,275.362L156.492,275.322L156.103,275.28L155.715,275.238L155.327,275.194L154.94,275.149L154.553,275.103L154.166,275.056L153.78,275.007L153.394,274.957L153.008,274.906L152.623,274.854L152.238,274.801L151.854,274.746L151.47,274.691L151.086,274.634L150.703,274.576L150.32,274.517L149.937,274.456L149.555,274.395L149.173,274.332L148.792,274.268L148.411,274.203L148.031,274.137L147.65,274.07L147.271,274.001L146.891,273.931L146.512,273.861L146.134,273.789L145.756,273.715L145.378,273.641L145,273.566L144.624,273.489L144.247,273.411L143.871,273.332L143.495,273.252L143.12,273.171L142.745,273.089L142.371,273.005L141.997,272.921L141.623,272.835L141.25,272.748L140.878,272.66L140.505,272.571L140.133,272.481L139.762,272.39L139.391,272.297L139.021,272.204L138.651,272.109L138.281,272.013L137.912,271.916L137.543,271.818L137.175,271.719L136.807,271.619L136.44,271.518L136.073,271.415L135.707,271.312L135.341,271.207L134.975,271.101L134.61,270.994L134.245,270.886L133.881,270.777L133.518,270.667L133.155,270.556L132.792,270.444L132.43,270.33L132.068,270.216L131.707,270.1L131.346,269.984L130.986,269.866L130.626,269.747L130.266,269.627L129.908,269.507L129.549,269.385L129.191,269.262L128.834,269.137L128.477,269.012L128.121,268.886L127.765,268.759L127.41,268.63L127.055,268.501L126.701,268.37L126.347,268.239L125.993,268.106L125.641,267.973L125.288,267.838L124.936,267.702L124.585,267.566L124.234,267.428L123.884,267.289L123.535,267.149L123.185,267.008L122.837,266.866L122.489,266.723L122.141,266.579L121.794,266.434L121.447,266.288L121.102,266.141L120.756,265.993L120.411,265.844L120.067,265.694L119.723,265.543L119.38,265.391L119.037,265.237L118.695,265.083L118.353,264.928L118.012,264.772L117.672,264.615L117.332,264.457L116.992,264.297L116.654,264.137L116.315,263.976L115.978,263.814L115.64,263.651L115.304,263.486L114.968,263.321L114.632,263.155L114.298,262.988L113.963,262.82L113.63,262.651L113.297,262.481L112.964,262.31L112.632,262.138L112.301,261.965L111.97,261.791L111.64,261.616L111.31,261.44L110.981,261.263L110.653,261.085L110.325,260.906L109.998,260.726L109.671,260.546L109.345,260.364L109.02,260.181L108.695,259.998L108.371,259.813L108.047,259.628L107.724,259.441L107.402,259.254L107.08,259.066L106.759,258.876L106.439,258.686L106.119,258.495L105.8,258.303L105.481,258.11L105.163,257.916L104.846,257.721L104.529,257.525L104.213,257.328L103.897,257.131L103.583,256.932L103.268,256.733L102.955,256.532L102.642,256.331L102.33,256.129L102.018,255.926L101.707,255.721L101.397,255.516L101.087,255.311L100.778,255.104L100.47,254.896L100.162,254.687L99.855,254.478L99.549,254.268L99.243,254.056L98.938,253.844L98.634,253.631L98.33,253.417L98.027,253.202L97.725,252.986L97.423,252.77L97.122,252.552L96.822,252.334L96.522,252.115L96.223,251.894L95.925,251.673L95.628,251.452L95.331,251.229L95.035,251.005L94.739,250.781L94.444,250.555L94.15,250.329L93.857,250.102L93.564,249.874L93.272,249.645L92.981,249.415L92.69,249.185L92.4,248.953L92.111,248.721L91.823,248.488L91.535,248.254L91.248,248.019L90.961,247.784L90.676,247.547L90.391,247.31L90.107,247.072L89.823,246.833L89.541,246.593L89.259,246.353L88.978,246.111L88.697,245.869L88.417,245.626L88.138,245.382L87.86,245.137L87.582,244.891L87.305,244.645L87.029,244.398L86.754,244.15L86.48,243.901L86.206,243.651L85.933,243.401L85.66,243.15L85.389,242.897L85.118,242.645L84.848,242.391L84.579,242.136L84.31,241.881L84.042,241.625L83.775,241.368L83.509,241.111L83.244,240.852L82.979,240.593L82.715,240.333L82.452,240.072L82.189,239.811L81.928,239.548L81.667,239.285L81.407,239.021L81.148,238.756L80.889,238.491L80.632,238.225L80.375,237.958L80.119,237.69L79.864,237.421L79.609,237.152L79.355,236.882L79.103,236.611L78.85,236.34L78.599,236.067L78.349,235.794L78.099,235.52L77.85,235.246L77.602,234.971L77.355,234.695L77.109,234.418L76.863,234.14L76.618,233.862L76.374,233.583L76.131,233.303L75.889,233.022L75.647,232.741L75.407,232.459L75.167,232.177L74.928,231.893L74.69,231.609L74.453,231.324L74.216,231.039L73.981,230.752L73.746,230.465L73.512,230.177L73.279,229.889L73.047,229.6L72.815,229.31L72.585,229.019L72.355,228.728L72.126,228.436L71.898,228.143L71.671,227.85L71.445,227.556L71.219,227.261L70.995,226.965L70.771,226.669L70.548,226.372L70.327,226.075L70.106,225.777L69.885,225.478L69.666,225.178L69.448,224.878L69.23,224.577L69.014,224.275L68.798,223.973L68.583,223.67L68.369,223.366L68.156,223.062L67.944,222.757L67.732,222.451L67.522,222.145L67.313,221.838L67.104,221.53L66.896,221.222L66.689,220.913L66.484,220.603L66.279,220.293L66.074,219.982L65.871,219.67L65.669,219.358L65.468,219.045L65.267,218.732L65.068,218.417L64.869,218.103L64.672,217.787L64.475,217.471L64.279,217.154L64.084,216.837L63.89,216.519L63.697,216.2L63.505,215.881L63.314,215.561L63.124,215.241L62.934,214.92L62.746,214.598L62.559,214.276L62.372,213.953L62.187,213.629L62.002,213.305L61.819,212.98L61.636,212.655L61.454,212.329L61.274,212.002L61.094,211.675L60.915,211.347L60.737,211.019L60.56,210.69L60.384,210.36L60.209,210.03L60.035,209.699L59.862,209.368L59.69,209.036L59.519,208.703L59.349,208.37L59.18,208.037L59.012,207.702L58.845,207.368L58.679,207.032L58.514,206.696L58.349,206.36L58.186,206.022L58.024,205.685L57.863,205.346L57.703,205.008L57.543,204.668L57.385,204.328L57.228,203.988L57.072,203.647L56.917,203.305L56.763,202.963L56.609,202.62L56.457,202.277L56.306,201.933L56.156,201.589L56.007,201.244L55.859,200.898L55.712,200.553L55.566,200.206L55.421,199.859L55.277,199.511L55.134,199.163L54.992,198.815L54.851,198.465L54.711,198.116L54.572,197.766L54.434,197.415L54.298,197.064L54.162,196.712L54.027,196.359L53.894,196.007L53.761,195.653L53.63,195.299L53.499,194.945L53.37,194.59L53.241,194.235L53.114,193.879L52.988,193.523L52.863,193.166L52.738,192.809L52.615,192.451L52.493,192.092L52.373,191.734L52.253,191.374L52.134,191.014L52.016,190.654L51.9,190.293L51.784,189.932L51.67,189.57L51.556,189.208L51.444,188.845L51.333,188.482L51.223,188.119L51.114,187.755L51.006,187.39L50.899,187.025L50.793,186.659L50.688,186.293L50.585,185.927L50.482,185.56L50.381,185.193L50.281,184.825L50.182,184.457L50.084,184.088L49.987,183.719L49.891,183.349L49.796,182.979L49.703,182.609L49.61,182.238L49.519,181.867L49.429,181.495L49.34,181.122L49.252,180.75L49.165,180.377L49.079,180.003L48.995,179.629L48.911,179.255L48.829,178.88L48.748,178.505L48.668,178.129L48.589,177.753L48.511,177.376L48.434,177L48.359,176.622L48.285,176.244L48.211,175.866L48.139,175.488L48.069,175.109L47.999,174.729L47.93,174.35L47.863,173.969L47.797,173.589L47.732,173.208L47.668,172.827L47.605,172.445L47.544,172.063L47.483,171.68L47.424,171.297L47.366,170.914L47.309,170.53L47.254,170.146L47.199,169.762L47.146,169.377L47.094,168.992L47.043,168.606L46.993,168.22L46.944,167.834L46.897,167.447L46.851,167.06L46.806,166.673L46.762,166.285L46.72,165.897L46.678,165.508L46.638,165.12L46.599,164.73L46.561,164.341L46.525,163.951L46.49,163.561L46.455,163.17L46.423,162.779L46.391,162.388L46.36,161.996L46.331,161.604L46.303,161.212L46.276,160.819L46.251,160.426L46.226,160.033L46.203,159.64L46.181,159.246L46.161,158.851L46.141,158.457L46.123,158.062L46.106,157.666L46.091,157.271L46.076,156.875L46.063,156.479L46.051,156.082L46.04,155.686L46.031,155.288L46.023,154.891L46.016,154.493L46.01,154.095L46.006,153.697L46.003,153.298L46.001,152.899L46,152.5L46.001,152.101L46.003,151.702L46.006,151.303L46.01,150.905L46.016,150.507L46.023,150.109L46.031,149.712L46.04,149.314L46.051,148.918L46.063,148.521L46.076,148.125L46.091,147.729L46.106,147.334L46.123,146.938L46.141,146.543L46.161,146.149L46.181,145.754L46.203,145.36L46.226,144.967L46.251,144.574L46.276,144.181L46.303,143.788L46.331,143.396L46.36,143.004L46.391,142.612L46.423,142.221L46.455,141.83L46.49,141.439L46.525,141.049L46.561,140.659L46.599,140.27L46.638,139.88L46.678,139.492L46.72,139.103L46.762,138.715L46.806,138.327L46.851,137.94L46.897,137.553L46.944,137.166L46.993,136.78L47.043,136.394L47.094,136.008L47.146,135.623L47.199,135.238L47.254,134.854L47.309,134.47L47.366,134.086L47.424,133.703L47.483,133.32L47.544,132.937L47.605,132.555L47.668,132.173L47.732,131.792L47.797,131.411L47.863,131.031L47.93,130.65L47.999,130.271L48.069,129.891L48.139,129.512L48.211,129.134L48.285,128.756L48.359,128.378L48.434,128L48.511,127.624L48.589,127.247L48.668,126.871L48.748,126.495L48.829,126.12L48.911,125.745L48.995,125.371L49.079,124.997L49.165,124.623L49.252,124.25L49.34,123.878L49.429,123.505L49.519,123.133L49.61,122.762L49.703,122.391L49.796,122.021L49.891,121.651L49.987,121.281L50.084,120.912L50.182,120.543L50.281,120.175L50.381,119.807L50.482,119.44L50.585,119.073L50.688,118.707L50.793,118.341L50.899,117.975L51.006,117.61L51.114,117.245L51.223,116.881L51.333,116.518L51.444,116.155L51.556,115.792L51.67,115.43L51.784,115.068L51.9,114.707L52.016,114.346L52.134,113.986L52.253,113.626L52.373,113.266L52.493,112.908L52.615,112.549L52.738,112.191L52.863,111.834L52.988,111.477L53.114,111.121L53.241,110.765L53.37,110.41L53.499,110.055L53.63,109.701L53.761,109.347L53.894,108.993L54.027,108.641L54.162,108.288L54.298,107.936L54.434,107.585L54.572,107.234L54.711,106.884L54.851,106.535L54.992,106.185L55.134,105.837L55.277,105.489L55.421,105.141L55.566,104.794L55.712,104.447L55.859,104.102L56.007,103.756L56.156,103.411L56.306,103.067L56.457,102.723L56.609,102.38L56.763,102.037L56.917,101.695L57.072,101.353L57.228,101.012L57.385,100.672L57.543,100.332L57.703,99.992L57.863,99.654L58.024,99.315L58.186,98.978L58.349,98.64L58.514,98.304L58.679,97.968L58.845,97.632L59.012,97.298L59.18,96.963L59.349,96.63L59.519,96.297L59.69,95.964L59.862,95.632L60.035,95.301L60.209,94.97L60.384,94.64L60.56,94.31L60.737,93.981L60.915,93.653L61.094,93.325L61.274,92.998L61.454,92.671L61.636,92.345L61.819,92.02L62.002,91.695L62.187,91.371L62.372,91.047L62.559,90.724L62.746,90.402L62.934,90.08L63.124,89.759L63.314,89.439L63.505,89.119L63.697,88.8L63.89,88.481L64.084,88.163L64.279,87.846L64.475,87.529L64.672,87.213L64.869,86.897L65.068,86.583L65.267,86.268L65.468,85.955L65.669,85.642L65.871,85.33L66.074,85.018L66.279,84.707L66.484,84.397L66.689,84.087L66.896,83.778L67.104,83.47L67.313,83.162L67.522,82.855L67.732,82.549L67.944,82.243L68.156,81.938L68.369,81.634L68.583,81.33L68.798,81.027L69.014,80.725L69.23,80.423L69.448,80.122L69.666,79.822L69.885,79.522L70.106,79.223L70.327,78.925L70.548,78.628L70.771,78.331L70.995,78.035L71.219,77.739L71.445,77.444L71.671,77.15L71.898,76.857L72.126,76.564L72.355,76.272L72.585,75.981L72.815,75.69L73.047,75.4L73.279,75.111L73.512,74.823L73.746,74.535L73.981,74.248L74.216,73.961L74.453,73.676L74.69,73.391L74.928,73.107L75.167,72.823L75.407,72.541L75.647,72.259L75.889,71.978L76.131,71.697L76.374,71.417L76.618,71.138L76.863,70.86L77.109,70.582L77.355,70.305L77.602,70.029L77.85,69.754L78.099,69.48L78.349,69.206L78.599,68.933L78.85,68.66L79.103,68.389L79.355,68.118L79.609,67.848L79.864,67.579L80.119,67.31L80.375,67.042L80.632,66.775L80.889,66.509L81.148,66.244L81.407,65.979L81.667,65.715L81.928,65.452L82.189,65.189L82.452,64.928L82.715,64.667L82.979,64.407L83.244,64.148L83.509,63.889L83.775,63.632L84.042,63.375L84.31,63.119L84.579,62.864L84.848,62.609L85.118,62.355L85.389,62.103L85.66,61.85L85.933,61.599L86.206,61.349L86.48,61.099L86.754,60.85L87.029,60.602L87.305,60.355L87.582,60.109L87.86,59.863L88.138,59.618L88.417,59.374L88.697,59.131L88.978,58.889L89.259,58.647L89.541,58.407L89.823,58.167L90.107,57.928L90.391,57.69L90.676,57.453L90.961,57.216L91.248,56.981L91.535,56.746L91.823,56.512L92.111,56.279L92.4,56.047L92.69,55.815L92.981,55.585L93.272,55.355L93.564,55.126L93.857,54.898L94.15,54.671L94.444,54.445L94.739,54.219L95.035,53.995L95.331,53.771L95.628,53.548L95.925,53.327L96.223,53.106L96.522,52.885L96.822,52.666L97.122,52.448L97.423,52.23L97.725,52.014L98.027,51.798L98.33,51.583L98.634,51.369L98.938,51.156L99.243,50.944L99.549,50.732L99.855,50.522L100.162,50.313L100.47,50.104L100.778,49.896L101.087,49.689L101.397,49.484L101.707,49.279L102.018,49.074L102.33,48.871L102.642,48.669L102.955,48.468L103.268,48.267L103.583,48.068L103.897,47.869L104.213,47.672L104.529,47.475L104.846,47.279L105.163,47.084L105.481,46.89L105.8,46.697L106.119,46.505L106.439,46.314L106.759,46.124L107.08,45.934L107.402,45.746L107.724,45.559L108.047,45.372L108.371,45.187L108.695,45.002L109.02,44.819L109.345,44.636L109.671,44.454L109.998,44.274L110.325,44.094L110.653,43.915L110.981,43.737L111.31,43.56L111.64,43.384L111.97,43.209L112.301,43.035L112.632,42.862L112.964,42.69L113.297,42.519L113.63,42.349L113.963,42.18L114.298,42.012L114.632,41.845L114.968,41.679L115.304,41.514L115.64,41.349L115.978,41.186L116.315,41.024L116.654,40.863L116.992,40.703L117.332,40.543L117.672,40.385L118.012,40.228L118.353,40.072L118.695,39.917L119.037,39.763L119.38,39.609L119.723,39.457L120.067,39.306L120.411,39.156L120.756,39.007L121.102,38.859L121.447,38.712L121.794,38.566L122.141,38.421L122.489,38.277L122.837,38.134L123.185,37.992L123.535,37.851L123.884,37.711L124.234,37.572L124.585,37.434L124.936,37.298L125.288,37.162L125.641,37.027L125.993,36.894L126.347,36.761L126.701,36.63L127.055,36.499L127.41,36.37L127.765,36.241L128.121,36.114L128.477,35.988L128.834,35.863L129.191,35.738L129.549,35.615L129.908,35.493L130.266,35.373L130.626,35.253L130.986,35.134L131.346,35.016L131.707,34.9L132.068,34.784L132.43,34.67L132.792,34.556L133.155,34.444L133.518,34.333L133.881,34.223L134.245,34.114L134.61,34.006L134.975,33.899L135.341,33.793L135.707,33.688L136.073,33.585L136.44,33.482L136.807,33.381L137.175,33.281L137.543,33.182L137.912,33.084L138.281,32.987L138.651,32.891L139.021,32.796L139.391,32.703L139.762,32.61L140.133,32.519L140.505,32.429L140.878,32.34L141.25,32.252L141.623,32.165L141.997,32.079L142.371,31.995L142.745,31.911L143.12,31.829L143.495,31.748L143.871,31.668L144.247,31.589L144.624,31.511L145,31.434L145.378,31.359L145.756,31.285L146.134,31.211L146.512,31.139L146.891,31.069L147.271,30.999L147.65,30.93L148.031,30.863L148.411,30.797L148.792,30.732L149.173,30.668L149.555,30.605L149.937,30.544L150.32,30.483L150.703,30.424L151.086,30.366L151.47,30.309L151.854,30.254L152.238,30.199L152.623,30.146L153.008,30.094L153.394,30.043L153.78,29.993L154.166,29.944L154.553,29.897L154.94,29.851L155.327,29.806L155.715,29.762L156.103,29.72L156.492,29.678L156.88,29.638L157.27,29.599L157.659,29.561L158.049,29.525L158.439,29.49L158.83,29.455L159.221,29.423L159.612,29.391L160.004,29.36L160.396,29.331L160.788,29.303L161.181,29.276L161.574,29.251L161.967,29.226L162.36,29.203L162.754,29.181L163.149,29.161L163.543,29.141L163.938,29.123L164.334,29.106L164.729,29.091L165.125,29.076L165.521,29.063L165.918,29.051L166.314,29.04L166.712,29.031L167.109,29.023L167.507,29.016L167.905,29.01L168.303,29.006L168.702,29.003L169.101,29.001L169.5,29L169.899,29.001ZM169.127,37.234L168.754,37.236L168.382,37.239L168.009,37.243L167.637,37.248L167.266,37.255L166.894,37.262L166.523,37.271L166.153,37.281L165.782,37.292L165.412,37.305L165.042,37.318L164.673,37.333L164.304,37.348L163.935,37.365L163.566,37.384L163.198,37.403L162.83,37.423L162.462,37.445L162.095,37.468L161.728,37.491L161.361,37.516L160.995,37.543L160.629,37.57L160.264,37.598L159.898,37.628L159.533,37.659L159.169,37.691L158.804,37.724L158.44,37.758L158.077,37.793L157.713,37.829L157.35,37.867L156.988,37.905L156.625,37.945L156.263,37.986L155.902,38.028L155.541,38.071L155.18,38.115L154.819,38.16L154.459,38.207L154.099,38.254L153.74,38.303L153.381,38.353L153.022,38.404L152.663,38.456L152.305,38.509L151.948,38.563L151.59,38.618L151.234,38.674L150.877,38.732L150.521,38.79L150.165,38.85L149.809,38.911L149.454,38.972L149.1,39.035L148.745,39.099L148.391,39.164L148.038,39.23L147.685,39.297L147.332,39.366L146.98,39.435L146.627,39.505L146.276,39.577L145.925,39.649L145.574,39.723L145.223,39.798L144.873,39.873L144.524,39.95L144.174,40.028L143.826,40.107L143.477,40.187L143.129,40.268L142.781,40.35L142.434,40.433L142.087,40.517L141.741,40.602L141.395,40.688L141.049,40.776L140.704,40.864L140.359,40.953L140.015,41.044L139.671,41.135L139.328,41.228L138.985,41.321L138.642,41.416L138.3,41.511L137.958,41.608L137.616,41.706L137.276,41.804L136.935,41.904L136.595,42.005L136.255,42.106L135.916,42.209L135.577,42.313L135.239,42.417L134.901,42.523L134.564,42.63L134.227,42.738L133.89,42.847L133.554,42.956L133.219,43.067L132.884,43.179L132.549,43.292L132.215,43.405L131.881,43.52L131.547,43.636L131.215,43.753L130.882,43.871L130.55,43.989L130.219,44.109L129.888,44.23L129.557,44.351L129.227,44.474L128.898,44.598L128.568,44.722L128.24,44.848L127.912,44.975L127.584,45.102L127.257,45.231L126.93,45.36L126.604,45.491L126.278,45.622L125.953,45.755L125.628,45.888L125.304,46.022L124.98,46.158L124.657,46.294L124.334,46.431L124.012,46.569L123.69,46.708L123.369,46.848L123.048,46.989L122.728,47.131L122.408,47.274L122.089,47.418L121.77,47.563L121.452,47.709L121.134,47.855L120.817,48.003L120.5,48.151L120.184,48.301L119.868,48.451L119.553,48.603L119.239,48.755L118.925,48.908L118.611,49.062L118.298,49.217L117.986,49.373L117.674,49.53L117.363,49.688L117.052,49.846L116.741,50.006L116.432,50.167L116.122,50.328L115.814,50.49L115.506,50.654L115.198,50.818L114.891,50.983L114.585,51.149L114.279,51.316L113.973,51.483L113.669,51.652L113.364,51.822L113.061,51.992L112.758,52.164L112.455,52.336L112.153,52.509L111.852,52.683L111.551,52.858L111.25,53.034L110.951,53.21L110.652,53.388L110.353,53.566L110.055,53.745L109.758,53.926L109.461,54.107L109.165,54.289L108.869,54.471L108.574,54.655L108.28,54.839L107.986,55.025L107.693,55.211L107.4,55.398L107.108,55.586L106.816,55.775L106.525,55.964L106.235,56.155L105.946,56.346L105.657,56.539L105.368,56.732L105.08,56.925L104.793,57.12L104.506,57.316L104.22,57.512L103.935,57.709L103.65,57.908L103.366,58.107L103.083,58.306L102.8,58.507L102.518,58.708L102.236,58.911L101.955,59.114L101.675,59.318L101.395,59.522L101.116,59.728L100.837,59.934L100.559,60.141L100.282,60.349L100.006,60.558L99.73,60.768L99.455,60.978L99.18,61.189L98.906,61.401L98.633,61.614L98.36,61.828L98.088,62.042L97.817,62.258L97.546,62.474L97.276,62.691L97.007,62.908L96.738,63.127L96.47,63.346L96.203,63.566L95.936,63.787L95.67,64.008L95.405,64.231L95.14,64.454L94.876,64.678L94.613,64.902L94.35,65.128L94.088,65.354L93.827,65.581L93.566,65.809L93.306,66.037L93.047,66.267L92.789,66.497L92.531,66.728L92.274,66.959L92.017,67.192L91.762,67.425L91.507,67.659L91.252,67.893L90.999,68.129L90.746,68.365L90.494,68.602L90.242,68.839L89.992,69.078L89.741,69.317L89.492,69.557L89.244,69.797L88.996,70.039L88.748,70.281L88.502,70.523L88.256,70.767L88.011,71.011L87.767,71.256L87.523,71.502L87.281,71.748L87.039,71.996L86.797,72.244L86.557,72.492L86.317,72.741L86.078,72.992L85.839,73.242L85.602,73.494L85.365,73.746L85.129,73.999L84.893,74.252L84.659,74.507L84.425,74.762L84.192,75.017L83.959,75.274L83.728,75.531L83.497,75.789L83.267,76.047L83.037,76.306L82.809,76.566L82.581,76.827L82.354,77.088L82.128,77.35L81.902,77.613L81.678,77.876L81.454,78.14L81.231,78.405L81.008,78.67L80.787,78.936L80.566,79.203L80.346,79.47L80.127,79.738L79.908,80.007L79.691,80.276L79.474,80.546L79.258,80.817L79.042,81.088L78.828,81.36L78.614,81.633L78.401,81.906L78.189,82.18L77.978,82.455L77.768,82.73L77.558,83.006L77.349,83.282L77.141,83.559L76.934,83.837L76.728,84.116L76.522,84.395L76.318,84.675L76.114,84.955L75.911,85.236L75.708,85.518L75.507,85.8L75.306,86.083L75.107,86.366L74.908,86.65L74.709,86.935L74.512,87.22L74.316,87.506L74.12,87.793L73.925,88.08L73.732,88.368L73.539,88.657L73.346,88.946L73.155,89.235L72.964,89.525L72.775,89.816L72.586,90.108L72.398,90.4L72.211,90.693L72.025,90.986L71.839,91.28L71.655,91.574L71.471,91.869L71.289,92.165L71.107,92.461L70.926,92.758L70.745,93.055L70.566,93.353L70.388,93.652L70.21,93.951L70.034,94.25L69.858,94.551L69.683,94.852L69.509,95.153L69.336,95.455L69.164,95.758L68.992,96.061L68.822,96.364L68.652,96.669L68.483,96.973L68.316,97.279L68.149,97.585L67.983,97.891L67.818,98.198L67.654,98.506L67.49,98.814L67.328,99.122L67.167,99.432L67.006,99.741L66.846,100.052L66.688,100.363L66.53,100.674L66.373,100.986L66.217,101.298L66.062,101.611L65.908,101.925L65.755,102.239L65.603,102.553L65.451,102.868L65.301,103.184L65.151,103.5L65.003,103.817L64.855,104.134L64.709,104.452L64.563,104.77L64.418,105.089L64.274,105.408L64.131,105.728L63.989,106.048L63.848,106.369L63.708,106.69L63.569,107.012L63.431,107.334L63.294,107.657L63.158,107.98L63.022,108.304L62.888,108.628L62.755,108.953L62.622,109.278L62.491,109.604L62.36,109.93L62.231,110.257L62.102,110.584L61.975,110.912L61.848,111.24L61.722,111.568L61.598,111.898L61.474,112.227L61.351,112.557L61.23,112.888L61.109,113.219L60.989,113.55L60.871,113.882L60.753,114.215L60.636,114.547L60.52,114.881L60.405,115.215L60.292,115.549L60.179,115.884L60.067,116.219L59.956,116.554L59.847,116.89L59.738,117.227L59.63,117.564L59.523,117.901L59.417,118.239L59.313,118.577L59.209,118.916L59.106,119.255L59.005,119.595L58.904,119.935L58.804,120.276L58.706,120.616L58.608,120.958L58.511,121.3L58.416,121.642L58.321,121.985L58.228,122.328L58.135,122.671L58.044,123.015L57.953,123.359L57.864,123.704L57.776,124.049L57.688,124.395L57.602,124.741L57.517,125.087L57.433,125.434L57.35,125.781L57.268,126.129L57.187,126.477L57.107,126.826L57.028,127.174L56.95,127.524L56.873,127.873L56.798,128.223L56.723,128.574L56.649,128.925L56.577,129.276L56.505,129.627L56.435,129.98L56.366,130.332L56.297,130.685L56.23,131.038L56.164,131.391L56.099,131.745L56.035,132.1L55.972,132.454L55.911,132.809L55.85,133.165L55.79,133.521L55.732,133.877L55.674,134.234L55.618,134.59L55.563,134.948L55.509,135.305L55.456,135.663L55.404,136.022L55.353,136.381L55.303,136.74L55.254,137.099L55.207,137.459L55.16,137.819L55.115,138.18L55.071,138.541L55.028,138.902L54.986,139.263L54.945,139.625L54.905,139.988L54.867,140.35L54.829,140.713L54.793,141.077L54.758,141.44L54.724,141.804L54.691,142.169L54.659,142.533L54.628,142.898L54.598,143.264L54.57,143.629L54.543,143.995L54.516,144.361L54.491,144.728L54.468,145.095L54.445,145.462L54.423,145.83L54.403,146.198L54.384,146.566L54.365,146.935L54.348,147.304L54.333,147.673L54.318,148.042L54.305,148.412L54.292,148.782L54.281,149.153L54.271,149.523L54.262,149.894L54.255,150.266L54.248,150.637L54.243,151.009L54.239,151.382L54.236,151.754L54.234,152.127L54.233,152.5L54.234,152.873L54.236,153.246L54.239,153.618L54.243,153.991L54.248,154.363L54.255,154.734L54.262,155.106L54.271,155.477L54.281,155.847L54.292,156.218L54.305,156.588L54.318,156.958L54.333,157.327L54.348,157.696L54.365,158.065L54.384,158.434L54.403,158.802L54.423,159.17L54.445,159.538L54.468,159.905L54.491,160.272L54.516,160.639L54.543,161.005L54.57,161.371L54.598,161.736L54.628,162.102L54.659,162.467L54.691,162.831L54.724,163.196L54.758,163.56L54.793,163.923L54.829,164.287L54.867,164.65L54.905,165.012L54.945,165.375L54.986,165.737L55.028,166.098L55.071,166.459L55.115,166.82L55.16,167.181L55.207,167.541L55.254,167.901L55.303,168.26L55.353,168.619L55.404,168.978L55.456,169.337L55.509,169.695L55.563,170.052L55.618,170.41L55.674,170.766L55.732,171.123L55.79,171.479L55.85,171.835L55.911,172.191L55.972,172.546L56.035,172.9L56.099,173.255L56.164,173.609L56.23,173.962L56.297,174.315L56.366,174.668L56.435,175.02L56.505,175.373L56.577,175.724L56.649,176.075L56.723,176.426L56.798,176.777L56.873,177.127L56.95,177.476L57.028,177.826L57.107,178.174L57.187,178.523L57.268,178.871L57.35,179.219L57.433,179.566L57.517,179.913L57.602,180.259L57.688,180.605L57.776,180.951L57.864,181.296L57.953,181.641L58.044,181.985L58.135,182.329L58.228,182.672L58.321,183.015L58.416,183.358L58.511,183.7L58.608,184.042L58.706,184.383L58.804,184.724L58.904,185.065L59.005,185.405L59.106,185.745L59.209,186.084L59.313,186.423L59.417,186.761L59.523,187.099L59.63,187.436L59.738,187.773L59.847,188.11L59.956,188.446L60.067,188.781L60.179,189.116L60.292,189.451L60.405,189.785L60.52,190.119L60.636,190.453L60.753,190.785L60.871,191.118L60.989,191.45L61.109,191.781L61.23,192.112L61.351,192.443L61.474,192.773L61.598,193.103L61.722,193.432L61.848,193.76L61.975,194.088L62.102,194.416L62.231,194.743L62.36,195.07L62.491,195.396L62.622,195.722L62.755,196.047L62.888,196.372L63.022,196.696L63.158,197.02L63.294,197.343L63.431,197.666L63.569,197.988L63.708,198.31L63.848,198.631L63.989,198.952L64.131,199.272L64.274,199.592L64.418,199.911L64.563,200.23L64.709,200.548L64.855,200.866L65.003,201.183L65.151,201.5L65.301,201.816L65.451,202.132L65.603,202.447L65.755,202.761L65.908,203.075L66.062,203.389L66.217,203.702L66.373,204.014L66.53,204.326L66.688,204.638L66.846,204.948L67.006,205.259L67.167,205.568L67.328,205.878L67.49,206.186L67.654,206.494L67.818,206.802L67.983,207.109L68.149,207.415L68.316,207.721L68.483,208.027L68.652,208.332L68.822,208.636L68.992,208.939L69.164,209.243L69.336,209.545L69.509,209.847L69.683,210.148L69.858,210.449L70.034,210.75L70.21,211.049L70.388,211.348L70.566,211.647L70.745,211.945L70.926,212.242L71.107,212.539L71.289,212.835L71.471,213.131L71.655,213.426L71.839,213.72L72.025,214.014L72.211,214.307L72.398,214.6L72.586,214.892L72.775,215.184L72.964,215.475L73.155,215.765L73.346,216.054L73.539,216.343L73.732,216.632L73.925,216.92L74.12,217.207L74.316,217.494L74.512,217.78L74.709,218.065L74.908,218.35L75.106,218.634L75.306,218.917L75.507,219.2L75.708,219.482L75.911,219.764L76.114,220.045L76.318,220.325L76.522,220.605L76.728,220.884L76.934,221.163L77.141,221.441L77.349,221.718L77.558,221.994L77.768,222.27L77.978,222.545L78.189,222.82L78.401,223.094L78.614,223.367L78.828,223.64L79.042,223.912L79.258,224.183L79.474,224.454L79.691,224.724L79.908,224.993L80.127,225.262L80.346,225.53L80.566,225.797L80.787,226.064L81.008,226.33L81.231,226.595L81.454,226.86L81.678,227.124L81.902,227.387L82.128,227.65L82.354,227.912L82.581,228.173L82.809,228.434L83.037,228.694L83.267,228.953L83.497,229.211L83.728,229.469L83.959,229.726L84.192,229.983L84.425,230.238L84.659,230.493L84.893,230.748L85.129,231.001L85.365,231.254L85.602,231.506L85.839,231.758L86.078,232.009L86.317,232.259L86.557,232.508L86.797,232.756L87.039,233.004L87.281,233.252L87.523,233.498L87.767,233.744L88.011,233.989L88.256,234.233L88.502,234.477L88.748,234.719L88.996,234.961L89.244,235.203L89.492,235.443L89.741,235.683L89.992,235.922L90.242,236.161L90.494,236.398L90.746,236.635L90.999,236.871L91.253,237.107L91.507,237.341L91.762,237.575L92.017,237.808L92.274,238.041L92.531,238.272L92.789,238.503L93.047,238.733L93.306,238.963L93.566,239.191L93.827,239.419L94.088,239.646L94.35,239.872L94.613,240.098L94.876,240.322L95.14,240.546L95.405,240.769L95.67,240.992L95.936,241.213L96.203,241.434L96.47,241.654L96.738,241.873L97.007,242.092L97.276,242.31L97.546,242.526L97.817,242.742L98.088,242.958L98.36,243.172L98.633,243.386L98.906,243.599L99.18,243.81L99.455,244.022L99.73,244.232L100.006,244.442L100.282,244.651L100.559,244.859L100.837,245.066L101.116,245.272L101.395,245.478L101.674,245.682L101.955,245.886L102.236,246.089L102.518,246.292L102.8,246.493L103.083,246.694L103.366,246.894L103.65,247.092L103.935,247.291L104.22,247.488L104.506,247.684L104.793,247.88L105.08,248.074L105.368,248.268L105.657,248.461L105.946,248.654L106.235,248.845L106.525,249.036L106.816,249.225L107.108,249.414L107.4,249.602L107.693,249.789L107.986,249.975L108.28,250.161L108.574,250.345L108.869,250.529L109.165,250.711L109.461,250.893L109.758,251.074L110.055,251.255L110.353,251.434L110.652,251.612L110.951,251.79L111.25,251.966L111.551,252.142L111.852,252.317L112.153,252.491L112.455,252.664L112.758,252.837L113.061,253.008L113.364,253.178L113.669,253.348L113.973,253.516L114.279,253.684L114.585,253.851L114.891,254.017L115.198,254.182L115.506,254.346L115.814,254.51L116.122,254.672L116.432,254.833L116.741,254.994L117.052,255.154L117.363,255.312L117.674,255.47L117.986,255.627L118.298,255.783L118.611,255.938L118.925,256.092L119.239,256.245L119.553,256.398L119.868,256.549L120.184,256.699L120.5,256.849L120.817,256.997L121.134,257.145L121.452,257.292L121.77,257.437L122.089,257.582L122.408,257.726L122.728,257.869L123.048,258.011L123.369,258.152L123.69,258.292L124.012,258.431L124.334,258.569L124.657,258.706L124.98,258.842L125.304,258.978L125.628,259.112L125.953,259.245L126.278,259.378L126.604,259.509L126.93,259.64L127.257,259.769L127.584,259.898L127.911,260.025L128.24,260.152L128.568,260.278L128.897,260.402L129.227,260.526L129.557,260.649L129.888,260.77L130.219,260.891L130.55,261.011L130.882,261.13L131.215,261.247L131.547,261.364L131.881,261.48L132.215,261.595L132.549,261.708L132.884,261.821L133.219,261.933L133.554,262.044L133.891,262.154L134.227,262.262L134.564,262.37L134.901,262.477L135.239,262.583L135.577,262.687L135.916,262.791L136.255,262.894L136.595,262.995L136.935,263.096L137.276,263.196L137.616,263.294L137.958,263.392L138.3,263.489L138.642,263.584L138.984,263.679L139.328,263.772L139.671,263.865L140.015,263.956L140.359,264.047L140.704,264.136L141.049,264.224L141.395,264.311L141.741,264.398L142.087,264.483L142.434,264.567L142.781,264.65L143.129,264.732L143.477,264.813L143.826,264.893L144.174,264.972L144.524,265.05L144.873,265.127L145.223,265.202L145.574,265.277L145.925,265.351L146.276,265.423L146.627,265.495L146.98,265.565L147.332,265.634L147.684,265.703L148.038,265.77L148.391,265.836L148.745,265.901L149.1,265.965L149.454,266.028L149.81,266.089L150.165,266.15L150.521,266.21L150.877,266.268L151.234,266.326L151.59,266.382L151.948,266.437L152.306,266.491L152.663,266.544L153.022,266.596L153.381,266.647L153.74,266.697L154.099,266.746L154.459,266.793L154.819,266.84L155.18,266.885L155.541,266.929L155.902,266.972L156.264,267.014L156.625,267.055L156.988,267.095L157.35,267.133L157.713,267.171L158.077,267.207L158.44,267.242L158.804,267.276L159.169,267.309L159.533,267.341L159.898,267.372L160.263,267.402L160.629,267.43L160.995,267.457L161.361,267.484L161.728,267.509L162.095,267.532L162.462,267.555L162.83,267.577L163.198,267.597L163.566,267.616L163.935,267.635L164.304,267.651L164.673,267.667L165.042,267.682L165.412,267.695L165.782,267.708L166.153,267.719L166.523,267.729L166.894,267.738L167.266,267.745L167.638,267.752L168.009,267.757L168.381,267.761L168.754,267.764L169.127,267.766L169.5,267.767L169.873,267.766L170.246,267.764L170.619,267.761L170.991,267.757L171.362,267.752L171.734,267.745L172.106,267.738L172.477,267.729L172.847,267.719L173.218,267.708L173.588,267.695L173.958,267.682L174.327,267.667L174.696,267.651L175.065,267.635L175.434,267.616L175.802,267.597L176.17,267.577L176.538,267.555L176.905,267.532L177.272,267.509L177.639,267.484L178.005,267.457L178.371,267.43L178.737,267.402L179.102,267.372L179.467,267.341L179.831,267.309L180.196,267.276L180.56,267.242L180.923,267.207L181.287,267.171L181.65,267.133L182.012,267.095L182.375,267.055L182.736,267.014L183.098,266.972L183.459,266.929L183.82,266.885L184.181,266.84L184.541,266.793L184.901,266.746L185.26,266.697L185.619,266.647L185.978,266.596L186.337,266.544L186.694,266.491L187.052,266.437L187.41,266.382L187.766,266.326L188.123,266.268L188.479,266.21L188.835,266.15L189.19,266.089L189.546,266.028L189.9,265.965L190.255,265.901L190.609,265.836L190.962,265.77L191.316,265.703L191.668,265.634L192.02,265.565L192.373,265.495L192.724,265.423L193.075,265.351L193.426,265.277L193.777,265.202L194.127,265.127L194.476,265.05L194.826,264.972L195.174,264.893L195.523,264.813L195.871,264.732L196.219,264.65L196.566,264.567L196.913,264.483L197.259,264.398L197.605,264.311L197.951,264.224L198.296,264.136L198.641,264.047L198.985,263.956L199.329,263.865L199.672,263.772L200.016,263.679L200.358,263.584L200.7,263.489L201.042,263.392L201.384,263.294L201.724,263.196L202.065,263.096L202.405,262.995L202.745,262.894L203.084,262.791L203.423,262.687L203.761,262.583L204.099,262.477L204.436,262.37L204.773,262.262L205.109,262.154L205.446,262.044L205.781,261.933L206.116,261.821L206.451,261.708L206.785,261.595L207.119,261.48L207.453,261.364L207.785,261.247L208.118,261.13L208.45,261.011L208.781,260.891L209.112,260.77L209.443,260.649L209.773,260.526L210.103,260.402L210.432,260.278L210.76,260.152L211.089,260.025L211.416,259.898L211.743,259.769L212.07,259.64L212.396,259.509L212.722,259.378L213.047,259.246L213.372,259.112L213.696,258.978L214.02,258.842L214.343,258.706L214.666,258.569L214.988,258.431L215.31,258.292L215.631,258.152L215.952,258.011L216.272,257.869L216.592,257.726L216.911,257.582L217.23,257.437L217.548,257.292L217.866,257.145L218.183,256.997L218.5,256.849L218.816,256.699L219.132,256.549L219.447,256.398L219.761,256.245L220.075,256.092L220.389,255.938L220.702,255.783L221.014,255.627L221.326,255.47L221.638,255.312L221.948,255.154L222.259,254.994L222.568,254.833L222.878,254.672L223.186,254.51L223.494,254.346L223.802,254.182L224.109,254.017L224.415,253.851L224.721,253.684L225.027,253.516L225.331,253.348L225.636,253.178L225.939,253.008L226.242,252.837L226.545,252.664L226.847,252.491L227.148,252.317L227.449,252.142L227.75,251.966L228.049,251.79L228.348,251.612L228.647,251.434L228.945,251.255L229.242,251.074L229.539,250.893L229.835,250.711L230.131,250.529L230.426,250.345L230.72,250.161L231.014,249.975L231.307,249.789L231.6,249.602L231.892,249.414L232.184,249.225L232.475,249.036L232.765,248.845L233.054,248.654L233.343,248.462L233.632,248.268L233.92,248.074L234.207,247.88L234.494,247.684L234.78,247.488L235.065,247.291L235.35,247.092L235.634,246.894L235.917,246.694L236.2,246.493L236.482,246.292L236.764,246.089L237.045,245.886L237.326,245.682L237.605,245.478L237.884,245.272L238.163,245.066L238.441,244.859L238.718,244.651L238.994,244.442L239.27,244.232L239.545,244.022L239.82,243.81L240.094,243.599L240.367,243.386L240.64,243.172L240.912,242.958L241.183,242.742L241.454,242.526L241.724,242.31L241.993,242.092L242.262,241.873L242.53,241.654L242.797,241.434L243.064,241.213L243.33,240.992L243.595,240.769L243.86,240.546L244.124,240.322L244.387,240.098L244.65,239.872L244.912,239.646L245.173,239.419L245.434,239.191L245.694,238.963L245.953,238.733L246.211,238.503L246.469,238.272L246.726,238.041L246.983,237.808L247.238,237.575L247.493,237.341L247.748,237.107L248.001,236.871L248.254,236.635L248.506,236.398L248.758,236.161L249.008,235.922L249.259,235.683L249.508,235.443L249.756,235.203L250.004,234.961L250.252,234.719L250.498,234.477L250.744,234.233L250.989,233.989L251.233,233.744L251.477,233.498L251.719,233.252L251.961,233.004L252.203,232.756L252.443,232.508L252.683,232.259L252.922,232.008L253.161,231.758L253.398,231.506L253.635,231.254L253.871,231.001L254.107,230.748L254.341,230.493L254.575,230.238L254.808,229.983L255.041,229.726L255.272,229.469L255.503,229.211L255.733,228.953L255.963,228.694L256.191,228.434L256.419,228.173L256.646,227.912L256.872,227.65L257.098,227.387L257.322,227.124L257.546,226.86L257.769,226.595L257.992,226.33L258.213,226.064L258.434,225.797L258.654,225.53L258.873,225.262L259.092,224.993L259.31,224.724L259.526,224.454L259.742,224.183L259.958,223.912L260.172,223.64L260.386,223.367L260.599,223.094L260.81,222.82L261.022,222.545L261.232,222.27L261.442,221.994L261.651,221.718L261.859,221.441L262.066,221.163L262.272,220.884L262.478,220.605L262.682,220.326L262.886,220.045L263.089,219.764L263.292,219.482L263.493,219.2L263.694,218.917L263.894,218.634L264.092,218.35L264.291,218.065L264.488,217.78L264.684,217.494L264.88,217.207L265.074,216.92L265.268,216.632L265.462,216.343L265.654,216.054L265.845,215.765L266.036,215.475L266.225,215.184L266.414,214.892L266.602,214.6L266.789,214.307L266.975,214.014L267.161,213.72L267.345,213.426L267.529,213.131L267.711,212.835L267.893,212.539L268.074,212.242L268.255,211.945L268.434,211.647L268.612,211.348L268.79,211.049L268.966,210.75L269.142,210.449L269.317,210.148L269.491,209.847L269.664,209.545L269.837,209.242L270.008,208.939L270.178,208.636L270.348,208.331L270.516,208.027L270.684,207.721L270.851,207.415L271.017,207.109L271.182,206.802L271.346,206.494L271.51,206.186L271.672,205.878L271.833,205.568L271.994,205.259L272.154,204.948L272.312,204.638L272.47,204.326L272.627,204.014L272.783,203.702L272.938,203.389L273.092,203.075L273.245,202.761L273.398,202.447L273.549,202.132L273.699,201.816L273.849,201.5L273.997,201.183L274.145,200.866L274.292,200.548L274.437,200.23L274.582,199.911L274.726,199.592L274.869,199.272L275.011,198.952L275.152,198.631L275.292,198.31L275.431,197.988L275.569,197.666L275.706,197.343L275.842,197.02L275.978,196.696L276.112,196.372L276.246,196.047L276.378,195.722L276.509,195.396L276.64,195.07L276.769,194.743L276.898,194.416L277.025,194.089L277.152,193.76L277.278,193.432L277.402,193.103L277.526,192.773L277.649,192.443L277.77,192.112L277.891,191.781L278.011,191.45L278.13,191.118L278.247,190.785L278.364,190.453L278.48,190.119L278.595,189.785L278.708,189.451L278.821,189.116L278.933,188.781L279.044,188.446L279.154,188.109L279.262,187.773L279.37,187.436L279.477,187.099L279.583,186.761L279.687,186.423L279.791,186.084L279.894,185.745L279.995,185.405L280.096,185.065L280.196,184.724L280.294,184.384L280.392,184.042L280.489,183.7L280.584,183.358L280.679,183.016L280.772,182.672L280.865,182.329L280.956,181.985L281.047,181.641L281.136,181.296L281.224,180.951L281.311,180.605L281.398,180.259L281.483,179.913L281.567,179.566L281.65,179.219L281.732,178.871L281.813,178.523L281.893,178.174L281.972,177.826L282.05,177.476L282.127,177.127L282.202,176.777L282.277,176.426L282.351,176.075L282.423,175.724L282.495,175.373L282.565,175.02L282.634,174.668L282.703,174.316L282.77,173.962L282.836,173.609L282.901,173.255L282.965,172.9L283.028,172.546L283.089,172.19L283.15,171.835L283.21,171.479L283.268,171.123L283.326,170.766L283.382,170.41L283.437,170.052L283.491,169.694L283.544,169.337L283.596,168.978L283.647,168.619L283.697,168.26L283.746,167.901L283.793,167.541L283.84,167.181L283.885,166.82L283.929,166.459L283.972,166.098L284.014,165.736L284.055,165.375L284.095,165.012L284.133,164.65L284.171,164.287L284.207,163.923L284.242,163.56L284.276,163.196L284.309,162.831L284.341,162.467L284.372,162.102L284.402,161.737L284.43,161.371L284.457,161.005L284.484,160.639L284.509,160.272L284.532,159.905L284.555,159.538L284.577,159.17L284.597,158.802L284.616,158.434L284.635,158.065L284.651,157.696L284.667,157.327L284.682,156.958L284.695,156.588L284.708,156.218L284.719,155.847L284.729,155.477L284.738,155.106L284.745,154.734L284.752,154.362L284.757,153.991L284.761,153.619L284.764,153.246L284.766,152.873L284.767,152.5L284.766,152.127L284.764,151.754L284.761,151.381L284.757,151.009L284.752,150.638L284.745,150.266L284.738,149.894L284.729,149.523L284.719,149.153L284.708,148.782L284.695,148.412L284.682,148.042L284.667,147.673L284.651,147.304L284.635,146.935L284.616,146.566L284.597,146.198L284.577,145.83L284.555,145.462L284.532,145.095L284.509,144.728L284.484,144.361L284.457,143.995L284.43,143.629L284.402,143.263L284.372,142.898L284.341,142.533L284.309,142.169L284.276,141.804L284.242,141.44L284.207,141.077L284.171,140.713L284.133,140.35L284.095,139.988L284.055,139.625L284.014,139.264L283.972,138.902L283.929,138.541L283.885,138.18L283.84,137.819L283.793,137.459L283.746,137.099L283.697,136.74L283.647,136.381L283.596,136.022L283.544,135.663L283.491,135.306L283.437,134.948L283.382,134.59L283.326,134.234L283.268,133.877L283.21,133.521L283.15,133.165L283.089,132.81L283.028,132.454L282.965,132.1L282.901,131.745L282.836,131.391L282.77,131.038L282.703,130.684L282.634,130.332L282.565,129.98L282.495,129.627L282.423,129.276L282.351,128.925L282.277,128.574L282.202,128.223L282.127,127.873L282.05,127.524L281.972,127.174L281.893,126.826L281.813,126.477L281.732,126.129L281.65,125.781L281.567,125.434L281.483,125.087L281.398,124.741L281.311,124.395L281.224,124.049L281.136,123.704L281.047,123.359L280.956,123.015L280.865,122.671L280.772,122.328L280.679,121.984L280.584,121.642L280.489,121.3L280.392,120.958L280.294,120.616L280.196,120.276L280.096,119.935L279.995,119.595L279.894,119.255L279.791,118.916L279.687,118.577L279.583,118.239L279.477,117.901L279.37,117.564L279.262,117.227L279.154,116.891L279.044,116.554L278.933,116.219L278.821,115.884L278.708,115.549L278.595,115.215L278.48,114.881L278.364,114.547L278.247,114.215L278.13,113.882L278.011,113.55L277.891,113.219L277.77,112.888L277.649,112.557L277.526,112.227L277.402,111.897L277.278,111.568L277.152,111.24L277.025,110.911L276.898,110.584L276.769,110.257L276.64,109.93L276.509,109.604L276.378,109.278L276.245,108.953L276.112,108.628L275.978,108.304L275.842,107.98L275.706,107.657L275.569,107.334L275.431,107.012L275.292,106.69L275.152,106.369L275.011,106.048L274.869,105.728L274.726,105.408L274.582,105.089L274.437,104.77L274.292,104.452L274.145,104.134L273.997,103.817L273.849,103.5L273.699,103.184L273.549,102.868L273.398,102.553L273.245,102.239L273.092,101.925L272.938,101.611L272.783,101.298L272.627,100.986L272.47,100.674L272.312,100.363L272.154,100.052L271.994,99.741L271.833,99.432L271.672,99.122L271.51,98.814L271.346,98.506L271.182,98.198L271.017,97.891L270.851,97.585L270.684,97.279L270.516,96.973L270.348,96.669L270.178,96.364L270.008,96.061L269.837,95.758L269.664,95.455L269.491,95.153L269.317,94.852L269.142,94.551L268.966,94.25L268.79,93.951L268.612,93.652L268.434,93.353L268.255,93.055L268.074,92.758L267.893,92.461L267.711,92.165L267.529,91.869L267.345,91.574L267.161,91.28L266.975,90.986L266.789,90.693L266.602,90.4L266.414,90.108L266.225,89.816L266.036,89.525L265.845,89.235L265.654,88.946L265.461,88.657L265.268,88.368L265.074,88.08L264.88,87.793L264.684,87.506L264.488,87.22L264.291,86.935L264.092,86.65L263.894,86.366L263.694,86.083L263.493,85.8L263.292,85.518L263.089,85.236L262.886,84.955L262.682,84.674L262.478,84.395L262.272,84.116L262.066,83.837L261.859,83.559L261.651,83.282L261.442,83.006L261.232,82.73L261.022,82.455L260.81,82.18L260.599,81.906L260.386,81.633L260.172,81.36L259.958,81.088L259.742,80.817L259.526,80.546L259.31,80.276L259.092,80.007L258.873,79.738L258.654,79.47L258.434,79.203L258.213,78.936L257.992,78.67L257.769,78.405L257.546,78.14L257.322,77.876L257.098,77.613L256.872,77.35L256.646,77.088L256.419,76.827L256.191,76.566L255.963,76.306L255.733,76.047L255.503,75.789L255.272,75.531L255.041,75.274L254.808,75.017L254.575,74.762L254.341,74.507L254.107,74.253L253.871,73.999L253.635,73.746L253.398,73.494L253.161,73.242L252.922,72.992L252.683,72.741L252.443,72.492L252.203,72.244L251.961,71.996L251.719,71.748L251.477,71.502L251.233,71.256L250.989,71.011L250.744,70.767L250.498,70.523L250.252,70.281L250.004,70.039L249.756,69.797L249.508,69.557L249.259,69.317L249.009,69.078L248.758,68.839L248.506,68.602L248.254,68.365L248.001,68.129L247.748,67.893L247.493,67.659L247.238,67.425L246.983,67.192L246.726,66.959L246.469,66.728L246.211,66.497L245.953,66.267L245.694,66.037L245.434,65.809L245.173,65.581L244.912,65.354L244.65,65.128L244.387,64.902L244.124,64.678L243.86,64.454L243.595,64.231L243.33,64.008L243.064,63.787L242.797,63.566L242.53,63.346L242.262,63.127L241.993,62.908L241.724,62.691L241.454,62.474L241.183,62.258L240.912,62.042L240.64,61.828L240.367,61.614L240.094,61.401L239.82,61.189L239.545,60.978L239.27,60.768L238.994,60.558L238.718,60.349L238.441,60.141L238.163,59.934L237.884,59.728L237.605,59.522L237.325,59.318L237.045,59.114L236.764,58.911L236.482,58.708L236.2,58.507L235.917,58.306L235.634,58.106L235.35,57.908L235.065,57.709L234.78,57.512L234.494,57.316L234.207,57.12L233.92,56.925L233.632,56.732L233.343,56.539L233.054,56.346L232.765,56.155L232.475,55.964L232.184,55.775L231.892,55.586L231.6,55.398L231.307,55.211L231.014,55.025L230.72,54.839L230.426,54.655L230.131,54.471L229.835,54.289L229.539,54.107L229.242,53.926L228.945,53.745L228.647,53.566L228.348,53.388L228.049,53.21L227.75,53.034L227.449,52.858L227.148,52.683L226.847,52.509L226.545,52.336L226.243,52.164L225.939,51.992L225.636,51.822L225.332,51.652L225.027,51.483L224.721,51.316L224.415,51.149L224.109,50.983L223.802,50.818L223.494,50.654L223.186,50.49L222.878,50.328L222.568,50.167L222.259,50.006L221.948,49.846L221.638,49.688L221.326,49.53L221.014,49.373L220.702,49.217L220.389,49.062L220.075,48.908L219.761,48.755L219.447,48.603L219.132,48.451L218.816,48.301L218.5,48.151L218.183,48.003L217.866,47.855L217.548,47.709L217.23,47.563L216.911,47.418L216.592,47.274L216.272,47.131L215.952,46.989L215.631,46.848L215.31,46.708L214.988,46.569L214.666,46.431L214.343,46.294L214.02,46.158L213.696,46.022L213.372,45.888L213.047,45.755L212.722,45.622L212.396,45.491L212.07,45.36L211.743,45.231L211.416,45.102L211.088,44.975L210.76,44.848L210.432,44.722L210.103,44.598L209.773,44.474L209.443,44.351L209.112,44.23L208.781,44.109L208.45,43.989L208.118,43.871L207.785,43.753L207.453,43.636L207.119,43.52L206.785,43.405L206.451,43.292L206.116,43.179L205.781,43.067L205.446,42.956L205.11,42.847L204.773,42.738L204.436,42.63L204.099,42.523L203.761,42.417L203.423,42.313L203.084,42.209L202.745,42.106L202.405,42.005L202.065,41.904L201.724,41.804L201.383,41.706L201.042,41.608L200.7,41.511L200.358,41.416L200.015,41.321L199.672,41.228L199.329,41.135L198.985,41.044L198.641,40.953L198.296,40.864L197.951,40.776L197.605,40.688L197.259,40.602L196.913,40.517L196.566,40.433L196.219,40.35L195.871,40.268L195.523,40.187L195.174,40.107L194.826,40.028L194.476,39.95L194.127,39.873L193.777,39.798L193.426,39.723L193.075,39.649L192.724,39.577L192.373,39.505L192.02,39.435L191.668,39.366L191.315,39.297L190.962,39.23L190.609,39.164L190.255,39.099L189.9,39.035L189.546,38.972L189.191,38.911L188.835,38.85L188.479,38.79L188.123,38.732L187.766,38.674L187.41,38.618L187.052,38.563L186.695,38.509L186.337,38.456L185.978,38.404L185.619,38.353L185.26,38.303L184.901,38.254L184.541,38.207L184.181,38.16L183.82,38.115L183.459,38.071L183.098,38.028L182.737,37.986L182.375,37.945L182.012,37.905L181.65,37.867L181.287,37.829L180.923,37.793L180.56,37.758L180.196,37.724L179.831,37.691L179.467,37.659L179.102,37.628L178.736,37.598L178.371,37.57L178.005,37.543L177.639,37.516L177.272,37.491L176.905,37.468L176.538,37.445L176.17,37.423L175.802,37.403L175.434,37.384L175.065,37.365L174.696,37.348L174.327,37.333L173.958,37.318L173.588,37.305L173.218,37.292L172.847,37.281L172.477,37.271L172.106,37.262L171.734,37.255L171.363,37.248L170.991,37.243L170.618,37.239L170.246,37.236L169.873,37.234L169.5,37.233L169.127,37.234Z" style="fill:rgb(235,235,235);"/> + </g> + <g transform="matrix(6.12323e-17,1,-1,6.12323e-17,347,-59)"> + <path d="M209,82L317,253L101,253L209,82Z" style="fill:rgb(235,235,235);"/> + </g> + </g> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/images/safari.png b/src/main/webapp/static/js/paella/player/resources/images/safari.png new file mode 100644 index 0000000000000000000000000000000000000000..b6386e55bd9adabeaa82245e22d75e01c02105b9 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/images/safari.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_anonymous.png b/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_anonymous.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c967d4709c3d6cb0af45bc5c115694456ddab9 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_anonymous.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_lock.png b/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab405918362fa610018c1f3c7a4453fcce65826 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/caption_mlangs_lock.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/chroma.svg b/src/main/webapp/static/js/paella/player/resources/style/chroma.svg new file mode 100644 index 0000000000000000000000000000000000000000..d4cb86b038d9f9ccfd35911bbe32034d0c3664d4 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/chroma.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 62 38" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M39.995,6.011L36.995,6.011L36.995,35L0,35L0,0L39.995,0L39.995,6.011ZM21.902,22.75L27.55,31.204C27.779,31.731 27.903,32.517 27.469,32.677C26.862,32.902 26.331,32.875 26.083,32.501L20.643,24.32L15.077,32.501C14.46,33.088 13.819,32.999 13.564,32.8C13.312,32.603 13.116,32.088 13.609,31.204L19.045,22.75L5.714,22.75L5.714,5.25L3.809,5.25L3.809,3.5L36.186,3.5L36.186,5.25L34.281,5.25L34.281,22.75L21.902,22.75ZM7.618,5.25L32.377,5.25L32.377,21L7.618,21L7.618,5.25ZM17.138,10.589L10.031,18.205L9.329,17.658L17.11,9.319L22.161,14.017L29.124,7.666L29.777,8.262L22.16,15.209L17.138,10.589Z"/> + <path d="M61.408,23.971C61.73,23.971 61.991,24.233 61.991,24.555L61.991,25.424C61.991,25.746 61.73,26.008 61.408,26.008L55.016,26.008L55.016,37.092L45.973,37.092L45.973,26.008L39.569,26.008C39.247,26.008 38.985,25.746 38.985,25.424L38.985,24.555C38.985,24.233 39.247,23.971 39.569,23.971L61.408,23.971ZM58.967,23.034L42.049,23.034C42.049,23.034 42.579,18.294 43.326,17.001C44.072,15.708 47.786,15.663 47.786,15.663C47.786,15.663 48.725,19.01 48.954,19.648C49.183,20.285 49.31,20.361 49.31,20.361C49.31,20.361 49.726,17.21 49.827,16.882C49.903,16.636 50.402,16.607 50.508,16.607C50.614,16.607 51.112,16.623 51.189,16.87C51.29,17.198 51.869,20.433 51.869,20.433C51.869,20.433 51.917,20.285 52.146,19.648C52.376,19.01 53.23,15.663 53.23,15.663C53.23,15.663 56.944,15.708 57.69,17.001C58.436,18.294 58.967,23.031 58.967,23.034ZM51.791,15.663C51.861,15.902 50.911,16.419 50.911,16.419L50.151,16.403C50.151,16.403 49.139,15.902 49.209,15.663C49.273,15.442 50.14,15.467 50.5,15.464C50.862,15.467 51.727,15.442 51.791,15.663ZM50.5,8.7C52.464,8.7 54.058,10.081 54.058,11.782C54.058,13.484 52.464,14.865 50.5,14.865C48.536,14.865 46.942,13.484 46.942,11.782C46.942,10.081 48.536,8.7 50.5,8.7Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/default_background.jpg b/src/main/webapp/static/js/paella/player/resources/style/default_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb8c19933662de96b89eed218849222a73b4237 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/default_background.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/default_background_paella.jpg b/src/main/webapp/static/js/paella/player/resources/style/default_background_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ef5f20f725889cb38b37b8e48ae63d8c88c05f1 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/default_background_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.eot b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.eot new file mode 100755 index 0000000000000000000000000000000000000000..28e54c9f98da55c9cf226d597311b66f2566b433 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.eot differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.svg b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.svg new file mode 100755 index 0000000000000000000000000000000000000000..bc1e07d5290e083d2e4522102504d2f48edcab08 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.svg @@ -0,0 +1,561 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="icomoon" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode=" " horiz-adv-x="512" d="" /> +<glyph unicode="" glyph-name="mini-camera" horiz-adv-x="1280" d="M1184-64c48.768 0 96 48.832 96 96v640c0 47.104-47.232 96-96 96h-224v96c0 58.88-35.008 96-96 96h-448c-60.928 0-96-37.12-96-96 0-58.944 0-96 0-96h-224c-48.704 0-96-48.896-96-96v-640c0-47.168 47.296-96 96-96h1088zM640 704c182.848 0 320-143.296 320-320 0-176.768-137.152-320-320-320-182.784 0-320 143.232-320 320 0 176.704 137.216 320 320 320z" /> +<glyph unicode="" glyph-name="captions" horiz-adv-x="1248" d="M535.712 122.144c-150.976 6.784-343.168 23.392-343.168 23.392-97.504 0-176.576 64.928-176.576 144.992 0 0-16 172.64-16 255.648 0 74.944 16 242.56 16 242.56 0 80.064 79.072 144.992 176.576 144.992 0 0 287.616 26.24 431.424 26.24 56.16 0 134.304-3.968 208.64-8.864 115.968-7.616 222.784-17.376 222.784-17.376 97.504 0 176.576-64.928 176.576-144.992 0 0 16.032-166.048 16.032-249.088 0-83.072-16.032-249.12-16.032-249.12 0-80.064-79.072-144.992-176.576-144.992 0 0-198.624-18.848-343.712-24.608l-87.68-167.808-88.288 169.024zM1099.072 317.216h-970.4v-103.616h970.4v103.616zM1099.072 454.24h-970.4v-103.648h970.4v103.648zM1099.072 591.264h-970.4v-103.648h970.4v103.648zM1099.072 728.288h-970.4v-103.648h970.4v103.648zM1099.072 865.312h-970.4v-103.648h970.4v103.648z" /> +<glyph unicode="" glyph-name="paintbrush" horiz-adv-x="1229" d="M1103.312 746.615c-57.405-64.893-214.512-244.095-339.292-386.46l-158.618 149.851c143.512 118.811 320.862 265.707 384.914 318.33 114.205 93.597 214.21 149.344 235.964 126.578 13.596-12.663-22.66-94.441-122.967-208.299zM736.224 328.609c-48.341-55.156-89.733-102.602-115.414-131.672l-187.623 170.281c30.515 25.214 81.273 67.201 139.886 115.828l163.15-154.438zM593.014 164.998v0.507c-109.069-389.246-592.779-165.525-592.779-165.525s203.031-23.92 203.031 152.608c0 171.041 186.414 186.462 197.895 187.25l192.155-174.389c0-0.028-0.302-0.45-0.302-0.45z" /> +<glyph unicode="" glyph-name="airplay" horiz-adv-x="1244" d="M1005.884-26.963h-767.098l383.549 411.128 383.549-411.128zM1243.21 192.902h-341.724l-55.852 73.057h324.446v620.984h-1095.854v-620.984h324.446l-55.852-73.057h-342.82v767.098h1243.21v-767.098z" /> +<glyph unicode="" glyph-name="arrow-down" horiz-adv-x="1365" d="M682.667-63.999l682.667 1024h-1365.333l682.667-1024z" /> +<glyph unicode="" glyph-name="arrow-left" horiz-adv-x="768" d="M0 448l768-512v1024l-768-512z" /> +<glyph unicode="" glyph-name="arrow-right" horiz-adv-x="768" d="M767.999 448l-768 512v-1024l768 512z" /> +<glyph unicode="" glyph-name="arrow-up" horiz-adv-x="1365" d="M682.667 960l-682.667-1024h1365.333l-682.667 1024z" /> +<glyph unicode="" glyph-name="back-10-s" horiz-adv-x="892" d="M243.25 745.951c59.954 31.876 128.529 49.978 201.398 49.978 234.793 0 425.125-187.755 425.125-419.411 0-231.622-190.332-419.378-425.125-419.378-165.987 0-309.777 93.878-379.772 230.73l0.297 1.156 57.575 25.963c59.954-117.165 183.032-197.533 325.17-197.533 201.001 0 363.982 160.768 363.982 359.061 0 198.326-162.981 359.094-363.982 359.094-63.95 0-124.069-16.285-176.293-44.858l141.279-127.141h-412.903l214.71 396.387 28.54-214.049zM109.17 286.875h-32.851v199.301c-7.902-7.18-18.255-14.36-31.095-21.54-12.804-7.215-24.327-12.583-34.534-16.173v30.219c18.364 8.226 34.388 18.194 48.143 29.906 13.718 11.676 23.449 23.039 29.156 34.053h21.181v-255.766zM193.237 412.492c0 30.115 3.256 54.374 9.768 72.707 6.512 18.369 16.169 32.52 28.973 42.488 12.84 9.969 28.973 14.953 48.435 14.953 14.34 0 26.925-2.754 37.753-8.261s19.755-13.419 26.815-23.806c7.060-10.352 12.584-23.004 16.572-37.887 4.024-14.883 6.036-34.96 6.036-60.195 0-29.906-3.219-54.025-9.658-72.359-6.439-18.369-16.096-32.555-28.9-42.593-12.84-10.003-29.047-15.022-48.618-15.022-25.791 0-46.021 8.818-60.727 26.42-17.633 21.192-26.449 55.698-26.449 103.554zM226.966 412.492c0-41.826 5.158-69.64 15.438-83.478 10.243-13.872 22.937-20.774 38.009-20.774s27.766 6.936 38.009 20.843c10.28 13.907 15.438 41.687 15.438 83.408 0 41.931-5.158 69.78-15.438 83.582-10.243 13.768-23.047 20.669-38.375 20.669-15.072 0-27.108-6.065-36.107-18.229-11.304-15.545-16.974-44.196-16.974-86.022zM396.965 341.945l32.449 4.88c1.829-12.408 6.914-21.924 15.218-28.511 8.341-6.622 19.974-9.899 34.936-9.899 15.072 0 26.266 2.928 33.546 8.783 7.317 5.821 10.938 12.687 10.938 20.564 0 7.076-3.219 12.652-9.658 16.696-4.5 2.788-15.694 6.309-33.546 10.596-24.071 5.786-40.753 10.805-50.082 15.022-9.292 4.252-16.352 10.073-21.145 17.567-4.792 7.459-7.207 15.72-7.207 24.747 0 8.226 1.975 15.859 5.926 22.865s9.329 12.827 16.133 17.462c5.122 3.59 12.072 6.622 20.889 9.097 8.816 2.51 18.255 3.764 28.351 3.764 15.218 0 28.571-2.091 40.058-6.274s19.974-9.829 25.425-16.94c5.487-7.11 9.255-16.661 11.304-28.581l-32.083-4.183c-1.463 9.515-5.707 16.94-12.694 22.237-6.987 5.333-16.865 8.017-29.632 8.017-15.072 0-25.827-2.37-32.266-7.145-6.439-4.74-9.658-10.282-9.658-16.661 0-4.078 1.317-7.703 3.987-10.944 2.671-3.381 6.878-6.134 12.584-8.365 3.292-1.15 12.95-3.799 29.010-7.982 23.23-5.89 39.436-10.735 48.582-14.5 9.182-3.764 16.389-9.237 21.62-16.417s7.865-16.103 7.865-26.769c0-10.422-3.219-20.251-9.585-29.452-6.402-9.202-15.584-16.347-27.62-21.366-12.036-5.054-25.681-7.564-40.863-7.564-25.169 0-44.338 4.984-57.544 14.953s-21.62 24.712-25.242 44.301z" /> +<glyph unicode="" glyph-name="back-30-s" horiz-adv-x="892" d="M243.25 745.951c59.954 31.876 128.529 49.978 201.398 49.978 234.793 0 425.125-187.755 425.125-419.411 0-231.622-190.332-419.378-425.125-419.378-165.987 0-309.777 93.878-379.772 230.73l0.297 1.156 57.575 25.963c59.954-117.165 183.032-197.533 325.17-197.533 201.001 0 363.982 160.768 363.982 359.061 0 198.326-162.981 359.094-363.982 359.094-63.95 0-124.069-16.285-176.293-44.858l141.279-127.141h-412.903l214.71 396.387 28.54-214.049zM16.857 333.947l32.815 4.183c3.768-17.741 10.17-30.498 19.242-38.34 9.072-7.808 20.084-11.711 33.107-11.711 15.438 0 28.461 5.089 39.107 15.266 10.646 10.213 15.95 22.83 15.95 37.887 0 14.36-4.902 26.211-14.743 35.552-9.877 9.306-22.389 13.977-37.57 13.977-6.219 0-13.938-1.15-23.157-3.485l3.622 27.466c2.195-0.244 3.951-0.349 5.304-0.349 13.975 0 26.559 3.485 37.753 10.422 11.194 6.971 16.755 17.671 16.755 32.136 0 11.502-4.061 20.983-12.219 28.511-8.121 7.529-18.657 11.293-31.534 11.293-12.767 0-23.413-3.834-31.937-11.467-8.487-7.633-13.975-19.101-16.389-34.402l-32.851 5.577c4.024 20.948 13.133 37.19 27.364 48.727s31.937 17.288 53.081 17.288c14.596 0 28.022-2.998 40.314-8.958 12.255-5.96 21.657-14.081 28.169-24.398s9.768-21.262 9.768-32.833c0-11.014-3.11-21.052-9.329-30.080-6.182-9.027-15.365-16.208-27.51-21.54 15.804-3.485 28.059-10.7 36.839-21.645 8.743-10.944 13.133-24.642 13.133-41.094 0-22.237-8.524-41.094-25.535-56.535-17.047-15.476-38.558-23.213-64.568-23.213-23.486 0-42.948 6.657-58.459 19.972s-24.327 30.603-26.522 51.794zM224.39 392.329c0 30.115 3.256 54.374 9.768 72.707 6.512 18.369 16.169 32.52 28.973 42.488 12.84 9.969 28.973 14.953 48.435 14.953 14.34 0 26.925-2.754 37.753-8.261s19.755-13.419 26.815-23.806c7.060-10.352 12.584-23.004 16.572-37.887 4.024-14.883 6.036-34.96 6.036-60.195 0-29.906-3.219-54.025-9.658-72.359-6.439-18.369-16.096-32.555-28.9-42.593-12.84-10.003-29.047-15.022-48.618-15.022-25.791 0-46.021 8.818-60.727 26.42-17.633 21.192-26.449 55.698-26.449 103.554zM258.119 392.329c0-41.826 5.158-69.64 15.438-83.478 10.243-13.872 22.937-20.774 38.009-20.774s27.766 6.936 38.009 20.843c10.28 13.907 15.438 41.687 15.438 83.408 0 41.931-5.158 69.78-15.438 83.582-10.243 13.768-23.047 20.669-38.375 20.669-15.072 0-27.108-6.065-36.107-18.229-11.304-15.545-16.974-44.196-16.974-86.022zM428.118 321.782l32.449 4.88c1.829-12.408 6.914-21.924 15.218-28.511 8.341-6.622 19.974-9.899 34.936-9.899 15.072 0 26.266 2.928 33.546 8.783 7.317 5.821 10.938 12.687 10.938 20.564 0 7.076-3.219 12.652-9.658 16.696-4.5 2.788-15.694 6.309-33.546 10.596-24.071 5.786-40.753 10.805-50.082 15.022-9.292 4.252-16.352 10.073-21.145 17.567-4.792 7.459-7.207 15.72-7.207 24.747 0 8.226 1.975 15.859 5.926 22.865s9.329 12.827 16.133 17.462c5.122 3.59 12.072 6.622 20.889 9.097 8.816 2.51 18.255 3.764 28.351 3.764 15.218 0 28.571-2.091 40.058-6.274s19.974-9.829 25.425-16.94c5.487-7.11 9.255-16.661 11.304-28.581l-32.083-4.183c-1.463 9.515-5.707 16.94-12.694 22.237-6.987 5.333-16.865 8.017-29.632 8.017-15.072 0-25.827-2.37-32.266-7.145-6.439-4.74-9.658-10.282-9.658-16.661 0-4.078 1.317-7.703 3.987-10.944 2.671-3.381 6.878-6.134 12.584-8.365 3.292-1.15 12.95-3.799 29.010-7.982 23.23-5.89 39.436-10.735 48.582-14.5 9.182-3.764 16.389-9.237 21.62-16.417s7.865-16.103 7.865-26.769c0-10.422-3.219-20.251-9.585-29.452-6.402-9.202-15.584-16.347-27.62-21.366-12.036-5.054-25.681-7.564-40.863-7.564-25.169 0-44.338 4.984-57.544 14.953s-21.62 24.712-25.242 44.301z" /> +<glyph unicode="" glyph-name="comments-disabled" horiz-adv-x="996" d="M184.889 846.222l-113.778 113.778-71.111-71.111 50.176-50.176c-30.492-13.938-50.176-45.852-50.176-82.972v-506.852c0-49.977 35.669-85.333 85.333-85.333h142.222v-227.556l227.556 227.556h270.222l184.889-184.889 71.111 71.111-113.778 113.778h14.222c49.664 0 85.333 35.356 85.333 85.333v506.852c0 49.977-35.669 90.482-85.333 90.482h-696.889zM398.222 391.111c31.431 0 56.889-25.458 56.889-56.889s-25.458-56.889-56.889-56.889c-31.431 0-56.889 25.458-56.889 56.889s25.458 56.889 56.889 56.889zM568.889 391.111c31.431 0 56.889-25.458 56.889-56.889s-25.458-56.889-56.889-56.889c-31.431 0-56.889 25.458-56.889 56.889s25.458 56.889 56.889 56.889zM739.556 391.111c31.431 0 56.889-25.458 56.889-56.889s-25.458-56.889-56.889-56.889c-31.431 0-56.889 25.458-56.889 56.889s25.458 56.889 56.889 56.889zM227.556 391.111c31.431 0 56.889-25.458 56.889-56.889s-25.458-56.889-56.889-56.889c-31.431 0-56.889 25.458-56.889 56.889s25.458 56.889 56.889 56.889z" /> +<glyph unicode="" glyph-name="comments" horiz-adv-x="1088" d="M96 960c-55.872 0-96-45.568-96-101.792v-570.208c0-56.224 40.128-96 96-96h160v-256l256 256h480c55.872 0 96 39.776 96 96v570.208c0 56.224-40.128 101.792-96 101.792h-896zM448 448c35.36 0 64-28.64 64-64s-28.64-64-64-64c-35.36 0-64 28.64-64 64s28.64 64 64 64zM640 448c35.36 0 64-28.64 64-64s-28.64-64-64-64c-35.36 0-64 28.64-64 64s28.64 64 64 64zM832 448c35.36 0 64-28.64 64-64s-28.64-64-64-64c-35.36 0-64 28.64-64 64s28.64 64 64 64zM256 448c35.36 0 64-28.64 64-64s-28.64-64-64-64c-35.36 0-64 28.64-64 64s28.64 64 64 64z" /> +<glyph unicode="" glyph-name="edit" d="M678.559 798.828l169.684-169.659-388.945-388.945c-3.696 17.858-14.336 37.314-30.97 53.947-16.609 16.609-36.015 27.223-53.872 30.945-3.696 17.833-14.336 37.264-30.945 53.872s-36.015 27.223-53.872 30.945l388.92 388.895zM780.484 629.044l-33.917 33.942-308.249-308.249 33.917-33.942 308.249 308.249zM712.626 696.903l-33.917 33.917-306.425-306.425 33.917-33.917 306.425 306.425zM712.476 832.77l37.913 37.888c25.875 25.9 67.934 25.9 93.833 0l75.826-75.826c25.9-25.9 25.9-67.959 0-93.858l-37.888-37.888-169.684 169.684zM170.506 178.784l57.594-57.594-100.876-43.308 43.283 100.901zM190.861 226.288l63.763 148.63c15.71 4.62 40.086-5.395 58.892-24.176 17.308-17.333 29.022-41.559 27.148-57.544-0.2-1.024 0-2.048 0.574-2.897 0.599-0.849 1.474-1.424 2.498-1.623 10.64-2.098 40.81-8.991 56.12-24.301 18.807-18.807 29.122-43.208 24.501-58.942l-148.78-63.863-84.717 84.717z" /> +<glyph unicode="" glyph-name="facebook" d="M1024 812.092c0 81.679-66.229 147.908-147.908 147.908h-728.184c-81.679 0-147.908-66.229-147.908-147.908v-728.184c0-81.679 66.229-147.908 147.908-147.908h728.184c81.679 0 147.908 66.229 147.908 147.908v728.184zM572.235-3.765v481.882h-90.353v120.471h90.353v45.176c0 0-1.958 100.954 45.176 165.647 43.701 60.024 93.274 74.511 150.588 75.294s105.412-30.118 105.412-30.118v-105.412c0 0-74.059 27.648-105.412-15.059-9.487-12.92-15.631-39.093-15.601-61.651 0.060-37.617 0.542-73.879 0.542-73.879h120.471v-120.471h-120.471v-481.882h-180.706z" /> +<glyph unicode="" glyph-name="folder" horiz-adv-x="1271" d="M369.571 925.024c63.707-2.366 114.809-59.524 115.455-127.885v-46.026c207.316 0 414.704 2.505 622.020-0.035 20.398-0.765 27.364-3.131 40.185-8.384 39-16.003 66.651-55.106 68.303-97.688 2.011-152.898 2.981-305.901-0.036-458.799-3.376-104.263-98.289-194.506-204.407-196.454-257.484-1.6-515.040-4.697-772.524 0.035-104.753 3.201-199.739 92.678-201.822 199.029-1.329 202.786 0 405.572 0 608.393 0.862 67.108 59.541 125.276 127.773 127.815 68.339 0.835 136.714 0.835 205.054 0zM168.072 859.446c-33.685-0.417-64.389-26.996-65.718-60.846-2.657-203.551-3.986-407.172 0.036-610.689 2.298-70.657 67.298-131.26 139.623-132.582 256.694-1.566 513.46-4.697 770.118 0.035 71.392 2.192 136.427 61.751 137.828 134.286 1.006 151.576 5.889 303.292-0.036 454.764-1.831 27.762-45.895 41.086-45.895 41.086h-682.854c0 72.918 4.273 171.789-53.256 173.946-66.616 0.8-133.231 0-199.847 0zM559.634 819.913v56.285h141.241c35.769 0 62.958-22.74 62.746-54.978v-38.347l-59.463 0.353-0.141 14.477c-3.672 15.042-5.685 21.786-25.035 21.786l-119.349 0.424zM800.556 819.913v56.285h141.241c35.769 0 62.958-22.74 62.746-54.978v-38.347l-59.463 0.353-0.141 14.477c-3.672 15.042-5.685 21.786-25.035 21.786l-119.349 0.424z" /> +<glyph unicode="" glyph-name="forward-30-s" horiz-adv-x="892" d="M626.523 745.951c-59.954 31.876-128.529 49.978-201.398 49.978-234.793 0-425.125-187.755-425.125-419.411 0-231.622 190.332-419.378 425.125-419.378 165.987 0 309.777 93.878 379.772 230.73l-0.297 1.156-57.575 25.963c-59.954-117.165-183.032-197.533-325.17-197.533-201.001 0-363.982 160.768-363.982 359.061 0 198.326 162.981 359.094 363.982 359.094 63.95 0 124.069-16.285 176.293-44.858l-141.279-127.141h412.903l-214.71 396.387-28.54-214.049zM297.665 333.947l32.815 4.183c3.768-17.741 10.17-30.498 19.242-38.34 9.072-7.808 20.084-11.711 33.107-11.711 15.438 0 28.461 5.089 39.107 15.266 10.646 10.213 15.95 22.83 15.95 37.887 0 14.36-4.902 26.211-14.743 35.552-9.877 9.306-22.389 13.977-37.57 13.977-6.219 0-13.938-1.15-23.157-3.485l3.622 27.466c2.195-0.244 3.951-0.349 5.304-0.349 13.975 0 26.559 3.485 37.753 10.422 11.194 6.971 16.755 17.671 16.755 32.136 0 11.502-4.061 20.983-12.219 28.511-8.121 7.529-18.657 11.293-31.534 11.293-12.767 0-23.413-3.834-31.937-11.467-8.487-7.633-13.975-19.101-16.389-34.402l-32.851 5.577c4.024 20.948 13.133 37.19 27.364 48.727s31.937 17.288 53.081 17.288c14.596 0 28.022-2.998 40.314-8.958 12.255-5.96 21.657-14.081 28.169-24.398s9.768-21.262 9.768-32.833c0-11.014-3.11-21.052-9.329-30.080-6.182-9.027-15.365-16.208-27.51-21.54 15.804-3.485 28.059-10.7 36.839-21.645 8.743-10.944 13.133-24.642 13.133-41.094 0-22.237-8.524-41.094-25.535-56.535-17.047-15.476-38.558-23.213-64.568-23.213-23.486 0-42.948 6.657-58.459 19.972s-24.327 30.603-26.522 51.794zM505.198 392.329c0 30.115 3.256 54.374 9.768 72.707 6.512 18.369 16.169 32.52 28.973 42.488 12.84 9.969 28.973 14.953 48.435 14.953 14.34 0 26.925-2.754 37.753-8.261s19.755-13.419 26.815-23.806c7.060-10.352 12.584-23.004 16.572-37.887 4.024-14.883 6.036-34.96 6.036-60.195 0-29.906-3.219-54.025-9.658-72.359-6.439-18.369-16.096-32.555-28.9-42.593-12.84-10.003-29.047-15.022-48.618-15.022-25.791 0-46.021 8.818-60.727 26.42-17.633 21.192-26.449 55.698-26.449 103.554zM538.927 392.329c0-41.826 5.158-69.64 15.438-83.478 10.243-13.872 22.937-20.774 38.009-20.774s27.766 6.936 38.009 20.843c10.28 13.907 15.438 41.687 15.438 83.408 0 41.931-5.158 69.78-15.438 83.582-10.243 13.768-23.047 20.669-38.375 20.669-15.072 0-27.108-6.065-36.107-18.229-11.304-15.545-16.974-44.196-16.974-86.022zM708.926 321.782l32.449 4.88c1.829-12.408 6.914-21.924 15.218-28.511 8.341-6.622 19.974-9.899 34.936-9.899 15.072 0 26.266 2.928 33.546 8.783 7.317 5.821 10.938 12.687 10.938 20.564 0 7.076-3.219 12.652-9.658 16.696-4.5 2.788-15.694 6.309-33.546 10.596-24.071 5.786-40.753 10.805-50.082 15.022-9.292 4.252-16.352 10.073-21.145 17.567-4.792 7.459-7.207 15.72-7.207 24.747 0 8.226 1.975 15.859 5.926 22.865s9.329 12.827 16.133 17.462c5.122 3.59 12.072 6.622 20.889 9.097 8.816 2.51 18.255 3.764 28.351 3.764 15.218 0 28.571-2.091 40.058-6.274s19.974-9.829 25.425-16.94c5.487-7.11 9.255-16.661 11.304-28.581l-32.083-4.183c-1.463 9.515-5.707 16.94-12.694 22.237-6.987 5.333-16.865 8.017-29.632 8.017-15.072 0-25.827-2.37-32.266-7.145-6.439-4.74-9.658-10.282-9.658-16.661 0-4.078 1.317-7.703 3.987-10.944 2.671-3.381 6.878-6.134 12.584-8.365 3.292-1.15 12.95-3.799 29.010-7.982 23.23-5.89 39.436-10.735 48.582-14.5 9.182-3.764 16.389-9.237 21.62-16.417s7.865-16.103 7.865-26.769c0-10.422-3.219-20.251-9.585-29.452-6.402-9.202-15.584-16.347-27.62-21.366-12.036-5.054-25.681-7.564-40.863-7.564-25.169 0-44.338 4.984-57.544 14.953s-21.62 24.712-25.242 44.301z" /> +<glyph unicode="" glyph-name="frames" horiz-adv-x="1536" d="M710.093 230.016l522.598-180.838c23.603-8.192 49.715 5.274 58.266 30.003l114.074 329.677c8.602 24.73-3.584 51.456-27.187 59.648l-307.558 106.394 16.282-48.64c28.262-86.067-17.152-178.278-101.376-205.926l-275.098-90.317zM1025.843 707.661l379.187-131.226c83.814-28.979 127.693-121.907 98.048-207.565l-108.493-319.488c-29.645-85.658-121.6-131.584-205.414-102.554l-653.158 226.048-216.832-71.168c-84.224-27.648-175.462 19.763-203.725 105.882l-107.059 320c-28.262 86.067 17.152 178.278 101.376 205.926l666.010 218.624c84.224 27.648 175.462-19.763 203.725-105.882l46.336-138.598zM877.261 818.714c-8.192 24.883-34.048 38.758-57.754 30.976l-684.237-224.563c-23.757-7.782-36.352-34.253-28.211-59.187l108.8-331.418c8.192-24.883 34.048-38.758 57.754-30.976l684.237 224.563c23.757 7.782 36.352 34.304 28.16 59.187l-108.749 331.418z" /> +<glyph unicode="" glyph-name="fullscreen" horiz-adv-x="1243" d="M127.707 884.005l99.291-99.291-51.712-51.712-99.291 99.291-75.995-75.995 0.512 151.479-0.512 0.512 0.512 0.512 0.183 50.505 50.505 0.183 0.512 0.512 0.512-0.512 151.479 0.512-75.995-75.995zM127.707 11.995l99.291 99.291-51.712 51.712-99.291-99.291-75.995 75.995 0.512-151.479-0.512-0.512 0.512-0.512 0.183-50.505 50.505-0.183 0.512-0.512 0.512 0.512 151.479-0.512-75.995 75.995zM1115.721 884.005l-99.291-99.291 51.712-51.712 99.291 99.291 75.995-75.995-0.512 151.479 0.512 0.512-0.512 0.512-0.183 50.505-50.505 0.183-0.512 0.512-0.512-0.512-151.479 0.512 75.995-75.995zM1115.721 11.995l-99.291 99.291 51.712 51.712 99.291-99.291 75.995 75.995-0.512-151.479 0.512-0.512-0.512-0.512-0.183-50.505-50.505-0.183-0.512-0.512-0.512 0.512-151.479-0.512 75.995 75.995zM219.429 704.003h804.571v-512.004h-804.571v512.004z" /> +<glyph unicode="" glyph-name="headphone" horiz-adv-x="1342" d="M246.947-63.897c-0.432 1.883-0.345 487.714 0 494.238l-99.65-0.097c-81.308 0-147.338-51.32-147.338-114.552v-265.135c0-63.232 66.030-114.552 147.338-114.552l99.65 0.097zM1094.669-63.897c0.432 1.883 0.345 487.714 0 494.238l99.65-0.097c81.308 0 147.338-51.32 147.338-114.552v-265.135c0-63.232-66.030-114.552-147.338-114.552l-99.65 0.097zM143.219 500.966c-1.306 11.688-1.977 23.552-1.977 35.593v70.338c-4.555 167.018 240.393 353.103 415.956 353.103h192.088c175.563 0 418.675-190.605 415.956-353.103v-70.338c0-12.041-0.671-23.905-1.977-35.593h-68.643v62.852c0 179.659-173.409 325.561-353.103 325.561h-176.552c-179.694 0-353.103-145.902-353.103-325.561v-62.852h-68.643z" /> +<glyph unicode="" glyph-name="help" d="M496.754 960c-274.167 0-496.754-222.587-496.754-496.754 0-274.204 222.587-496.792 496.754-496.792 274.204 0 496.792 222.587 496.792 496.792 0 274.167-222.587 496.754-496.792 496.754zM492.43 237.587c27.269 0 50.479-7.092 69.594-21.314s28.634-31.289 28.634-51.2c0-21.163-9.519-39.14-28.634-53.969s-42.325-22.263-69.594-22.263c-27.307 0-50.479 7.32-69.594 21.959s-28.672 32.73-28.672 54.272c0 20.29 9.557 37.471 28.672 51.503 19.115 13.995 42.287 21.011 69.594 21.011zM571.316 279.647h-163.499c0 40.77-0.91 96.863 13.615 136.268 10.505 28.558 38.609 68.153 61.326 95.384 20.897 25.107 58.596 43.349 74.942 68.153 18.811 28.52 41.946 76.952 40.884 109.037-1.555 47.597-28.027 107.899-108.999 108.999-79.607 1.1-109.037-39.633-109.037-54.5 11.909-3.11 24.159-7.509 31.934-13.615 25.372-20.025 22.566-34.095 22.566-54.537 0-16.574-14.298-34.020-28.027-45.094-13.691-11.036-46.573-23.021-67.356-23.021-24.766 0-57.306 14.222-74.335 29.772s-25.524 35.916-25.524 61.137c0 39.708 23.438 75.359 70.315 106.989 46.876 31.592 105.927 47.407 177.114 47.407 72.969 0 133.234-17.636 180.793-52.869s71.339-78.241 71.339-128.986c0-32.465-8.192-61.857-24.576-88.102-12.364-19.684-25.335-48.811-75.321-84.385-65.005-45.587-66.825-167.974-68.153-218.036z" /> +<glyph unicode="" glyph-name="info" d="M511.828 960.008c-282.682 0-511.835-229.153-511.835-511.835s229.153-511.835 511.835-511.835c282.682 0 511.835 229.153 511.835 511.835s-229.153 511.835-511.835 511.835zM511.828 894.865c246.686 0 446.693-204.176 446.693-455.999s-200.007-455.999-446.693-455.999c-246.686 0-446.693 204.176-446.693 455.999s200.007 455.999 446.693 455.999zM535.837 638.687h29.296l-81.335-423.279c-1.452-6.998-2.494-12.805-3.015-17.421-0.558-4.616-0.856-8.413-0.856-11.353 0-14.406 4.616-25.35 13.847-32.906 9.232-7.594 22.856-11.353 40.947-11.353 10.311 0 22.409 1.377 36.219 4.132 13.847 2.792 29.631 7.11 47.312 13.029v-35.438c-31.343-12.88-60.378-22.67-87.142-29.296-26.727-6.663-50.997-9.976-72.736-9.976-24.010 0-42.064 6.179-54.236 18.538s-18.277 31.082-18.277 56.172c0 6.998 0.67 15.485 1.936 25.424 1.303 9.976 3.052 21.032 5.286 33.204l66.371 338.072-91.274 16.602v29.891l167.659 35.959zM554.859 820.416c16.23 0 30.412-6.105 42.585-18.277s18.277-26.541 18.277-43.143c0-16.602-5.993-30.896-17.979-42.882s-26.28-17.979-42.882-17.979c-17.347 0-31.939 5.807-43.739 17.421s-17.682 26.094-17.682 43.441c0 16.974 5.993 31.455 17.979 43.441s26.467 17.979 43.441 17.979z" /> +<glyph unicode="" glyph-name="link" d="M760.209 603.669l9.513-9.513c53.055-53.055 53.055-139.084 0-192.14l-230.192-230.192c-53.055-53.055-139.084-53.055-192.14 0l-9.513 9.513-79.187-79.187c-26.237-26.237-68.787-26.237-95.025 0s-26.237 68.787 0 95.025l79.187 79.187-20.071 20.071c-53.055 53.055-53.055 139.084 0 192.14l230.192 230.192c53.055 53.055 139.084 53.055 192.14 0l20.071-20.071 97.664 97.664c26.237 26.237 68.787 26.237 95.025 0s26.237-68.787 0-95.025l-97.664-97.664zM418.447 261.908c29.394-12.691 55.030-8.32 72.525 9.175l190.049 190.049c17.495 17.495 21.866 43.131 9.027 72.778-37.45-21.549-69.537-17.548-90.854 3.769-22.553 22.553-25.72 57.141-2.502 92.248l-0.137 0.137c-23.323 23.323-61.143 23.323-84.466 0l-190.049-190.049c-20.040-20.040-22.859-50.796 0-84.466l5.279 5.279c26.237 26.237 68.787 26.237 95.025 0s26.237-68.787 0-95.025l-3.896-3.896z" /> +<glyph unicode="" glyph-name="mini-frames" d="M692.701 628.715h-30.118v60.235h-421.646v-301.175h30.118v-30.118h-60.235v361.41h481.881v-90.353zM813.171 598.597v-391.528h-511.998v391.528h511.998zM783.054 568.48h-451.763v-331.293h451.763v331.293z" /> +<glyph unicode="" glyph-name="mini-videocamera" horiz-adv-x="967" d="M233.244-11.492l136.533 157.525v-210.034h56.889v210.034l147.911-157.525h68.267l-136.533 210.034c0 0 66.219-3.3 68.267 21.902h136.533v398.108c52.338 29.639 85.333 82.66 85.333 150.016 0 105.7-89.145 191.431-199.111 191.431s-199.111-85.732-199.111-191.431c0-67.3 39.31-120.263 96.199-149.902h-195.641c58.254 29.639 99.442 82.603 99.442 149.902 0 105.7-89.145 191.431-199.111 191.431s-199.111-85.732-199.111-191.431c0-67.3 31.004-120.263 81.92-149.902h-53.476v-398.222h238.933c2.048-25.202 34.133-21.902 34.133-21.902l-136.533-210.034h68.267zM905.614 305.778c18.261 0 33.052 13.596 33.052 30.379v234.837c0 16.782-14.791 30.379-33.052 30.379l-137.614-66.389v-157.525l137.614-71.68z" /> +<glyph unicode="" glyph-name="mini-window" d="M870.4 960c84.787 0 153.6-68.813 153.6-153.6v-870.4h-1024v870.4c0 84.787 68.813 153.6 153.6 153.6h716.8zM972.8 652.8h-921.6v-665.6h921.6v665.6zM384 857.6c-42.394 0-76.8-34.406-76.8-76.8s34.406-76.8 76.8-76.8c42.394 0 76.8 34.406 76.8 76.8s-34.406 76.8-76.8 76.8zM179.2 857.6c-42.394 0-76.8-34.406-76.8-76.8s34.406-76.8 76.8-76.8c42.394 0 76.8 34.406 76.8 76.8s-34.406 76.8-76.8 76.8zM588.8 857.6c-42.394 0-76.8-34.406-76.8-76.8s34.406-76.8 76.8-76.8c42.394 0 76.8 34.406 76.8 76.8s-34.406 76.8-76.8 76.8z" /> +<glyph unicode="" glyph-name="mini-zoom-in" d="M547.008 382.464l46.368-46.368-0.128-0.128c-17.248-17.28-17.248-45.312 0-62.592l128.768-128.768c17.28-17.248 45.344-17.248 62.592 0l32.096 32.096c17.28 17.28 17.28 45.312 0 62.592l-128.768 128.768c-17.152 17.152-44.928 17.28-62.24 0.352l-46.56 46.592c28.096 35.456 44.864 80.288 44.864 128.992 0 114.784-93.216 208-208 208s-208-93.216-208-208c0-114.784 93.216-208 208-208 49.632 0 95.232 17.408 131.008 46.464zM416 704c88.32 0 160-71.68 160-160s-71.68-160-160-160c-88.32 0-160 71.68-160 160s71.68 160 160 160zM445.664 579.648h64v-64h-64v-64h-64v64h-64v64h64v64h64v-64z" /> +<glyph unicode="" glyph-name="mini-zoom-out" d="M547.008 382.464l46.368-46.368-0.128-0.128c-17.248-17.28-17.248-45.312 0-62.592l128.768-128.768c17.28-17.248 45.344-17.248 62.592 0l32.096 32.096c17.28 17.28 17.28 45.312 0 62.592l-128.768 128.768c-17.152 17.152-44.928 17.28-62.24 0.352l-46.56 46.592c28.096 35.456 44.864 80.288 44.864 128.992 0 114.784-93.216 208-208 208s-208-93.216-208-208c0-114.784 93.216-208 208-208 49.632 0 95.232 17.408 131.008 46.464zM416 704c88.32 0 160-71.68 160-160s-71.68-160-160-160c-88.32 0-160 71.68-160 160s71.68 160 160 160zM317.664 579.648h192v-64h-192v64z" /> +<glyph unicode="" glyph-name="pause" horiz-adv-x="1117" d="M744.727 960h372.364v-1024h-372.364v1024zM0 960h372.364v-1024h-372.364v1024z" /> +<glyph unicode="" glyph-name="photo" horiz-adv-x="1126" d="M785.067-60.177h-785.067v750.933h785.067v-750.933zM375.467 724.89h-71.578l54.511 235.11 768-198.554-204.8-753.357-102.4 17.067-0.205 242.347 102.605-20.48 120.115 467.251-634.402 164.011-31.846-153.395zM716.8 622.49h-649.591v-477.867h649.591v477.867zM270.063 299.554l79.326 120.695 79.36-75.23 109.090 154.522 110.694-286.652h-514.082l76.117 142.063 59.494-55.398zM220.945 427.247c-28.194 0-51.063 21.914-51.063 48.981 0 27.034 22.869 48.947 51.063 48.947s51.063-21.914 51.063-48.947c0-27.068-22.869-48.981-51.063-48.981z" /> +<glyph unicode="" glyph-name="pip" horiz-adv-x="1306" d="M670.897 359.724h635.586v-423.724h-635.586v423.724zM1200.552 430.345h-70.621v459.034h-1059.31v-670.897h529.655v-70.621h-600.276v812.138h1200.552v-529.655zM558.009 670.702l77.506 77.471v-317.793l-317.828 0.071 87.464 87.428-175.175 175.175 152.858 152.823 175.175-175.175z" /> +<glyph unicode="" glyph-name="play" horiz-adv-x="981" d="M981.211 447.993l-981.22-511.988v1023.997l981.22-512.009z" /> +<glyph unicode="" glyph-name="player-mode-1" horiz-adv-x="1339" d="M1339.077-64h-1339.077v1024h1339.077v-1024zM1260.308 881.231h-1181.538v-866.462h1181.538v866.462zM669.538 763.077c-173.883 0-315.077-141.194-315.077-315.077s141.194-315.077 315.077-315.077c173.883 0 315.077 141.194 315.077 315.077s-141.194 315.077-315.077 315.077zM883.161 442.526l-331.776-211.141v422.242l331.776-211.102z" /> +<glyph unicode="" glyph-name="player-mode-2" d="M1024-64h-1024v1024h1024v-1024zM963.765 297.412h-210.824v-301.176h210.824v301.176zM692.706 297.412h-632.471v-301.176h632.471v301.176zM963.765 899.765h-903.529v-542.118h903.529v542.118zM512 825.826c-108.032 0-195.765-88.305-195.765-197.12s87.733-197.12 195.765-197.12c108.032 0 195.765 88.305 195.765 197.12s-87.733 197.12-195.765 197.12zM632.471 625.272l-180.706-108.845v217.69l180.706-108.845z" /> +<glyph unicode="" glyph-name="player-mode-3" d="M1024-64h-1024v1024h1024v-1024zM692.706 357.647h-632.471v-361.412h632.471v361.412zM963.765 899.765h-210.824v-903.529h210.824v903.529zM692.706 899.765h-632.471v-481.882h632.471v481.882zM376.471 855.944c-108.032 0-195.765-88.305-195.765-197.12s87.733-197.12 195.765-197.12c108.032 0 195.765 88.305 195.765 197.12s-87.733 197.12-195.765 197.12zM496.941 655.39l-180.706-108.845v217.69l180.706-108.845z" /> +<glyph unicode="" glyph-name="present-mode-1" horiz-adv-x="1084" d="M1084.235-64v1024h-1084.235v-1024h1084.235zM602.353 297.412l150.528-249.645c6.385-15.601 9.848-38.942-2.259-43.701-16.926-6.656-31.744-5.873-38.671 5.24l-151.823 242.688-155.317-242.688c-17.227-17.408-35.117-14.788-42.225-8.885-7.048 5.843-12.529 21.112 1.265 47.345l148.149 249.645h-361.412v512h-60.235v60.235h903.529v-60.235h-60.235v-512h-331.294zM210.824 809.412v-451.765h662.588v451.765h-662.588zM465.589 656.264l-190.163-218.443-18.824 15.661 208.264 239.194 135.168-134.746 186.338 182.182 17.468-17.107-203.866-199.228-134.385 132.488z" /> +<glyph unicode="" glyph-name="present-mode-2" horiz-adv-x="1084" d="M1084.235 960v-1024h-1084.235v1024h1084.235zM812.213 357.647c14.276 0 25.901 11.595 25.901 25.901v38.551c0 14.306-11.625 25.901-25.901 25.901h-540.19c-14.276 0-25.901-11.595-25.901-25.901v-38.551c0-14.306 11.625-25.901 25.901-25.901h149.624v-331.294h240.941v331.294h149.624zM752.67 478.118c-0.030 0.482-13.222 141.101-31.774 179.531-18.583 38.46-111.014 39.816-111.014 39.816s-21.293-99.629-26.985-118.573c-5.722-18.974-6.897-23.371-6.897-23.371s-14.426 96.256-16.956 106.014c-1.867 7.349-14.276 7.831-16.926 7.831s-15.059-0.843-16.956-8.162c-2.5-9.788-12.86-103.544-12.86-103.544s-3.162 2.259-8.855 21.233c-5.722 18.944-29.094 118.573-29.094 118.573s-92.431-1.355-111.014-39.816c-18.583-38.49-31.774-179.531-31.774-179.531h421.105zM576 697.464c-1.687 7.228-24.365 6.445-33.882 6.536-9.457-0.090-32.196 0.693-33.882-6.536-1.837-7.861 24.727-24.305 24.727-24.305l19.938-0.482c0 0 24.937 16.926 23.1 24.787zM542.118 925.877c-51.531 0-93.365-45.327-93.365-101.135s41.833-101.105 93.365-101.105c51.531 0 93.365 45.297 93.365 101.105s-41.833 101.135-93.365 101.135z" /> +<glyph unicode="" glyph-name="present-mode-3" horiz-adv-x="2229" d="M1084.235-64v1024h-1084.235v-1024h1084.235zM2228.706-64h-1084.235v1024h1084.235v-1024zM602.353 297.412l150.528-249.645c6.385-15.601 9.848-38.942-2.259-43.701-16.926-6.656-31.744-5.873-38.671 5.24l-151.823 242.688-155.317-242.688c-17.227-17.408-35.117-14.788-42.225-8.885-7.048 5.843-12.529 21.112 1.265 47.345l148.149 249.645h-361.412v512h-60.235v60.235h903.529v-60.235h-60.235v-512h-331.294zM1956.683 448h-540.19c-14.306 0-25.901-11.595-25.901-25.901v-38.551c0-14.306 11.595-25.901 25.901-25.901h149.624v-331.294h240.941v331.294h149.624c14.276 0 25.901 11.595 25.901 25.901v38.551c0 14.306-11.595 25.901-25.901 25.901zM210.824 809.412v-451.765h662.588v451.765h-662.588zM465.589 656.264l-190.163-218.443-18.824 15.661 208.264 239.194 135.168-134.746 186.338 182.182 17.468-17.107-203.866-199.228-134.385 132.488zM1897.141 478.118c-0.030 0.482-13.222 141.101-31.774 179.531-18.583 38.46-111.014 39.816-111.014 39.816s-21.293-99.629-26.985-118.573c-5.722-18.974-6.897-23.371-6.897-23.371s-14.426 96.256-16.956 106.014c-1.867 7.349-14.276 7.831-16.926 7.831s-15.059-0.843-16.956-8.162c-2.5-9.788-12.86-103.544-12.86-103.544s-3.162 2.259-8.855 21.233c-5.722 18.944-29.094 118.573-29.094 118.573s-92.431-1.355-111.014-39.816c-18.583-38.49-31.774-179.531-31.774-179.531h421.105zM1720.471 697.464c-1.687 7.228-24.365 6.445-33.882 6.536-9.457-0.090-32.196 0.693-33.882-6.536-1.837-7.861 24.727-24.305 24.727-24.305l19.938-0.482c0 0 24.937 16.926 23.1 24.787zM1686.588 925.877c-51.531 0-93.365-45.327-93.365-101.135s41.833-101.105 93.365-101.105c51.531 0 93.365 45.297 93.365 101.105s-41.833 101.135-93.365 101.135z" /> +<glyph unicode="" glyph-name="present-mode-4" horiz-adv-x="2229" d="M2228.706-64v1024h-1084.235v-1024h1084.235zM1746.824 297.412l150.528-249.645c6.385-15.601 9.848-38.942-2.259-43.701-16.926-6.656-31.744-5.873-38.671 5.24l-151.823 242.688-155.317-242.688c-17.227-17.408-35.117-14.788-42.225-8.885-7.048 5.843-12.529 21.112 1.265 47.345l148.149 249.645h-361.412v512h-60.235v60.235h903.529v-60.235h-60.235v-512h-331.294zM1355.294 809.412v-451.765h662.588v451.765h-662.588zM1610.059 656.264l-190.163-218.443-18.824 15.661 208.264 239.194 135.168-134.746 186.338 182.182 17.468-17.107-203.866-199.228-134.385 132.488zM1084.235 960v-1024h-1084.235v1024h1084.235zM812.213 357.647c14.276 0 25.901 11.595 25.901 25.901v38.551c0 14.306-11.625 25.901-25.901 25.901h-540.19c-14.276 0-25.901-11.595-25.901-25.901v-38.551c0-14.306 11.625-25.901 25.901-25.901h149.624v-331.294h240.941v331.294h149.624zM752.67 478.118c-0.030 0.482-13.222 141.101-31.774 179.531-18.583 38.46-111.014 39.816-111.014 39.816s-21.293-99.629-26.985-118.573c-5.722-18.974-6.897-23.371-6.897-23.371s-14.426 96.256-16.956 106.014c-1.867 7.349-14.276 7.831-16.926 7.831s-15.059-0.843-16.956-8.162c-2.5-9.788-12.86-103.544-12.86-103.544s-3.162 2.259-8.855 21.233c-5.722 18.944-29.094 118.573-29.094 118.573s-92.431-1.355-111.014-39.816c-18.583-38.49-31.774-179.531-31.774-179.531h421.105zM576 697.464c-1.687 7.228-24.365 6.445-33.882 6.536-9.457-0.090-32.196 0.693-33.882-6.536-1.837-7.861 24.727-24.305 24.727-24.305l19.938-0.482c0 0 24.937 16.926 23.1 24.787zM542.118 925.877c-51.531 0-93.365-45.327-93.365-101.135s41.833-101.105 93.365-101.105c51.531 0 93.365 45.297 93.365 101.105s-41.833 101.135-93.365 101.135z" /> +<glyph unicode="" glyph-name="present-mode-5" horiz-adv-x="1621" d="M1621.333-64v568.889h-597.333v-568.889h597.333zM1351.111 135.111l84.366-137.415c3.413-8.562 5.262-21.333-1.223-23.95-9.074-3.641-16.981-3.214-20.708 2.873l-81.237 132.978-83.143-132.978c-9.188-9.529-18.773-8.107-22.585-4.864-3.755 3.214-6.684 11.577 0.683 25.941l81.18 137.415h-199.111v284.444h-28.444v28.444h483.556v-28.444h-28.444v-284.444h-184.889zM1137.778 419.556v-256h369.778v256h-369.778zM1279.972 332.772l-106.155-123.79-10.496 8.875 116.224 135.566 75.435-76.373 103.993 103.225 9.756-9.671-113.778-112.924-74.98 75.093zM0 960h1137.778v-426.667h-142.222v-568.889h-995.556v995.556zM863.175 391.111c9.017 0 16.327 7.31 16.327 16.299v24.292c0 8.988-7.31 16.299-16.327 16.299h-588.572c-9.017 0-16.327-7.31-16.327-16.299v-24.292c0-8.988 7.31-16.299 16.327-16.299h152.064v-341.333h284.444v341.333h152.064zM789.845 476.444c-0.085 0.882-13.909 146.916-33.337 186.852-19.513 40.050-116.508 41.444-116.508 41.444s-22.329-103.68-28.331-123.42c-5.973-19.74-7.225-24.32-7.225-24.32s-15.132 100.181-17.778 110.364c-1.991 7.652-14.99 8.135-17.778 8.135s-15.787-0.882-17.778-8.505c-2.645-10.183-13.511-107.748-13.511-107.748s-3.3 2.332-9.301 22.073c-6.002 19.74-30.521 123.42-30.521 123.42s-96.996-1.394-116.508-41.444c-19.484-40.050-33.337-186.852-33.337-186.852h441.913zM604.444 704.74c-1.764 7.054-25.572 6.286-35.556 6.372-9.927-0.114-33.792 0.683-35.556-6.372-1.934-7.623 25.941-23.609 25.941-23.609l20.935-0.484c0 0 26.169 16.469 24.235 24.092zM568.889 926.805c-54.073 0-97.963-44.032-97.963-98.304 0-54.244 43.89-98.304 97.963-98.304s97.963 44.060 97.963 98.304c0 54.272-43.89 98.304-97.963 98.304z" /> +<glyph unicode="" glyph-name="present-mode-6" horiz-adv-x="1621" d="M597.333-64v568.889h-597.333v-568.889h597.333zM327.111 135.111l84.366-137.415c3.413-8.562 5.262-21.333-1.223-23.95-9.074-3.641-16.981-3.214-20.708 2.873l-81.237 132.978-83.143-132.978c-9.188-9.529-18.773-8.107-22.585-4.864-3.755 3.214-6.684 11.577 0.683 25.941l81.18 137.415h-199.111v284.444h-28.444v28.444h483.556v-28.444h-28.444v-284.444h-184.889zM113.778 419.556v-256h369.778v256h-369.778zM255.972 332.772l-106.155-123.79-10.496 8.875 116.224 135.566 75.435-76.373 103.993 103.225 9.756-9.671-113.778-112.924-74.98 75.093zM1621.333-35.556h-995.556v568.889h-142.222v426.667h1137.778v-995.556zM1346.731 391.111c9.017 0 16.327 7.31 16.327 16.299v24.292c0 8.988-7.31 16.299-16.327 16.299h-588.572c-9.017 0-16.327-7.31-16.327-16.299v-24.292c0-8.988 7.31-16.299 16.327-16.299h152.064v-341.333h284.444v341.333h152.064zM1273.401 476.444c-0.057 0.654-13.881 146.887-33.337 186.852-19.513 40.050-116.508 41.444-116.508 41.444s-22.329-103.68-28.331-123.42c-5.973-19.74-7.225-24.32-7.225-24.32s-15.132 100.181-17.778 110.364c-1.991 7.652-14.99 8.135-17.778 8.135s-15.787-0.882-17.778-8.505c-2.645-10.183-13.511-107.748-13.511-107.748s-3.3 2.332-9.301 22.073c-6.002 19.74-30.521 123.42-30.521 123.42s-96.996-1.394-116.508-41.444c-19.484-40.050-33.337-186.852-33.337-186.852h441.913zM1088 704.74c-1.764 7.054-25.572 6.286-35.556 6.372-9.927-0.114-33.792 0.683-35.556-6.372-1.934-7.623 25.941-23.609 25.941-23.609l20.935-0.484c0 0 26.169 16.469 24.235 24.092zM1052.444 926.805c-54.073 0-97.963-44.032-97.963-98.304 0-54.244 43.89-98.304 97.963-98.304s97.963 44.060 97.963 98.304c0 54.272-43.89 98.304-97.963 98.304z" /> +<glyph unicode="" glyph-name="present-mode-7" horiz-adv-x="1827" d="M613.57 469.615v490.385h-613.57v-490.385h613.57zM336.010 641.232l86.653-118.452c3.515-7.362 5.424-18.377-1.245-20.646-9.327-3.127-17.463-2.768-21.283 2.491l-83.442 114.605-85.379-114.605c-9.465-8.22-19.318-7.002-23.22-4.207-3.875 2.768-6.891 9.991 0.692 22.362l83.387 118.452h-204.523v245.206h-29.226v24.521h496.723v-24.521h-29.226v-245.206h-189.91zM116.874 886.438v-220.686h379.821v220.686h-379.821zM262.919 811.631l-109.014-106.717-10.794 7.666 119.393 116.847 77.492-65.813 106.8 88.977 10.019-8.358-116.847-97.335-77.049 64.733zM1770.136 823.365v-715.029h-1067.119v715.029h1067.119zM1375.287 619.562v41.514c0 25.462-15.166 41.514-41.514 41.514h-193.73c-26.347 0-41.514-16.052-41.514-41.514 0-25.489 0-41.514 0-41.514h-96.865c-21.089 0-41.514-21.144-41.514-41.514v-276.757c0-20.397 20.425-41.514 41.514-41.514h470.486c21.089 0 41.514 21.117 41.514 41.514v276.757c0 20.369-20.425 41.514-41.514 41.514h-96.865zM1233.062 564.21c63.239 0 110.703-49.567 110.703-110.703s-47.464-110.703-110.703-110.703c-63.239 0-110.703 49.567-110.703 110.703s47.464 110.703 110.703 110.703zM612.020 436.515v-489.5h-612.020v489.5h612.020zM465.062 156.797c4.428 0.028 8.026 3.598 8.026 8.026v11.956c0 4.4-3.598 7.998-8.026 7.998h-318.104c-4.428 0-8.026-3.598-8.026-7.998v-11.956c0-4.428 3.598-8.026 8.026-8.026h82.557v-167.825h152.991v167.825h82.557zM424.877 198.753c-0.028 0.332-7.472 72.234-17.934 91.883-10.489 19.705-62.685 20.369-62.685 20.369s-12.011-50.979-15.222-60.665c-3.238-9.714-3.902-11.956-3.902-11.956s-8.137 49.263-9.548 54.244c-1.079 3.764-8.081 4.013-9.576 4.013s-8.496-0.443-9.548-4.179c-1.439-5.009-7.279-52.999-7.279-52.999s-1.771 1.162-5.009 10.877c-3.21 9.686-16.412 60.665-16.412 60.665s-52.169-0.664-62.658-20.369c-10.489-19.677-17.962-91.883-17.962-91.883h237.734zM325.134 311.005c-0.941 3.487-13.755 3.1-19.124 3.127-5.341-0.028-18.155 0.36-19.124-3.127-1.024-3.736 13.949-11.596 13.949-11.596l11.264-0.249c0 0 14.087 8.109 13.035 11.845zM306.010 420.186c-29.087 0-52.694-21.642-52.694-48.322s23.607-48.322 52.694-48.322c29.087 0 52.694 21.642 52.694 48.322s-23.607 48.322-52.694 48.322z" /> +<glyph unicode="" glyph-name="present-mode-8" horiz-adv-x="1735" d="M1137.778 561.778v398.222h-1137.778v-995.556h1052.444v597.333h85.333zM623.076 312.889l160.683-240.469c6.485-14.99 10.041-37.348-2.304-41.899-17.294-6.4-32.37-5.632-39.452 5.006l-154.738 232.704-158.35-232.704c-17.55-16.697-35.783-14.165-43.036-8.505-7.168 5.604-12.772 20.252 1.28 45.397l154.652 240.469h-379.278v497.778h-54.158v49.778h921.031v-49.778h-54.158v-497.778h-352.171zM216.718 810.667v-448h704.341v448h-704.341zM487.538 658.802l-202.155-216.633-19.996 15.559 221.383 237.198 143.673-133.632 198.087 180.651 18.574-16.953-216.69-197.604-142.876 131.413zM1735.111 533.333v-597.333h-654.222v597.333h654.222zM1576.818 192c5.404 0 9.785 4.38 9.785 9.785v14.564c0 5.404-4.38 9.785-9.785 9.785h-337.636c-5.404 0-9.785-4.38-9.785-9.785v-14.564c0-5.404 4.38-9.785 9.785-9.785h87.040v-204.8h163.556v204.8h87.040zM1535.061 243.2c-0.028 0.313-7.993 88.121-19.172 112.1-11.236 24.036-67.015 24.889-67.015 24.889s-12.828-62.208-16.27-74.069c-3.442-11.833-4.153-14.592-4.153-14.592s-8.704 60.132-10.24 66.219c-1.138 4.608-8.619 4.892-10.212 4.892s-9.074-0.54-10.212-5.092c-1.536-6.116-7.765-64.683-7.765-64.683s-1.906 1.422-5.376 13.255c-3.442 11.861-17.55 74.069-17.55 74.069s-55.751-0.853-66.987-24.889c-11.207-24.007-19.172-112.1-19.172-112.1h254.123zM1428.452 380.188c-1.024 4.21-14.706 3.755-20.452 3.812-5.689-0.057-19.428 0.398-20.452-3.812-1.109-4.58 14.933-14.165 14.933-14.165l12.032-0.284c0 0 15.047 9.87 13.938 14.45zM1408 513.422c-31.090 0-56.348-26.425-56.348-58.994 0-32.54 25.259-58.965 56.348-58.965s56.348 26.425 56.348 58.965c0 32.569-25.259 58.994-56.348 58.994z" /> +<glyph unicode="" glyph-name="present-mode-9" horiz-adv-x="1735" d="M1735.111-35.556v995.556h-1137.778v-398.222h85.333v-597.333h1052.444zM1220.409 312.889l160.683-240.469c6.485-14.99 10.041-37.348-2.304-41.899-17.294-6.4-32.37-5.632-39.452 5.006l-154.738 232.704-158.35-232.704c-17.55-16.697-35.783-14.165-43.036-8.505-7.168 5.604-12.772 20.252 1.28 45.397l154.652 240.469h-379.278v497.778h-54.158v49.778h921.031v-49.778h-54.158v-497.778h-352.171zM814.052 810.667v-448h704.341v448h-704.341zM1084.871 658.802l-202.155-216.633-19.996 15.559 221.383 237.198 143.673-133.632 198.087 180.651 18.574-16.953-216.69-197.604-142.876 131.413zM654.222 533.333v-597.333h-654.222v597.333h654.222zM495.929 192c5.404 0 9.785 4.38 9.785 9.785v14.564c0 5.404-4.38 9.785-9.785 9.785h-337.636c-5.404 0-9.785-4.38-9.785-9.785v-14.564c0-5.404 4.38-9.785 9.785-9.785h87.040v-204.8h163.556v204.8h87.040zM454.172 243.2c-0.028 0.313-7.993 88.121-19.172 112.1-11.236 24.036-67.015 24.889-67.015 24.889s-12.828-62.208-16.27-74.069c-3.442-11.833-4.153-14.592-4.153-14.592s-8.704 60.132-10.24 66.219c-1.138 4.608-8.619 4.892-10.212 4.892s-9.074-0.54-10.212-5.092c-1.536-6.116-7.765-64.683-7.765-64.683s-1.906 1.422-5.376 13.255c-3.442 11.861-17.55 74.069-17.55 74.069s-55.751-0.853-66.987-24.889c-11.207-24.007-19.172-112.1-19.172-112.1h254.123zM347.563 380.188c-1.024 4.21-14.706 3.755-20.452 3.812-5.689-0.057-19.428 0.398-20.452-3.812-1.109-4.58 14.933-14.165 14.933-14.165l12.032-0.284c0 0 15.047 9.87 13.938 14.45zM327.111 513.422c-31.090 0-56.348-26.425-56.348-58.994 0-32.54 25.259-58.965 56.348-58.965s56.348 26.425 56.348 58.965c0 32.569-25.259 58.994-56.348 58.994z" /> +<glyph unicode="" glyph-name="present-mode-10" horiz-adv-x="1671" d="M1077.76 798.019v161.981h-1077.76v-943.158h996.918v781.177h80.842zM590.201 346.947l152.199-227.813c6.171-14.201 9.512-35.382-2.183-39.693-16.357-6.063-30.666-5.336-37.349 4.743l-146.594 220.456-149.989-220.456c-16.627-15.818-33.9-13.42-40.771-8.057-6.791 5.309-12.072 19.187 1.213 43.008l146.486 227.813h-359.235v471.579h-51.335v47.158h872.475v-47.158h-51.335v-471.579h-333.581zM205.285 818.526v-424.421h667.19v424.421h-667.19zM461.824 674.654l-191.515-205.231-18.917 14.74 209.677 224.714 136.111-126.599 187.635 171.143 17.597-16.061-205.258-187.203-135.33 124.497zM1654.784 314.045c8.677 0 15.71-7.060 15.71-15.737v-23.417c0-8.677-7.033-15.737-15.71-15.737h-172.248v-298.685h-243.685v298.685h-172.571c-8.677 0-15.737 7.060-15.737 15.737v23.417c0 8.677 7.060 15.737 15.737 15.737h588.504zM1589.005 339.294h-455.896c0 0 14.282 127.731 34.412 162.573 20.103 34.843 120.185 36.056 120.185 36.056s25.304-90.193 31.475-107.385c6.171-17.165 9.593-19.213 9.593-19.213s11.21 84.911 13.932 93.75c2.048 6.629 15.495 7.411 18.351 7.411s16.276-0.431 18.351-7.087c2.722-8.839 18.324-96.013 18.324-96.013s1.293 3.988 7.464 21.154c6.198 17.192 29.211 107.385 29.211 107.385s100.083-1.213 120.185-36.056c20.103-34.843 34.412-162.493 34.412-162.573zM1395.631 537.923c1.886-6.44-23.714-20.372-23.714-20.372l-20.48 0.431c0 0-27.271 13.501-25.384 19.941 1.725 5.955 25.088 5.282 34.789 5.363 9.755-0.081 33.064 0.593 34.789-5.363zM1360.842 725.558c52.925 0 95.879-37.214 95.879-83.052 0-45.864-42.954-83.079-95.879-83.079s-95.879 37.214-95.879 83.079c0 45.837 42.954 83.052 95.879 83.052z" /> +<glyph unicode="" glyph-name="presentation-mode" horiz-adv-x="1210" d="M1179.772-64h-558.545v527.515h558.545v-527.515zM561.648-16.803c0 0-73.48-54.148-133.151-14.895-38.416 25.259-54.893 85.799-54.893 85.799l-62.681-65.877v164.988h157.293l-60.447-67.056c0 0 6.672-26.717 37.981-41.674 31.279-14.957 89.864 23.583 89.864 23.583l26.034-84.868zM1112.312-1.939c-0.062 0.465-13.25 131.165-31.806 166.881-18.587 35.747-111.057 37.019-111.057 37.019s-21.256-92.594-26.965-110.251c-5.71-17.625-6.92-21.69-6.92-21.69s-14.398 89.46-16.943 98.552c-1.893 6.827-14.305 7.261-16.943 7.261s-15.050-0.807-16.943-7.602c-2.513-9.092-12.878-96.225-12.878-96.225s-3.165 2.079-8.875 19.704c-5.71 17.656-29.075 110.251-29.075 110.251s-92.47-1.272-111.057-37.019c-18.587-35.778-31.806-166.881-31.806-166.881h421.267zM935.564 201.961c-1.676 7.23-24.359 6.423-33.885 6.516-9.464-0.093-32.209 0.714-33.885-6.516-1.831-7.851 24.731-24.297 24.731-24.297l19.952-0.496c0 0 24.917 16.943 23.087 24.793zM776.378 494.545v465.455h-776.378v-744.727h590.196v217.212h-159.651l108.575-135.944c4.561-11.326 7.044-28.3-1.614-31.775-12.133-4.841-22.745-4.251-27.71 3.817l-108.699 114.44-111.244-114.44c-12.319-12.66-25.135-10.768-30.224-6.454-5.027 4.251-8.968 15.36 0.9 34.413l105.317 135.944h-272.136v434.424h-31.030v31.030h651.636v-31.030h-31.030v-372.364h93.091zM901.679 430.406c-51.541 0-93.401-45.304-93.401-101.128s41.86-101.159 93.401-101.159c51.541 0 93.401 45.335 93.401 101.159s-41.86 101.128-93.401 101.128zM652.257 494.545v372.364h-527.515v-403.394h465.455v31.030h62.061zM1089.164 525.576v164.988l-62.65-65.877c0 0-16.477 60.54-54.893 85.799-59.671 39.253-133.182-14.895-133.182-14.895l26.065-84.868c0 0 58.554 38.54 89.864 23.583s37.981-41.674 37.981-41.674l-60.447-67.056h157.262zM333.39 728.452l-136.161-172.094-13.467 12.35 149.101 188.447 96.815-106.186 133.43 143.546 12.505-13.467-145.967-156.982-96.256 104.386z" /> +<glyph unicode="" glyph-name="screen" horiz-adv-x="1248" d="M1231.973 751.406c0 97.516-79.063 176.59-176.572 176.59 0 0-287.618 31.983-431.427 31.983s-431.427-31.983-431.427-31.983c-97.509 0-176.572-79.074-176.572-176.59 0 0-16.014-204.177-16.014-295.428 0-101.103 16.014-311.394 16.014-311.394 0-97.516 79.063-176.59 176.572-176.59 0 0 303.632-31.983 447.441-31.983 138.807 0 415.412 31.983 415.412 31.983 97.509 0 176.572 79.074 176.572 176.59 0 0 16.014 202.257 16.014 303.411s-16.014 303.411-16.014 303.411z" /> +<glyph unicode="" glyph-name="slideshow" horiz-adv-x="1088" d="M1088-64h-1088v832h1088v-832zM1024 704h-960v-704h960v704zM544 608c-141.28 0-256-114.72-256-256s114.72-256 256-256c141.28 0 256 114.72 256 256s-114.72 256-256 256zM717.568 347.552l-269.568-171.552v343.072l269.568-171.52zM1024 832v-32h-960v32h960zM960 896v-32h-832v32h832zM896 960v-32h-704v32h704z" /> +<glyph unicode="" glyph-name="social" horiz-adv-x="1106" d="M803.512 194.354c47.882 51.528 88.842 69.878 134.062 69.878 90.481 0 163.84-73.359 163.84-163.84s-73.359-163.84-163.84-163.84c-90.481 0-163.84 73.359-163.84 163.84 0 16.957 2.58 33.341 0.942 17.203l-493.773 213.156c-30.843-30.966-71.803-49.316-117.064-49.316-90.481 0-163.84 73.359-163.84 163.84s73.359 163.84 163.84 163.84c45.261 0 86.221-18.35 123.904-56.852l374.538 216.269c2.089-16.548-2.499 4.997-2.499 27.648 0 90.481 73.359 163.84 163.84 163.84s163.84-73.359 163.84-163.84c0-90.522-73.359-163.84-163.84-163.84-45.261 0-86.221 18.309-127.549 61.112l-371.835-214.712c-1.147 10.691 3.441-10.854 3.441-33.464s-4.588-44.155-5.898-42.967l481.731-207.954z" /> +<glyph unicode="" glyph-name="star-empty" d="M504.109 960l-113.182-348.341h-366.261l296.297-215.251-113.152-348.341 296.297 215.281 296.297-215.281-113.182 348.341 296.297 215.251h-366.231l-113.182 348.341zM502.152 859.919l90.534-278.648h293.015l-237.056-172.243 90.564-278.679-237.056 172.243-237.056-172.243 90.534 278.679-237.026 172.243h293.015l90.534 278.648z" /> +<glyph unicode="" glyph-name="star" d="M511.836 959.987l114.928-353.669h371.869l-300.845-218.566 114.895-353.669-300.845 218.566-300.845-218.566 114.928 353.669-300.845 218.566h371.869l114.895 353.669z" /> +<glyph unicode="" glyph-name="stats" horiz-adv-x="1252" d="M103.614 388.456l164.599 197.518 223.118-167.329 148.783 241.74 212.423-115.864 326.353 403.115c19.646-15.891 39.291-31.82 58.937-47.711l-366.099-452.267-204.762 111.692-157.468-249.135-229.148 171.842-176.735-212.082v-210.034h1099.852v-75.852h-1175.704c0 0 0 632.111 0 948.148h75.852v-543.782z" /> +<glyph unicode="" glyph-name="twitter" d="M1024.003 847.776c0 61.978-50.245 112.223-112.223 112.223h-799.552c-61.978 0-112.223-50.245-112.223-112.223v-799.552c0-61.978 50.245-112.223 112.223-112.223h799.552c61.978 0 112.223 50.245 112.223 112.223v799.552zM321.331 49.786c-67.098 0-122.22 60.902-122.22 128v503.322c0 67.098 63.557 122.689 130.655 122.689s125.344-61.145 125.344-128.243v-56.893h225.627c67.098 0 115.712-46.67 115.712-113.768s-46.687-113.785-113.785-113.785h-225.627l-1.927-85.322h225.627c67.098 0 117.638-59.704 117.638-126.802s-62.828-129.197-129.926-129.197h-347.118z" /> +<glyph unicode="" glyph-name="user" horiz-adv-x="888" d="M750.807 652.834c0-169.65-137.529-307.179-307.179-307.179s-307.179 137.529-307.179 307.179c0 169.65 137.529 307.179 307.179 307.179s307.179-137.529 307.179-307.179zM-0.024-63.927c69.324 219.66 241.954 375.442 443.702 375.442s374.378-155.782 443.702-375.442h-887.404z" /> +<glyph unicode="" glyph-name="volume-high" horiz-adv-x="1161" d="M682.086 684.305c162.065-14.063 250.47-353.553 24.61-448.205-49.732-20.855-110.285 47.172-32.973 78.711 110.319 47.479 126.601 237.67-8.67 286.788 0 0-61.099 84.924 17.033 82.705zM716.282 831.732c35.765-5.276 36.685-12.453 51.654-19.754 192.322-94.045 279.189-360.597 169.931-551.569-46.624-81.469-123.062-145.085-211.831-176.863 0 0-19.876-5.828-35.581 3.19-36.685 20.981-19.57 56.991 55.703 99.32 200.113 112.51 197.537 474.947-48.832 563.102 0 0-60.611 88.094 18.956 82.573zM771.203 951.327c35.515-4.252 219.177-101.293 298.127-248.94 139.059-260.028 13.339-627.602-282.371-736.648 0 0-77.45-0.75-59.275 52.356 10.921 32.097 55.607 35.932 91.122 55.44 201.253 110.714 286.122 395.169 169.239 599.506-51.605 90.289-136.225 160.485-234.434 195.584 0 0-62.193 85.036 17.591 82.702zM221.833 652.8l279.245 307.2c43.725 0 79.189-35.465 79.189-79.189v-831.488c0-43.725-35.465-79.189-79.189-79.189l-279.245 307.2h-140.766c-44.783 0-81.067 36.284-81.067 81.067v213.333c0 44.783 36.284 81.067 81.067 81.067h140.766z" /> +<glyph unicode="" glyph-name="volume-low" horiz-adv-x="883" d="M705.607 674.798c167.654-14.548 259.107-365.745 25.459-463.66-51.447-21.575-114.088 48.799-34.11 81.426 114.123 49.117 130.966 245.866-8.969 296.678 0 0-63.206 87.852 17.62 85.557zM229.482 642.207l288.874 317.793c45.233 0 81.92-36.687 81.92-81.92v-860.16c0-45.233-36.687-81.92-81.92-81.92l-288.874 317.793h-145.62c-46.327 0-83.862 37.535-83.862 83.862v220.69c0 46.327 37.535 83.862 83.862 83.862h145.62z" /> +<glyph unicode="" glyph-name="volume-mid" d="M705.607 674.798c167.654-14.548 259.107-365.745 25.459-463.66-51.447-21.575-114.088 48.799-34.11 81.426 114.123 49.117 130.966 245.866-8.969 296.678 0 0-63.206 87.852 17.62 85.557zM740.982 827.309c36.998-5.458 37.95-12.883 53.435-20.435 198.954-97.288 288.817-373.031 175.79-570.589-48.231-84.278-127.305-150.088-219.135-182.962 0 0-20.562-6.029-36.808 3.3-37.95 21.704-20.244 58.956 57.624 102.745 207.014 116.39 204.348 491.325-50.516 582.52 0 0-62.701 91.132 19.61 85.42zM229.482 642.207l288.874 317.793c45.233 0 81.92-36.687 81.92-81.92v-860.16c0-45.233-36.687-81.92-81.92-81.92l-288.874 317.793h-145.62c-46.327 0-83.862 37.535-83.862 83.862v220.69c0 46.327 37.535 83.862 83.862 83.862h145.62z" /> +<glyph unicode="" glyph-name="volume-mute" d="M627.613 173.483v-104.316c0-42.314-34.321-76.635-76.635-76.635l-270.237 297.29h-136.225c-43.338 0-78.452 35.113-78.452 78.452v206.452c0 43.338 35.113 78.452 78.452 78.452h3.402l479.694-479.694zM932.435-39.939l-932.435 932.402 67.518 67.551 257.784-257.817 225.676 248.27c42.314 0 76.635-34.321 76.635-76.635v-473.914l372.34-372.34-67.518-67.518z" /> +<glyph unicode="" glyph-name="windowed" horiz-adv-x="1306" d="M1189.923 814.2l95.868 95.868-49.929 49.929-95.868-95.868-73.375 73.375 0.494-146.255-0.494-0.494 0.494-0.494 0.177-48.764 48.764-0.177 0.494-0.494 0.494 0.494 146.255-0.494-73.375 73.375zM95.868 102.484l-95.868-95.868 49.929-49.929 95.868 95.868 73.375-73.375-0.494 146.255 0.494 0.494-0.494 0.494-0.177 48.764-48.764 0.177-0.494 0.494-0.494-0.494-146.255 0.494 73.375-73.375zM95.868 814.2l-95.868 95.868 49.929 49.929 95.868-95.868 73.375 73.375-0.494-146.255 0.494-0.494-0.494-0.494-0.177-48.764-48.764-0.177-0.494-0.494-0.494 0.494-146.255-0.494 73.375 73.375zM1189.923 102.484l95.868-95.868-49.929-49.929-95.868 95.868-73.375-73.375 0.494 146.255-0.494 0.494 0.494 0.494 0.177 48.764 48.764 0.177 0.494 0.494 0.494-0.494 146.255 0.494-73.375-73.375zM254.482 705.518h776.828v-494.348h-776.828v494.348z" /> +<glyph unicode="" glyph-name="zoom-in" d="M551.676 385.015l54.133-54.133-0.121-0.121c-17.703-17.72-17.703-46.479 0-64.2l132.061-132.061c17.72-17.72 46.479-17.72 64.2 0l32.907 32.907c17.72 17.72 17.72 46.479 0 64.2l-132.061 132.061c-17.599 17.582-46.080 17.703-63.818 0.364l-55.261 55.261c25.808 34.677 41.099 77.65 41.099 124.164 0 114.948-93.323 208.271-208.271 208.271s-208.271-93.323-208.271-208.271c0-114.948 93.323-208.271 208.271-208.271 51.547 0 98.755 18.762 135.133 49.829zM416.265 699.661c86.363 0 156.481-69.996 156.481-156.203s-70.118-156.203-156.481-156.203c-86.363 0-156.481 69.996-156.481 156.203s70.118 156.203 156.481 156.203zM451.254 421.966h-69.424v86.78h-86.78v70.083h86.78v86.12h69.424v-86.12h86.78v-70.083h-86.78v-86.78z" /> +<glyph unicode="" glyph-name="zoom" d="M551.676 385.015l54.133-54.133-0.121-0.121c-17.703-17.72-17.703-46.479 0-64.2l132.061-132.061c17.72-17.72 46.479-17.72 64.2 0l32.907 32.907c17.72 17.72 17.72 46.479 0 64.2l-132.061 132.061c-17.599 17.582-46.080 17.703-63.818 0.364l-55.261 55.261c25.808 34.677 41.099 77.65 41.099 124.164 0 114.948-93.323 208.271-208.271 208.271s-208.271-93.323-208.271-208.271c0-114.948 93.323-208.271 208.271-208.271 51.547 0 98.755 18.762 135.133 49.829zM416.265 699.661c86.363 0 156.481-69.996 156.481-156.203s-70.118-156.203-156.481-156.203c-86.363 0-156.481 69.996-156.481 156.203s70.118 156.203 156.481 156.203z" /> +<glyph unicode="" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" /> +<glyph unicode="" glyph-name="home2" d="M512 928l-512-512 96-96 96 96v-416h256v192h128v-192h256v416l96-96 96 96-512 512zM512 512c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64z" /> +<glyph unicode="" glyph-name="home3" d="M1024 352l-192 192v288h-128v-160l-192 192-512-512v-32h128v-320h320v192h128v-192h320v320h128z" /> +<glyph unicode="" glyph-name="office" d="M0-64h512v1024h-512v-1024zM320 832h128v-128h-128v128zM320 576h128v-128h-128v128zM320 320h128v-128h-128v128zM64 832h128v-128h-128v128zM64 576h128v-128h-128v128zM64 320h128v-128h-128v128zM576 640h448v-64h-448zM576-64h128v256h192v-256h128v576h-448z" /> +<glyph unicode="" glyph-name="newspaper" d="M896 704v128h-896v-704c0-35.346 28.654-64 64-64h864c53.022 0 96 42.978 96 96v544h-128zM832 128h-768v640h768v-640zM128 640h640v-64h-640zM512 512h256v-64h-256zM512 384h256v-64h-256zM512 256h192v-64h-192zM128 512h320v-320h-320z" /> +<glyph unicode="" glyph-name="pencil" d="M864 960c88.364 0 160-71.634 160-160 0-36.020-11.91-69.258-32-96l-64-64-224 224 64 64c26.742 20.090 59.978 32 96 32zM64 224l-64-288 288 64 592 592-224 224-592-592zM715.578 596.422l-448-448-55.156 55.156 448 448 55.156-55.156z" /> +<glyph unicode="" glyph-name="pencil2" d="M384 320l128 64 448 448-64 64-448-448-64-128zM289.3 92.902c-31.632 66.728-65.666 100.762-132.396 132.394l99.096 272.792 128 77.912 384 384h-192l-384-384-192-640 640 192 384 384v192l-384-384-77.912-128z" /> +<glyph unicode="" glyph-name="quill" d="M0-64c128 384 463 1024 1024 1024-263-211-384-704-576-704s-192 0-192 0l-192-320h-64z" /> +<glyph unicode="" glyph-name="pen" d="M1018.17 668.11l-286.058 286.058c-9.334 9.334-21.644 7.234-27.356-4.666l-38.354-79.904 267.198-267.198 79.904 38.354c11.9 5.712 14 18.022 4.666 27.356zM615.384 824.616l-263.384-21.95c-17.5-2.166-32.080-5.898-37.090-28.752-0.006-0.024-0.012-0.042-0.018-0.066-71.422-343.070-314.892-677.848-314.892-677.848l57.374-57.374 271.986 271.99c-5.996 12.53-9.36 26.564-9.36 41.384 0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96c-14.82 0-28.852 3.364-41.384 9.36l-271.988-271.986 57.372-57.374c0 0 334.778 243.47 677.848 314.892 0.024 0.006 0.042 0.012 0.066 0.018 22.854 5.010 26.586 19.59 28.752 37.090l21.95 263.384-273.232 273.232z" /> +<glyph unicode="" glyph-name="blog" d="M384 960v-96c73.482 0 144.712-14.37 211.716-42.71 64.768-27.394 122.958-66.632 172.948-116.624s89.228-108.18 116.624-172.948c28.342-67.004 42.712-138.238 42.712-211.718h96c0 353.46-286.54 640-640 640zM384 768v-96c94.022 0 182.418-36.614 248.9-103.098 66.486-66.484 103.1-154.878 103.1-248.902h96c0 247.422-200.576 448-448 448zM480 576l-64-64-224-64-192-416 25.374-25.374 232.804 232.804c-1.412 5.286-2.178 10.84-2.178 16.57 0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64c-5.732 0-11.282 0.764-16.568 2.178l-232.804-232.804 25.372-25.374 416 192 64 224 64 64-160 160z" /> +<glyph unicode="" glyph-name="eyedropper" d="M986.51 922.51c-49.988 49.986-131.032 49.986-181.020 0l-172.118-172.118-121.372 121.372-135.764-135.764 106.426-106.426-472.118-472.118c-8.048-8.048-11.468-18.958-10.3-29.456h-0.244v-160c0-17.674 14.328-32 32-32h160c0 0 2.664 0 4 0 9.212 0 18.426 3.516 25.456 10.544l472.118 472.118 106.426-106.426 135.764 135.764-121.372 121.372 172.118 172.118c49.986 49.988 49.986 131.032 0 181.020zM173.090 0h-109.090v109.090l469.574 469.572 109.088-109.088-469.572-469.574z" /> +<glyph unicode="" glyph-name="droplet" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" /> +<glyph unicode="" glyph-name="paint-format" d="M1024 384v384h-192v64c0 35.2-28.8 64-64 64h-704c-35.2 0-64-28.8-64-64v-192c0-35.2 28.8-64 64-64h704c35.2 0 64 28.8 64 64v64h128v-256h-576v-128h-32c-17.674 0-32-14.326-32-32v-320c0-17.674 14.326-32 32-32h128c17.674 0 32 14.326 32 32v320c0 17.674-14.326 32-32 32h-32v64h576zM768 768h-704v64h704v-64z" /> +<glyph unicode="" glyph-name="image" d="M959.884 832c0.040-0.034 0.082-0.076 0.116-0.116v-767.77c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.772c0.034 0.040 0.076 0.082 0.114 0.114h895.77zM960 896h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64v0zM832 672c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM896 128h-768v128l224 384 256-320h64l224 192z" /> +<glyph unicode="" glyph-name="images" horiz-adv-x="1152" d="M1088 832h-64v64c0 35.2-28.8 64-64 64h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h64v-64c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64zM128 768v-640h-63.886c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-63.884h-768c-35.2 0-64-28.8-64-64v0zM1088 0.116c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-767.768zM960 608c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM1024 64h-768v128l224 384 256-320h64l224 192z" /> +<glyph unicode="" glyph-name="camera" d="M304 352c0-114.876 93.124-208 208-208s208 93.124 208 208-93.124 208-208 208-208-93.124-208-208zM960 704h-224c-16 64-32 128-96 128h-256c-64 0-80-64-96-128h-224c-35.2 0-64-28.8-64-64v-576c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v576c0 35.2-28.8 64-64 64zM512 68c-156.85 0-284 127.148-284 284 0 156.85 127.15 284 284 284 156.852 0 284-127.15 284-284 0-156.852-127.146-284-284-284zM960 512h-128v64h128v-64z" /> +<glyph unicode="" glyph-name="headphones" d="M288 384h-64v-448h64c17.6 0 32 14.4 32 32v384c0 17.6-14.4 32-32 32zM736 384c-17.602 0-32-14.4-32-32v-384c0-17.6 14.398-32 32-32h64v448h-64zM1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-61.412 10.83-120.29 30.656-174.848-19.478-33.206-30.656-71.87-30.656-113.152 0-112.846 83.448-206.188 192-221.716v443.418c-31.914-4.566-61.664-15.842-87.754-32.378-5.392 26.718-8.246 54.364-8.246 82.676 0 229.75 186.25 416 416 416s416-186.25 416-416c0-28.314-2.83-55.968-8.22-82.696-26.1 16.546-55.854 27.848-87.78 32.418v-443.44c108.548 15.532 192 108.874 192 221.714 0 41.274-11.178 79.934-30.648 113.138 19.828 54.566 30.648 113.452 30.648 174.866z" /> +<glyph unicode="" glyph-name="music" d="M960 960h64v-736c0-88.366-100.29-160-224-160s-224 71.634-224 160c0 88.368 100.29 160 224 160 62.684 0 119.342-18.4 160-48.040v368.040l-512-113.778v-494.222c0-88.366-100.288-160-224-160s-224 71.634-224 160c0 88.368 100.288 160 224 160 62.684 0 119.342-18.4 160-48.040v624.040l576 128z" /> +<glyph unicode="" glyph-name="play2" d="M981.188 799.892c-143.632 20.65-302.332 32.108-469.186 32.108-166.86 0-325.556-11.458-469.194-32.108-27.53-107.726-42.808-226.75-42.808-351.892 0-125.14 15.278-244.166 42.808-351.89 143.638-20.652 302.336-32.11 469.194-32.11 166.854 0 325.552 11.458 469.186 32.11 27.532 107.724 42.812 226.75 42.812 351.89 0 125.142-15.28 244.166-42.812 351.892zM384.002 256v384l320-192-320-192z" /> +<glyph unicode="" glyph-name="film" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" /> +<glyph unicode="" glyph-name="video-camera" d="M384 672c0 88.366 71.634 160 160 160s160-71.634 160-160c0-88.366-71.634-160-160-160s-160 71.634-160 160zM0 672c0 88.366 71.634 160 160 160s160-71.634 160-160c0-88.366-71.634-160-160-160s-160 71.634-160 160zM768 352v96c0 35.2-28.8 64-64 64h-640c-35.2 0-64-28.8-64-64v-320c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v96l256-160v448l-256-160zM640 192h-512v192h512v-192z" /> +<glyph unicode="" glyph-name="dice" d="M864 768h-512c-88 0-160-72-160-160v-512c0-88 72-160 160-160h512c88 0 160 72 160 160v512c0 88-72 160-160 160zM416 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM416 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM608 256c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM828.76 832c-14.93 72.804-79.71 128-156.76 128h-512c-88 0-160-72-160-160v-512c0-77.046 55.196-141.83 128-156.76v636.76c0 35.2 28.8 64 64 64h636.76z" /> +<glyph unicode="" glyph-name="pacman" d="M964.73 781.196c-93.902 109.45-233.21 178.804-388.73 178.804-282.77 0-512-229.23-512-512s229.23-512 512-512c155.52 0 294.828 69.356 388.728 178.804l-324.728 333.196 324.73 333.196zM704 839.398c39.432 0 71.398-31.964 71.398-71.398 0-39.432-31.966-71.398-71.398-71.398s-71.398 31.966-71.398 71.398c0 39.432 31.966 71.398 71.398 71.398z" /> +<glyph unicode="" glyph-name="spades" d="M817.57 611.85c-193.566 143.858-260.266 259.018-305.566 348.148v0c-0.004 0-0.004 0.002-0.004 0.002v-0.002c-45.296-89.13-112-204.292-305.566-348.148-330.036-245.286-19.376-587.668 253.758-399.224-17.796-116.93-78.53-202.172-140.208-238.882v-37.744h384.032v37.74c-61.682 36.708-122.41 121.954-140.212 238.884 273.136-188.446 583.8 153.94 253.766 399.226z" /> +<glyph unicode="" glyph-name="clubs" d="M786.832 567.228c-59.032 0-112.086-24.596-149.852-64.694-15.996-16.984-43.762-37.112-73.8-54.81 14.11 53.868 58.676 121.7 89.628 151.456 39.64 38.17 63.984 91.83 63.984 151.5 0.006 114.894-91.476 208.096-204.788 209.32-113.32-1.222-204.796-94.426-204.796-209.318 0-59.672 24.344-113.33 63.986-151.5 30.954-29.756 75.52-97.588 89.628-151.456-30.042 17.7-57.806 37.826-73.8 54.81-37.768 40.098-90.82 64.694-149.85 64.694-114.386 0-207.080-93.664-207.080-209.328 0-115.638 92.692-209.338 207.080-209.338 59.042 0 112.082 25.356 149.85 65.452 16.804 17.872 46.444 40.138 78.292 58.632-3.002-147.692-73.532-256.168-145.318-298.906v-37.742h384.014v37.74c-71.792 42.736-142.32 151.216-145.32 298.906 31.852-18.494 61.488-40.768 78.292-58.632 37.766-40.094 90.808-65.452 149.852-65.452 114.386 0 207.078 93.7 207.078 209.338-0.002 115.664-92.692 209.328-207.080 209.328z" /> +<glyph unicode="" glyph-name="diamonds" d="M512 960l-320-512 320-512 320 512z" /> +<glyph unicode="" glyph-name="bullhorn" d="M1024 530.744c0 200.926-58.792 363.938-131.482 365.226 0.292 0.006 0.578 0.030 0.872 0.030h-82.942c0 0-194.8-146.336-475.23-203.754-8.56-45.292-14.030-99.274-14.030-161.502s5.466-116.208 14.030-161.5c280.428-57.418 475.23-203.756 475.23-203.756h82.942c-0.292 0-0.578 0.024-0.872 0.032 72.696 1.288 131.482 164.298 131.482 365.224zM864.824 220.748c-9.382 0-19.532 9.742-24.746 15.548-12.63 14.064-24.792 35.96-35.188 63.328-23.256 61.232-36.066 143.31-36.066 231.124 0 87.81 12.81 169.89 36.066 231.122 10.394 27.368 22.562 49.266 35.188 63.328 5.214 5.812 15.364 15.552 24.746 15.552 9.38 0 19.536-9.744 24.744-15.552 12.634-14.064 24.796-35.958 35.188-63.328 23.258-61.23 36.068-143.312 36.068-231.122 0-87.804-12.81-169.888-36.068-231.124-10.39-27.368-22.562-49.264-35.188-63.328-5.208-5.806-15.36-15.548-24.744-15.548zM251.812 530.744c0 51.95 3.81 102.43 11.052 149.094-47.372-6.554-88.942-10.324-140.34-10.324-67.058 0-67.058 0-67.058 0l-55.466-94.686v-88.17l55.46-94.686c0 0 0 0 67.060 0 51.398 0 92.968-3.774 140.34-10.324-7.236 46.664-11.048 97.146-11.048 149.096zM368.15 317.828l-127.998 24.51 81.842-321.544c4.236-16.634 20.744-25.038 36.686-18.654l118.556 47.452c15.944 6.376 22.328 23.964 14.196 39.084l-123.282 229.152zM864.824 411.27c-3.618 0-7.528 3.754-9.538 5.992-4.87 5.42-9.556 13.86-13.562 24.408-8.962 23.6-13.9 55.234-13.9 89.078s4.938 65.478 13.9 89.078c4.006 10.548 8.696 18.988 13.562 24.408 2.010 2.24 5.92 5.994 9.538 5.994 3.616 0 7.53-3.756 9.538-5.994 4.87-5.42 9.556-13.858 13.56-24.408 8.964-23.598 13.902-55.234 13.902-89.078 0-33.842-4.938-65.478-13.902-89.078-4.004-10.548-8.696-18.988-13.56-24.408-2.008-2.238-5.92-5.992-9.538-5.992z" /> +<glyph unicode="" glyph-name="connection" horiz-adv-x="1280" d="M640 384c105.87 0 201.87-43.066 271.402-112.598l-90.468-90.468c-46.354 46.356-110.356 75.066-180.934 75.066s-134.578-28.71-180.934-75.066l-90.468 90.468c69.532 69.532 165.532 112.598 271.402 112.598zM187.452 452.548c120.88 120.88 281.598 187.452 452.548 187.452s331.668-66.572 452.55-187.452l-90.51-90.508c-96.706 96.704-225.28 149.96-362.040 149.96-136.762 0-265.334-53.256-362.038-149.962l-90.51 90.51zM988.784 825.562c106.702-45.132 202.516-109.728 284.782-191.996v0l-90.508-90.508c-145.056 145.056-337.92 224.942-543.058 224.942-205.14 0-398-79.886-543.058-224.942l-90.51 90.51c82.268 82.266 178.082 146.862 284.784 191.994 110.504 46.738 227.852 70.438 348.784 70.438s238.278-23.7 348.784-70.438zM576 64c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64z" /> +<glyph unicode="" glyph-name="podcast" d="M1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-220.054 138.836-407.664 333.686-480.068l-13.686-31.932h384l-13.686 31.932c194.85 72.404 333.686 260.014 333.686 480.068zM486.79 325.174c-22.808 9.788-38.79 32.436-38.79 58.826 0 35.346 28.654 64 64 64s64-28.654 64-64c0-26.39-15.978-49.044-38.786-58.834l-25.214 58.834-25.21-58.826zM538.268 322.708c58.092 12.118 101.732 63.602 101.732 125.292 0 70.694-57.306 128-128 128-70.692 0-128-57.306-128-128 0-61.692 43.662-113.122 101.76-125.228l-74.624-174.122c-91.23 39.15-155.136 129.784-155.136 235.35 0 141.384 114.616 268 256 268s256-126.616 256-268c0-105.566-63.906-196.2-155.136-235.35l-74.596 174.058zM688.448-27.708l-73.924 172.486c126.446 42.738 217.476 162.346 217.476 303.222 0 176.73-143.268 320-320 320-176.73 0-320-143.27-320-320 0-140.876 91.030-260.484 217.476-303.222l-73.924-172.486c-159.594 68.488-271.386 227.034-271.386 411.708 0 247.332 200.502 459.834 447.834 459.834s447.834-212.502 447.834-459.834c0-184.674-111.792-343.22-271.386-411.708z" /> +<glyph unicode="" glyph-name="feed" d="M384 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM664.348 729.474c99.852-54.158 167.652-159.898 167.652-281.474s-67.8-227.316-167.652-281.474c44.066 70.126 71.652 170.27 71.652 281.474s-27.586 211.348-71.652 281.474zM288 448c0-111.204 27.584-211.348 71.652-281.474-99.852 54.16-167.652 159.898-167.652 281.474s67.8 227.314 167.652 281.474c-44.068-70.126-71.652-170.27-71.652-281.474zM96 448c0-171.9 54.404-326.184 140.652-431.722-142.302 90.948-236.652 250.314-236.652 431.722s94.35 340.774 236.652 431.722c-86.248-105.538-140.652-259.822-140.652-431.722zM787.352 879.72c142.298-90.946 236.648-250.312 236.648-431.72s-94.35-340.774-236.648-431.72c86.244 105.536 140.648 259.82 140.648 431.72s-54.404 326.184-140.648 431.72z" /> +<glyph unicode="" glyph-name="mic" d="M480 256c88.366 0 160 71.634 160 160v384c0 88.366-71.634 160-160 160s-160-71.634-160-160v-384c0-88.366 71.636-160 160-160zM704 512v-96c0-123.71-100.29-224-224-224-123.712 0-224 100.29-224 224v96h-64v-96c0-148.238 112.004-270.3 256-286.22v-129.78h-128v-64h320v64h-128v129.78c143.994 15.92 256 137.982 256 286.22v96h-64z" /> +<glyph unicode="" glyph-name="book" d="M896 832v-832h-672c-53.026 0-96 42.98-96 96s42.974 96 96 96h608v768h-640c-70.398 0-128-57.6-128-128v-768c0-70.4 57.602-128 128-128h768v896h-64zM224.056 128v0c-0.018-0.002-0.038 0-0.056 0-17.672 0-32-14.326-32-32s14.328-32 32-32c0.018 0 0.038 0.002 0.056 0.002v-0.002h607.89v64h-607.89z" /> +<glyph unicode="" glyph-name="books" horiz-adv-x="1152" d="M224 832h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM192 640h-128v64h128v-64zM544 832h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM512 640h-128v64h128v-64zM765.088 782.52l-171.464-86.394c-15.716-7.918-22.096-27.258-14.178-42.976l287.978-571.548c7.918-15.718 27.258-22.098 42.976-14.178l171.464 86.392c15.716 7.92 22.096 27.26 14.178 42.974l-287.978 571.55c-7.92 15.718-27.26 22.1-42.976 14.18z" /> +<glyph unicode="" glyph-name="library" horiz-adv-x="1088" d="M1024 0v64h-64v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-64v-64h-64v-64h1088v64h-64zM512 960h64l512-320v-64h-1088v64l512 320z" /> +<glyph unicode="" glyph-name="file-text" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 512h448v-64h-448zM256 384h448v-64h-448zM256 256h448v-64h-448zM256 640h448v-64h-448z" /> +<glyph unicode="" glyph-name="profile" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" /> +<glyph unicode="" glyph-name="file-empty" d="M917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="files-empty" d="M917.806 602.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-368c-44.114 0-80-35.888-80-80v-736c0-44.112 35.886-80 80-80h608c44.112 0 80 35.888 80 80v496c0 14.332-4.372 39.35-42.194 90.924zM785.374 657.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-608c-8.672 0-16 7.328-16 16v736c0 8.672 7.328 16 16 16 0 0 367.956 0.002 368 0v-224c0-17.672 14.324-32 32-32h224v-496zM602.924 917.804c-51.574 37.822-76.592 42.196-90.924 42.196h-368c-44.112 0-80-35.888-80-80v-736c0-38.632 27.528-70.958 64-78.39v814.39c0 8.672 7.328 16 16 16h486.876c-9.646 7.92-19.028 15.26-27.952 21.804z" /> +<glyph unicode="" glyph-name="file-text2" d="M917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624zM736 128h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32zM736 256h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32zM736 384h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32z" /> +<glyph unicode="" glyph-name="file-picture" d="M832 64h-640v128l192 320 263-320 185 128v-256zM832 480c0-53.020-42.98-96-96-96-53.022 0-96 42.98-96 96s42.978 96 96 96c53.020 0 96-42.98 96-96zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="file-music" d="M917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624zM756.288 568.748c-7.414 6.080-17.164 8.514-26.562 6.632l-320-64c-14.958-2.994-25.726-16.126-25.726-31.38v-236.876c-18.832 8.174-40.678 12.876-64 12.876-70.692 0-128-42.98-128-96s57.308-96 128-96 128 42.98 128 96v229.766l256 51.202v-133.842c-18.832 8.174-40.678 12.876-64 12.876-70.692 0-128-42.98-128-96s57.308-96 128-96 128 42.98 128 96v319.998c0 9.586-4.298 18.668-11.712 24.748z" /> +<glyph unicode="" glyph-name="file-play" d="M384 576l320-224-320-224v448zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="file-video" d="M917.806 730.924c-22.208 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.594 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.882-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0 0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.98-17.78 50.678-41.878 81.374-72.572v0 0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.32-32 32-32h224v-624zM256 448h320v-320h-320v320zM576 320l192 128v-320l-192 128z" /> +<glyph unicode="" glyph-name="file-zip" d="M917.806 730.924c-22.208 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.884-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0 0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.98-17.78 50.678-41.878 81.374-72.572v0 0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.322-32 32-32h224v-624zM256 896h128v-64h-128v64zM384 832h128v-64h-128v64zM256 768h128v-64h-128v64zM384 704h128v-64h-128v64zM256 640h128v-64h-128v64zM384 576h128v-64h-128v64zM256 512h128v-64h-128v64zM384 448h128v-64h-128v64zM256 112c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-80v64h-128v-272zM448 192v-64h-128v64h128z" /> +<glyph unicode="" glyph-name="copy" d="M640 704v256h-448l-192-192v-576h384v-256h640v768h-384zM192 869.49v-101.49h-101.49l101.49 101.49zM64 256v448h192v192h320v-192l-192-192v-256h-320zM576 613.49v-101.49h-101.49l101.49 101.49zM960 0h-512v448h192v192h320v-640z" /> +<glyph unicode="" glyph-name="paste" d="M704 832h-128v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-128v-128h512v128zM512 832h-128v63.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886zM832 640v160c0 17.6-14.4 32-32 32h-64v-64h32v-128h-192l-192-192v-256h-256v576h32v64h-64c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM576 549.49v-101.49h-101.49l101.49 101.49zM960 0h-512v384h192v192h320v-576z" /> +<glyph unicode="" glyph-name="stack" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" /> +<glyph unicode="" glyph-name="folder2" d="M448 832l128-128h448v-704h-1024v832z" /> +<glyph unicode="" glyph-name="folder-open" d="M832 0l192 512h-832l-192-512zM128 576l-128-576v832h288l128-128h416v-128z" /> +<glyph unicode="" glyph-name="folder-plus" d="M576 704l-128 128h-448v-832h1024v704h-448zM704 256h-128v-128h-128v128h-128v128h128v128h128v-128h128v-128z" /> +<glyph unicode="" glyph-name="folder-minus" d="M576 704l-128 128h-448v-832h1024v704h-448zM704 256h-384v128h384v-128z" /> +<glyph unicode="" glyph-name="folder-download" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 96l-224 224h160v256h128v-256h160l-224-224z" /> +<glyph unicode="" glyph-name="folder-upload" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 480l224-224h-160v-256h-128v256h-160l224 224z" /> +<glyph unicode="" glyph-name="price-tag" d="M976 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM736 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> +<glyph unicode="" glyph-name="price-tags" horiz-adv-x="1280" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" /> +<glyph unicode="" glyph-name="barcode" d="M0 832h128v-640h-128zM192 832h64v-640h-64zM320 832h64v-640h-64zM512 832h64v-640h-64zM768 832h64v-640h-64zM960 832h64v-640h-64zM640 832h32v-640h-32zM448 832h32v-640h-32zM864 832h32v-640h-32zM0 128h64v-64h-64zM192 128h64v-64h-64zM320 128h64v-64h-64zM640 128h64v-64h-64zM960 128h64v-64h-64zM768 128h128v-64h-128zM448 128h128v-64h-128z" /> +<glyph unicode="" glyph-name="qrcode" d="M320 896h-256v-256h256v256zM384 960v0-384h-384v384h384zM128 832h128v-128h-128zM960 896h-256v-256h256v256zM1024 960v0-384h-384v384h384zM768 832h128v-128h-128zM320 256h-256v-256h256v256zM384 320v0-384h-384v384h384zM128 192h128v-128h-128zM448 960h64v-64h-64zM512 896h64v-64h-64zM448 832h64v-64h-64zM512 768h64v-64h-64zM448 704h64v-64h-64zM512 640h64v-64h-64zM448 576h64v-64h-64zM448 448h64v-64h-64zM512 384h64v-64h-64zM448 320h64v-64h-64zM512 256h64v-64h-64zM448 192h64v-64h-64zM512 128h64v-64h-64zM448 64h64v-64h-64zM512 0h64v-64h-64zM960 448h64v-64h-64zM64 448h64v-64h-64zM128 512h64v-64h-64zM0 512h64v-64h-64zM256 512h64v-64h-64zM320 448h64v-64h-64zM384 512h64v-64h-64zM576 448h64v-64h-64zM640 512h64v-64h-64zM704 448h64v-64h-64zM768 512h64v-64h-64zM832 448h64v-64h-64zM896 512h64v-64h-64zM960 320h64v-64h-64zM576 320h64v-64h-64zM640 384h64v-64h-64zM704 320h64v-64h-64zM832 320h64v-64h-64zM896 384h64v-64h-64zM960 192h64v-64h-64zM576 192h64v-64h-64zM640 256h64v-64h-64zM768 256h64v-64h-64zM832 192h64v-64h-64zM896 256h64v-64h-64zM960 64h64v-64h-64zM640 128h64v-64h-64zM704 64h64v-64h-64zM768 128h64v-64h-64zM832 64h64v-64h-64zM640 0h64v-64h-64zM768 0h64v-64h-64zM896 0h64v-64h-64z" /> +<glyph unicode="" glyph-name="ticket" d="M575.996 640l127.998-127.998-255.994-255.994-127.998 127.998zM1001.526 662.496l-73.516 73.516-32.008-32.008c-16.378-16.38-39.010-26.51-64-26.51-49.988 0-90.514 40.522-90.514 90.51 0 25.002 10.14 47.638 26.534 64.018l31.988 31.986-73.518 73.516c-29.968 29.968-79.008 29.968-108.976 0l-595.040-595.038c-29.966-29.968-29.966-79.010 0-108.976l73.52-73.518 31.962 31.964c16.382 16.406 39.030 26.552 64.044 26.552 49.988 0 90.51-40.524 90.51-90.51 0-25.006-10.14-47.64-26.534-64.022l-31.984-31.986 73.516-73.518c29.966-29.966 79.008-29.966 108.976 0l595.040 595.040c29.964 29.976 29.964 79.016 0 108.984zM448.002 128.004l-256 256 384 384 256-256-384-384z" /> +<glyph unicode="" glyph-name="cart" d="M384 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 448v384h-768c0 35.346-28.654 64-64 64h-192v-64h128l48.074-412.054c-29.294-23.458-48.074-59.5-48.074-99.946 0-70.696 57.308-128 128-128h768v64h-768c-35.346 0-64 28.654-64 64 0 0.218 0.014 0.436 0.016 0.656l831.984 127.344z" /> +<glyph unicode="" glyph-name="coin-dollar" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM512 448v128h128v64h-128v64h-64v-64h-128v-256h128v-128h-128v-64h128v-64h64v64h128.002l-0.002 256h-128zM448 448h-64v128h64v-128zM576.002 256h-64.002v128h64.002v-128z" /> +<glyph unicode="" glyph-name="coin-euro" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.076 0 384-171.922 384-384s-171.924-384-384-384zM670.824 315.66c-15.27 8.884-34.862 3.708-43.75-11.57-17.256-29.662-49.088-48.090-83.074-48.090h-128c-41.716 0-77.286 26.754-90.496 64h154.496c17.672 0 32 14.326 32 32s-14.328 32-32 32h-160v64h160c17.672 0 32 14.328 32 32s-14.328 32-32 32h-154.496c13.21 37.246 48.78 64 90.496 64h128c33.986 0 65.818-18.426 83.074-48.090 8.888-15.276 28.478-20.456 43.752-11.568 15.276 8.888 20.456 28.476 11.568 43.752-28.672 49.288-81.702 79.906-138.394 79.906h-128c-77.268 0-141.914-55.056-156.78-128h-35.22c-17.672 0-32-14.328-32-32s14.328-32 32-32h32v-64h-32c-17.672 0-32-14.326-32-32s14.328-32 32-32h35.22c14.866-72.944 79.512-128 156.78-128h128c56.692 0 109.72 30.62 138.394 79.91 8.888 15.276 3.708 34.864-11.57 43.75z" /> +<glyph unicode="" glyph-name="coin-pound" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.074 0 384-171.922 384-384s-171.926-384-384-384zM608 256h-224v128h96c17.672 0 32 14.326 32 32s-14.328 32-32 32h-96v32c0 52.934 43.066 96 96 96 34.17 0 66.042-18.404 83.18-48.030 8.85-15.298 28.426-20.526 43.722-11.676 15.296 8.848 20.526 28.424 11.676 43.722-28.538 49.336-81.638 79.984-138.578 79.984-88.224 0-160-71.776-160-160v-32h-32c-17.672 0-32-14.326-32-32s14.328-32 32-32h32v-192h288c17.674 0 32 14.326 32 32s-14.326 32-32 32z" /> +<glyph unicode="" glyph-name="coin-yen" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.076 0 384-171.922 384-384s-171.924-384-384-384zM608 384c17.674 0 32 14.326 32 32s-14.326 32-32 32h-68.208l94.832 142.25c9.804 14.704 5.83 34.572-8.876 44.376-14.704 9.802-34.572 5.83-44.376-8.876l-101.372-152.062-101.374 152.062c-9.804 14.706-29.672 18.68-44.376 8.876-14.706-9.804-18.678-29.672-8.876-44.376l94.834-142.25h-68.208c-17.672 0-32-14.326-32-32s14.328-32 32-32h96v-64h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h96v-96c0-17.674 14.328-32 32-32s32 14.326 32 32v96h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v64h96z" /> +<glyph unicode="" glyph-name="credit-card" d="M928 832h-832c-52.8 0-96-43.2-96-96v-576c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v576c0 52.8-43.2 96-96 96zM96 768h832c17.346 0 32-14.654 32-32v-96h-896v96c0 17.346 14.654 32 32 32zM928 128h-832c-17.346 0-32 14.654-32 32v288h896v-288c0-17.346-14.654-32-32-32zM128 320h64v-128h-64zM256 320h64v-128h-64zM384 320h64v-128h-64z" /> +<glyph unicode="" glyph-name="calculator" d="M384 896h-320c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM384 640h-320v64h320v-64zM896 896h-320c-35.204 0-64-28.8-64-64v-832c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v832c0 35.2-28.8 64-64 64zM896 320h-320v64h320v-64zM896 512h-320v64h320v-64zM384 384h-320c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM384 128h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" /> +<glyph unicode="" glyph-name="lifebuoy" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" /> +<glyph unicode="" glyph-name="phone" d="M704 320c-64-64-64-128-128-128s-128 64-192 128-128 128-128 192 64 64 128 128-128 256-192 256-192-192-192-192c0-128 131.5-387.5 256-512s384-256 512-256c0 0 192 128 192 192s-192 256-256 192z" /> +<glyph unicode="" glyph-name="phone-hang-up" d="M1017.378 384.006c8.004-55.482 13.216-131.392-11.664-160.446-41.142-48.044-301.712-48.044-301.712 48.042 0 48.398 42.856 80.134 1.712 128.178-40.472 47.262-113.026 48.030-193.714 48.042-80.686-0.012-153.242-0.78-193.714-48.042-41.142-48.046 1.714-79.78 1.714-128.178 0-96.086-260.57-96.086-301.714-48.044-24.878 29.054-19.668 104.964-11.662 160.446 6.16 37.038 21.724 76.996 71.548 127.994 0 0.002 0.002 0.002 0.002 0.004 74.738 69.742 187.846 126.738 429.826 127.968v0.030c1.344 0 2.664-0.010 4-0.014 1.338 0.004 2.656 0.014 4 0.014v-0.028c241.98-1.23 355.088-58.226 429.826-127.968 0.002-0.002 0.002-0.004 0.002-0.004 49.824-50.996 65.39-90.954 71.55-127.994z" /> +<glyph unicode="" glyph-name="address-book" d="M192 960v-1024h768v1024h-768zM576 703.67c70.51 0 127.67-57.16 127.67-127.67s-57.16-127.67-127.67-127.67-127.67 57.16-127.67 127.67 57.16 127.67 127.67 127.67v0zM768 192h-384v64c0 70.696 57.306 128 128 128v0h128c70.696 0 128-57.304 128-128v-64zM64 896h96v-192h-96v192zM64 640h96v-192h-96v192zM64 384h96v-192h-96v192zM64 128h96v-192h-96v192z" /> +<glyph unicode="" glyph-name="envelop" d="M928 832h-832c-52.8 0-96-43.2-96-96v-640c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v640c0 52.8-43.2 96-96 96zM398.74 409.628l-270.74-210.892v501.642l270.74-290.75zM176.38 704h671.24l-335.62-252-335.62 252zM409.288 398.302l102.712-110.302 102.71 110.302 210.554-270.302h-626.528l210.552 270.302zM625.26 409.628l270.74 290.75v-501.642l-270.74 210.892z" /> +<glyph unicode="" glyph-name="pushpin" d="M544 960l-96-96 96-96-224-256h-224l176-176-272-360.616v-39.384h39.384l360.616 272 176-176v224l256 224 96-96 96 96-480 480zM448 416l-64 64 224 224 64-64-224-224z" /> +<glyph unicode="" glyph-name="location" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 448c-106.040 0-192 85.96-192 192s85.96 192 192 192 192-85.96 192-192-85.96-192-192-192z" /> +<glyph unicode="" glyph-name="location2" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 444c-108.248 0-196 87.752-196 196s87.752 196 196 196 196-87.752 196-196-87.752-196-196-196zM388 640c0 68.483 55.517 124 124 124s124-55.517 124-124c0-68.483-55.517-124-124-124s-124 55.517-124 124z" /> +<glyph unicode="" glyph-name="compass" d="M544.010-64.004c-2.296 0-4.622 0.25-6.94 0.764-14.648 3.25-25.070 16.238-25.070 31.24v480h-480c-15.002 0-27.992 10.422-31.24 25.070-3.25 14.646 4.114 29.584 17.708 35.928l960 448c12.196 5.688 26.644 3.144 36.16-6.372 9.516-9.514 12.060-23.966 6.372-36.16l-448-960c-5.342-11.44-16.772-18.47-28.99-18.47zM176.242 512h367.758c17.674 0 32-14.328 32-32v-367.758l349.79 749.546-749.548-349.788z" /> +<glyph unicode="" glyph-name="compass2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM96 448c0 229.75 186.25 416 416 416 109.574 0 209.232-42.386 283.534-111.628l-411.534-176.372-176.372-411.534c-69.242 74.302-111.628 173.96-111.628 283.534zM585.166 374.834l-256.082-109.75 109.75 256.082 146.332-146.332zM512 32c-109.574 0-209.234 42.386-283.532 111.628l411.532 176.372 176.372 411.532c69.242-74.298 111.628-173.958 111.628-283.532 0-229.75-186.25-416-416-416z" /> +<glyph unicode="" glyph-name="map" d="M0 768l320 128v-768l-320-128zM384 928l320-192v-736l-320 160zM768 736l256 192v-768l-256-192z" /> +<glyph unicode="" glyph-name="map2" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" /> +<glyph unicode="" glyph-name="history" horiz-adv-x="1088" d="M640 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM832 512v-128h-256v320h128v-192z" /> +<glyph unicode="" glyph-name="clock" d="M658.744 210.744l-210.744 210.746v282.51h128v-229.49l173.256-173.254zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" /> +<glyph unicode="" glyph-name="clock2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM658.744 210.744l-210.744 210.746v282.51h128v-229.49l173.256-173.254-90.512-90.512z" /> +<glyph unicode="" glyph-name="alarm" d="M512 832c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448zM512 24c-198.824 0-360 161.178-360 360 0 198.824 161.176 360 360 360 198.822 0 360-161.176 360-360 0-198.822-161.178-360-360-360zM934.784 672.826c16.042 28.052 25.216 60.542 25.216 95.174 0 106.040-85.96 192-192 192-61.818 0-116.802-29.222-151.92-74.596 131.884-27.236 245.206-105.198 318.704-212.578v0zM407.92 885.404c-35.116 45.374-90.102 74.596-151.92 74.596-106.040 0-192-85.96-192-192 0-34.632 9.174-67.122 25.216-95.174 73.5 107.38 186.822 185.342 318.704 212.578zM512 384v256h-64v-320h256v64z" /> +<glyph unicode="" glyph-name="bell" d="M1025.5 160c0 288-256 224-256 448 0 18.56-1.788 34.42-5.048 47.928-16.83 113.018-92.156 203.72-189.772 231.36 0.866 3.948 1.32 8.032 1.32 12.21 0 33.278-28.8 60.502-64 60.502s-64-27.224-64-60.5c0-4.18 0.456-8.264 1.32-12.21-109.47-30.998-190.914-141.298-193.254-273.442-0.040-1.92-0.066-3.864-0.066-5.846 0-224.002-256-160.002-256-448.002 0-76.226 170.59-139.996 398.97-156.080 21.524-40.404 64.056-67.92 113.030-67.92s91.508 27.516 113.030 67.92c228.38 16.084 398.97 79.854 398.97 156.080 0 0.228-0.026 0.456-0.028 0.682l1.528-0.682zM826.246 105.904c-54.23-14.47-118.158-24.876-186.768-30.648-5.704 65.418-60.582 116.744-127.478 116.744s-121.774-51.326-127.478-116.744c-68.608 5.772-132.538 16.178-186.768 30.648-74.63 19.914-110.31 42.19-123.368 54.096 13.058 11.906 48.738 34.182 123.368 54.096 86.772 23.152 198.372 35.904 314.246 35.904s227.474-12.752 314.246-35.904c74.63-19.914 110.31-42.19 123.368-54.096-13.058-11.906-48.738-34.182-123.368-54.096z" /> +<glyph unicode="" glyph-name="stopwatch" d="M512.002 766.788v65.212h128v64c0 35.346-28.654 64-64.002 64h-191.998c-35.346 0-64-28.654-64-64v-64h128v-65.212c-214.798-16.338-384-195.802-384-414.788 0-229.75 186.25-416 416-416s416 186.25 416 416c0 218.984-169.202 398.448-384 414.788zM706.276 125.726c-60.442-60.44-140.798-93.726-226.274-93.726s-165.834 33.286-226.274 93.726c-60.44 60.44-93.726 140.8-93.726 226.274s33.286 165.834 93.726 226.274c58.040 58.038 134.448 91.018 216.114 93.548l-21.678-314.020c-1.86-26.29 12.464-37.802 31.836-37.802s33.698 11.512 31.836 37.802l-21.676 314.022c81.666-2.532 158.076-35.512 216.116-93.55 60.44-60.44 93.726-140.8 93.726-226.274s-33.286-165.834-93.726-226.274z" /> +<glyph unicode="" glyph-name="calendar" d="M320 576h128v-128h-128zM512 576h128v-128h-128zM704 576h128v-128h-128zM128 192h128v-128h-128zM320 192h128v-128h-128zM512 192h128v-128h-128zM320 384h128v-128h-128zM512 384h128v-128h-128zM704 384h128v-128h-128zM128 384h128v-128h-128zM832 960v-64h-128v64h-448v-64h-128v64h-128v-1024h960v1024h-128zM896 0h-832v704h832v-704z" /> +<glyph unicode="" glyph-name="printer" d="M256 896h512v-128h-512v128zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.794-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM128 512c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.652-64-64-64zM704 64h-384v320h384v-320z" /> +<glyph unicode="" glyph-name="keyboard" horiz-adv-x="1152" d="M1088 832h-1024c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h1024c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM640 704h128v-128h-128v128zM832 512v-128h-128v128h128zM448 704h128v-128h-128v128zM640 512v-128h-128v128h128zM256 704h128v-128h-128v128zM448 512v-128h-128v128h128zM128 704h64v-128h-64v128zM128 512h128v-128h-128v128zM192 192h-64v128h64v-128zM768 192h-512v128h512v-128zM1024 192h-192v128h192v-128zM1024 384h-128v128h128v-128zM1024 576h-192v128h192v-128z" /> +<glyph unicode="" glyph-name="display" d="M0 896v-640h1024v640h-1024zM960 320h-896v512h896v-512zM672 192h-320l-32-128-64-64h512l-64 64z" /> +<glyph unicode="" glyph-name="laptop" d="M896 256v512c0 35.2-28.8 64-64 64h-640c-35.2 0-64-28.8-64-64v-512h-128v-192h1024v192h-128zM640 128h-256v64h256v-64zM832 256h-640v511.886c0.034 0.040 0.076 0.082 0.114 0.114h639.77c0.040-0.034 0.082-0.076 0.116-0.116v-511.884z" /> +<glyph unicode="" glyph-name="mobile" d="M736 960h-448c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h448c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 912h256v-32h-256v32zM512 0c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM768 192h-512v640h512v-640z" /> +<glyph unicode="" glyph-name="mobile2" d="M768 960h-576c-35.2 0-64-28.798-64-64v-896c0-35.2 28.798-64 64-64h576c35.2 0 64 28.8 64 64v896c0 35.202-28.8 64-64 64zM480-17.782c-27.492 0-49.782 22.29-49.782 49.782s22.29 49.782 49.782 49.782 49.782-22.29 49.782-49.782-22.29-49.782-49.782-49.782zM768 128h-576v704h576v-704z" /> +<glyph unicode="" glyph-name="tablet" d="M800 960h-640c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h640c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM480-32c-17.672 0-32 14.326-32 32s14.328 32 32 32 32-14.326 32-32-14.328-32-32-32zM768 64h-576v768h576v-768z" /> +<glyph unicode="" glyph-name="tv" d="M981.188 671.892c-88.808 12.768-183.382 22.016-282.076 27.22l164.888 164.888-64 64-224.558-224.556c-21.006 0.368-42.156 0.556-63.442 0.556v0l-256 256-64-64 194.196-194.196c-120.922-4.242-236.338-14.524-343.386-29.912-27.532-107.726-42.81-226.752-42.81-351.892s15.278-244.166 42.804-351.89c143.642-20.652 302.34-32.11 469.196-32.11s325.55 11.458 469.188 32.11c27.534 107.724 42.812 226.75 42.812 351.89s-15.278 244.166-42.812 351.892zM863.892 85.406c-107.73-13.766-226.75-21.406-351.892-21.406s-244.166 7.64-351.892 21.406c-20.648 71.816-32.108 151.166-32.108 234.594 0 83.43 11.458 162.78 32.108 234.596 107.726 13.766 226.75 21.404 351.892 21.404 125.136 0 244.162-7.638 351.886-21.404 20.656-71.816 32.114-151.166 32.114-234.596 0-83.428-11.458-162.778-32.108-234.594z" /> +<glyph unicode="" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" /> +<glyph unicode="" glyph-name="drawer2" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776z" /> +<glyph unicode="" glyph-name="box-add" d="M832 896h-640l-192-192v-672c0-17.674 14.326-32 32-32h960c17.672 0 32 14.326 32 32v672l-192 192zM512 128l-320 256h192v192h256v-192h192l-320-256zM154.51 768l64 64h586.978l64-64h-714.978z" /> +<glyph unicode="" glyph-name="box-remove" d="M832 896h-640l-192-192v-672c0-17.674 14.326-32 32-32h960c17.672 0 32 14.326 32 32v672l-192 192zM640 320v-192h-256v192h-192l320 256 320-256h-192zM154.51 768l64 64h586.976l64-64h-714.976z" /> +<glyph unicode="" glyph-name="download" d="M512 384l256 256h-192v256h-128v-256h-192zM744.726 488.728l-71.74-71.742 260.080-96.986-421.066-157.018-421.066 157.018 260.080 96.986-71.742 71.742-279.272-104.728v-256l512-192 512 192v256z" /> +<glyph unicode="" glyph-name="upload" d="M448 384h128v256h192l-256 256-256-256h192zM640 528v-98.712l293.066-109.288-421.066-157.018-421.066 157.018 293.066 109.288v98.712l-384-144v-256l512-192 512 192v256z" /> +<glyph unicode="" glyph-name="floppy-disk" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" /> +<glyph unicode="" glyph-name="drive" d="M192 64h640c106.038 0 192 85.96 192 192h-1024c0-106.040 85.962-192 192-192zM832 192h64v-64h-64v64zM960 832h-896l-64-512h1024z" /> +<glyph unicode="" glyph-name="database" d="M512 960c-282.77 0-512-71.634-512-160v-128c0-88.366 229.23-160 512-160s512 71.634 512 160v128c0 88.366-229.23 160-512 160zM512 416c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160zM512 128c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160z" /> +<glyph unicode="" glyph-name="undo" d="M512 896c-141.384 0-269.376-57.32-362.032-149.978l-149.968 149.978v-384h384l-143.532 143.522c69.496 69.492 165.492 112.478 271.532 112.478 212.068 0 384-171.924 384-384 0-114.696-50.292-217.636-130.018-288l84.666-96c106.302 93.816 173.352 231.076 173.352 384 0 282.77-229.23 512-512 512z" /> +<glyph unicode="" glyph-name="redo" d="M0 384c0-152.924 67.048-290.184 173.35-384l84.666 96c-79.726 70.364-130.016 173.304-130.016 288 0 212.076 171.93 384 384 384 106.042 0 202.038-42.986 271.53-112.478l-143.53-143.522h384v384l-149.97-149.978c-92.654 92.658-220.644 149.978-362.030 149.978-282.77 0-512-229.23-512-512z" /> +<glyph unicode="" glyph-name="undo2" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" /> +<glyph unicode="" glyph-name="redo2" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" /> +<glyph unicode="" glyph-name="forward" d="M262.14 960c-113.728-206.032-132.89-520.304 313.86-509.824v253.824l384-384-384-384v248.372c-534.96-13.942-594.572 472.214-313.86 775.628z" /> +<glyph unicode="" glyph-name="reply" d="M448 184.372v-248.372l-384 384 384 384v-253.824c446.75-10.48 427.588 303.792 313.862 509.824 280.71-303.414 221.1-789.57-313.862-775.628z" /> +<glyph unicode="" glyph-name="bubble" d="M512 896c282.77 0 512-186.25 512-416 0-229.752-229.23-416-512-416-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> +<glyph unicode="" glyph-name="bubbles" horiz-adv-x="1152" d="M1088 58.834c0-45.5 26.028-84.908 64-104.184v-15.938c-10.626-1.454-21.472-2.224-32.5-2.224-68.008 0-129.348 28.528-172.722 74.264-26.222-6.982-54.002-10.752-82.778-10.752-159.058 0-288 114.616-288 256s128.942 256 288 256c159.058 0 288-114.616 288-256 0-55.348-19.764-106.592-53.356-148.466-6.824-14.824-10.644-31.312-10.644-48.7zM512 960c278.458 0 504.992-180.614 511.836-405.52-49.182 21.92-103.586 33.52-159.836 33.52-95.56 0-185.816-33.446-254.138-94.178-70.846-62.972-109.862-147.434-109.862-237.822 0-44.672 9.544-87.888 27.736-127.788-5.228-0.126-10.468-0.212-15.736-0.212-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> +<glyph unicode="" glyph-name="bubbles2" horiz-adv-x="1152" d="M480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" /> +<glyph unicode="" glyph-name="bubble2" d="M512 768c-54.932 0-107.988-8.662-157.694-25.742-46.712-16.054-88.306-38.744-123.628-67.444-66.214-53.798-102.678-122.984-102.678-194.814 0-40.298 11.188-79.378 33.252-116.152 22.752-37.92 56.982-72.586 98.988-100.252 30.356-19.992 50.78-51.948 56.176-87.894 1.8-11.984 2.928-24.088 3.37-36.124 7.47 6.194 14.75 12.846 21.88 19.976 24.154 24.152 56.78 37.49 90.502 37.49 5.368 0 10.762-0.336 16.156-1.024 20.974-2.666 42.398-4.020 63.676-4.020 54.934 0 107.988 8.66 157.694 25.742 46.712 16.054 88.306 38.744 123.628 67.444 66.214 53.796 102.678 122.984 102.678 194.814s-36.464 141.016-102.678 194.814c-35.322 28.698-76.916 51.39-123.628 67.444-49.706 17.080-102.76 25.742-157.694 25.742zM512 896v0c282.77 0 512-186.25 512-416 0-229.752-229.23-416-512-416-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> +<glyph unicode="" glyph-name="bubbles3" horiz-adv-x="1152" d="M1088 58.834c0-45.5 26.028-84.908 64-104.184v-15.938c-10.626-1.454-21.472-2.224-32.5-2.224-68.008 0-129.348 28.528-172.722 74.264-26.222-6.982-54.002-10.752-82.778-10.752-159.058 0-288 114.616-288 256s128.942 256 288 256c159.058 0 288-114.616 288-256 0-55.348-19.764-106.592-53.356-148.466-6.824-14.824-10.644-31.312-10.644-48.7zM230.678 738.814c-66.214-53.798-102.678-122.984-102.678-194.814 0-40.298 11.188-79.378 33.252-116.15 22.752-37.92 56.982-72.586 98.988-100.252 30.356-19.992 50.78-51.948 56.176-87.894 1.8-11.984 2.928-24.088 3.37-36.124 7.47 6.194 14.75 12.846 21.88 19.976 24.154 24.152 56.78 37.49 90.502 37.49 5.368 0 10.762-0.336 16.156-1.024 20.948-2.662 42.344-4.016 63.594-4.020v-128c-27.128 0.002-53.754 1.738-79.742 5.042-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416 278.458 0 504.992-180.614 511.836-405.52-41.096 18.316-85.84 29.422-132.262 32.578-11.53 56.068-45.402 108.816-98.252 151.756-35.322 28.698-76.916 51.39-123.628 67.444-49.706 17.080-102.76 25.742-157.694 25.742-54.932 0-107.988-8.662-157.694-25.742-46.712-16.054-88.306-38.744-123.628-67.444z" /> +<glyph unicode="" glyph-name="bubbles4" horiz-adv-x="1152" d="M480 832c-50.666 0-99.582-7.95-145.386-23.628-42.924-14.694-81.114-35.436-113.502-61.646-60.044-48.59-93.112-110.802-93.112-175.174 0-35.99 10.066-70.948 29.92-103.898 20.686-34.34 51.898-65.794 90.26-90.958 30.44-19.968 50.936-51.952 56.362-87.95 0.902-5.99 1.63-12.006 2.18-18.032 2.722 2.52 5.424 5.114 8.114 7.794 24.138 24.040 56.688 37.312 90.322 37.312 5.348 0 10.718-0.336 16.094-1.018 19.36-2.452 39.124-3.696 58.748-3.696 50.666 0 99.58 7.948 145.384 23.628 42.926 14.692 81.116 35.434 113.504 61.644 60.046 48.59 93.112 110.802 93.112 175.174s-33.066 126.582-93.112 175.174c-32.388 26.212-70.578 46.952-113.504 61.646-45.804 15.678-94.718 23.628-145.384 23.628zM480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" /> +<glyph unicode="" glyph-name="user2" d="M576 253.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388z" /> +<glyph unicode="" glyph-name="users" horiz-adv-x="1152" d="M768 189.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388zM327.196 164.672c55.31 36.15 124.080 63.636 199.788 80.414-15.054 17.784-28.708 37.622-40.492 59.020-30.414 55.234-46.492 116.058-46.492 175.894 0 86.042 0 167.31 30.6 233.762 29.706 64.504 83.128 104.496 159.222 119.488-16.914 76.48-61.94 126.75-181.822 126.75-192 0-192-128.942-192-288 0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h279.006c14.518 12.91 30.596 25.172 48.19 36.672z" /> +<glyph unicode="" glyph-name="user-plus" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" /> +<glyph unicode="" glyph-name="user-minus" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-320v64h320v-64z" /> +<glyph unicode="" glyph-name="user-check" d="M960 352l-288-288-96 96-64-64 160-160 352 352zM448 192h320v115.128c-67.22 39.2-156.308 66.11-256 74.26v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h448v64z" /> +<glyph unicode="" glyph-name="user-tie" d="M320 768c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192zM768.078 512h-35.424l-199.104-404.244 74.45 372.244-96 96-96-96 74.45-372.244-199.102 404.244h-35.424c-127.924 0-127.924-85.986-127.924-192v-320h768v320c0 106.014 0 192-127.922 192z" /> +<glyph unicode="" glyph-name="quotes-left" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" /> +<glyph unicode="" glyph-name="quotes-right" d="M800 320c-123.712 0-224 100.29-224 224 0 123.712 100.288 224 224 224s224-100.288 224-224l1-32c0-247.424-200.576-448-448-448v128c85.474 0 165.834 33.286 226.274 93.726 11.634 11.636 22.252 24.016 31.83 37.020-11.438-1.8-23.16-2.746-35.104-2.746zM224 320c-123.71 0-224 100.29-224 224 0 123.712 100.29 224 224 224s224-100.288 224-224l1-32c0-247.424-200.576-448-448-448v128c85.474 0 165.834 33.286 226.274 93.726 11.636 11.636 22.254 24.016 31.832 37.020-11.44-1.8-23.16-2.746-35.106-2.746z" /> +<glyph unicode="" glyph-name="hour-glass" d="M728.992 448c137.754 87.334 231.008 255.208 231.008 448 0 21.676-1.192 43.034-3.478 64h-889.042c-2.29-20.968-3.48-42.326-3.48-64 0-192.792 93.254-360.666 231.006-448-137.752-87.334-231.006-255.208-231.006-448 0-21.676 1.19-43.034 3.478-64h889.042c2.288 20.966 3.478 42.324 3.478 64 0.002 192.792-93.252 360.666-231.006 448zM160 0c0 186.912 80.162 345.414 224 397.708v100.586c-143.838 52.29-224 210.792-224 397.706v0h704c0-186.914-80.162-345.416-224-397.706v-100.586c143.838-52.294 224-210.796 224-397.708h-704zM619.626 290.406c-71.654 40.644-75.608 93.368-75.626 125.366v64.228c0 31.994 3.804 84.914 75.744 125.664 38.504 22.364 71.808 56.348 97.048 98.336h-409.582c25.266-42.032 58.612-76.042 97.166-98.406 71.654-40.644 75.606-93.366 75.626-125.366v-64.228c0-31.992-3.804-84.914-75.744-125.664-72.622-42.18-126.738-125.684-143.090-226.336h501.67c-16.364 100.708-70.53 184.248-143.212 226.406z" /> +<glyph unicode="" glyph-name="spinner" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM655.53 719.53c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM832 448c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM719.53 176.47c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM448.002 64c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM176.472 176.47c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM144.472 719.53c0 0 0 0 0 0 0 53.019 42.981 96 96 96s96-42.981 96-96c0 0 0 0 0 0 0-53.019-42.981-96-96-96s-96 42.981-96 96zM56 448c0 39.765 32.235 72 72 72s72-32.235 72-72c0-39.765-32.235-72-72-72s-72 32.235-72 72z" /> +<glyph unicode="" glyph-name="spinner2" d="M1024 448c-1.278 66.862-15.784 133.516-42.576 194.462-26.704 61-65.462 116.258-113.042 161.92-47.552 45.696-103.944 81.82-164.984 105.652-61.004 23.924-126.596 35.352-191.398 33.966-64.81-1.282-129.332-15.374-188.334-41.356-59.048-25.896-112.542-63.47-156.734-109.576-44.224-46.082-79.16-100.708-102.186-159.798-23.114-59.062-34.128-122.52-32.746-185.27 1.286-62.76 14.964-125.148 40.134-182.206 25.088-57.1 61.476-108.828 106.11-151.548 44.61-42.754 97.472-76.504 154.614-98.72 57.118-22.304 118.446-32.902 179.142-31.526 60.708 1.29 120.962 14.554 176.076 38.914 55.15 24.282 105.116 59.48 146.366 102.644 41.282 43.14 73.844 94.236 95.254 149.43 13.034 33.458 21.88 68.4 26.542 103.798 1.246-0.072 2.498-0.12 3.762-0.12 35.346 0 64 28.652 64 64 0 1.796-0.094 3.572-0.238 5.332h0.238zM922.306 278.052c-23.472-53.202-57.484-101.4-99.178-141.18-41.67-39.81-91-71.186-144.244-91.79-53.228-20.678-110.29-30.452-166.884-29.082-56.604 1.298-112.596 13.736-163.82 36.474-51.25 22.666-97.684 55.49-135.994 95.712-38.338 40.198-68.528 87.764-88.322 139.058-19.87 51.284-29.228 106.214-27.864 160.756 1.302 54.552 13.328 108.412 35.254 157.69 21.858 49.3 53.498 93.97 92.246 130.81 38.73 36.868 84.53 65.87 133.874 84.856 49.338 19.060 102.136 28.006 154.626 26.644 52.5-1.306 104.228-12.918 151.562-34.034 47.352-21.050 90.256-51.502 125.624-88.782 35.396-37.258 63.21-81.294 81.39-128.688 18.248-47.392 26.782-98.058 25.424-148.496h0.238c-0.144-1.76-0.238-3.536-0.238-5.332 0-33.012 24.992-60.174 57.086-63.624-6.224-34.822-16.53-68.818-30.78-100.992z" /> +<glyph unicode="" glyph-name="spinner3" d="M512 656.904c-32.964 0-59.686 26.724-59.686 59.686v179.060c0 32.964 26.722 59.686 59.686 59.686 32.962 0 59.688-26.722 59.688-59.686v-179.060c0-32.964-26.726-59.686-59.688-59.686zM512-36.956c-20.602 0-37.304 16.702-37.304 37.304v179.060c0 20.602 16.702 37.304 37.304 37.304 20.604 0 37.304-16.704 37.304-37.304v-179.060c0-20.602-16.7-37.304-37.304-37.304zM377.756 624.64c-19.34 0-38.146 10.034-48.512 27.988l-89.53 155.070c-15.452 26.764-6.282 60.986 20.482 76.438 26.762 15.45 60.986 6.284 76.438-20.482l89.53-155.072c15.452-26.764 6.282-60.986-20.482-76.438-8.81-5.084-18.432-7.504-27.926-7.504zM735.856 26.744c-11.602 0-22.886 6.022-29.108 16.792l-89.53 155.070c-9.27 16.056-3.77 36.592 12.29 45.864 16.056 9.264 36.59 3.77 45.864-12.292l89.532-155.068c9.27-16.058 3.768-36.592-12.292-45.864-5.286-3.048-11.060-4.502-16.756-4.502zM279.344 530.060c-8.86 0-17.838 2.256-26.064 7.006l-155.072 89.53c-24.978 14.422-33.538 46.362-19.116 71.342 14.42 24.978 46.364 33.538 71.342 19.116l155.070-89.53c24.98-14.422 33.538-46.362 19.116-71.34-9.668-16.756-27.226-26.124-45.276-26.124zM899.648 194.326c-5.064 0-10.196 1.29-14.894 4.004l-155.068 89.53c-14.274 8.24-19.164 26.494-10.924 40.768 8.242 14.276 26.496 19.166 40.766 10.924l155.070-89.532c14.274-8.24 19.164-26.492 10.924-40.766-5.53-9.574-15.562-14.928-25.874-14.928zM243.41 399.504h-179.060c-26.784 0-48.496 21.712-48.496 48.496s21.712 48.496 48.496 48.496h179.060c26.784 0 48.496-21.712 48.496-48.496s-21.712-48.496-48.496-48.496zM959.65 418.156c-0.002 0 0 0 0 0h-179.060c-16.482 0.002-29.844 13.364-29.844 29.844s13.364 29.844 29.844 29.844c0.002 0 0 0 0 0h179.060c16.482 0 29.844-13.362 29.844-29.844 0-16.48-13.364-29.844-29.844-29.844zM124.366 179.402c-15.472 0-30.518 8.028-38.81 22.39-12.362 21.41-5.026 48.79 16.384 61.148l155.072 89.532c21.41 12.368 48.79 5.028 61.15-16.384 12.362-21.412 5.026-48.79-16.384-61.15l-155.072-89.53c-7.050-4.070-14.748-6.006-22.34-6.006zM744.632 552.448c-10.314 0-20.346 5.352-25.874 14.926-8.24 14.274-3.35 32.526 10.924 40.768l155.070 89.528c14.272 8.236 32.526 3.352 40.768-10.922 8.24-14.274 3.35-32.526-10.924-40.768l-155.070-89.528c-4.7-2.714-9.83-4.004-14.894-4.004zM288.136 19.284c-6.962 0-14.016 1.774-20.48 5.504-19.626 11.332-26.35 36.428-15.020 56.054l89.53 155.070c11.33 19.628 36.426 26.352 56.054 15.022 19.626-11.332 26.35-36.43 15.020-56.054l-89.53-155.072c-7.598-13.166-21.392-20.524-35.574-20.524zM646.266 650.758c-5.062 0-10.196 1.29-14.894 4.002-14.274 8.242-19.164 26.494-10.924 40.766l89.534 155.070c8.24 14.274 26.492 19.166 40.766 10.922 14.274-8.242 19.164-26.494 10.924-40.766l-89.532-155.070c-5.53-9.57-15.56-14.924-25.874-14.924z" /> +<glyph unicode="" glyph-name="spinner4" d="M192 448c0 12.18 0.704 24.196 2.030 36.022l-184.98 60.104c-5.916-31.14-9.050-63.264-9.050-96.126 0-147.23 62.166-279.922 161.654-373.324l114.284 157.296c-52.124 56.926-83.938 132.758-83.938 216.028zM832 448c0-83.268-31.812-159.102-83.938-216.028l114.284-157.296c99.488 93.402 161.654 226.094 161.654 373.324 0 32.862-3.132 64.986-9.048 96.126l-184.98-60.104c1.324-11.828 2.028-23.842 2.028-36.022zM576 761.592c91.934-18.662 169.544-76.742 214.45-155.826l184.978 60.102c-73.196 155.42-222.24 268.060-399.428 290.156v-194.432zM233.55 605.768c44.906 79.084 122.516 137.164 214.45 155.826v194.43c-177.188-22.096-326.23-134.736-399.426-290.154l184.976-60.102zM644.556 156.672c-40.39-18.408-85.272-28.672-132.556-28.672s-92.166 10.264-132.554 28.67l-114.292-157.31c73.206-40.366 157.336-63.36 246.846-63.36s173.64 22.994 246.848 63.36l-114.292 157.312z" /> +<glyph unicode="" glyph-name="spinner5" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 704c141.384 0 256-114.616 256-256s-114.616-256-256-256-256 114.616-256 256 114.616 256 256 256zM817.47 142.53c-81.594-81.594-190.080-126.53-305.47-126.53-115.392 0-223.876 44.936-305.47 126.53s-126.53 190.078-126.53 305.47c0 115.39 44.936 223.876 126.53 305.47l67.882-67.882c0 0 0 0 0 0-131.006-131.006-131.006-344.17 0-475.176 63.462-63.462 147.838-98.412 237.588-98.412 89.748 0 174.124 34.95 237.588 98.412 131.006 131.006 131.006 344.168 0 475.176l67.882 67.882c81.594-81.594 126.53-190.080 126.53-305.47 0-115.392-44.936-223.876-126.53-305.47z" /> +<glyph unicode="" glyph-name="spinner6" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM790.994 448c0 0 0 0 0 0 0 57.993 47.013 105.006 105.006 105.006s105.006-47.013 105.006-105.006c0 0 0 0 0 0 0-57.993-47.013-105.006-105.006-105.006s-105.006 47.013-105.006 105.006zM688.424 176.47c0 52.526 42.58 95.106 95.106 95.106s95.106-42.58 95.106-95.106c0-52.526-42.58-95.106-95.106-95.106s-95.106 42.58-95.106 95.106zM425.862 64c0 47.573 38.565 86.138 86.138 86.138s86.138-38.565 86.138-86.138c0-47.573-38.565-86.138-86.138-86.138s-86.138 38.565-86.138 86.138zM162.454 176.47c0 43.088 34.93 78.018 78.018 78.018s78.018-34.93 78.018-78.018c0-43.088-34.93-78.018-78.018-78.018s-78.018 34.93-78.018 78.018zM57.338 448c0 39.026 31.636 70.662 70.662 70.662s70.662-31.636 70.662-70.662c0-39.026-31.636-70.662-70.662-70.662s-70.662 31.636-70.662 70.662zM176.472 719.528c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM899.464 719.528c0-64.024-51.906-115.934-115.936-115.934-64.024 0-115.936 51.91-115.936 115.934 0 64.032 51.912 115.934 115.936 115.934 64.030 0 115.936-51.902 115.936-115.934z" /> +<glyph unicode="" glyph-name="spinner7" d="M416 32c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM0 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM832 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96z" /> +<glyph unicode="" glyph-name="spinner8" d="M512-64c-136.76 0-265.334 53.258-362.040 149.96-96.702 96.706-149.96 225.28-149.96 362.040 0 96.838 27.182 191.134 78.606 272.692 50 79.296 120.664 143.372 204.356 185.3l43-85.832c-68.038-34.084-125.492-86.186-166.15-150.67-41.746-66.208-63.812-142.798-63.812-221.49 0-229.382 186.618-416 416-416s416 186.618 416 416c0 78.692-22.066 155.282-63.81 221.49-40.66 64.484-98.114 116.584-166.15 150.67l43 85.832c83.692-41.928 154.358-106.004 204.356-185.3 51.422-81.558 78.604-175.854 78.604-272.692 0-136.76-53.258-265.334-149.96-362.040-96.706-96.702-225.28-149.96-362.040-149.96z" /> +<glyph unicode="" glyph-name="spinner9" d="M512 960c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-64c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" /> +<glyph unicode="" glyph-name="spinner10" d="M0.042 446.382l-0.022-0.004c0 0 0.012-0.090 0.028-0.222 0.11-3.878 0.55-7.676 1.322-11.352 0.204-1.746 0.428-3.66 0.674-5.774 0.222-1.886 0.46-3.914 0.718-6.078 0.374-2.566 0.77-5.292 1.19-8.176 0.856-5.746 1.8-12.124 2.908-18.958 1.348-6.446 2.804-13.414 4.364-20.864 0.71-3.718 1.776-7.504 2.786-11.406 1.024-3.89 2.078-7.894 3.16-12.004 0.566-2.042 1.040-4.132 1.708-6.208 0.656-2.074 1.32-4.176 1.988-6.3 1.348-4.234 2.726-8.566 4.136-12.988 0.352-1.106 0.708-2.21 1.064-3.324 0.408-1.102 0.814-2.208 1.226-3.316 0.826-2.218 1.658-4.458 2.502-6.714 1.696-4.496 3.422-9.078 5.18-13.742 1.968-4.566 3.97-9.214 6.004-13.934 1.018-2.348 2.044-4.714 3.078-7.098 1.048-2.376 2.27-4.704 3.408-7.074 2.322-4.714 4.678-9.496 7.062-14.332 2.47-4.786 5.208-9.512 7.846-14.328 1.336-2.398 2.68-4.808 4.028-7.23 1.368-2.41 2.902-4.75 4.356-7.14 2.95-4.738 5.93-9.524 8.934-14.348 12.64-18.894 26.676-37.566 42.21-55.278 15.712-17.578 32.726-34.25 50.692-49.602 18.18-15.136 37.264-28.902 56.726-41.114 19.604-12.036 39.644-22.312 59.376-31.144 5.004-2.040 9.964-4.062 14.878-6.066 2.462-0.972 4.868-2.032 7.336-2.918 2.47-0.868 4.93-1.734 7.376-2.594 4.898-1.684 9.678-3.468 14.484-4.992 4.832-1.43 9.604-2.844 14.312-4.242 2.356-0.672 4.66-1.426 7.004-2.012 2.346-0.574 4.676-1.14 6.986-1.704 4.606-1.118 9.142-2.214 13.604-3.296 4.5-0.868 8.926-1.722 13.27-2.558 2.166-0.41 4.31-0.82 6.434-1.222 1.062-0.2 2.118-0.398 3.166-0.598 1.060-0.148 2.118-0.292 3.166-0.442 4.192-0.582 8.292-1.152 12.3-1.71 1.998-0.274 3.972-0.546 5.922-0.816 1.946-0.286 3.904-0.378 5.814-0.57 3.822-0.336 7.544-0.664 11.164-0.98 3.616-0.304 7.104-0.688 10.526-0.738 0.23-0.008 0.452-0.016 0.682-0.026 0.614-34.812 29.008-62.846 63.968-62.846 0.542 0 1.080 0.028 1.62 0.042v-0.022c0 0 0.090 0.012 0.224 0.028 3.878 0.11 7.674 0.55 11.35 1.322 1.748 0.204 3.662 0.426 5.776 0.672 1.884 0.222 3.912 0.462 6.076 0.718 2.566 0.376 5.292 0.772 8.176 1.192 5.746 0.856 12.124 1.8 18.958 2.908 6.446 1.348 13.414 2.804 20.864 4.362 3.718 0.712 7.504 1.778 11.406 2.786 3.892 1.026 7.894 2.080 12.004 3.162 2.044 0.566 4.132 1.040 6.208 1.708 2.074 0.656 4.174 1.318 6.3 1.988 4.232 1.348 8.564 2.726 12.988 4.134 1.104 0.354 2.21 0.708 3.324 1.066 1.1 0.406 2.206 0.814 3.316 1.226 2.216 0.824 4.456 1.658 6.714 2.5 4.496 1.698 9.078 3.424 13.74 5.182 4.568 1.968 9.216 3.97 13.936 6.004 2.348 1.018 4.714 2.044 7.098 3.078 2.376 1.048 4.702 2.27 7.074 3.408 4.714 2.322 9.494 4.678 14.33 7.062 4.786 2.47 9.512 5.208 14.328 7.846 2.398 1.336 4.808 2.678 7.23 4.028 2.41 1.366 4.75 2.9 7.14 4.354 4.738 2.952 9.524 5.93 14.35 8.936 18.89 12.64 37.564 26.674 55.278 42.21 17.574 15.712 34.248 32.726 49.602 50.69 15.136 18.182 28.902 37.264 41.112 56.728 12.036 19.602 22.314 39.644 31.142 59.376 2.042 5.002 4.062 9.964 6.068 14.878 0.974 2.462 2.032 4.868 2.918 7.334 0.87 2.472 1.732 4.932 2.592 7.376 1.686 4.898 3.468 9.678 4.994 14.484 1.432 4.832 2.846 9.604 4.24 14.31 0.674 2.358 1.43 4.66 2.016 7.004 0.57 2.348 1.138 4.676 1.702 6.988 1.118 4.606 2.216 9.14 3.296 13.602 0.868 4.502 1.72 8.928 2.558 13.272 0.41 2.164 0.818 4.308 1.222 6.434 0.2 1.060 0.398 2.116 0.596 3.164 0.148 1.062 0.296 2.118 0.444 3.168 0.582 4.19 1.152 8.292 1.708 12.3 0.278 1.996 0.55 3.97 0.82 5.922 0.284 1.946 0.376 3.902 0.568 5.812 0.336 3.822 0.664 7.546 0.98 11.164 0.304 3.616 0.686 7.106 0.738 10.528 0.020 0.534 0.040 1.044 0.058 1.574 35.224 0.146 63.732 28.738 63.732 63.992 0 0.542-0.028 1.080-0.042 1.62h0.022c0 0-0.012 0.090-0.028 0.224-0.11 3.878-0.55 7.674-1.322 11.35-0.204 1.748-0.428 3.662-0.674 5.776-0.222 1.886-0.46 3.914-0.718 6.076-0.374 2.566-0.77 5.294-1.19 8.176-0.856 5.746-1.8 12.124-2.908 18.958-1.348 6.444-2.804 13.414-4.364 20.862-0.71 3.72-1.776 7.506-2.786 11.408-1.024 3.892-2.078 7.894-3.16 12.002-0.566 2.044-1.040 4.134-1.708 6.208-0.656 2.076-1.32 4.174-1.988 6.3-1.348 4.234-2.726 8.566-4.136 12.99-0.352 1.102-0.708 2.21-1.064 3.324-0.408 1.1-0.814 2.206-1.226 3.316-0.826 2.216-1.658 4.454-2.502 6.714-1.696 4.498-3.422 9.080-5.18 13.74-1.968 4.57-3.97 9.216-6.004 13.936-1.020 2.348-2.044 4.714-3.078 7.098-1.048 2.376-2.27 4.702-3.408 7.076-2.322 4.714-4.678 9.494-7.062 14.33-2.47 4.786-5.208 9.512-7.846 14.328-1.336 2.398-2.68 4.808-4.028 7.23-1.368 2.41-2.902 4.75-4.356 7.14-2.95 4.74-5.93 9.524-8.934 14.35-12.64 18.892-26.676 37.564-42.21 55.278-15.712 17.576-32.726 34.25-50.692 49.602-18.18 15.136-37.264 28.902-56.726 41.112-19.604 12.036-39.644 22.314-59.376 31.142-5.004 2.040-9.964 4.062-14.878 6.068-2.462 0.974-4.868 2.032-7.336 2.918-2.47 0.87-4.93 1.734-7.376 2.592-4.898 1.684-9.678 3.468-14.484 4.994-4.832 1.432-9.604 2.846-14.312 4.242-2.356 0.672-4.66 1.428-7.004 2.014-2.346 0.572-4.676 1.138-6.986 1.702-4.606 1.118-9.142 2.216-13.604 3.298-4.5 0.868-8.926 1.72-13.27 2.558-2.166 0.412-4.31 0.82-6.434 1.222-1.062 0.2-2.118 0.398-3.166 0.596-1.060 0.148-2.118 0.296-3.166 0.442-4.192 0.584-8.292 1.154-12.3 1.71-1.998 0.276-3.972 0.55-5.922 0.82-1.946 0.284-3.904 0.376-5.814 0.57-3.822 0.336-7.544 0.664-11.164 0.98-3.616 0.304-7.104 0.686-10.526 0.738-0.852 0.032-1.674 0.062-2.512 0.092-0.65 34.78-29.028 62.778-63.966 62.778-0.542 0-1.080-0.028-1.62-0.042l-0.002 0.022c0 0-0.090-0.012-0.222-0.028-3.878-0.11-7.676-0.55-11.352-1.322-1.748-0.204-3.662-0.426-5.776-0.672-1.884-0.222-3.912-0.462-6.076-0.718-2.566-0.376-5.292-0.772-8.176-1.192-5.746-0.856-12.124-1.8-18.958-2.908-6.446-1.348-13.414-2.804-20.864-4.362-3.718-0.712-7.504-1.778-11.406-2.786-3.892-1.026-7.894-2.080-12.004-3.162-2.044-0.566-4.132-1.040-6.208-1.708-2.074-0.656-4.174-1.318-6.3-1.988-4.232-1.348-8.564-2.726-12.988-4.134-1.104-0.354-2.21-0.708-3.324-1.066-1.1-0.406-2.206-0.814-3.316-1.226-2.216-0.824-4.456-1.658-6.714-2.5-4.496-1.698-9.078-3.424-13.74-5.182-4.568-1.968-9.216-3.97-13.936-6.004-2.348-1.018-4.714-2.044-7.098-3.078-2.376-1.048-4.702-2.27-7.074-3.408-4.714-2.322-9.494-4.678-14.33-7.062-4.786-2.47-9.512-5.208-14.328-7.846-2.398-1.336-4.808-2.678-7.23-4.028-2.41-1.366-4.75-2.9-7.14-4.354-4.738-2.952-9.524-5.93-14.35-8.936-18.89-12.64-37.564-26.674-55.278-42.21-17.574-15.712-34.248-32.726-49.602-50.69-15.136-18.182-28.902-37.264-41.112-56.728-12.036-19.602-22.314-39.644-31.142-59.376-2.042-5.002-4.062-9.964-6.068-14.878-0.974-2.462-2.032-4.868-2.918-7.334-0.87-2.472-1.732-4.932-2.592-7.376-1.686-4.898-3.468-9.678-4.994-14.484-1.432-4.832-2.846-9.604-4.24-14.31-0.674-2.358-1.43-4.66-2.016-7.004-0.57-2.348-1.138-4.676-1.702-6.988-1.118-4.606-2.216-9.14-3.296-13.602-0.868-4.502-1.72-8.928-2.558-13.272-0.41-2.164-0.818-4.308-1.222-6.434-0.2-1.060-0.398-2.116-0.596-3.164-0.148-1.062-0.296-2.118-0.444-3.168-0.582-4.19-1.152-8.292-1.708-12.3-0.278-1.996-0.55-3.97-0.82-5.922-0.284-1.946-0.376-3.902-0.568-5.812-0.336-3.822-0.664-7.546-0.98-11.164-0.304-3.616-0.686-7.106-0.738-10.528-0.020-0.548-0.040-1.076-0.058-1.62-34.376-1.112-61.902-29.304-61.902-63.946 0-0.542 0.028-1.078 0.042-1.618zM73.518 511.294c0.042 0.196 0.086 0.384 0.128 0.58 0.644 3.248 1.632 6.542 2.556 9.942 0.934 3.388 1.894 6.876 2.88 10.454 0.516 1.78 0.934 3.602 1.546 5.406 0.596 1.802 1.202 3.628 1.81 5.476 1.218 3.682 2.464 7.45 3.736 11.294 0.316 0.958 0.634 1.924 0.956 2.892 0.37 0.954 0.74 1.914 1.114 2.876 0.746 1.924 1.5 3.868 2.26 5.83 1.52 3.904 3.070 7.882 4.646 11.93 1.768 3.96 3.566 7.99 5.392 12.080 0.908 2.038 1.824 4.090 2.746 6.156 0.932 2.060 2.036 4.072 3.052 6.126 2.070 4.084 4.17 8.222 6.294 12.412 2.202 4.142 4.654 8.224 6.998 12.392 1.184 2.074 2.374 4.16 3.57 6.256 1.21 2.086 2.586 4.102 3.876 6.166 2.616 4.098 5.256 8.232 7.918 12.402 11.234 16.298 23.632 32.398 37.33 47.638 13.874 15.104 28.842 29.404 44.598 42.548 15.974 12.928 32.686 24.65 49.676 35.022 17.13 10.194 34.6 18.838 51.734 26.258 4.35 1.7 8.662 3.382 12.934 5.050 2.136 0.812 4.216 1.71 6.36 2.444 2.146 0.714 4.28 1.428 6.404 2.136 4.25 1.386 8.382 2.888 12.548 4.142 4.184 1.174 8.314 2.332 12.392 3.474 2.038 0.55 4.026 1.19 6.054 1.662 2.030 0.458 4.044 0.914 6.044 1.368 3.978 0.91 7.896 1.806 11.748 2.688 3.888 0.686 7.71 1.36 11.462 2.022 1.868 0.33 3.716 0.658 5.546 0.98 0.914 0.162 1.824 0.324 2.728 0.484 0.916 0.112 1.828 0.222 2.734 0.332 3.612 0.448 7.148 0.882 10.604 1.31 1.72 0.216 3.422 0.432 5.102 0.644 1.674 0.226 3.364 0.266 5.010 0.408 3.292 0.238 6.498 0.472 9.616 0.7 3.11 0.218 6.11 0.524 9.058 0.508 5.848 0.132 11.32 0.256 16.38 0.372 4.664-0.168 8.948-0.324 12.818-0.462 1.914-0.054 3.726-0.108 5.432-0.156 2.122-0.134 4.108-0.26 5.958-0.378 2.13-0.138 4.060-0.266 5.82-0.38 3.256-0.51 6.592-0.782 9.99-0.782 0.466 0 0.93 0.026 1.396 0.036 0.132-0.008 0.224-0.014 0.224-0.014v0.020c31.14 0.778 56.75 23.784 61.556 53.754 0.542-0.12 1.064-0.236 1.612-0.356 3.246-0.644 6.542-1.632 9.942-2.556 3.386-0.934 6.876-1.894 10.454-2.88 1.778-0.516 3.602-0.934 5.404-1.546 1.802-0.596 3.63-1.202 5.478-1.812 3.68-1.218 7.448-2.464 11.292-3.736 0.96-0.316 1.924-0.634 2.892-0.956 0.956-0.37 1.914-0.74 2.876-1.112 1.926-0.746 3.868-1.5 5.83-2.26 3.904-1.52 7.884-3.070 11.932-4.646 3.96-1.768 7.988-3.566 12.080-5.392 2.038-0.908 4.088-1.824 6.156-2.746 2.060-0.932 4.072-2.036 6.126-3.054 4.082-2.070 8.222-4.17 12.41-6.294 4.144-2.202 8.226-4.654 12.394-6.998 2.074-1.184 4.16-2.374 6.256-3.572 2.086-1.21 4.102-2.586 6.166-3.876 4.098-2.616 8.23-5.256 12.402-7.918 16.296-11.234 32.398-23.632 47.636-37.33 15.104-13.874 29.406-28.842 42.55-44.598 12.928-15.974 24.648-32.686 35.020-49.676 10.196-17.13 18.84-34.6 26.26-51.736 1.698-4.348 3.382-8.662 5.050-12.932 0.812-2.136 1.71-4.216 2.444-6.36 0.714-2.146 1.428-4.28 2.136-6.404 1.386-4.25 2.888-8.384 4.142-12.548 1.174-4.184 2.33-8.316 3.474-12.392 0.55-2.038 1.19-4.026 1.66-6.054 0.46-2.030 0.916-4.046 1.368-6.046 0.91-3.978 1.808-7.896 2.688-11.748 0.688-3.888 1.362-7.71 2.024-11.462 0.33-1.868 0.656-3.716 0.98-5.548 0.162-0.914 0.324-1.824 0.484-2.728 0.11-0.916 0.222-1.828 0.332-2.734 0.446-3.612 0.882-7.148 1.31-10.604 0.216-1.72 0.432-3.42 0.642-5.1 0.226-1.674 0.268-3.364 0.41-5.010 0.238-3.292 0.472-6.498 0.7-9.616 0.218-3.11 0.524-6.11 0.508-9.058 0.132-5.848 0.256-11.32 0.372-16.38-0.168-4.664-0.324-8.948-0.462-12.818-0.054-1.914-0.108-3.726-0.156-5.432-0.134-2.122-0.26-4.108-0.378-5.958-0.138-2.13-0.266-4.060-0.38-5.82-0.498-3.256-0.768-6.592-0.768-9.99 0-0.468 0.026-0.93 0.036-1.396-0.008-0.132-0.016-0.224-0.016-0.224h0.022c0.768-30.766 23.236-56.128 52.682-61.37-0.066-0.296-0.13-0.584-0.198-0.884-0.644-3.248-1.632-6.542-2.556-9.942-0.934-3.388-1.894-6.876-2.88-10.454-0.516-1.78-0.934-3.602-1.546-5.406-0.596-1.802-1.202-3.628-1.81-5.476-1.218-3.682-2.464-7.45-3.736-11.294-0.316-0.958-0.634-1.924-0.956-2.892-0.37-0.954-0.74-1.914-1.114-2.876-0.746-1.924-1.5-3.868-2.26-5.83-1.52-3.904-3.070-7.882-4.646-11.93-1.768-3.96-3.566-7.99-5.392-12.080-0.908-2.038-1.824-4.090-2.746-6.156-0.932-2.060-2.036-4.072-3.052-6.126-2.070-4.084-4.17-8.222-6.294-12.412-2.202-4.142-4.654-8.224-6.998-12.392-1.184-2.074-2.374-4.16-3.57-6.256-1.21-2.086-2.586-4.102-3.876-6.166-2.616-4.098-5.256-8.232-7.918-12.402-11.234-16.298-23.632-32.398-37.33-47.638-13.874-15.104-28.842-29.404-44.598-42.548-15.974-12.928-32.686-24.65-49.676-35.022-17.13-10.194-34.6-18.838-51.734-26.258-4.35-1.7-8.662-3.382-12.934-5.050-2.136-0.812-4.216-1.71-6.36-2.444-2.146-0.714-4.28-1.428-6.404-2.136-4.25-1.386-8.382-2.888-12.548-4.142-4.184-1.174-8.314-2.332-12.392-3.474-2.038-0.55-4.026-1.19-6.054-1.662-2.030-0.458-4.044-0.914-6.044-1.368-3.978-0.91-7.896-1.806-11.748-2.688-3.888-0.686-7.71-1.36-11.462-2.022-1.868-0.33-3.716-0.658-5.546-0.98-0.914-0.162-1.824-0.324-2.728-0.484-0.916-0.112-1.828-0.222-2.734-0.332-3.612-0.448-7.148-0.882-10.604-1.31-1.72-0.216-3.422-0.432-5.102-0.644-1.674-0.226-3.364-0.266-5.010-0.408-3.292-0.238-6.498-0.472-9.616-0.7-3.11-0.218-6.11-0.524-9.058-0.508-5.848-0.132-11.32-0.256-16.38-0.372-4.664 0.168-8.948 0.324-12.818 0.462-1.914 0.054-3.726 0.108-5.432 0.156-2.122 0.134-4.108 0.26-5.958 0.378-2.13 0.138-4.060 0.266-5.82 0.38-3.256 0.51-6.592 0.782-9.99 0.782-0.466 0-0.93-0.026-1.396-0.036-0.132 0.008-0.224 0.014-0.224 0.014v-0.020c-31.004-0.774-56.524-23.586-61.488-53.364-3.2 0.64-6.446 1.61-9.792 2.522-3.386 0.934-6.876 1.894-10.454 2.878-1.778 0.516-3.602 0.938-5.404 1.546-1.802 0.598-3.63 1.204-5.478 1.812-3.68 1.218-7.448 2.464-11.292 3.738-0.96 0.316-1.924 0.632-2.892 0.954-0.956 0.372-1.914 0.742-2.876 1.114-1.926 0.746-3.868 1.5-5.83 2.258-3.904 1.524-7.884 3.070-11.932 4.648-3.96 1.77-7.988 3.566-12.080 5.39-2.038 0.91-4.088 1.824-6.156 2.746-2.060 0.934-4.072 2.036-6.126 3.054-4.082 2.070-8.222 4.172-12.41 6.296-4.144 2.2-8.226 4.652-12.394 6.996-2.074 1.184-4.16 2.376-6.256 3.57-2.086 1.21-4.102 2.586-6.166 3.878-4.098 2.614-8.23 5.254-12.402 7.918-16.296 11.23-32.398 23.632-47.636 37.328-15.104 13.876-29.406 28.84-42.55 44.598-12.928 15.972-24.648 32.684-35.020 49.676-10.196 17.128-18.84 34.602-26.26 51.734-1.698 4.352-3.382 8.664-5.050 12.934-0.812 2.136-1.71 4.218-2.444 6.36-0.714 2.148-1.428 4.282-2.136 6.406-1.386 4.25-2.888 8.382-4.142 12.546-1.174 4.184-2.33 8.316-3.474 12.394-0.55 2.036-1.19 4.024-1.66 6.054-0.46 2.028-0.916 4.042-1.368 6.042-0.91 3.98-1.808 7.898-2.688 11.75-0.688 3.886-1.362 7.71-2.024 11.46-0.33 1.868-0.656 3.718-0.98 5.546-0.162 0.914-0.324 1.824-0.484 2.73-0.11 0.914-0.222 1.828-0.332 2.734-0.446 3.61-0.882 7.148-1.31 10.602-0.216 1.722-0.432 3.422-0.642 5.102-0.226 1.676-0.268 3.364-0.41 5.012-0.238 3.29-0.472 6.496-0.7 9.614-0.218 3.11-0.524 6.11-0.508 9.058-0.132 5.848-0.256 11.32-0.372 16.382 0.168 4.664 0.324 8.946 0.462 12.816 0.054 1.914 0.108 3.726 0.156 5.434 0.134 2.122 0.26 4.106 0.378 5.958 0.138 2.128 0.266 4.058 0.38 5.82 0.496 3.26 0.766 6.596 0.766 9.994 0 0.466-0.026 0.93-0.036 1.396 0.008 0.132 0.016 0.224 0.016 0.224h-0.022c-0.78 31.38-24.134 57.154-54.44 61.674z" /> +<glyph unicode="" glyph-name="spinner11" d="M1024 576h-384l143.53 143.53c-72.53 72.526-168.96 112.47-271.53 112.47s-199-39.944-271.53-112.47c-72.526-72.53-112.47-168.96-112.47-271.53s39.944-199 112.47-271.53c72.53-72.526 168.96-112.47 271.53-112.47s199 39.944 271.528 112.472c6.056 6.054 11.86 12.292 17.456 18.668l96.32-84.282c-93.846-107.166-231.664-174.858-385.304-174.858-282.77 0-512 229.23-512 512s229.23 512 512 512c141.386 0 269.368-57.326 362.016-149.984l149.984 149.984v-384z" /> +<glyph unicode="" glyph-name="binoculars" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> +<glyph unicode="" glyph-name="search" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256z" /> +<glyph unicode="" glyph-name="zoom-in2" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" /> +<glyph unicode="" glyph-name="zoom-out" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" /> +<glyph unicode="" glyph-name="enlarge" d="M1024 960h-416l160-160-192-192 96-96 192 192 160-160zM1024-64v416l-160-160-192 192-96-96 192-192-160-160zM0-64h416l-160 160 192 192-96 96-192-192-160 160zM0 960v-416l160 160 192-192 96 96-192 192 160 160z" /> +<glyph unicode="" glyph-name="shrink" d="M576 512h416l-160 160 192 192-96 96-192-192-160 160zM576 384v-416l160 160 192-192 96 96-192 192 160 160zM448 384.004h-416l160-160-192-192 96-96 192 192 160-160zM448 512v416l-160-160-192 192-96-96 192-192-160-160z" /> +<glyph unicode="" glyph-name="enlarge2" d="M1024 960v-416l-160 160-192-192-96 96 192 192-160 160zM448 288l-192-192 160-160h-416v416l160-160 192 192z" /> +<glyph unicode="" glyph-name="shrink2" d="M448 384v-416l-160 160-192-192-96 96 192 192-160 160zM1024 864l-192-192 160-160h-416v416l160-160 192 192z" /> +<glyph unicode="" glyph-name="key" d="M704 960c-176.73 0-320-143.268-320-320 0-20.026 1.858-39.616 5.376-58.624l-389.376-389.376v-192c0-35.346 28.654-64 64-64h64v64h128v128h128v128h128l83.042 83.042c34.010-12.316 70.696-19.042 108.958-19.042 176.73 0 320 143.268 320 320s-143.27 320-320 320zM799.874 639.874c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> +<glyph unicode="" glyph-name="key2" d="M1002.132 645.758l-101.106 101.104c-24.792 24.794-65.37 65.368-90.162 90.164l-101.106 101.104c-24.792 24.794-68.954 29.166-98.13 9.716l-276.438-184.292c-29.176-19.452-40.218-61.028-24.536-92.39l70.486-140.974c2.154-4.306 4.646-8.896 7.39-13.66l-356.53-356.53-32-224h192v64h128v128h128v128h128v71.186c6.396-3.812 12.534-7.216 18.192-10.044l140.97-70.488c31.366-15.682 72.94-4.638 92.39 24.538l184.294 276.44c19.454 29.172 15.078 73.33-9.714 98.126zM150.628 105.374l-45.254 45.254 311.572 311.57 45.254-45.254-311.572-311.57zM917.020 536.236l-45.256-45.256c-12.446-12.444-32.808-12.444-45.254 0l-271.53 271.53c-12.446 12.444-12.446 32.81 0 45.254l45.256 45.256c12.446 12.444 32.808 12.444 45.254 0l271.53-271.53c12.446-12.444 12.446-32.81 0-45.254z" /> +<glyph unicode="" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" /> +<glyph unicode="" glyph-name="unlocked" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" /> +<glyph unicode="" glyph-name="wrench" d="M1002.934 142.124l-460.552 394.76c21.448 40.298 33.618 86.282 33.618 135.116 0 159.058-128.942 288-288 288-29.094 0-57.172-4.332-83.646-12.354l166.39-166.39c24.89-24.89 24.89-65.62 0-90.51l-101.49-101.49c-24.89-24.89-65.62-24.89-90.51 0l-166.39 166.39c-8.022-26.474-12.354-54.552-12.354-83.646 0-159.058 128.942-288 288-288 48.834 0 94.818 12.17 135.116 33.62l394.76-460.552c22.908-26.724 62.016-28.226 86.904-3.338l101.492 101.492c24.888 24.888 23.386 63.994-3.338 86.902z" /> +<glyph unicode="" glyph-name="equalizer" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" /> +<glyph unicode="" glyph-name="equalizer2" d="M896 512h16c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h-128v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-576h128v576zM768 704h128v-128h-128v128zM592 128c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v576h-128v-576h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-192h128v192h16zM448 320h128v-128h-128v128zM272 512c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h-128v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-576h128v576h16zM128 704h128v-128h-128v128z" /> +<glyph unicode="" glyph-name="cog" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" /> +<glyph unicode="" glyph-name="cogs" d="M363.722 237.948l41.298 57.816-45.254 45.256-57.818-41.296c-10.722 5.994-22.204 10.774-34.266 14.192l-11.682 70.084h-64l-11.68-70.086c-12.062-3.418-23.544-8.198-34.266-14.192l-57.818 41.298-45.256-45.256 41.298-57.816c-5.994-10.72-10.774-22.206-14.192-34.266l-70.086-11.682v-64l70.086-11.682c3.418-12.060 8.198-23.544 14.192-34.266l-41.298-57.816 45.254-45.256 57.818 41.296c10.722-5.994 22.204-10.774 34.266-14.192l11.682-70.084h64l11.68 70.086c12.062 3.418 23.544 8.198 34.266 14.192l57.818-41.296 45.254 45.256-41.298 57.816c5.994 10.72 10.774 22.206 14.192 34.266l70.088 11.68v64l-70.086 11.682c-3.418 12.060-8.198 23.544-14.192 34.266zM224 96c-35.348 0-64 28.654-64 64s28.652 64 64 64 64-28.654 64-64-28.652-64-64-64zM1024 576v64l-67.382 12.25c-1.242 8.046-2.832 15.978-4.724 23.79l57.558 37.1-24.492 59.128-66.944-14.468c-4.214 6.91-8.726 13.62-13.492 20.13l39.006 56.342-45.256 45.254-56.342-39.006c-6.512 4.766-13.22 9.276-20.13 13.494l14.468 66.944-59.128 24.494-37.1-57.558c-7.812 1.892-15.744 3.482-23.79 4.724l-12.252 67.382h-64l-12.252-67.382c-8.046-1.242-15.976-2.832-23.79-4.724l-37.098 57.558-59.128-24.492 14.468-66.944c-6.91-4.216-13.62-8.728-20.13-13.494l-56.342 39.006-45.254-45.254 39.006-56.342c-4.766-6.51-9.278-13.22-13.494-20.13l-66.944 14.468-24.492-59.128 57.558-37.1c-1.892-7.812-3.482-15.742-4.724-23.79l-67.384-12.252v-64l67.382-12.25c1.242-8.046 2.832-15.978 4.724-23.79l-57.558-37.1 24.492-59.128 66.944 14.468c4.216-6.91 8.728-13.618 13.494-20.13l-39.006-56.342 45.254-45.256 56.342 39.006c6.51-4.766 13.22-9.276 20.13-13.492l-14.468-66.944 59.128-24.492 37.102 57.558c7.81-1.892 15.742-3.482 23.788-4.724l12.252-67.384h64l12.252 67.382c8.044 1.242 15.976 2.832 23.79 4.724l37.1-57.558 59.128 24.492-14.468 66.944c6.91 4.216 13.62 8.726 20.13 13.492l56.342-39.006 45.256 45.256-39.006 56.342c4.766 6.512 9.276 13.22 13.492 20.13l66.944-14.468 24.492 59.13-57.558 37.1c1.892 7.812 3.482 15.742 4.724 23.79l67.382 12.25zM672 468.8c-76.878 0-139.2 62.322-139.2 139.2s62.32 139.2 139.2 139.2 139.2-62.322 139.2-139.2c0-76.878-62.32-139.2-139.2-139.2z" /> +<glyph unicode="" glyph-name="hammer" d="M1009.996 131.024l-301.544 301.544c-18.668 18.668-49.214 18.668-67.882 0l-22.626-22.626-184 184 302.056 302.058h-320l-142.058-142.058-14.060 14.058h-67.882v-67.882l14.058-14.058-206.058-206.060 160-160 206.058 206.058 184-184-22.626-22.626c-18.668-18.668-18.668-49.214 0-67.882l301.544-301.544c18.668-18.668 49.214-18.668 67.882 0l113.136 113.136c18.67 18.666 18.67 49.214 0.002 67.882z" /> +<glyph unicode="" glyph-name="magic-wand" d="M256 768l-128 128h-64v-64l128-128zM320 960h64v-128h-64zM576 640h128v-64h-128zM640 832v64h-64l-128-128 64-64zM0 640h128v-64h-128zM320 384h64v-128h-64zM64 384v-64h64l128 128-64 64zM1010 78l-636.118 636.118c-18.668 18.668-49.214 18.668-67.882 0l-60.118-60.118c-18.668-18.668-18.668-49.214 0-67.882l636.118-636.118c18.668-18.668 49.214-18.668 67.882 0l60.118 60.118c18.668 18.668 18.668 49.214 0 67.882zM480 416l-192 192 64 64 192-192-64-64z" /> +<glyph unicode="" glyph-name="aid-kit" d="M896 704h-192v128c0 35.2-28.8 64-64 64h-256c-35.2 0-64-28.8-64-64v-128h-192c-70.4 0-128-57.6-128-128v-512c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v512c0 70.4-57.6 128-128 128zM384 832h256v-128h-256v128zM768 256h-192v-192h-128v192h-192v128h192v192h128v-192h192v-128z" /> +<glyph unicode="" glyph-name="bug" d="M1024 384v64h-193.29c-5.862 72.686-31.786 139.026-71.67 192.25h161.944l70.060 280.24-62.090 15.522-57.94-231.76h-174.68c-0.892 0.694-1.796 1.374-2.698 2.056 6.71 19.502 10.362 40.422 10.362 62.194 0.002 105.76-85.958 191.498-191.998 191.498s-192-85.738-192-191.5c0-21.772 3.65-42.692 10.362-62.194-0.9-0.684-1.804-1.362-2.698-2.056h-174.68l-57.94 231.76-62.090-15.522 70.060-280.24h161.944c-39.884-53.222-65.806-119.562-71.668-192.248h-193.29v-64h193.37c3.802-45.664 15.508-88.812 33.638-127.75h-123.992l-70.060-280.238 62.090-15.524 57.94 231.762h112.354c58.692-78.032 147.396-127.75 246.66-127.75s187.966 49.718 246.662 127.75h112.354l57.94-231.762 62.090 15.524-70.060 280.238h-123.992c18.13 38.938 29.836 82.086 33.636 127.75h193.37z" /> +<glyph unicode="" glyph-name="pie-chart" d="M448 384v448c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448c0 72.034-17.028 140.084-47.236 200.382l-400.764-200.382zM912.764 712.382c-73.552 146.816-225.374 247.618-400.764 247.618v-448l400.764 200.382z" /> +<glyph unicode="" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" /> +<glyph unicode="" glyph-name="stats-bars" d="M0 128h1024v-128h-1024zM128 384h128v-192h-128zM320 640h128v-448h-128zM512 448h128v-256h-128zM704 832h128v-640h-128z" /> +<glyph unicode="" glyph-name="stats-bars2" d="M288 576h-192c-17.6 0-32-14.4-32-32v-576c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v576c0 17.6-14.4 32-32 32zM288 0h-192v256h192v-256zM608 704h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM608 0h-192v320h192v-320zM928 832h-192c-17.6 0-32-14.4-32-32v-832c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v832c0 17.6-14.4 32-32 32zM928 0h-192v384h192v-384z" /> +<glyph unicode="" glyph-name="trophy" d="M832 768v128h-640v-128h-192v-128c0-106.038 85.958-192 192-192 20.076 0 39.43 3.086 57.62 8.802 46.174-66.008 116.608-113.796 198.38-130.396v-198.406h-64c-70.694 0-128-57.306-128-128h512c0 70.694-57.306 128-128 128h-64v198.406c81.772 16.6 152.206 64.386 198.38 130.396 18.19-5.716 37.544-8.802 57.62-8.802 106.042 0 192 85.962 192 192v128h-192zM192 524c-63.962 0-116 52.038-116 116v64h116v-64c0-40.186 7.43-78.632 20.954-114.068-6.802-1.246-13.798-1.932-20.954-1.932zM948 640c0-63.962-52.038-116-116-116-7.156 0-14.152 0.686-20.954 1.932 13.524 35.436 20.954 73.882 20.954 114.068v64h116v-64z" /> +<glyph unicode="" glyph-name="gift" d="M771.516 640c18.126 12.88 35.512 27.216 51.444 43.148 33.402 33.402 55.746 74.5 62.912 115.722 7.858 45.186-3.672 87.14-31.63 115.1-22.3 22.298-52.51 34.086-87.364 34.086-49.632 0-101.922-23.824-143.46-65.362-66.476-66.476-105.226-158.238-126.076-223.722-15.44 65.802-46.206 154.644-106.018 214.458-32.094 32.092-73.114 48.57-111.846 48.57-31.654 0-61.78-11.004-84.26-33.486-49.986-49.988-43.232-137.786 15.086-196.104 20.792-20.792 45.098-38.062 70.72-52.412h-217.024v-256h64v-448h768v448.002h64v256h-188.484zM674.326 831.782c27.724 27.724 62.322 44.274 92.55 44.274 10.7 0 25.708-2.254 36.45-12.998 26.030-26.028 11.412-86.308-31.28-128.998-43.946-43.946-103.060-74.168-154.432-94.060h-50.672c18.568 57.548 52.058 136.456 107.384 191.782zM233.934 799.11c-0.702 9.12-0.050 26.248 12.196 38.494 10.244 10.244 23.788 12.396 33.348 12.396v0c21.258 0 43.468-10.016 60.932-27.48 33.872-33.872 61.766-87.772 80.668-155.876 0.51-1.84 1.008-3.67 1.496-5.486-1.816 0.486-3.646 0.984-5.486 1.496-68.104 18.904-122.002 46.798-155.874 80.67-15.828 15.826-25.77 36.16-27.28 55.786zM448 0h-256v416h256v-416zM448 448h-320v128h320v-128zM832 0h-256v416h256v-416zM896 448h-320v128h320v-128z" /> +<glyph unicode="" glyph-name="glass" d="M777.784 943.144c-5.576 10.38-16.406 16.856-28.19 16.856h-475.188c-11.784 0-22.614-6.476-28.19-16.856-35.468-66.020-54.216-143.184-54.216-223.144 0-105.412 32.372-204.828 91.154-279.938 45.428-58.046 102.48-96.54 164.846-112.172v-327.89h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v327.89c62.368 15.632 119.418 54.124 164.846 112.172 58.782 75.11 91.154 174.526 91.154 279.938 0 79.96-18.748 157.122-54.216 223.144zM294.1 896h435.8c24.974-52.902 38.1-113.338 38.1-176 0-5.364-0.108-10.696-0.296-16h-511.406c-0.19 5.304-0.296 10.636-0.296 16-0.002 62.664 13.126 123.098 38.098 176z" /> +<glyph unicode="" glyph-name="glass2" d="M889.162 780.23c7.568 9.632 8.972 22.742 3.62 33.758-5.356 11.018-16.532 18.012-28.782 18.012h-704c-12.25 0-23.426-6.994-28.78-18.012-5.356-11.018-3.95-24.126 3.618-33.758l313.162-398.57v-381.66h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v381.66l313.162 398.57zM798.162 768l-100.572-128h-371.18l-100.57 128h572.322z" /> +<glyph unicode="" glyph-name="mug" d="M960 640h-192v96c0 88.366-171.922 160-384 160s-384-71.634-384-160v-640c0-88.366 171.922-160 384-160s384 71.634 384 160v96h192c35.346 0 64 28.654 64 64v320c0 35.346-28.654 64-64 64zM176.056 701.602c-36.994 12.19-59.408 25.246-71.41 34.398 12.004 9.152 34.416 22.208 71.41 34.398 57.942 19.090 131.79 29.602 207.944 29.602s150.004-10.512 207.944-29.602c36.994-12.188 59.408-25.246 71.41-34.398-12.002-9.152-34.416-22.208-71.41-34.398-57.94-19.090-131.79-29.602-207.944-29.602s-150.002 10.512-207.944 29.602zM896 320h-128v192h128v-192z" /> +<glyph unicode="" glyph-name="spoon-knife" d="M224 960c-106.040 0-192-100.288-192-224 0-105.924 63.022-194.666 147.706-217.998l-31.788-518.124c-2.154-35.132 24.882-63.878 60.082-63.878h32c35.2 0 62.236 28.746 60.082 63.878l-31.788 518.124c84.684 23.332 147.706 112.074 147.706 217.998 0 123.712-85.96 224-192 224zM869.334 960l-53.334-320h-40l-26.666 320h-26.668l-26.666-320h-40l-53.334 320h-26.666v-416c0-17.672 14.326-32 32-32h83.338l-31.42-512.122c-2.154-35.132 24.882-63.878 60.082-63.878h32c35.2 0 62.236 28.746 60.082 63.878l-31.42 512.122h83.338c17.674 0 32 14.328 32 32v416h-26.666z" /> +<glyph unicode="" glyph-name="leaf" d="M1011.328 825.504c-110.752 83.928-281.184 134.034-455.91 134.034-216.12 0-392.226-75.456-483.16-207.020-42.708-61.79-66.33-134.958-70.208-217.474-3.454-73.474 8.884-154.726 36.684-242.146 94.874 284.384 359.82 507.102 665.266 507.102 0 0-285.826-75.232-465.524-308.192-0.112-0.138-2.494-3.090-6.614-8.698-36.080-48.278-67.538-103.162-91.078-165.328-39.87-94.83-76.784-224.948-76.784-381.782h128c0 0-19.43 122.222 14.36 262.79 55.89-7.556 105.858-11.306 150.852-11.306 117.678 0 201.37 25.46 263.388 80.124 55.568 48.978 86.198 114.786 118.624 184.456 49.524 106.408 105.654 227.010 268.654 320.152 9.33 5.332 15.362 14.992 16.056 25.716s-4.040 21.080-12.606 27.572z" /> +<glyph unicode="" glyph-name="rocket" d="M704 896l-320-320h-192l-192-256c0 0 203.416 56.652 322.066 30.084l-322.066-414.084 421.902 328.144c58.838-134.654-37.902-328.144-37.902-328.144l256 192v192l320 320 64 320-320-64z" /> +<glyph unicode="" glyph-name="meter" d="M512 896c282.77 0 512-229.23 512-512 0-192.792-106.576-360.666-264.008-448h-495.984c-157.432 87.334-264.008 255.208-264.008 448 0 282.77 229.23 512 512 512zM801.914 94.086c77.438 77.44 120.086 180.398 120.086 289.914h-90v64h85.038c-7.014 44.998-21.39 88.146-42.564 128h-106.474v64h64.284c-9.438 11.762-19.552 23.096-30.37 33.914-46.222 46.22-101.54 80.038-161.914 99.798v-69.712h-64v85.040c-20.982 3.268-42.36 4.96-64 4.96s-43.018-1.69-64-4.96v-85.040h-64v69.712c-60.372-19.76-115.692-53.576-161.914-99.798-10.818-10.818-20.932-22.152-30.37-33.914h64.284v-64h-106.476c-21.174-39.854-35.552-83.002-42.564-128h85.040v-64h-90c0-109.516 42.648-212.474 120.086-289.914 10.71-10.71 21.924-20.728 33.56-30.086h192.354l36.572 512h54.856l36.572-512h192.354c11.636 9.358 22.852 19.378 33.56 30.086z" /> +<glyph unicode="" glyph-name="meter2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM302.836 125.848c11.106 30.632 17.164 63.688 17.164 98.152 0 124.35-78.81 230.292-189.208 270.606 10.21 84.924 48.254 163.498 109.678 224.924 72.53 72.526 168.96 112.47 271.53 112.47s199-39.944 271.53-112.47c61.428-61.426 99.468-140 109.682-224.924-110.402-40.314-189.212-146.256-189.212-270.606 0-34.468 6.060-67.52 17.166-98.15-61.706-40.242-133.77-61.85-209.166-61.85-75.394 0-147.458 21.608-209.164 61.848zM551.754 319.004c13.878-3.494 24.246-16.080 24.246-31.004v-64c0-17.6-14.4-32-32-32h-64c-17.6 0-32 14.4-32 32v64c0 14.924 10.368 27.51 24.246 31.004l23.754 448.996h32l23.754-448.996z" /> +<glyph unicode="" glyph-name="hammer2" d="M1010.174 44.25l-548.634 499.458 25.534 25.598c20.894 20.954 32.188 48.030 33.918 75.61 1.002 0.45 2.002 0.912 2.958 1.442l102.99 64.402c13.934 16.392 12.916 42.268-2.284 57.502l-179.12 179.608c-15.19 15.234-40.998 16.262-57.344 2.284l-64.236-103.268c-0.526-0.966-0.99-1.966-1.44-2.974-27.502-1.736-54.5-13.056-75.398-34.006l-97.428-97.702c-20.898-20.956-32.184-48.026-33.918-75.604-1.004-0.45-2.004-0.916-2.964-1.446l-102.986-64.406c-13.942-16.39-12.916-42.264 2.276-57.496l179.12-179.604c15.194-15.238 40.996-16.262 57.35-2.286l64.228 103.27c0.528 0.958 0.988 1.96 1.442 2.966 27.502 1.738 54.504 13.050 75.398 34.004l28.292 28.372 498.122-550.114c14.436-15.944 36.7-18.518 49.474-5.712l50.356 50.488c12.764 12.808 10.196 35.132-5.706 49.614z" /> +<glyph unicode="" glyph-name="fire" d="M321.008-64c-68.246 142.008-31.902 223.378 20.55 300.044 57.44 83.956 72.244 167.066 72.244 167.066s45.154-58.7 27.092-150.508c79.772 88.8 94.824 230.28 82.782 284.464 180.314-126.012 257.376-398.856 153.522-601.066 552.372 312.532 137.398 780.172 65.154 832.85 24.082-52.676 28.648-141.85-20-185.126-82.352 312.276-285.972 376.276-285.972 376.276 24.082-161.044-87.296-337.144-194.696-468.73-3.774 64.216-7.782 108.528-41.55 169.98-7.58-116.656-96.732-211.748-120.874-328.628-32.702-158.286 24.496-274.18 241.748-396.622z" /> +<glyph unicode="" glyph-name="lab" d="M956.29 155.518l-316.29 527.024v213.458h32c17.6 0 32 14.4 32 32s-14.4 32-32 32h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h32v-213.458l-316.288-527.024c-72.442-120.734-16.512-219.518 124.288-219.518h640c140.8 0 196.73 98.784 124.29 219.518zM241.038 320l206.962 344.938v231.062h128v-231.062l206.964-344.938h-541.926z" /> +<glyph unicode="" glyph-name="magnet" d="M896 960h-256l64-576c0-106.040-85.96-192-192-192s-192 85.96-192 192l64 576h-256l-64-576c0-247.424 200.576-448 448-448s448 200.576 448 448l-64 576zM777.874 118.126c-71.018-71.014-165.44-110.126-265.874-110.126s-194.856 39.112-265.872 110.126c-70.116 70.118-109.13 163.048-110.11 262.054l36.092 324.82h111.114l-35.224-317.010v-3.99c0-70.518 27.46-136.814 77.324-186.676 49.862-49.864 116.158-77.324 186.676-77.324s136.814 27.46 186.676 77.324c49.864 49.862 77.324 116.158 77.324 186.676v3.988l-0.44 3.962-34.782 313.050h111.114l36.090-324.818c-0.98-99.006-39.994-191.938-110.108-262.056z" /> +<glyph unicode="" glyph-name="bin" d="M128 640v-640c0-35.2 28.8-64 64-64h576c35.2 0 64 28.8 64 64v640h-704zM320 64h-64v448h64v-448zM448 64h-64v448h64v-448zM576 64h-64v448h64v-448zM704 64h-64v448h64v-448zM848 832h-208v80c0 26.4-21.6 48-48 48h-224c-26.4 0-48-21.6-48-48v-80h-208c-26.4 0-48-21.6-48-48v-80h832v80c0 26.4-21.6 48-48 48zM576 832h-192v63.198h192v-63.198z" /> +<glyph unicode="" glyph-name="bin2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" /> +<glyph unicode="" glyph-name="briefcase" d="M960 704h-256v64c0 35.2-28.8 64-64 64h-256c-35.204 0-64-28.8-64-64v-64h-256c-35.2 0-64-28.8-64-64v-576c0-35.202 28.796-64 64-64h896c35.2 0 64 28.798 64 64v576c0 35.2-28.8 64-64 64zM384 767.884c0.034 0.040 0.074 0.082 0.114 0.116h255.772c0.042-0.034 0.082-0.076 0.118-0.116v-63.884h-256.004v63.884zM960 448h-128v-96c0-17.602-14.4-32-32-32h-64c-17.604 0-32 14.398-32 32v96h-384v-96c0-17.602-14.4-32-32-32h-64c-17.602 0-32 14.398-32 32v96h-128v64h896v-64z" /> +<glyph unicode="" glyph-name="airplane" d="M768 320.032l-182.82 182.822 438.82 329.15-128.010 127.996-548.52-219.442-172.7 172.706c-49.78 49.778-119.302 61.706-154.502 26.508-35.198-35.198-23.268-104.726 26.51-154.5l172.686-172.684-219.464-548.582 127.99-128.006 329.19 438.868 182.826-182.828v-255.98h127.994l63.992 191.988 191.988 63.996v127.992l-255.98-0.004z" /> +<glyph unicode="" glyph-name="truck" d="M1024 384l-128 256h-192v128c0 35.2-28.8 64-64 64h-576c-35.2 0-64-28.8-64-64v-512l64-64h81.166c-10.898-18.832-17.166-40.678-17.166-64 0-70.692 57.308-128 128-128s128 57.308 128 128c0 23.322-6.268 45.168-17.166 64h354.334c-10.898-18.832-17.168-40.678-17.168-64 0-70.692 57.308-128 128-128s128 57.308 128 128c0 23.322-6.27 45.168-17.168 64h81.168v192zM704 384v192h132.668l96-192h-228.668z" /> +<glyph unicode="" glyph-name="road" d="M704-64h320l-256 1024h-192l32-256h-192l32 256h-192l-256-1024h320l32 256h320l32-256zM368 320l32 256h224l32-256h-288z" /> +<glyph unicode="" glyph-name="accessibility" d="M416 864c0 53.018 42.98 96 96 96s96-42.982 96-96c0-53.020-42.98-96-96-96s-96 42.98-96 96zM640 640l329.596 142.172-23.77 59.424-401.826-137.596h-64l-401.826 137.596-23.77-59.424 329.596-142.172v-256l-131.27-424.57 59.84-22.7 185.716 415.27h27.428l185.716-415.27 59.84 22.7-131.27 424.57z" /> +<glyph unicode="" glyph-name="target" d="M1024 512h-100.924c-27.64 178.24-168.836 319.436-347.076 347.076v100.924h-128v-100.924c-178.24-27.64-319.436-168.836-347.076-347.076h-100.924v-128h100.924c27.64-178.24 168.836-319.436 347.076-347.076v-100.924h128v100.924c178.24 27.64 319.436 168.836 347.076 347.076h100.924v128zM792.822 512h-99.762c-19.284 54.55-62.51 97.778-117.060 117.060v99.762c107.514-24.49 192.332-109.31 216.822-216.822zM512 384c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64zM448 728.822v-99.762c-54.55-19.282-97.778-62.51-117.060-117.060h-99.762c24.49 107.512 109.31 192.332 216.822 216.822zM231.178 384h99.762c19.282-54.55 62.51-97.778 117.060-117.060v-99.762c-107.512 24.49-192.332 109.308-216.822 216.822zM576 167.178v99.762c54.55 19.284 97.778 62.51 117.060 117.060h99.762c-24.49-107.514-109.308-192.332-216.822-216.822z" /> +<glyph unicode="" glyph-name="shield" d="M960 960l-448-128-448 128c0 0-4.5-51.698 0-128l448-140.090 448 140.090c4.498 76.302 0 128 0 128zM72.19 764.894c23.986-250.696 113.49-672.234 439.81-828.894 326.32 156.66 415.824 578.198 439.81 828.894l-439.81-165.358-439.81 165.358z" /> +<glyph unicode="" glyph-name="power" d="M384 960l-384-512h384l-256-512 896 640h-512l384 384z" /> +<glyph unicode="" glyph-name="switch" d="M640 813.412v-135.958c36.206-15.804 69.5-38.408 98.274-67.18 60.442-60.44 93.726-140.8 93.726-226.274s-33.286-165.834-93.726-226.274c-60.44-60.44-140.798-93.726-226.274-93.726s-165.834 33.286-226.274 93.726c-60.44 60.44-93.726 140.8-93.726 226.274s33.286 165.834 93.726 226.274c28.774 28.774 62.068 51.378 98.274 67.182v135.956c-185.048-55.080-320-226.472-320-429.412 0-247.424 200.578-448 448-448 247.424 0 448 200.576 448 448 0 202.94-134.95 374.332-320 429.412zM448 960h128v-512h-128z" /> +<glyph unicode="" glyph-name="power-cord" d="M1024 677.5l-90.506 90.5-178.746-178.752-101.5 101.502 178.75 178.75-90.5 90.5-178.75-178.75-114.748 114.75-86.626-86.624 512.002-512 86.624 86.622-114.752 114.752 178.752 178.75zM794.040 286.21l-443.824 443.824c-95.818-114.904-204.52-292.454-129.396-445.216l-132.248-132.248c-31.112-31.114-31.112-82.024 0-113.136l14.858-14.858c31.114-31.114 82.026-31.114 113.138 0l132.246 132.244c152.764-75.132 330.318 33.566 445.226 129.39z" /> +<glyph unicode="" glyph-name="clipboard" d="M928 832h-288c0 70.692-57.306 128-128 128-70.692 0-128-57.308-128-128h-288c-17.672 0-32-14.328-32-32v-832c0-17.674 14.328-32 32-32h832c17.674 0 32 14.326 32 32v832c0 17.672-14.326 32-32 32zM512 896c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64zM896 0h-768v768h128v-96c0-17.672 14.328-32 32-32h448c17.674 0 32 14.328 32 32v96h128v-768zM448 101.49l-205.254 237.254 58.508 58.51 146.746-114.744 274.742 242.744 58.514-58.508z" /> +<glyph unicode="" glyph-name="list-numbered" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" /> +<glyph unicode="" glyph-name="list" d="M0 960h256v-256h-256zM384 896h640v-128h-640zM0 576h256v-256h-256zM384 512h640v-128h-640zM0 192h256v-256h-256zM384 128h640v-128h-640z" /> +<glyph unicode="" glyph-name="list2" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" /> +<glyph unicode="" glyph-name="tree" d="M976 192h-16v208c0 61.756-50.242 112-112 112h-272v128h16c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-128h-272c-61.756 0-112-50.244-112-112v-208h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48zM192 0h-128v128h128v-128zM576 0h-128v128h128v-128zM448 704v128h128v-128h-128zM960 0h-128v128h128v-128z" /> +<glyph unicode="" glyph-name="menu" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" /> +<glyph unicode="" glyph-name="menu2" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 384l192-192 192 192zM1376 448l-192 192-192-192z" /> +<glyph unicode="" glyph-name="menu3" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 512l192-192 192 192z" /> +<glyph unicode="" glyph-name="menu4" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 320l192 192 192-192z" /> +<glyph unicode="" glyph-name="cloud" d="M1024 302.458c0 82.090-56.678 150.9-132.996 169.48-3.242 128.7-108.458 232.062-237.862 232.062-75.792 0-143.266-35.494-186.854-90.732-24.442 31.598-62.69 51.96-105.708 51.96-73.81 0-133.642-59.874-133.642-133.722 0-6.436 0.48-12.76 1.364-18.954-11.222 2.024-22.766 3.138-34.57 3.138-106.998 0.002-193.732-86.786-193.732-193.842 0-107.062 86.734-193.848 193.73-193.848l656.262 0.012c96.138 0.184 174.008 78.212 174.008 174.446z" /> +<glyph unicode="" glyph-name="cloud-download" d="M891.004 599.94c-3.242 128.698-108.458 232.060-237.862 232.060-75.792 0-143.266-35.494-186.854-90.732-24.442 31.598-62.69 51.96-105.708 51.96-73.81 0-133.642-59.876-133.642-133.722 0-6.436 0.48-12.76 1.364-18.954-11.222 2.024-22.766 3.138-34.57 3.138-106.998 0.002-193.732-86.786-193.732-193.842 0-107.062 86.734-193.848 193.73-193.848h91.76l226.51-234.51 226.51 234.51 111.482 0.012c96.138 0.184 174.008 78.21 174.008 174.446 0 82.090-56.678 150.9-132.996 169.482zM512 128l-192 192h128v192h128v-192h128l-192-192z" /> +<glyph unicode="" glyph-name="cloud-upload" d="M892.268 573.51c2.444 11.11 3.732 22.648 3.732 34.49 0 88.366-71.634 160-160 160-14.222 0-28.014-1.868-41.132-5.352-24.798 77.352-97.29 133.352-182.868 133.352-87.348 0-161.054-58.336-184.326-138.17-22.742 6.622-46.792 10.17-71.674 10.17-141.384 0-256-114.616-256-256 0-141.388 114.616-256 256-256h128v-192h256v192h224c88.366 0 160 71.632 160 160 0 78.72-56.854 144.162-131.732 157.51zM576 320v-192h-128v192h-160l224 224 224-224h-160z" /> +<glyph unicode="" glyph-name="cloud-check" d="M892.268 445.51c2.442 11.108 3.732 22.646 3.732 34.49 0 88.366-71.634 160-160 160-14.224 0-28.014-1.868-41.134-5.352-24.796 77.352-97.288 133.352-182.866 133.352-87.348 0-161.054-58.336-184.326-138.17-22.742 6.62-46.792 10.17-71.674 10.17-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256h608c88.366 0 160 71.632 160 160 0 78.718-56.854 144.16-131.732 157.51zM416 192l-160 160 64 64 96-96 224 224 64-64-288-288z" /> +<glyph unicode="" glyph-name="download2" d="M896 448h-160l-224-224-224 224h-160l-128-256v-64h1024v64l-128 256zM0 64h1024v-64h-1024v64zM576 640v256h-128v-256h-224l288-288 288 288h-224z" /> +<glyph unicode="" glyph-name="upload2" d="M0 64h1024v-64h-1024zM1024 192v-64h-1024v64l128 256h256v-128h256v128h256zM224 640l288 288 288-288h-224v-256h-128v256z" /> +<glyph unicode="" glyph-name="download3" d="M736 512l-256-256-256 256h160v384h192v-384zM480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64z" /> +<glyph unicode="" glyph-name="upload3" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" /> +<glyph unicode="" glyph-name="sphere" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM751.59 256c8.58 40.454 13.996 83.392 15.758 128h127.446c-3.336-44.196-13.624-87.114-30.68-128h-112.524zM208.41 576c-8.58-40.454-13.996-83.392-15.758-128h-127.444c3.336 44.194 13.622 87.114 30.678 128h112.524zM686.036 576c9.614-40.962 15.398-83.854 17.28-128h-191.316v128h174.036zM512 640v187.338c14.59-4.246 29.044-11.37 43.228-21.37 26.582-18.74 52.012-47.608 73.54-83.486 14.882-24.802 27.752-52.416 38.496-82.484h-155.264zM331.232 722.484c21.528 35.878 46.956 64.748 73.54 83.486 14.182 10 28.638 17.124 43.228 21.37v-187.34h-155.264c10.746 30.066 23.616 57.68 38.496 82.484zM448 576v-128h-191.314c1.88 44.146 7.666 87.038 17.278 128h174.036zM95.888 256c-17.056 40.886-27.342 83.804-30.678 128h127.444c1.762-44.608 7.178-87.546 15.758-128h-112.524zM256.686 384h191.314v-128h-174.036c-9.612 40.96-15.398 83.854-17.278 128zM448 192v-187.34c-14.588 4.246-29.044 11.372-43.228 21.37-26.584 18.74-52.014 47.61-73.54 83.486-14.882 24.804-27.75 52.418-38.498 82.484h155.266zM628.768 109.516c-21.528-35.876-46.958-64.746-73.54-83.486-14.184-9.998-28.638-17.124-43.228-21.37v187.34h155.266c-10.746-30.066-23.616-57.68-38.498-82.484zM512 256v128h191.314c-1.88-44.146-7.666-87.040-17.28-128h-174.034zM767.348 448c-1.762 44.608-7.178 87.546-15.758 128h112.524c17.056-40.886 27.344-83.806 30.68-128h-127.446zM830.658 640h-95.9c-18.638 58.762-44.376 110.294-75.316 151.428 42.536-20.34 81.058-47.616 114.714-81.272 21.48-21.478 40.362-44.938 56.502-70.156zM185.844 710.156c33.658 33.658 72.18 60.932 114.714 81.272-30.942-41.134-56.676-92.666-75.316-151.428h-95.898c16.138 25.218 35.022 48.678 56.5 70.156zM129.344 192h95.898c18.64-58.762 44.376-110.294 75.318-151.43-42.536 20.34-81.058 47.616-114.714 81.274-21.48 21.478-40.364 44.938-56.502 70.156zM774.156 121.844c-33.656-33.658-72.18-60.934-114.714-81.274 30.942 41.134 56.678 92.668 75.316 151.43h95.9c-16.14-25.218-35.022-48.678-56.502-70.156z" /> +<glyph unicode="" glyph-name="earth" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" /> +<glyph unicode="" glyph-name="link2" d="M440.236 324.234c-13.31 0-26.616 5.076-36.77 15.23-95.134 95.136-95.134 249.934 0 345.070l192 192c46.088 46.086 107.36 71.466 172.534 71.466s126.448-25.38 172.536-71.464c95.132-95.136 95.132-249.934 0-345.070l-87.766-87.766c-20.308-20.308-53.23-20.308-73.54 0-20.306 20.306-20.306 53.232 0 73.54l87.766 87.766c54.584 54.586 54.584 143.404 0 197.99-26.442 26.442-61.6 41.004-98.996 41.004s-72.552-14.562-98.996-41.006l-192-191.998c-54.586-54.586-54.586-143.406 0-197.992 20.308-20.306 20.306-53.232 0-73.54-10.15-10.152-23.462-15.23-36.768-15.23zM256-52c-65.176 0-126.45 25.38-172.534 71.464-95.134 95.136-95.134 249.934 0 345.070l87.764 87.764c20.308 20.306 53.234 20.306 73.54 0 20.308-20.306 20.308-53.232 0-73.54l-87.764-87.764c-54.586-54.586-54.586-143.406 0-197.992 26.44-26.44 61.598-41.002 98.994-41.002s72.552 14.562 98.998 41.006l192 191.998c54.584 54.586 54.584 143.406 0 197.992-20.308 20.308-20.306 53.232 0 73.54 20.306 20.306 53.232 20.306 73.54-0.002 95.132-95.134 95.132-249.932 0.002-345.068l-192.002-192c-46.090-46.088-107.364-71.466-172.538-71.466z" /> +<glyph unicode="" glyph-name="flag" d="M0 960h128v-1024h-128v1024zM832 316.998c82.624 0 154.57 19.984 192 49.5v512c-37.43-29.518-109.376-49.502-192-49.502s-154.57 19.984-192 49.502v-512c37.43-29.516 109.376-49.5 192-49.5zM608 927.472c-46.906 19.94-115.52 32.528-192 32.528-96.396 0-180.334-19.984-224-49.502v-512c43.666 29.518 127.604 49.502 224 49.502 76.48 0 145.094-12.588 192-32.528v512z" /> +<glyph unicode="" glyph-name="attachment" d="M665.832 632.952l-64.952 64.922-324.81-324.742c-53.814-53.792-53.814-141.048 0-194.844 53.804-53.792 141.060-53.792 194.874 0l389.772 389.708c89.714 89.662 89.714 235.062 0 324.726-89.666 89.704-235.112 89.704-324.782 0l-409.23-409.178c-0.29-0.304-0.612-0.576-0.876-0.846-125.102-125.096-125.102-327.856 0-452.906 125.054-125.056 327.868-125.056 452.988 0 0.274 0.274 0.516 0.568 0.82 0.876l0.032-0.034 279.332 279.292-64.986 64.92-279.33-279.262c-0.296-0.268-0.564-0.57-0.846-0.844-89.074-89.058-233.98-89.058-323.076 0-89.062 89.042-89.062 233.922 0 322.978 0.304 0.304 0.604 0.582 0.888 0.846l-0.046 0.060 409.28 409.166c53.712 53.738 141.144 53.738 194.886 0 53.712-53.734 53.712-141.148 0-194.84l-389.772-389.7c-17.936-17.922-47.054-17.922-64.972 0-17.894 17.886-17.894 47.032 0 64.92l324.806 324.782z" /> +<glyph unicode="" glyph-name="eye" d="M512 768c-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.312 0 416.876 130.042 512 320-95.116 189.958-288.688 320-512 320zM764.45 598.296c60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.858 25.486-252.452 73.704-60.158 38.372-111.138 89.772-149.432 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.86 7.3-9.96-27.328-15.41-56.822-15.41-87.596 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 30.774-5.452 60.268-15.408 87.598 3.978-2.378 7.938-4.802 11.858-7.302v0zM512 544c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.982 96-96z" /> +<glyph unicode="" glyph-name="eye-plus" d="M1024 832h-128v128h-128v-128h-128v-128h128v-128h128v128h128zM863.862 513.972c18.436-20.478 35.192-42.53 50.022-65.972-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.86 25.486-252.454 73.704-60.156 38.372-111.136 89.772-149.43 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-141.382 114.616-256 256-256 141.38 0 256 114.618 256 256 0 0.692-0.018 1.38-0.024 2.072-109.284 28.138-190.298 126.63-191.932 244.31-21.026 2.38-42.394 3.618-64.044 3.618-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.31 0 416.876 130.042 512 320-17.64 35.23-38.676 68.394-62.65 99.054-29.28-17.178-62.272-28.71-97.488-33.082zM416 640c53.020 0 96-42.982 96-96 0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96z" /> +<glyph unicode="" glyph-name="eye-minus" d="M640 832h384v-128h-384v128zM870.32 640h-294.32v124.388c-21.014 2.376-42.364 3.612-64 3.612-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.31 0 416.876 130.042 512 320-37.396 74.686-90.020 140.1-153.68 192zM416 640c53.020 0 96-42.982 96-96 0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96zM764.448 297.704c-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.86 25.486-252.454 73.704-60.156 38.372-111.136 89.772-149.43 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-141.382 114.616-256 256-256 141.38 0 256 114.618 256 256 0 30.774-5.454 60.268-15.408 87.598 3.976-2.378 7.938-4.802 11.858-7.302 60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296z" /> +<glyph unicode="" glyph-name="eye-blocked" d="M945.942 945.942c-18.746 18.744-49.136 18.744-67.882 0l-202.164-202.164c-51.938 15.754-106.948 24.222-163.896 24.222-223.318 0-416.882-130.042-512-320 41.122-82.124 100.648-153.040 173.022-207.096l-158.962-158.962c-18.746-18.746-18.746-49.136 0-67.882 9.372-9.374 21.656-14.060 33.94-14.060s24.568 4.686 33.942 14.058l864 864c18.744 18.746 18.744 49.138 0 67.884zM416 640c42.24 0 78.082-27.294 90.92-65.196l-121.724-121.724c-37.902 12.838-65.196 48.68-65.196 90.92 0 53.020 42.98 96 96 96zM110.116 448c38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-54.89 17.286-105.738 46.7-147.418l-60.924-60.924c-52.446 36.842-97.202 83.882-131.66 138.342zM768 518c0 27.166-4.256 53.334-12.102 77.898l-321.808-321.808c24.568-7.842 50.742-12.090 77.91-12.090 141.382 0 256 114.618 256 256zM830.026 670.026l-69.362-69.362c1.264-0.786 2.53-1.568 3.786-2.368 60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-38.664 0-76.902 4.76-113.962 14.040l-76.894-76.894c59.718-21.462 123.95-33.146 190.856-33.146 223.31 0 416.876 130.042 512 320-45.022 89.916-112.118 166.396-193.974 222.026z" /> +<glyph unicode="" glyph-name="bookmark" d="M192 960v-1024l320 320 320-320v1024z" /> +<glyph unicode="" glyph-name="bookmarks" d="M256 832v-896l320 320 320-320v896zM768 960h-640v-896l64 64v768h576z" /> +<glyph unicode="" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> +<glyph unicode="" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" /> +<glyph unicode="" glyph-name="brightness-contrast" d="M512 704c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.616 256-256 256zM512 288v320c88.224 0 160-71.776 160-160s-71.776-160-160-160zM512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.256c24.992-24.992 24.992-65.516 0-90.51-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.992-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.516 24.992 90.508 0 24.994-24.994 24.994-65.518 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.518 0 90.51l45.256 45.256z" /> +<glyph unicode="" glyph-name="star-empty2" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-223.462-117.48 42.676 248.83-180.786 176.222 249.84 36.304 111.732 226.396 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" /> +<glyph unicode="" glyph-name="star-half" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-0.942-0.496 0.942 570.768 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" /> +<glyph unicode="" glyph-name="star-full" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538z" /> +<glyph unicode="" glyph-name="heart" d="M755.188 896c-107.63 0-200.258-87.554-243.164-179-42.938 91.444-135.578 179-243.216 179-148.382 0-268.808-120.44-268.808-268.832 0-301.846 304.5-380.994 512.022-679.418 196.154 296.576 511.978 387.206 511.978 679.418 0 148.392-120.43 268.832-268.812 268.832z" /> +<glyph unicode="" glyph-name="heart-broken" d="M755.188 896c148.382 0 268.812-120.44 268.812-268.832 0-292.21-315.824-382.842-511.978-679.418-207.522 298.424-512.022 377.572-512.022 679.418 0 148.392 120.426 268.832 268.808 268.832 60.354 0 115.99-27.53 160.796-67.834l-77.604-124.166 224-128-128-320 352 384-224 128 61.896 92.846c35.42 21.768 75.21 35.154 117.292 35.154z" /> +<glyph unicode="" glyph-name="man" d="M576 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM576 704h-192c-35.346 0-64-28.654-64-64v-320h64v-384h80v384h32v-384h80v384h64v320c0 35.346-28.652 64-64 64z" /> +<glyph unicode="" glyph-name="woman" d="M576 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM719 448l49 35.5-133.286 206.116c-5.92 8.98-15.958 14.384-26.714 14.384h-256c-10.756 0-20.792-5.404-26.714-14.384l-133.286-206.116 49-35.5 110.644 143.596 38.458-89.74-134.102-245.856h122.666l21.334-320h64v320h32v-320h64l21.334 320h122.666l-134.104 245.858 38.458 89.74 110.646-143.598z" /> +<glyph unicode="" glyph-name="man-woman" d="M256 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM832 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM256 704h-192c-35.346 0-64-28.654-64-64v-320h64v-384h80v384h32v-384h80v384h64v320c0 35.346-28.652 64-64 64zM975 448l49 35.5-133.286 206.116c-5.92 8.98-15.958 14.384-26.714 14.384h-256c-10.756 0-20.792-5.404-26.714-14.384l-133.286-206.116 49-35.5 110.644 143.596 38.458-89.74-134.102-245.856h122.666l21.334-320h64v320h32v-320h64l21.334 320h122.666l-134.104 245.858 38.458 89.74 110.646-143.598z" /> +<glyph unicode="" glyph-name="happy" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM512 361.24c115.95 0 226.23 30.806 320 84.92-14.574-178.438-153.128-318.16-320-318.16-166.868 0-305.422 139.872-320 318.304 93.77-54.112 204.050-85.064 320-85.064zM256 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> +<glyph unicode="" glyph-name="happy2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.348 0 64-42.98 64-96s-28.652-96-64-96-64 42.98-64 96 28.652 96 64 96zM320 704c35.346 0 64-42.98 64-96s-28.654-96-64-96-64 42.98-64 96 28.654 96 64 96zM512 64c-166.868 0-305.422 139.872-320 318.304 93.77-54.114 204.050-85.064 320-85.064s226.23 30.806 320 84.92c-14.574-178.438-153.128-318.16-320-318.16z" /> +<glyph unicode="" glyph-name="smile" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM704.098 332.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344s-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74s152.924 43.592 192.098 108.74z" /> +<glyph unicode="" glyph-name="smile2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM512 128c-116.51 0-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74s152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344z" /> +<glyph unicode="" glyph-name="tongue" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM768 384v-64h-64v-96c0-53.020-42.98-96-96-96s-96 42.98-96 96v96h-256v64h512z" /> +<glyph unicode="" glyph-name="tongue2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM768 320h-64v-96c0-53.020-42.98-96-96-96s-96 42.98-96 96v96h-256v64h512v-64zM704 576c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z" /> +<glyph unicode="" glyph-name="sad" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM319.902 179.26l-82.328 49.396c55.962 93.070 157.916 155.344 274.426 155.344 116.508 0 218.462-62.274 274.426-155.344l-82.328-49.396c-39.174 65.148-110.542 108.74-192.098 108.74-81.558 0-152.924-43.592-192.098-108.74z" /> +<glyph unicode="" glyph-name="sad2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396z" /> +<glyph unicode="" glyph-name="wink" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM542.74 248.972c140.248 27.706 249.11 91.542 288.454 176.594-21.654-167.956-161.518-297.566-330.85-297.566-119.242 0-223.858 64.282-282.892 160.948 70.41-55.058 194.534-65.808 325.288-39.976zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM352 588.5c-41.796 0-77.334-15.656-90.516-37.5-3.54 5.866-5.484 32.174-5.484 38.75 0 31.066 42.98 56.25 96 56.25s96-25.184 96-56.25c0-6.576-1.944-32.884-5.484-38.75-13.182 21.844-48.72 37.5-90.516 37.5z" /> +<glyph unicode="" glyph-name="wink2" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM704 704c35.346 0 64-42.98 64-96s-28.654-96-64-96-64 42.98-64 96 28.654 96 64 96zM352 647.938c59.646 0 102-22.332 102-57.282 0-7.398 3.812-42.994-0.17-49.594-14.828 24.576-54.81 42.188-101.83 42.188s-87.002-17.612-101.83-42.188c-3.982 6.6-0.17 42.196-0.17 49.594 0 34.95 42.354 57.282 102 57.282zM500.344 128c-119.242 0-223.858 64.28-282.892 160.952 70.41-55.060 194.534-65.81 325.288-39.978 140.248 27.706 249.11 91.542 288.454 176.594-21.654-167.96-161.518-297.568-330.85-297.568z" /> +<glyph unicode="" glyph-name="grin" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM192 448v-64c0-140.8 115.2-256 256-256h128c140.8 0 256 115.2 256 256v64h-640zM384 203.012c-26.538 9.458-50.924 24.822-71.544 45.446-36.406 36.402-56.456 84.54-56.456 135.542h128v-180.988zM576 192h-128v192h128v-192zM711.544 248.458c-20.624-20.624-45.010-35.988-71.544-45.446v180.988h128c0-51.002-20.048-99.14-56.456-135.542zM225.352 576c0.002 0 0 0 0 0 9.768 0 18.108 7.056 19.724 16.69 6.158 36.684 37.668 63.31 74.924 63.31s68.766-26.626 74.924-63.31c1.616-9.632 9.956-16.69 19.722-16.69 9.768 0 18.108 7.056 19.724 16.688 1.082 6.436 1.628 12.934 1.628 19.312 0 63.962-52.038 116-116 116s-116-52.038-116-116c0-6.378 0.548-12.876 1.628-19.312 1.62-9.632 9.96-16.688 19.726-16.688zM609.352 576c0.002 0 0 0 0 0 9.77 0 18.112 7.056 19.724 16.69 6.158 36.684 37.668 63.31 74.924 63.31s68.766-26.626 74.924-63.31c1.616-9.632 9.958-16.69 19.722-16.69s18.108 7.056 19.722 16.688c1.082 6.436 1.628 12.934 1.628 19.312 0 63.962-52.038 116-116 116s-116-52.038-116-116c0-6.378 0.544-12.876 1.626-19.312 1.624-9.632 9.964-16.688 19.73-16.688z" /> +<glyph unicode="" glyph-name="grin2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 724c63.962 0 116-52.038 116-116 0-6.378-0.546-12.876-1.628-19.312-1.618-9.632-9.958-16.688-19.724-16.688s-18.108 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69-0.002 0 0 0-0.002 0-9.766 0-18.106 7.056-19.722 16.688-1.084 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM320 724c63.962 0 116-52.038 116-116 0-6.378-0.548-12.876-1.628-19.312-1.618-9.632-9.956-16.688-19.724-16.688s-18.106 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69 0 0 0 0 0 0-9.766 0-18.106 7.056-19.724 16.688-1.082 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM192 384h192v-247.846c-110.094 28.606-192 129.124-192 247.846zM448 128v256h128v-256h-128zM640 136.154v247.846h192c0-118.722-81.904-219.24-192-247.846z" /> +<glyph unicode="" glyph-name="cool" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 704c17.6 0 32-14.4 32-32v-96c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64h-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v96c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-32h128v32c0 17.6 14.4 32 32 32h192zM512 192c93.208 0 174.772 49.818 219.546 124.278l54.88-32.934c-55.966-93.070-157.916-155.344-274.426-155.344-48.458 0-94.384 10.796-135.54 30.082l33.162 55.278c31.354-13.714 65.964-21.36 102.378-21.36z" /> +<glyph unicode="" glyph-name="cool2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 128c-48.458 0-94.384 10.796-135.542 30.082l33.162 55.276c31.356-13.712 65.966-21.358 102.38-21.358 93.208 0 174.772 49.818 219.542 124.278l54.882-32.934c-55.964-93.070-157.914-155.344-274.424-155.344zM832 576c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64h-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v96c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-32h128v32c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-96z" /> +<glyph unicode="" glyph-name="angry" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396zM767.042 679.76c4.284-17.144-6.14-34.518-23.282-38.804-17.626-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 1.17 0.036 2.33 0.098 3.484 2.032 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804z" /> +<glyph unicode="" glyph-name="angry2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM576.094 579.484c2.032 47.454 45.21 78.948 81.592 97.138 34.742 17.372 69.104 26.060 70.548 26.422 17.146 4.288 34.52-6.138 38.806-23.284s-6.138-34.518-23.284-38.806c-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.038 2.332 0.1 3.486zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396z" /> +<glyph unicode="" glyph-name="evil" d="M639.996 512c-35.346 0-64 28.654-63.998 64.002 0 1.17 0.036 2.33 0.098 3.484 2.032 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284 4.284-17.146-6.14-34.518-23.284-38.806-17.626-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64zM280.242 640.956c-17.144 4.286-27.568 21.66-23.282 38.804 4.286 17.146 21.66 27.572 38.806 23.284 1.444-0.362 35.806-9.050 70.548-26.422 36.382-18.19 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.316 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.312 16.9-56.936 21.35zM512 224c81.554 0 152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344s-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74zM1024 896c0 45.516-9.524 88.8-26.652 128-33.576-76.836-96.448-137.932-174.494-169.178-86.194 65.96-193.936 105.178-310.854 105.178s-224.66-39.218-310.854-105.178c-78.048 31.246-140.918 92.342-174.494 169.178-17.128-39.2-26.652-82.484-26.652-128 0-73.574 24.85-141.328 66.588-195.378-42.37-74.542-66.588-160.75-66.588-252.622 0-282.77 229.23-512 512-512s512 229.23 512 512c0 91.872-24.218 178.080-66.588 252.622 41.738 54.050 66.588 121.804 66.588 195.378zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416z" /> +<glyph unicode="" glyph-name="evil2" d="M1024 896c0 45.516-9.524 88.8-26.652 128-33.576-76.836-96.448-137.932-174.494-169.178-86.194 65.96-193.936 105.178-310.854 105.178s-224.66-39.218-310.854-105.178c-78.048 31.246-140.918 92.342-174.494 169.178-17.128-39.2-26.652-82.484-26.652-128 0-73.574 24.85-141.328 66.588-195.378-42.37-74.542-66.588-160.75-66.588-252.622 0-282.77 229.23-512 512-512s512 229.23 512 512c0 91.872-24.218 178.080-66.588 252.622 41.738 54.050 66.588 121.804 66.588 195.378zM576.094 579.484c2.032 47.454 45.21 78.948 81.592 97.138 34.742 17.372 69.104 26.060 70.548 26.422 17.146 4.288 34.52-6.138 38.806-23.284s-6.138-34.518-23.284-38.806c-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.038 2.332 0.1 3.486zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM512 128c-116.51 0-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74 81.554 0 152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344z" /> +<glyph unicode="" glyph-name="shocked" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM384 256c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM256 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> +<glyph unicode="" glyph-name="shocked2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 512c-35.346 0-64 42.98-64 96s28.654 96 64 96 64-42.98 64-96-28.654-96-64-96zM512 128c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128s-57.308-128-128-128zM704 512c-35.346 0-64 42.98-64 96s28.654 96 64 96 64-42.98 64-96-28.654-96-64-96z" /> +<glyph unicode="" glyph-name="baffled" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM384 544c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM352 640c53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM352 704c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160-71.776 160-160 160v0zM704 544c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM672 640c53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM672 704c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160-71.776 160-160 160v0zM384 256h256v-64h-256v64z" /> +<glyph unicode="" glyph-name="baffled2" d="M384 544c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM704 544c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM256 544c0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96-96 42.98-96 96zM640 192h-256v64h256v-64zM672 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> +<glyph unicode="" glyph-name="confused" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM726.106 320h64.864c9.246-72.506-32.452-144.53-103.958-170.56-82.904-30.176-174.9 12.716-205.080 95.616-18.108 49.744-73.306 75.482-123.048 57.372-45.562-16.588-70.956-64.298-60.988-110.424h-64.86c-9.242 72.508 32.45 144.528 103.956 170.56 82.904 30.178 174.902-12.716 205.082-95.614 18.104-49.748 73.306-75.482 123.044-57.372 45.562 16.584 70.956 64.298 60.988 110.422z" /> +<glyph unicode="" glyph-name="confused2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM687.010 149.44c-82.902-30.18-174.9 12.712-205.080 95.614-18.108 49.742-73.306 75.478-123.048 57.372-45.562-16.588-70.958-64.296-60.988-110.424h-64.86c-9.244 72.508 32.45 144.532 103.956 170.56 82.904 30.18 174.902-12.712 205.082-95.614 18.108-49.742 73.306-75.476 123.046-57.37 45.562 16.584 70.958 64.294 60.988 110.422h64.864c9.24-72.506-32.454-144.532-103.96-170.56z" /> +<glyph unicode="" glyph-name="neutral" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM640 640c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM384 256h256v-64h-256v64z" /> +<glyph unicode="" glyph-name="neutral2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM640 192h-256v64h256v-64zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64z" /> +<glyph unicode="" glyph-name="hipster" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM675.882 419.882c-37.49 37.49-98.276 37.49-135.766 0s-37.49-98.276 0-135.766c1.204-1.204 2.434-2.368 3.684-3.492 86.528-78.512 288.2 1.842 288.2 103.376-62-40-110.45-9.786-156.118 35.882zM348.118 419.882c37.49 37.49 98.276 37.49 135.766 0s37.49-98.276 0-135.766c-1.204-1.204-2.434-2.368-3.684-3.492-86.528-78.512-288.2 1.842-288.2 103.376 62-40 110.45-9.786 156.118 35.882z" /> +<glyph unicode="" glyph-name="hipster2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM543.8 280.624c-1.25 1.124-2.48 2.29-3.684 3.492-18.74 18.74-28.112 43.3-28.118 67.864-0.004-24.562-9.376-49.124-28.118-67.864-1.204-1.204-2.434-2.368-3.684-3.492-86.524-78.512-288.196 1.842-288.196 103.376 62-40 110.45-9.786 156.118 35.882 37.49 37.49 98.276 37.49 135.766 0 18.74-18.74 28.112-43.3 28.118-67.864 0.004 24.562 9.376 49.124 28.118 67.864 37.49 37.49 98.276 37.49 135.766 0 45.664-45.668 94.114-75.882 156.114-35.882 0-101.534-201.672-181.888-288.2-103.376z" /> +<glyph unicode="" glyph-name="wondering" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM745.74 358.38l22.488-76.776-437.008-128.002-22.488 76.776zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64z" /> +<glyph unicode="" glyph-name="wondering2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM331.244 153.614l-22.488 76.774 437 128 22.488-76.774-437-128z" /> +<glyph unicode="" glyph-name="sleepy" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM640 288c0-88.366-57.308-160-128.002-160s-128.002 71.634-128.002 160c0 88.366 57.308 160 128.002 160s128.002-71.634 128.002-160zM416 620c-8.19 0-16.378 3.124-22.626 9.374-19.334 19.332-63.412 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374zM736 620c-8.19 0-16.378 3.124-22.626 9.374-19.332 19.332-63.414 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374z" /> +<glyph unicode="" glyph-name="sleepy2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM310.628 629.374c-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374s-16.378 3.124-22.626 9.374c-19.334 19.332-63.412 19.332-82.746 0zM511.998 128c-70.694 0-128.002 71.634-128.002 160s57.308 160 128.002 160 128.002-71.634 128.002-160-57.308-160-128.002-160zM758.628 629.374c-6.248-6.25-14.438-9.374-22.628-9.374s-16.378 3.124-22.626 9.374c-19.332 19.332-63.414 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.498 12.498-32.758 0-45.254z" /> +<glyph unicode="" glyph-name="frustrated" d="M366.312 676.622c-34.742 17.37-69.102 26.060-70.548 26.422-17.146 4.288-34.518-6.138-38.806-23.284-4.284-17.144 6.14-34.518 23.282-38.804 17.626-4.45 38.522-12.12 56.936-21.35-10.648-11.43-17.174-26.752-17.174-43.606 0-35.346 28.654-64 64-64s64 28.654 64 64c0 1.17-0.036 2.33-0.098 3.484-2.032 47.454-45.212 78.946-81.592 97.138zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM236.498 136.336c10.706-5.324 22.756-8.336 35.502-8.336h480c12.746 0 24.796 3.012 35.502 8.338-73.378-64.914-169.828-104.338-275.502-104.338-105.672 0-202.124 39.424-275.502 104.336zM256 208v96c0 8.674 7.328 16 16 16h112v-128h-112c-8.672 0-16 7.326-16 16zM448 192v128h128v-128h-128zM640 192v128h112c8.674 0 16-7.326 16-16v-96c0-8.674-7.326-16-16-16h-112zM823.662 172.498c5.326 10.706 8.338 22.756 8.338 35.502v96c0 44.112-35.888 80-80 80h-480c-44.112 0-80-35.888-80-80v-96c0-12.746 3.012-24.796 8.336-35.502-64.912 73.378-104.336 169.828-104.336 275.502 0 229.75 186.25 416 416 416s416-186.25 416-416c0-105.674-39.424-202.124-104.338-275.502zM728.236 703.044c-1.448-0.362-35.806-9.052-70.548-26.422-36.378-18.192-79.558-49.684-81.592-97.138-0.060-1.154-0.098-2.314-0.098-3.484 0-35.346 28.654-64 64-64s64 28.654 64 64c0 16.854-6.526 32.176-17.174 43.606 18.414 9.23 39.31 16.9 56.936 21.35 17.142 4.286 27.566 21.66 23.284 38.804-4.29 17.146-21.662 27.572-38.808 23.284z" /> +<glyph unicode="" glyph-name="frustrated2" d="M256 304v-96c0-8.674 7.328-16 16-16h112v128h-112c-8.672 0-16-7.326-16-16zM448 320h128v-128h-128v128zM752 320h-112v-128h112c8.674 0 16 7.326 16 16v96c0 8.674-7.326 16-16 16zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM576.096 579.484c2.034 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284 4.284-17.144-6.14-34.518-23.284-38.804-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.040 2.33 0.1 3.484zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM832 208c0-44.112-35.888-80-80-80h-480c-44.112 0-80 35.888-80 80v96c0 44.112 35.888 80 80 80h480c44.112 0 80-35.888 80-80v-96z" /> +<glyph unicode="" glyph-name="crying" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 576h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32zM352 576h-128c-17.672 0-32 14.328-32 32s14.328 32 32 32h128c17.672 0 32-14.328 32-32s-14.328-32-32-32zM608 104c-8.19 0-16.378 3.124-22.626 9.374-4.582 4.582-29.42 14.626-73.374 14.626s-68.79-10.044-73.374-14.626c-12.496-12.496-32.758-12.496-45.254 0-12.498 12.496-12.498 32.758 0 45.254 30.122 30.12 92.994 33.372 118.628 33.372 25.632 0 88.506-3.252 118.626-33.374 12.498-12.496 12.498-32.758 0-45.254-6.248-6.248-14.436-9.372-22.626-9.372zM736 384c-17.674 0-32 14.326-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64c0-17.674-14.326-32-32-32zM736 192c-17.674 0-32 14.326-32 32v64c0 17.674 14.326 32 32 32s32-14.326 32-32v-64c0-17.674-14.326-32-32-32zM288 384c-17.672 0-32 14.326-32 32v64c0 17.672 14.328 32 32 32s32-14.328 32-32v-64c0-17.674-14.328-32-32-32zM288 192c-17.672 0-32 14.326-32 32v64c0 17.674 14.328 32 32 32s32-14.326 32-32v-64c0-17.674-14.328-32-32-32z" /> +<glyph unicode="" glyph-name="crying2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 224c0-17.674-14.328-32-32-32s-32 14.326-32 32v64c0 17.674 14.328 32 32 32s32-14.326 32-32v-64zM320 416c0-17.674-14.328-32-32-32s-32 14.326-32 32v64c0 17.672 14.328 32 32 32s32-14.328 32-32v-64zM352 576h-128c-17.672 0-32 14.328-32 32s14.328 32 32 32h128c17.672 0 32-14.328 32-32s-14.328-32-32-32zM630.626 113.374c-6.248-6.25-14.436-9.374-22.626-9.374s-16.378 3.124-22.626 9.374c-4.582 4.582-29.42 14.626-73.374 14.626s-68.79-10.044-73.374-14.626c-12.496-12.496-32.758-12.496-45.254 0-12.498 12.496-12.498 32.758 0 45.254 30.122 30.12 92.994 33.372 118.628 33.372 25.632 0 88.506-3.252 118.626-33.374 12.498-12.496 12.498-32.756 0-45.252zM768 224c0-17.674-14.326-32-32-32s-32 14.326-32 32v64c0 17.674 14.326 32 32 32s32-14.326 32-32v-64zM768 416c0-17.674-14.326-32-32-32s-32 14.326-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64zM800 576h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32z" /> +<glyph unicode="" glyph-name="point-up" d="M960 352v160c0 52.934-43.066 96-96 96-17.104 0-33.176-4.494-47.098-12.368-17.076 26.664-46.958 44.368-80.902 44.368-24.564 0-47.004-9.274-64-24.504-16.996 15.23-39.436 24.504-64 24.504-11.214 0-21.986-1.934-32-5.484v229.484c0 52.934-43.066 96-96 96s-96-43.066-96-96v-394.676l-176.018 93.836c-14.536 8.4-31.126 12.84-47.982 12.84-52.934 0-96-43.066-96-96 0-26.368 10.472-50.954 29.49-69.226 0.248-0.238 0.496-0.47 0.75-0.7l239.17-218.074h-45.41c-17.672 0-32-14.326-32-32v-192c0-17.674 14.328-32 32-32h640c17.674 0 32 14.326 32 32v192c0 17.674-14.326 32-32 32h-44.222l72.844 145.69c2.222 4.442 3.378 9.342 3.378 14.31zM896 96c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM896 359.554l-83.776-167.554h-383.826l-290.818 265.166c-6.18 6.070-9.58 14.164-9.58 22.834 0 17.644 14.356 32 32 32 5.46 0 10.612-1.31 15.324-3.894 0.53-0.324 1.070-0.632 1.622-0.926l224-119.416c9.92-5.288 21.884-4.986 31.52 0.8 9.638 5.782 15.534 16.196 15.534 27.436v448c0 17.644 14.356 32 32 32s32-14.356 32-32v-320c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-32c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-152.446z" /> +<glyph unicode="" glyph-name="point-right" d="M416 0h160c52.934 0 96 43.066 96 96 0 17.104-4.494 33.176-12.368 47.098 26.664 17.076 44.368 46.958 44.368 80.902 0 24.564-9.276 47.004-24.504 64 15.228 16.996 24.504 39.436 24.504 64 0 11.214-1.934 21.986-5.484 32h229.484c52.934 0 96 43.066 96 96s-43.066 96-96 96h-394.676l93.836 176.018c8.4 14.536 12.84 31.126 12.84 47.982 0 52.934-43.066 96-96 96-26.368 0-50.954-10.472-69.226-29.49-0.238-0.248-0.47-0.496-0.7-0.75l-218.074-239.17v45.41c0 17.672-14.326 32-32 32h-192c-17.674 0-32-14.328-32-32v-640c0-17.674 14.326-32 32-32h192c17.674 0 32 14.326 32 32v44.222l145.69-72.844c4.444-2.222 9.342-3.378 14.31-3.378zM160 64c-17.674 0-32 14.326-32 32s14.326 32 32 32 32-14.326 32-32-14.326-32-32-32zM423.556 64l-167.556 83.778v383.824l265.168 290.818c6.066 6.18 14.162 9.58 22.832 9.58 17.644 0 32-14.356 32-32 0-5.46-1.308-10.612-3.894-15.324-0.324-0.53-0.632-1.070-0.926-1.622l-119.418-224c-5.288-9.92-4.986-21.884 0.8-31.52 5.784-9.638 16.198-15.534 27.438-15.534h448c17.644 0 32-14.356 32-32s-14.356-32-32-32h-320c-17.672 0-32-14.326-32-32s14.328-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32h-32c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32h-152.444z" /> +<glyph unicode="" glyph-name="point-down" d="M960 544v-160c0-52.934-43.066-96-96-96-17.104 0-33.176 4.494-47.098 12.368-17.076-26.662-46.96-44.368-80.902-44.368-24.564 0-47.004 9.276-64 24.504-16.996-15.228-39.436-24.504-64-24.504-11.214 0-21.986 1.934-32 5.484v-229.484c0-52.934-43.066-96-96-96-52.936 0-96 43.066-96 96v394.676l-176.018-93.836c-14.538-8.398-31.126-12.84-47.982-12.84-52.936 0-96 43.066-96 96 0 26.368 10.472 50.952 29.488 69.226 0.248 0.238 0.496 0.47 0.75 0.7l239.17 218.074h-45.408c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h640c17.674 0 32-14.326 32-32v-192c0-17.674-14.326-32-32-32h-44.222l72.842-145.69c2.224-4.442 3.38-9.342 3.38-14.31zM896 800c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32zM896 536.446l-83.778 167.554h-383.824l-290.82-265.168c-6.18-6.066-9.578-14.162-9.578-22.832 0-17.644 14.356-32 32-32 5.458 0 10.612 1.308 15.324 3.894 0.53 0.324 1.070 0.632 1.622 0.926l224 119.416c9.92 5.288 21.884 4.986 31.52-0.8 9.638-5.782 15.534-16.196 15.534-27.436v-448c0-17.644 14.356-32 32-32s32 14.356 32 32v320c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32c0 17.674 14.326 32 32 32s32-14.326 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v32c0 17.674 14.326 32 32 32s32-14.326 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v152.446z" /> +<glyph unicode="" glyph-name="point-left" d="M608 0h-160c-52.934 0-96 43.066-96 96 0 17.104 4.494 33.176 12.368 47.098-26.662 17.076-44.368 46.958-44.368 80.902 0 24.564 9.276 47.004 24.504 64-15.228 16.996-24.504 39.436-24.504 64 0 11.214 1.934 21.986 5.484 32h-229.484c-52.934 0-96 43.066-96 96 0 52.936 43.066 96 96 96h394.676l-93.836 176.018c-8.398 14.536-12.84 31.126-12.84 47.982 0 52.936 43.066 96 96 96 26.368 0 50.952-10.472 69.224-29.488 0.238-0.248 0.472-0.496 0.7-0.75l218.076-239.17v45.408c0 17.674 14.326 32 32 32h192c17.674 0 32-14.326 32-32v-640c0-17.674-14.326-32-32-32h-192c-17.674 0-32 14.326-32 32v44.222l-145.69-72.844c-4.442-2.222-9.34-3.378-14.31-3.378zM864 64c17.674 0 32 14.326 32 32s-14.326 32-32 32-32-14.326-32-32 14.326-32 32-32zM600.446 64l167.554 83.778v383.824l-265.168 290.82c-6.066 6.18-14.162 9.578-22.832 9.578-17.644 0-32-14.356-32-32 0-5.458 1.308-10.612 3.894-15.324 0.324-0.53 0.632-1.070 0.926-1.622l119.416-224c5.29-9.92 4.988-21.884-0.798-31.52-5.784-9.638-16.198-15.534-27.438-15.534h-448c-17.644 0-32-14.356-32-32s14.356-32 32-32h320c17.672 0 32-14.326 32-32s-14.328-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32h152.446z" /> +<glyph unicode="" glyph-name="warning" d="M512 867.226l429.102-855.226h-858.206l429.104 855.226zM512 960c-22.070 0-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.3 0 96.792 48.708 63.3 108.24h0.002l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648v0zM576 128c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM512 256c-35.346 0-64 28.654-64 64v192c0 35.346 28.654 64 64 64s64-28.654 64-64v-192c0-35.346-28.654-64-64-64z" /> +<glyph unicode="" glyph-name="notification" d="M512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512zM448 256h128v-128h-128zM448 768h128v-384h-128z" /> +<glyph unicode="" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> +<glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" /> +<glyph unicode="" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" /> +<glyph unicode="" glyph-name="info2" d="M448 656c0 26.4 21.6 48 48 48h32c26.4 0 48-21.6 48-48v-32c0-26.4-21.6-48-48-48h-32c-26.4 0-48 21.6-48 48v32zM640 192h-256v64h64v192h-64v64h192v-256h64zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416z" /> +<glyph unicode="" glyph-name="cancel-circle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM672 704l-160-160-160 160-96-96 160-160-160-160 96-96 160 160 160-160 96 96-160 160 160 160z" /> +<glyph unicode="" glyph-name="blocked" d="M874.040 810.040c-96.706 96.702-225.28 149.96-362.040 149.96s-265.334-53.258-362.040-149.96c-96.702-96.706-149.96-225.28-149.96-362.040s53.258-265.334 149.96-362.040c96.706-96.702 225.28-149.96 362.040-149.96s265.334 53.258 362.040 149.96c96.702 96.706 149.96 225.28 149.96 362.040s-53.258 265.334-149.96 362.040zM896 448c0-82.814-26.354-159.588-71.112-222.38l-535.266 535.268c62.792 44.758 139.564 71.112 222.378 71.112 211.738 0 384-172.262 384-384zM128 448c0 82.814 26.354 159.586 71.112 222.378l535.27-535.268c-62.794-44.756-139.568-71.11-222.382-71.11-211.738 0-384 172.262-384 384z" /> +<glyph unicode="" glyph-name="cross" d="M1014.662 137.34c-0.004 0.004-0.008 0.008-0.012 0.010l-310.644 310.65 310.644 310.65c0.004 0.004 0.008 0.006 0.012 0.010 3.344 3.346 5.762 7.254 7.312 11.416 4.246 11.376 1.824 24.682-7.324 33.83l-146.746 146.746c-9.148 9.146-22.45 11.566-33.828 7.32-4.16-1.55-8.070-3.968-11.418-7.31 0-0.004-0.004-0.006-0.008-0.010l-310.648-310.652-310.648 310.65c-0.004 0.004-0.006 0.006-0.010 0.010-3.346 3.342-7.254 5.76-11.414 7.31-11.38 4.248-24.682 1.826-33.83-7.32l-146.748-146.748c-9.148-9.148-11.568-22.452-7.322-33.828 1.552-4.16 3.97-8.072 7.312-11.416 0.004-0.002 0.006-0.006 0.010-0.010l310.65-310.648-310.65-310.652c-0.002-0.004-0.006-0.006-0.008-0.010-3.342-3.346-5.76-7.254-7.314-11.414-4.248-11.376-1.826-24.682 7.322-33.83l146.748-146.746c9.15-9.148 22.452-11.568 33.83-7.322 4.16 1.552 8.070 3.97 11.416 7.312 0.002 0.004 0.006 0.006 0.010 0.010l310.648 310.65 310.648-310.65c0.004-0.002 0.008-0.006 0.012-0.008 3.348-3.344 7.254-5.762 11.414-7.314 11.378-4.246 24.684-1.826 33.828 7.322l146.746 146.748c9.148 9.148 11.57 22.454 7.324 33.83-1.552 4.16-3.97 8.068-7.314 11.414z" /> +<glyph unicode="" glyph-name="checkmark" d="M864 832l-480-480-224 224-160-160 384-384 640 640z" /> +<glyph unicode="" glyph-name="checkmark2" d="M397.434 42.304l-397.868 391.6 197.378 194.27 200.49-197.332 429.62 422.852 197.378-194.27-626.998-617.12zM107.912 433.904l289.524-284.962 518.656 510.482-89.036 87.632-429.62-422.852-200.49 197.334-89.034-87.634z" /> +<glyph unicode="" glyph-name="spell-check" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" /> +<glyph unicode="" glyph-name="enter" d="M384 448h-320v128h320v128l192-192-192-192zM1024 960v-832l-384-192v192h-384v256h64v-192h320v576l256 128h-576v-256h-64v320z" /> +<glyph unicode="" glyph-name="exit" d="M768 320v128h-320v128h320v128l192-192zM704 384v-256h-320v-192l-384 192v832h704v-320h-64v256h-512l256-128v-576h256v192z" /> +<glyph unicode="" glyph-name="play22" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM384 672l384-224-384-224z" /> +<glyph unicode="" glyph-name="pause2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 640h128v-384h-128zM576 640h128v-384h-128z" /> +<glyph unicode="" glyph-name="stop" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 640h384v-384h-384z" /> +<glyph unicode="" glyph-name="previous" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM448 448l256 192v-384zM320 640h128v-384h-128v384z" /> +<glyph unicode="" glyph-name="next" d="M512 960c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 32c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM576 448l-256 192v-384zM704 640h-128v-384h128v384z" /> +<glyph unicode="" glyph-name="backward" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM704 288l-224 160 224 160zM448 288l-224 160 224 160z" /> +<glyph unicode="" glyph-name="forward2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 608l224-160-224-160zM576 608l224-160-224-160z" /> +<glyph unicode="" glyph-name="play3" d="M192 832l640-384-640-384z" /> +<glyph unicode="" glyph-name="pause22" d="M128 832h320v-768h-320zM576 832h320v-768h-320z" /> +<glyph unicode="" glyph-name="stop2" d="M128 832h768v-768h-768z" /> +<glyph unicode="" glyph-name="backward2" d="M576 800v-320l320 320v-704l-320 320v-320l-352 352z" /> +<glyph unicode="" glyph-name="forward3" d="M512 96v320l-320-320v704l320-320v320l352-352z" /> +<glyph unicode="" glyph-name="first" d="M128 64v768h128v-352l320 320v-320l320 320v-704l-320 320v-320l-320 320v-352z" /> +<glyph unicode="" glyph-name="last" d="M896 832v-768h-128v352l-320-320v320l-320-320v704l320-320v320l320-320v352z" /> +<glyph unicode="" glyph-name="previous2" d="M256 64v768h128v-352l320 320v-704l-320 320v-352z" /> +<glyph unicode="" glyph-name="next2" d="M768 832v-768h-128v352l-320-320v704l320-320v352z" /> +<glyph unicode="" glyph-name="eject" d="M0 192h1024v-128h-1024zM512 832l512-512h-1024z" /> +<glyph unicode="" glyph-name="volume-high2" horiz-adv-x="1088" d="M890.040 37.96c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.746-18.744 49.136 0 67.882 87.638 87.642 135.904 204.16 135.904 328.1 0 123.938-48.266 240.458-135.904 328.098-18.744 18.746-18.744 49.138 0 67.882s49.138 18.744 67.882 0c105.77-105.772 164.022-246.4 164.022-395.98s-58.252-290.208-164.022-395.98c-9.372-9.372-21.656-14.058-33.94-14.058zM719.53 128.47c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.744-18.744 49.136 0 67.882 131.006 131.006 131.006 344.17 0 475.176-18.744 18.746-18.744 49.138 0 67.882 18.744 18.742 49.138 18.744 67.882 0 81.594-81.59 126.53-190.074 126.53-305.466 0-115.39-44.936-223.876-126.53-305.47-9.372-9.374-21.656-14.060-33.94-14.060v0zM549.020 218.98c-12.286 0-24.568 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-medium" d="M719.53 128.47c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.744-18.744 49.136 0 67.882 131.006 131.006 131.006 344.17 0 475.176-18.744 18.746-18.744 49.138 0 67.882 18.744 18.742 49.138 18.744 67.882 0 81.594-81.59 126.53-190.074 126.53-305.466 0-115.39-44.936-223.876-126.53-305.47-9.372-9.374-21.656-14.060-33.94-14.060v0zM549.020 218.98c-12.286 0-24.566 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-low2" d="M549.020 218.98c-12.286 0-24.566 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-mute2" d="M416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-mute22" d="M960 340.852v-84.852h-84.852l-107.148 107.148-107.148-107.148h-84.852v84.852l107.148 107.148-107.148 107.148v84.852h84.852l107.148-107.148 107.148 107.148h84.852v-84.852l-107.148-107.148 107.148-107.148zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-increase" d="M1024 384h-192v-192h-128v192h-192v128h192v192h128v-192h192v-128zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="volume-decrease" d="M512 512h512v-128h-512v128zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> +<glyph unicode="" glyph-name="loop" d="M128 640h640v-192l256 256-256 256v-192h-768v-384h128zM896 256h-640v192l-256-256 256-256v192h768v384h-128z" /> +<glyph unicode="" glyph-name="loop2" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" /> +<glyph unicode="" glyph-name="infinite" d="M783.988 207.988c-64.104 0-124.372 24.96-169.7 70.288l-102.288 102.282-102.276-102.27c-45.332-45.336-105.6-70.3-169.706-70.3-64.118 0-124.39 24.964-169.722 70.3-45.332 45.334-70.296 105.604-70.296 169.712s24.964 124.38 70.296 169.714c45.334 45.332 105.608 70.296 169.714 70.296 64.108 0 124.38-24.964 169.712-70.296l102.278-102.276 102.276 102.276c45.332 45.332 105.604 70.298 169.712 70.298 64.112 0 124.384-24.966 169.71-70.298 45.338-45.334 70.302-105.606 70.302-169.714 0-64.112-24.964-124.382-70.3-169.71-45.326-45.336-105.598-70.302-169.712-70.302zM681.72 345.712c27.322-27.31 63.64-42.354 102.268-42.352 38.634 0 74.958 15.044 102.276 42.362 27.316 27.322 42.364 63.644 42.364 102.278s-15.046 74.956-42.364 102.274c-27.32 27.318-63.64 42.364-102.276 42.364-38.632 0-74.956-15.044-102.278-42.364l-102.268-102.274 102.278-102.288zM240.012 592.638c-38.634 0-74.956-15.044-102.274-42.364-27.32-27.318-42.364-63.64-42.364-102.274 0-38.632 15.044-74.954 42.364-102.276 27.32-27.316 63.642-42.364 102.274-42.364 38.634 0 74.956 15.044 102.272 42.362l102.276 102.278-102.276 102.274c-27.318 27.32-63.64 42.366-102.272 42.364v0z" /> +<glyph unicode="" glyph-name="shuffle" d="M768 256h-101.49l-160 160 160 160h101.49v-160l224 224-224 224v-160h-128c-16.974 0-33.252-6.744-45.254-18.746l-178.746-178.744-178.746 178.746c-12 12-28.28 18.744-45.254 18.744h-192v-128h165.49l160-160-160-160h-165.49v-128h192c16.974 0 33.252 6.742 45.254 18.746l178.746 178.744 178.746-178.744c12.002-12.004 28.28-18.746 45.254-18.746h128v-160l224 224-224 224v-160z" /> +<glyph unicode="" glyph-name="arrow-up-left" d="M0 224l256 256 544-544 224 224-544 544 255.998 256h-735.998v-736z" /> +<glyph unicode="" glyph-name="arrow-up2" d="M512 928l-480-480h288v-512h384v512h288z" /> +<glyph unicode="" glyph-name="arrow-up-right" d="M288 960l256-256-544-544 224-224 544 544 256-255.998v735.998h-736z" /> +<glyph unicode="" glyph-name="arrow-right2" d="M992 448l-480 480v-288h-512v-384h512v-288z" /> +<glyph unicode="" glyph-name="arrow-down-right" d="M1024 672l-256-256-544 544-224-224 544-544-255.998-256h735.998v736z" /> +<glyph unicode="" glyph-name="arrow-down2" d="M512-32l480 480h-288v512h-384v-512h-288z" /> +<glyph unicode="" glyph-name="arrow-down-left" d="M736-64l-256 256 544 544-224 224-544-544-256 255.998v-735.998h736z" /> +<glyph unicode="" glyph-name="arrow-left2" d="M32 448l480-480v288h512v384h-512v288z" /> +<glyph unicode="" glyph-name="arrow-up-left2" d="M877.254 173.254l-530.744 530.746h229.49c35.346 0 64 28.654 64 64s-28.654 64-64 64h-384c-25.886 0-49.222-15.592-59.128-39.508-3.282-7.924-4.84-16.242-4.838-24.492h-0.034v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.49l530.746-530.744c12.496-12.498 28.876-18.746 45.254-18.746s32.758 6.248 45.254 18.746c24.994 24.992 24.994 65.516 0 90.508z" /> +<glyph unicode="" glyph-name="arrow-up22" d="M877.254 557.254l-320 320c-24.992 24.994-65.514 24.994-90.508 0l-320-320c-24.994-24.994-24.994-65.516 0-90.51 24.994-24.996 65.516-24.996 90.51 0l210.744 210.746v-613.49c0-35.346 28.654-64 64-64s64 28.654 64 64v613.49l210.746-210.746c12.496-12.496 28.876-18.744 45.254-18.744s32.758 6.248 45.254 18.746c24.994 24.994 24.994 65.514 0 90.508z" /> +<glyph unicode="" glyph-name="arrow-up-right2" d="M237.254 82.746l530.746 530.744v-229.49c0-35.346 28.654-64 64-64s64 28.654 64 64v384c0 25.884-15.594 49.222-39.508 59.126-7.924 3.284-16.242 4.84-24.492 4.838v0.036h-384c-35.346 0-64-28.654-64-64 0-35.348 28.654-64 64-64h229.49l-530.744-530.746c-12.498-12.496-18.746-28.876-18.746-45.254s6.248-32.758 18.746-45.254c24.992-24.994 65.516-24.994 90.508 0z" /> +<glyph unicode="" glyph-name="arrow-right22" d="M621.254 82.746l320 320c24.994 24.992 24.994 65.516 0 90.51l-320 320c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.516 0-90.51l210.746-210.746h-613.49c-35.346 0-64-28.654-64-64s28.654-64 64-64h613.49l-210.746-210.746c-12.496-12.496-18.744-28.876-18.744-45.254s6.248-32.758 18.744-45.254c24.994-24.994 65.516-24.994 90.51 0z" /> +<glyph unicode="" glyph-name="arrow-down-right2" d="M146.746 722.746l530.742-530.746h-229.488c-35.346 0-64-28.654-64-64s28.654-64 64-64h384c25.884 0 49.222 15.594 59.126 39.508 3.284 7.924 4.84 16.242 4.838 24.492h0.036v384c0 35.346-28.654 64-64 64-35.348 0-64-28.654-64-64v-229.49l-530.746 530.744c-12.496 12.498-28.874 18.746-45.254 18.746s-32.758-6.248-45.254-18.746c-24.994-24.992-24.994-65.516 0-90.508z" /> +<glyph unicode="" glyph-name="arrow-down22" d="M877.254 338.746l-320-320c-24.992-24.994-65.514-24.994-90.508 0l-320 320c-24.994 24.994-24.994 65.516 0 90.51 24.994 24.996 65.516 24.996 90.51 0l210.744-210.746v613.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-613.49l210.746 210.746c12.496 12.496 28.876 18.744 45.254 18.744s32.758-6.248 45.254-18.746c24.994-24.994 24.994-65.514 0-90.508z" /> +<glyph unicode="" glyph-name="arrow-down-left2" d="M786.744 813.256l-530.744-530.744v229.49c0 35.346-28.654 64-64 64s-64-28.654-64-64v-384.002c0-25.886 15.592-49.222 39.508-59.128 7.924-3.282 16.242-4.84 24.492-4.836v-0.036l384 0.002c35.344 0 64 28.654 64 63.998 0 35.348-28.656 64-64 64h-229.49l530.744 530.746c12.496 12.496 18.746 28.876 18.746 45.256 0 16.376-6.25 32.758-18.746 45.254-24.992 24.992-65.518 24.992-90.51 0v0z" /> +<glyph unicode="" glyph-name="arrow-left22" d="M402.746 82.746l-320 320c-24.994 24.992-24.994 65.516 0 90.51l320 320c24.994 24.992 65.516 24.992 90.51 0 24.994-24.994 24.994-65.516 0-90.51l-210.746-210.746h613.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-613.49l210.746-210.746c12.496-12.496 18.744-28.876 18.744-45.254s-6.248-32.758-18.744-45.254c-24.994-24.994-65.516-24.994-90.51 0z" /> +<glyph unicode="" glyph-name="circle-up" d="M0 448c0-282.77 229.23-512 512-512s512 229.23 512 512-229.23 512-512 512-512-229.23-512-512zM928 448c0-229.75-186.25-416-416-416s-416 186.25-416 416 186.25 416 416 416 416-186.25 416-416zM706.744 290.744l90.512 90.512-285.256 285.254-285.254-285.256 90.508-90.508 194.746 194.744z" /> +<glyph unicode="" glyph-name="circle-right" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM354.744 253.256l90.512-90.512 285.254 285.256-285.256 285.254-90.508-90.508 194.744-194.746z" /> +<glyph unicode="" glyph-name="circle-down" d="M1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512 229.23-512 512-512 512 229.23 512 512zM96 448c0 229.75 186.25 416 416 416s416-186.25 416-416-186.25-416-416-416-416 186.25-416 416zM317.256 605.256l-90.512-90.512 285.256-285.254 285.254 285.256-90.508 90.508-194.746-194.744z" /> +<glyph unicode="" glyph-name="circle-left" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM669.256 642.744l-90.512 90.512-285.254-285.256 285.256-285.254 90.508 90.508-194.744 194.746z" /> +<glyph unicode="" glyph-name="tab" d="M960 960h64v-512h-64v512zM0 448h64v-512h-64v512zM320 256h704v-128h-704v-160l-224 224 224 224v-160zM704 640h-704v128h704v160l224-224-224-224z" /> +<glyph unicode="" glyph-name="move-up" d="M704 448v-384h64v384h160l-192 192-192-192zM64 768h96v-64h-96v64zM192 768h96v-64h-96v64zM320 768h64v-96h-64v96zM64 544h64v-96h-64v96zM160 512h96v-64h-96v64zM288 512h96v-64h-96v64zM64 672h64v-96h-64v96zM320 640h64v-96h-64v96zM320 256v-192h-192v192h192zM384 320h-320v-320h320v320z" /> +<glyph unicode="" glyph-name="move-down" d="M768 256v384h-64v-384h-160l192-192 192 192zM320 704v-192h-192v192h192zM384 768h-320v-320h320v320zM64 320h96v-64h-96v64zM192 320h96v-64h-96v64zM320 320h64v-96h-64v96zM64 96h64v-96h-64v96zM160 64h96v-64h-96v64zM288 64h96v-64h-96v64zM64 224h64v-96h-64v96zM320 192h64v-96h-64v96z" /> +<glyph unicode="" glyph-name="sort-alpha-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM928-64h-256c-11.8 0-22.644 6.496-28.214 16.9-5.566 10.404-4.958 23.030 1.59 32.85l222.832 334.25h-196.208c-17.672 0-32 14.328-32 32s14.328 32 32 32h256c11.8 0 22.644-6.496 28.214-16.9 5.566-10.404 4.958-23.030-1.59-32.85l-222.83-334.25h196.206c17.672 0 32-14.328 32-32s-14.328-32-32-32zM1020.622 558.314l-192.002 384c-5.42 10.842-16.502 17.69-28.622 17.69-12.122 0-23.202-6.848-28.624-17.69l-191.996-384c-7.904-15.806-1.496-35.030 14.31-42.932 4.594-2.296 9.476-3.386 14.288-3.386 11.736 0 23.040 6.484 28.644 17.698l55.156 110.31h216.446l55.156-110.31c7.902-15.806 27.124-22.21 42.932-14.31 15.808 7.902 22.216 27.124 14.312 42.93zM723.778 704.004l76.22 152.446 76.224-152.446h-152.444z" /> +<glyph unicode="" glyph-name="sort-alpha-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM928 512h-256c-11.8 0-22.644 6.496-28.214 16.9-5.566 10.406-4.958 23.030 1.59 32.85l222.832 334.25h-196.208c-17.672 0-32 14.328-32 32s14.328 32 32 32h256c11.8 0 22.644-6.496 28.214-16.9 5.566-10.406 4.958-23.030-1.59-32.85l-222.83-334.25h196.206c17.672 0 32-14.328 32-32s-14.328-32-32-32zM1020.622-17.69l-192.002 384c-5.42 10.842-16.502 17.69-28.622 17.69-12.122 0-23.202-6.848-28.624-17.69l-191.996-384c-7.904-15.806-1.496-35.030 14.31-42.932 4.594-2.296 9.476-3.386 14.288-3.386 11.736 0 23.040 6.484 28.644 17.698l55.158 110.31h216.446l55.156-110.31c7.902-15.806 27.124-22.21 42.932-14.31 15.806 7.902 22.214 27.124 14.31 42.93zM723.778 128l76.22 152.446 76.226-152.446h-152.446z" /> +<glyph unicode="" glyph-name="sort-numeric-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM864 512c-17.674 0-32 14.328-32 32v352h-32c-17.674 0-32 14.328-32 32s14.326 32 32 32h64c17.674 0 32-14.328 32-32v-384c0-17.672-14.326-32-32-32zM928 384h-192c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h160v-128h-160c-17.674 0-32-14.326-32-32s14.326-32 32-32h192c17.674 0 32 14.326 32 32v384c0 17.674-14.326 32-32 32zM768 320h128v-128h-128v128z" /> +<glyph unicode="" glyph-name="sort-numberic-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM864-64c-17.674 0-32 14.328-32 32v352h-32c-17.674 0-32 14.328-32 32s14.326 32 32 32h64c17.674 0 32-14.328 32-32v-384c0-17.672-14.326-32-32-32zM928 960h-192c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h160v-128h-160c-17.674 0-32-14.326-32-32s14.326-32 32-32h192c17.674 0 32 14.326 32 32v384c0 17.674-14.326 32-32 32zM768 896h128v-128h-128v128z" /> +<glyph unicode="" glyph-name="sort-amount-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM448 384h576v-128h-576v128zM448 576h448v-128h-448v128zM448 768h320v-128h-320v128zM448 960h192v-128h-192v128z" /> +<glyph unicode="" glyph-name="sort-amount-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM448 960h576v-128h-576v128zM448 768h448v-128h-448v128zM448 576h320v-128h-320v128zM448 384h192v-128h-192v128z" /> +<glyph unicode="" glyph-name="command" d="M736 64c-88.224 0-160 71.776-160 160v96h-128v-96c0-88.224-71.776-160-160-160s-160 71.776-160 160 71.776 160 160 160h96v128h-96c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160v-96h128v96c0 88.224 71.776 160 160 160s160-71.776 160-160-71.776-160-160-160h-96v-128h96c88.224 0 160-71.776 160-160s-71.774-160-160-160zM640 320v-96c0-52.934 43.066-96 96-96s96 43.066 96 96-43.066 96-96 96h-96zM288 320c-52.934 0-96-43.066-96-96s43.066-96 96-96 96 43.066 96 96v96h-96zM448 384h128v128h-128v-128zM640 576h96c52.934 0 96 43.066 96 96s-43.066 96-96 96-96-43.066-96-96v-96zM288 768c-52.934 0-96-43.066-96-96s43.066-96 96-96h96v96c0 52.934-43.064 96-96 96z" /> +<glyph unicode="" glyph-name="shift" d="M672 64h-320c-17.672 0-32 14.326-32 32v352h-128c-12.942 0-24.612 7.796-29.564 19.754-4.954 11.958-2.214 25.722 6.936 34.874l320 320c12.498 12.496 32.758 12.496 45.254 0l320-320c9.152-9.152 11.89-22.916 6.938-34.874s-16.62-19.754-29.564-19.754h-128v-352c0-17.674-14.326-32-32-32zM384 128h256v352c0 17.672 14.326 32 32 32h82.744l-242.744 242.746-242.744-242.746h82.744c17.672 0 32-14.328 32-32v-352z" /> +<glyph unicode="" glyph-name="ctrl" d="M736.014 512c-8.908 0-17.77 3.698-24.096 10.928l-199.918 228.478-199.918-228.478c-11.636-13.3-31.856-14.65-45.154-3.010-13.3 11.638-14.648 31.854-3.010 45.154l224 256c6.076 6.944 14.854 10.928 24.082 10.928s18.006-3.984 24.082-10.928l224-256c11.638-13.3 10.292-33.516-3.010-45.154-6.070-5.312-13.582-7.918-21.058-7.918z" /> +<glyph unicode="" glyph-name="opt" d="M928 128h-256c-12.646 0-24.106 7.448-29.242 19.004l-247.554 556.996h-299.204c-17.672 0-32 14.328-32 32s14.328 32 32 32h320c12.646 0 24.106-7.448 29.242-19.004l247.556-556.996h235.202c17.674 0 32-14.326 32-32s-14.326-32-32-32zM928 704h-320c-17.674 0-32 14.328-32 32s14.326 32 32 32h320c17.674 0 32-14.328 32-32s-14.326-32-32-32z" /> +<glyph unicode="" glyph-name="checkbox-checked" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM448 165.49l-237.254 237.256 90.51 90.508 146.744-146.744 306.746 306.746 90.508-90.51-397.254-397.256z" /> +<glyph unicode="" glyph-name="checkbox-unchecked" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM896 64h-768v768h768v-768z" /> +<glyph unicode="" glyph-name="radio-checked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM320 448c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192z" /> +<glyph unicode="" glyph-name="radio-checked2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 320c-70.692 0-128 57.306-128 128 0 70.692 57.308 128 128 128 70.694 0 128-57.308 128-128 0-70.694-57.306-128-128-128z" /> +<glyph unicode="" glyph-name="radio-unchecked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" /> +<glyph unicode="" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" /> +<glyph unicode="" glyph-name="make-group" d="M320 832h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM704 576h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64zM704 768h128v-128h-128v128zM320 320h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM320 128h-128v128h128v-128zM832 320h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM896 448h-64c-85.476 0-165.834 33.286-226.274 93.724-60.44 60.442-93.726 140.802-93.726 226.276v64c0 70.4-57.6 128-128 128h-256c-70.4 0-128-57.6-128-128v-256c0-70.4 57.6-128 128-128h64c85.476 0 165.834-33.286 226.274-93.724 60.44-60.442 93.726-140.802 93.726-226.276v-64c0-70.4 57.6-128 128-128h256c70.4 0 128 57.6 128 128v256c0 70.4-57.6 128-128 128zM960 64c0-16.954-6.696-32.986-18.856-45.144-12.158-12.16-28.19-18.856-45.144-18.856h-256c-16.954 0-32.986 6.696-45.144 18.856-12.16 12.158-18.856 28.19-18.856 45.144v64c0 212.078-171.922 384-384 384h-64c-16.954 0-32.986 6.696-45.146 18.854-12.158 12.16-18.854 28.192-18.854 45.146v256c0 16.954 6.696 32.986 18.854 45.146 12.16 12.158 28.192 18.854 45.146 18.854h256c16.954 0 32.986-6.696 45.146-18.854 12.158-12.16 18.854-28.192 18.854-45.146v-64c0-212.078 171.922-384 384-384h64c16.954 0 32.986-6.696 45.144-18.856 12.16-12.158 18.856-28.19 18.856-45.144v-256z" /> +<glyph unicode="" glyph-name="ungroup" d="M384 496c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM704 496c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM384 176c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM704 176c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM912.082 800l111.918 111.916v48.084h-48.082l-111.918-111.916-111.918 111.916h-48.082v-48.084l111.918-111.916-111.918-111.916v-48.084h48.082l111.918 111.916 111.918-111.916h48.082v48.084zM0 192h64v-128h-64v128zM0 384h64v-128h-64v128zM832 512h64v-128h-64v128zM832 128h64v-128h-64v128zM832 320h64v-128h-64v128zM0 576h64v-128h-64v128zM0 768h64v-128h-64v128zM512 832h128v-64h-128v64zM320 832h128v-64h-128v64zM128 832h128v-64h-128v64zM448 0h128v-64h-128v64zM640 0h128v-64h-128v64zM256 0h128v-64h-128v64zM64 0h128v-64h-128v64z" /> +<glyph unicode="" glyph-name="scissors" d="M913.826 280.306c-66.684 104.204-181.078 150.064-255.51 102.434-6.428-4.116-12.334-8.804-17.744-13.982l-79.452 124.262 183.462 287.972c15.016 27.73 20.558 60.758 13.266 93.974-6.972 31.75-24.516 58.438-48.102 77.226l-12.278 7.808-217.468-340.114-217.47 340.114-12.276-7.806c-23.586-18.79-41.13-45.476-48.1-77.226-7.292-33.216-1.75-66.244 13.264-93.974l183.464-287.972-79.454-124.262c-5.41 5.178-11.316 9.868-17.744 13.982-74.432 47.63-188.826 1.77-255.51-102.434-66.68-104.2-60.398-227.286 14.032-274.914 74.43-47.632 188.824-1.77 255.508 102.432l164.286 257.87 164.288-257.872c66.684-104.202 181.078-150.064 255.508-102.432 74.428 47.63 80.71 170.716 14.030 274.914zM234.852 159.57c-30.018-46.904-68.534-69.726-94.572-75.446-0.004 0-0.004 0-0.004 0-8.49-1.868-20.294-3.010-28.324 2.128-8.898 5.694-14.804 20.748-15.8 40.276-1.616 31.644 9.642 68.836 30.888 102.034 30.014 46.906 68.53 69.726 94.562 75.444 8.496 1.866 20.308 3.010 28.336-2.126 8.898-5.694 14.802-20.75 15.798-40.272 1.618-31.65-9.64-68.84-30.884-102.038zM480 448c-17.672 0-32 14.328-32 32s14.328 32 32 32 32-14.328 32-32-14.328-32-32-32zM863.85 126.53c-0.996-19.528-6.902-34.582-15.8-40.276-8.030-5.138-19.834-3.996-28.324-2.128 0 0 0 0-0.004 0-26.040 5.718-64.554 28.542-94.572 75.446-21.244 33.198-32.502 70.388-30.884 102.038 0.996 19.522 6.9 34.578 15.798 40.272 8.028 5.136 19.84 3.992 28.336 2.126 26.034-5.716 64.548-28.538 94.562-75.444 21.246-33.198 32.502-70.39 30.888-102.034z" /> +<glyph unicode="" glyph-name="filter" d="M512 960c-282.77 0-512-71.634-512-160v-96l384-384v-320c0-35.346 57.306-64 128-64 70.692 0 128 28.654 128 64v320l384 384v96c0 88.366-229.23 160-512 160zM94.384 821.176c23.944 13.658 57.582 26.62 97.278 37.488 87.944 24.076 201.708 37.336 320.338 37.336 118.628 0 232.394-13.26 320.338-37.336 39.696-10.868 73.334-23.83 97.28-37.488 15.792-9.006 24.324-16.624 28.296-21.176-3.972-4.552-12.506-12.168-28.296-21.176-23.946-13.658-57.584-26.62-97.28-37.488-87.942-24.076-201.708-37.336-320.338-37.336s-232.394 13.26-320.338 37.336c-39.696 10.868-73.334 23.83-97.278 37.488-15.792 9.008-24.324 16.624-28.298 21.176 3.974 4.552 12.506 12.168 28.298 21.176z" /> +<glyph unicode="" glyph-name="font" d="M799.596 943.792c-90.526 0-148.62 16.208-241.848 16.208-301.284 0-441.792-171.584-441.792-345.872 0-102.678 48.64-136.458 144.564-136.458-6.758 14.864-18.914 31.080-18.914 104.034 0 204.010 77.006 263.458 175.636 267.51 0 0-80.918-793.374-315.778-888.542v-24.672h316.594l108.026 512h197.844l44.072 128h-214.908l51.944 246.19c59.446-12.156 117.542-24.316 167.532-24.316 62.148 0 118.894 18.914 149.968 162.126-37.826-12.16-78.362-16.208-122.94-16.208z" /> +<glyph unicode="" glyph-name="ligature" d="M768 88.178c0 0.040 0.002 0.076 0.002 0.116l-0.344 436.562-127.492-6.19h-251.93v21.494c0 81.542 5.8 162.976 17.24 194.716 7.896 21.948 22.598 41.744 43.698 58.836 20.618 16.702 41.178 25.17 61.11 25.17 16.772 0 30.702-2.878 41.402-8.554 15.026-8.562 29.716-22.964 43.67-42.818 36.95-52.504 51.99-66.454 60.094-72.376 13.804-10.094 30.512-15.212 49.658-15.212 18.668 0 34.962 6.97 48.436 20.714 13.372 13.636 20.15 30.682 20.15 50.666 0 21.452-8.916 44.204-26.502 67.622-17.184 22.888-43.708 41.742-78.834 56.032-34.322 13.964-72.94 21.044-114.778 21.044-60.716 0-116.012-14.596-164.356-43.384-48.424-28.834-85.558-68.952-110.37-119.24-22.994-46.604-21.334-134.706-22.732-214.712h-125.732v-71.402h125.598v-324.668c0-71.666-21.906-91.008-30.216-101.324-11.436-14.202-32.552-29.104-60.444-29.104h-38.654v-56.166h385.326v56.168h-6.708c-91.144 0-117.020 9.832-117.020 120.842 0 0.018 0 0.034 0 0.048l-0.038 334.206h140.204c74.404 0 91.496-3.444 95.392-4.924 4.706-1.79 10.798-4.832 13.084-9.144 0.868-1.684 5.194-25.008 5.194-82.972v-250.67c0-58.454-7.124-77.896-11.45-84.402-9.248-14.194-20.41-22.066-54.66-22.904v-56.248h293.61v55.846c-91.608 0-101.608 9.82-101.608 96.332z" /> +<glyph unicode="" glyph-name="ligature2" d="M855.328 42.546c-11.734 0-83.62 13.2-88.020 29.338-10.274 39.612-11.738 82.152-11.738 130.568v540.974c0 80.686 16.138 127.632 16.138 127.632-1.468 7.334-8.804 23.472-17.604 23.472h-4.404c-4.4 0-55.746-32.276-102.692-32.276-38.14 0.002-61.89 33.746-105.902 33.746-185.106 0-271.942-150.31-271.942-363.032v-11.072c0-4.402-2.934-8.804-7.336-8.804h-60.148c-7.336 0-22.006-41.078-22.006-60.148 0-5.87 1.466-8.8 4.4-8.8h77.754c4.402 0 7.336-5.872 7.336-10.27 0-130.566-1.466-259.298-1.466-259.298 0-20.54-1.466-66.016-10.27-102.692-4.4-16.138-71.884-29.338-89.488-29.338-7.334 0-7.334-35.212 0-42.546 60.148 2.934 99.758 7.334 159.908 7.334 55.75 0 98.292-4.4 156.974-7.334 2.934 8.802 2.934 42.546-4.4 42.546-11.736 0-83.624 13.2-88.022 29.338-10.27 39.612-10.27 82.152-11.738 130.568v232.888c0 4.402 4.402 8.804 8.802 8.804h151.104c10.27 20.538 17.606 45.476 17.606 58.68 0 8.802 0 10.27-7.336 10.27h-162.84c-2.934 0-7.336 4.402-7.336 7.334v52.82c0 130.568 53.482 245.538 142.97 245.538 63.372 0 118.666-41.060 118.666-197.922 0-0.006 0-0.012 0-0.018 0.208-4.036 0.314-7.294 0.314-9.452v-436.816c0-20.54-1.47-66.016-10.27-102.692-4.404-16.138-71.884-29.338-89.492-29.338-7.336 0-7.336-35.212 0-42.546 60.15 2.934 99.762 7.334 159.912 7.334 55.746 0 98.288-4.4 156.972-7.334 2.928 8.8 2.928 42.544-4.406 42.544z" /> +<glyph unicode="" glyph-name="text-height" d="M896 192h128l-160-192-160 192h128v512h-128l160 192 160-192h-128zM640 896v-256l-64 128h-192v-704h128v-64h-384v64h128v704h-192l-64-128v256z" /> +<glyph unicode="" glyph-name="text-width" d="M256 64v-128l-192 160 192 160v-128h512v128l192-160-192-160v128zM832 896v-256l-64 128h-192v-448h128v-64h-384v64h128v448h-192l-64-128v256z" /> +<glyph unicode="" glyph-name="font-size" d="M64 448h384v-128h-128v-384h-128v384h-128zM960 704h-251.75v-768h-136.5v768h-251.75v128h640z" /> +<glyph unicode="" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" /> +<glyph unicode="" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" /> +<glyph unicode="" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" /> +<glyph unicode="" glyph-name="strikethrough" d="M1024 448v-64h-234.506c27.504-38.51 42.506-82.692 42.506-128 0-70.878-36.66-139.026-100.58-186.964-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128h-512v64h299.518c-2.338 1.654-4.656 3.324-6.938 5.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 78.978 0 154.054-22.678 212.482-64h299.518z" /> +<glyph unicode="" glyph-name="omega" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" /> +<glyph unicode="" glyph-name="sigma" d="M941.606 225.292l44.394 94.708h38l-64-384h-960v74.242l331.546 391.212-331.546 331.546v227h980l44-256h-34.376l-18.72 38.88c-35.318 73.364-61.904 89.12-138.904 89.12h-662l353.056-353.056-297.42-350.944h542.364c116.008 0 146.648 41.578 173.606 97.292z" /> +<glyph unicode="" glyph-name="page-break" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" /> +<glyph unicode="" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> +<glyph unicode="" glyph-name="superscript2" d="M194.018 128l57.6 192h264.764l57.6-192h113.632l-192 640h-223.232l-192-640h113.636zM347.618 640h72.764l57.6-192h-187.964l57.6 192zM704 128l160 256 160-256h-320zM864 832h-64c-17.644 0-32 14.356-32 32s14.356 32 32 32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32h-128c-52.936 0-96-43.066-96-96 0-24.568 9.288-47.002 24.524-64 17.588-19.624 43.11-32 71.476-32h64c17.644 0 32-14.356 32-32s-14.356-32-32-32h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c52.936 0 96 43.066 96 96 0 24.568-9.288 47.002-24.524 64-17.588 19.624-43.108 32-71.476 32z" /> +<glyph unicode="" glyph-name="subscript2" d="M194.018 128l57.6 192h264.764l57.6-192h113.632l-192 640h-223.232l-192-640h113.636zM347.618 640h72.764l57.6-192h-187.964l57.6 192zM1024 768l-160-256-160 256h320zM864 128h-64c-17.644 0-32 14.356-32 32s14.356 32 32 32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32h-128c-52.936 0-96-43.066-96-96 0-24.568 9.29-47.002 24.524-64 17.588-19.624 43.112-32 71.476-32h64c17.644 0 32-14.356 32-32s-14.356-32-32-32h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c52.936 0 96 43.066 96 96 0 24.568-9.29 47.002-24.524 64-17.588 19.624-43.108 32-71.476 32z" /> +<glyph unicode="" glyph-name="text-color" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" /> +<glyph unicode="" glyph-name="pagebreak" d="M256 576v384h768v-384h-64v320h-640v-320zM1024 384v-448h-768v448h64v-384h640v384zM512 512h128v-64h-128zM320 512h128v-64h-128zM704 512h128v-64h-128zM896 512h128v-64h-128zM0 672l192-192-192-192z" /> +<glyph unicode="" glyph-name="clear-formatting" d="M0 64h576v-128h-576zM896 832h-302.56l-183.764-704h-132.288l183.762 704h-269.15v128h704zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" /> +<glyph unicode="" glyph-name="table" d="M0 768v-704h1024v704h-1024zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-256v128h256zM64 448h256v-128h-256v128zM704 448h256v-128h-256v128zM704 512v128h256v-128h-256zM64 256h256v-128h-256v128zM704 128v128h256v-128h-256z" /> +<glyph unicode="" glyph-name="table2" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> +<glyph unicode="" glyph-name="insert-template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" /> +<glyph unicode="" glyph-name="pilcrow" d="M384 960h512v-128h-128v-896h-128v896h-128v-896h-128v512c-141.384 0-256 114.616-256 256s114.616 256 256 256z" /> +<glyph unicode="" glyph-name="ltr" d="M512 960c-141.384 0-256-114.616-256-256s114.616-256 256-256v-512h128v896h128v-896h128v896h128v128h-512zM0 256l256 256-256 256z" /> +<glyph unicode="" glyph-name="rtl" d="M256 960c-141.384 0-256-114.616-256-256s114.616-256 256-256v-512h128v896h128v-896h128v896h128v128h-512zM1024 768l-256-256 256-256z" /> +<glyph unicode="" glyph-name="section" d="M495.964-64c-49.36 0-91.116 14.406-124.104 42.82-33.224 28.614-50.068 62.038-50.068 99.344 0 18.128 6.6 33.756 19.622 46.458 13.232 12.914 29.782 19.744 47.85 19.744 18.002 0 34.194-6.41 46.826-18.542 12.472-11.972 18.796-27.824 18.796-47.104 0-11.318-1.85-23.818-5.494-37.146-3.616-13.178-4.376-19.938-4.376-23.292 0-3.682 0.924-8.076 7.774-12.756 12.76-8.824 28.066-13.084 46.876-13.084 22.576 0 42.718 7.858 61.574 24.022 18.578 15.942 27.612 32.318 27.612 50.056 0 19.736-5.27 36.826-16.12 52.242-18.336 25.758-52.878 55.954-102.612 89.668-79.858 53.454-133.070 99.766-162.58 141.52-22.89 32.684-34.476 67.89-34.476 104.704 0 37.062 12.142 73.948 36.092 109.63 20.508 30.554 50.8 58.12 90.228 82.138-21.096 22.7-36.896 44.064-47.094 63.688-12.872 24.76-19.398 50.372-19.398 76.122 0 47.814 18.91 89.16 56.206 122.89 37.32 33.76 83.86 50.878 138.322 50.878 50.086 0 92.206-14.082 125.182-41.852 33.328-28.082 50.222-60.898 50.222-97.54 0-18.656-6.986-35.364-20.766-49.66l-0.276-0.282c-7.976-7.924-22.618-17.37-47.046-17.37-19.148 0-35.934 6.272-48.54 18.136-12.558 11.794-18.93 25.918-18.93 41.966 0 6.934 1.702 17.416 5.352 32.98 1.778 7.364 2.668 14.142 2.668 20.25 0 10.338-3.726 18.272-11.724 24.966-8.282 6.93-20.108 10.302-36.142 10.302-24.868 0-45.282-7.562-62.41-23.118-17.19-15.606-25.544-34.088-25.544-56.508 0-20.156 4.568-36.762 13.58-49.362 17.112-23.938 46.796-49.79 88.22-76.836 84.17-54.588 142.902-104.672 174.518-148.826 23.35-33.12 35.152-68.34 35.152-104.792 0-36.598-11.882-73.496-35.318-109.676-20.208-31.18-50.722-59.276-90.884-83.71 22.178-23.466 37.812-44.042 47.554-62.538 12.082-22.97 18.208-48.048 18.208-74.542 0-49.664-18.926-91.862-56.244-125.422-37.34-33.554-83.866-50.566-138.288-50.566zM446.416 603.654c-48.222-28.952-71.712-62.19-71.712-101.314 0-22.756 6.498-43.13 19.86-62.278 19.936-27.926 59.27-62.054 116.804-101.288 24.358-16.586 46.36-32.712 65.592-48.060 49.060 29.504 72.956 62.366 72.956 100.178 0 20.598-8.142 42.774-24.204 65.916-16.808 24.196-52.85 55.796-107.128 93.914-28.328 19.562-52.558 37.334-72.168 52.932z" /> +<glyph unicode="" glyph-name="paragraph-left" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="paragraph-center" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="paragraph-right" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="paragraph-justify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" /> +<glyph unicode="" glyph-name="indent-increase" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" /> +<glyph unicode="" glyph-name="indent-decrease" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" /> +<glyph unicode="" glyph-name="share" d="M256 320c0 0 58.824 192 384 192v-192l384 256-384 256v-192c-256 0-384-159.672-384-320zM704 192h-576v384h125.876c10.094 11.918 20.912 23.334 32.488 34.18 43.964 41.19 96.562 72.652 156.114 93.82h-442.478v-640h832v268.624l-128-85.334v-55.29z" /> +<glyph unicode="" glyph-name="new-tab" d="M192 896v-768h768v768h-768zM896 192h-640v640h640v-640zM128 64v672l-64 64v-800h800l-64 64h-672zM352 704l160-160-192-192 96-96 192 192 160-160v416z" /> +<glyph unicode="" glyph-name="embed" d="M576 224l96-96 320 320-320 320-96-96 224-224zM448 672l-96 96-320-320 320-320 96 96-224 224z" /> +<glyph unicode="" glyph-name="embed2" horiz-adv-x="1280" d="M832 224l96-96 320 320-320 320-96-96 224-224zM448 672l-96 96-320-320 320-320 96 96-224 224zM701.298 809.481l69.468-18.944-191.987-704.026-69.468 18.944 191.987 704.026z" /> +<glyph unicode="" glyph-name="terminal" d="M0 896v-896h1024v896h-1024zM960 64h-896v768h896v-768zM896 768h-768v-640h768v640zM448 448h-64v-64h-64v-64h-64v64h64v64h64v64h-64v64h-64v64h64v-64h64v-64h64v-64zM704 320h-192v64h192v-64z" /> +<glyph unicode="" glyph-name="share2" d="M864 256c-45.16 0-85.92-18.738-115.012-48.83l-431.004 215.502c1.314 8.252 2.016 16.706 2.016 25.328s-0.702 17.076-2.016 25.326l431.004 215.502c29.092-30.090 69.852-48.828 115.012-48.828 88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160c0-8.622 0.704-17.076 2.016-25.326l-431.004-215.504c-29.092 30.090-69.852 48.83-115.012 48.83-88.366 0-160-71.636-160-160 0-88.368 71.634-160 160-160 45.16 0 85.92 18.738 115.012 48.828l431.004-215.502c-1.312-8.25-2.016-16.704-2.016-25.326 0-88.368 71.634-160 160-160s160 71.632 160 160c0 88.364-71.634 160-160 160z" /> +<glyph unicode="" glyph-name="mail" d="M853.31 960h-682.62c-93.88 0-170.69-76.784-170.69-170.658v-682.656c0-93.876 76.81-170.686 170.69-170.686h682.622c93.938 0 170.688 76.81 170.688 170.686v682.656c0 93.874-76.75 170.658-170.69 170.658zM256 704h512c9.138 0 18.004-1.962 26.144-5.662l-282.144-329.168-282.144 329.17c8.14 3.696 17.006 5.66 26.144 5.66zM192 256v384c0 1.34 0.056 2.672 0.14 4l187.664-218.94-185.598-185.6c-1.444 5.338-2.206 10.886-2.206 16.54zM768 192h-512c-5.654 0-11.202 0.762-16.54 2.206l182.118 182.118 90.422-105.496 90.424 105.494 182.116-182.118c-5.34-1.442-10.886-2.204-16.54-2.204zM832 256c0-5.654-0.762-11.2-2.206-16.54l-185.598 185.598 187.664 218.942c0.084-1.328 0.14-2.66 0.14-4v-384z" /> +<glyph unicode="" glyph-name="mail2" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.622c0-93.938 76.812-170.688 170.686-170.688h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM853.342 832c7.988 0 15.546-2.334 22.020-6.342l-363.362-300.404-363.354 300.4c6.478 4.010 14.044 6.346 22.040 6.346h682.656zM170.686 64c-1.924 0-3.82 0.146-5.684 0.408l225.626 312.966-29.256 29.254-233.372-233.37v611.138l384-464.396 384 464.394v-611.136l-233.372 233.37-29.254-29.254 225.628-312.968c-1.858-0.26-3.746-0.406-5.662-0.406h-682.654z" /> +<glyph unicode="" glyph-name="mail3" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.622c0-93.938 76.812-170.688 170.686-170.688h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM182.628 73.374l-77.256 77.254 256 256 29.256-29.254-208-304zM153.372 761.372l29.256 29.256 329.372-265.374 329.374 265.374 29.254-29.256-358.628-422.626-358.628 422.626zM841.374 73.374l-208 304 29.254 29.254 256-256-77.254-77.254z" /> +<glyph unicode="" glyph-name="mail4" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM256 704h512c9.138 0 18.004-1.962 26.144-5.662l-282.144-329.168-282.144 329.17c8.14 3.696 17.006 5.66 26.144 5.66zM192 256v384c0 1.34 0.056 2.672 0.14 4l187.664-218.942-185.598-185.598c-1.444 5.336-2.206 10.886-2.206 16.54zM768 192h-512c-5.654 0-11.202 0.762-16.54 2.208l182.118 182.118 90.422-105.498 90.424 105.494 182.116-182.12c-5.34-1.44-10.886-2.202-16.54-2.202zM832 256c0-5.654-0.762-11.2-2.206-16.54l-185.6 185.598 187.666 218.942c0.084-1.328 0.14-2.66 0.14-4v-384z" /> +<glyph unicode="" glyph-name="amazon" d="M925.6 74.8c-112.2-82.8-274.6-126.8-414.6-126.8-196.2 0-372.8 72.4-506.4 193.2-10.4 9.4-1.2 22.4 11.4 15 144.2-84 322.6-134.4 506.8-134.4 124.2 0 260.8 25.8 386.6 79.2 18.8 8 34.8-12.6 16.2-26.2zM972.2 128c-14.4 18.4-94.8 8.8-131 4.4-11-1.2-12.6 8.2-2.8 15.2 64.2 45 169.4 32 181.6 17 12.4-15.2-3.2-120.6-63.4-171-9.2-7.8-18-3.6-14 6.6 13.8 33.8 44 109.4 29.6 127.8zM707.4 202.4l0.2-0.2c24.8 21.8 69.4 60.8 94.6 81.8 10 8 8.2 21.4 0.4 32.6-22.6 31.2-46.6 56.6-46.6 114.2v192c0 81.4 5.6 156-54.2 212-47.2 45.2-125.6 61.2-185.6 61.2-117.2 0-248-43.8-275.4-188.6-3-15.4 8.4-23.6 18.4-25.8l119.4-13c11.2 0.6 19.2 11.6 21.4 22.8 10.2 49.8 52 74 99 74 25.4 0 54.2-9.2 69.2-32 17.2-25.4 15-60 15-89.4v-16c-71.4-8-164.8-13.2-231.6-42.6-77.2-33.4-131.4-101.4-131.4-201.4 0-128 80.6-192 184.4-192 87.6 0 135.4 20.6 203 89.8 22.4-32.4 29.6-48.2 70.6-82.2 9.4-5 21-4.6 29.2 2.8zM583.2 502.8c0-48 1.2-88-23-130.6-19.6-34.8-50.6-56-85.2-56-47.2 0-74.8 36-74.8 89.2 0 105 94.2 124 183.2 124v-26.6z" /> +<glyph unicode="" glyph-name="google" d="M522.2 521.2v-175.6h290.4c-11.8-75.4-87.8-220.8-290.4-220.8-174.8 0-317.4 144.8-317.4 323.2s142.6 323.2 317.4 323.2c99.4 0 166-42.4 204-79l139 133.8c-89.2 83.6-204.8 134-343 134-283 0-512-229-512-512s229-512 512-512c295.4 0 491.6 207.8 491.6 500.2 0 33.6-3.6 59.2-8 84.8l-483.6 0.2z" /> +<glyph unicode="" glyph-name="google2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM519.6 64c-212.2 0-384 171.8-384 384s171.8 384 384 384c103.6 0 190.4-37.8 257.2-100.4l-104.2-100.4c-28.6 27.4-78.4 59.2-153 59.2-131.2 0-238-108.6-238-242.4s107-242.4 238-242.4c152 0 209 109.2 217.8 165.6h-217.8v131.6h362.6c3.2-19.2 6-38.4 6-63.6 0.2-219.4-146.8-375.2-368.6-375.2z" /> +<glyph unicode="" glyph-name="google3" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM519.6 64c-212.2 0-384 171.8-384 384s171.8 384 384 384c103.6 0 190.4-37.8 257.2-100.4l-104.2-100.4c-28.6 27.4-78.4 59.2-153 59.2-131.2 0-238-108.6-238-242.4s107-242.4 238-242.4c152 0 209 109.2 217.8 165.6h-217.8v131.6h362.6c3.2-19.2 6-38.4 6-63.6 0.2-219.4-146.8-375.2-368.6-375.2z" /> +<glyph unicode="" glyph-name="google-plus" d="M325.8 502.6v-111.8h184.8c-7.4-48-55.8-140.6-184.8-140.6-111.2 0-202 92.2-202 205.8s90.8 205.8 202 205.8c63.4 0 105.6-27 129.8-50.2l88.4 85.2c-56.8 53-130.4 85.2-218.2 85.2-180.2-0.2-325.8-145.8-325.8-326s145.6-325.8 325.8-325.8c188 0 312.8 132.2 312.8 318.4 0 21.4-2.4 37.8-5.2 54h-307.6zM1024 512h-96v96h-96v-96h-96v-96h96v-96h96v96h96z" /> +<glyph unicode="" glyph-name="google-plus2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 192c-141.6 0-256 114.4-256 256s114.4 256 256 256c69.2 0 127-25.2 171.6-67l-69.6-66.8c-19 18.2-52.2 39.4-102 39.4-87.4 0-158.8-72.4-158.8-161.6s71.4-161.6 158.8-161.6c101.4 0 139.4 72.8 145.2 110.4h-145.2v87.8h241.8c2.2-12.8 4-25.6 4-42.4 0-146.4-98-250.2-245.8-250.2zM896 448h-64v-64h-64v64h-64v64h64v64h64v-64h64v-64z" /> +<glyph unicode="" glyph-name="google-plus3" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM384 192c-141.6 0-256 114.4-256 256s114.4 256 256 256c69.2 0 127-25.2 171.6-67l-69.6-66.8c-19 18.2-52.2 39.4-102 39.4-87.4 0-158.8-72.4-158.8-161.6s71.4-161.6 158.8-161.6c101.4 0 139.4 72.8 145.2 110.4h-145.2v87.8h241.8c2.2-12.8 4-25.6 4-42.4 0-146.4-98-250.2-245.8-250.2zM832 448v-64h-64v64h-64v64h64v64h64v-64h64v-64h-64z" /> +<glyph unicode="" glyph-name="hangouts" d="M511.8 960c-244.2 0-442.2-198-442.2-442.2 0-231.4 210.8-419 442.2-419v-162.8c268.6 136.2 442.6 355.6 442.6 581.8 0 244.2-198.4 442.2-442.6 442.2zM448 448c0-53-28.6-96-64-96v96h-128v192h192v-192zM768 448c0-53-28.6-96-64-96v96h-128v192h192v-192z" /> +<glyph unicode="" glyph-name="google-drive" d="M438 320l-184.6-320h580.6l184.6 320zM992.4 384l-295.6 512h-369.6l295.6-512zM290.2 832l-290.2-502.8 184.8-320 290.2 502.8z" /> +<glyph unicode="" glyph-name="facebook2" d="M608 768h160v192h-160c-123.514 0-224-100.486-224-224v-96h-128v-192h128v-512h192v512h160l32 192h-192v96c0 17.346 14.654 32 32 32z" /> +<glyph unicode="" glyph-name="facebook22" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h416v448h-128v128h128v64c0 105.8 86.2 192 192 192h128v-128h-128c-35.2 0-64-28.8-64-64v-64h192l-32-128h-160v-448h288c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96z" /> +<glyph unicode="" glyph-name="instagram" d="M512 867.8c136.8 0 153-0.6 206.8-3 50-2.2 77-10.6 95-17.6 23.8-9.2 41-20.4 58.8-38.2 18-18 29-35 38.4-58.8 7-18 15.4-45.2 17.6-95 2.4-54 3-70.2 3-206.8s-0.6-153-3-206.8c-2.2-50-10.6-77-17.6-95-9.2-23.8-20.4-41-38.2-58.8-18-18-35-29-58.8-38.4-18-7-45.2-15.4-95-17.6-54-2.4-70.2-3-206.8-3s-153 0.6-206.8 3c-50 2.2-77 10.6-95 17.6-23.8 9.2-41 20.4-58.8 38.2-18 18-29 35-38.4 58.8-7 18-15.4 45.2-17.6 95-2.4 54-3 70.2-3 206.8s0.6 153 3 206.8c2.2 50 10.6 77 17.6 95 9.2 23.8 20.4 41 38.2 58.8 18 18 35 29 58.8 38.4 18 7 45.2 15.4 95 17.6 53.8 2.4 70 3 206.8 3zM512 960c-139 0-156.4-0.6-211-3-54.4-2.4-91.8-11.2-124.2-23.8-33.8-13.2-62.4-30.6-90.8-59.2-28.6-28.4-46-57-59.2-90.6-12.6-32.6-21.4-69.8-23.8-124.2-2.4-54.8-3-72.2-3-211.2s0.6-156.4 3-211c2.4-54.4 11.2-91.8 23.8-124.2 13.2-33.8 30.6-62.4 59.2-90.8 28.4-28.4 57-46 90.6-59 32.6-12.6 69.8-21.4 124.2-23.8 54.6-2.4 72-3 211-3s156.4 0.6 211 3c54.4 2.4 91.8 11.2 124.2 23.8 33.6 13 62.2 30.6 90.6 59s46 57 59 90.6c12.6 32.6 21.4 69.8 23.8 124.2 2.4 54.6 3 72 3 211s-0.6 156.4-3 211c-2.4 54.4-11.2 91.8-23.8 124.2-12.6 34-30 62.6-58.6 91-28.4 28.4-57 46-90.6 59-32.6 12.6-69.8 21.4-124.2 23.8-54.8 2.6-72.2 3.2-211.2 3.2v0zM512 711c-145.2 0-263-117.8-263-263s117.8-263 263-263 263 117.8 263 263c0 145.2-117.8 263-263 263zM512 277.4c-94.2 0-170.6 76.4-170.6 170.6s76.4 170.6 170.6 170.6c94.2 0 170.6-76.4 170.6-170.6s-76.4-170.6-170.6-170.6zM846.8 721.4c0-33.91-27.49-61.4-61.4-61.4s-61.4 27.49-61.4 61.4c0 33.91 27.49 61.4 61.4 61.4s61.4-27.49 61.4-61.4z" /> +<glyph unicode="" glyph-name="whatsapp" d="M873 811.2c-95.8 96-223.2 148.8-359 148.8-279.6 0-507.2-227.6-507.2-507.4 0-89.4 23.4-176.8 67.8-253.6l-72-263 269 70.6c74.2-40.4 157.6-61.8 242.4-61.8h0.2c0 0 0 0 0 0 279.6 0 507.4 227.6 507.4 507.4 0 135.6-52.8 263-148.6 359zM514.2 30.4v0c-75.8 0-150 20.4-214.8 58.8l-15.4 9.2-159.6-41.8 42.6 155.6-10 16c-42.4 67-64.6 144.6-64.6 224.4 0 232.6 189.2 421.8 422 421.8 112.6 0 218.6-44 298.2-123.6 79.6-79.8 123.4-185.6 123.4-298.4-0.2-232.8-189.4-422-421.8-422zM745.4 346.4c-12.6 6.4-75 37-86.6 41.2s-20 6.4-28.6-6.4c-8.4-12.6-32.8-41.2-40.2-49.8-7.4-8.4-14.8-9.6-27.4-3.2s-53.6 19.8-102 63c-37.6 33.6-63.2 75.2-70.6 87.8s-0.8 19.6 5.6 25.8c5.8 5.6 12.6 14.8 19 22.2s8.4 12.6 12.6 21.2c4.2 8.4 2.2 15.8-1 22.2s-28.6 68.8-39 94.2c-10.2 24.8-20.8 21.4-28.6 21.8-7.4 0.4-15.8 0.4-24.2 0.4s-22.2-3.2-33.8-15.8c-11.6-12.6-44.4-43.4-44.4-105.8s45.4-122.6 51.8-131.2c6.4-8.4 89.4-136.6 216.6-191.4 30.2-13 53.8-20.8 72.2-26.8 30.4-9.6 58-8.2 79.8-5 24.4 3.6 75 30.6 85.6 60.2s10.6 55 7.4 60.2c-3 5.6-11.4 8.8-24.2 15.2z" /> +<glyph unicode="" glyph-name="spotify" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-227.8 512-512 512zM747.6 220.2c-10.2-15.4-28.2-20.4-43.6-10.2-120.4 74.2-271.4 89.6-450.6 48.6-18-5.2-33.2 7.6-38.4 23-5.2 18 7.6 33.2 23 38.4 194.6 43.6 363.6 25.6 496.6-56.4 18-7.6 20.6-28 13-43.4zM809 361c-12.8-18-35.8-25.6-53.8-12.8-138.2 84.4-348.2 110-509.4 58.8-20.4-5.2-43.6 5.2-48.6 25.6-5.2 20.4 5.2 43.6 25.6 48.6 186.8 56.4 417.2 28.2 576-69.2 15.2-7.6 23-33.2 10.2-51zM814 504.4c-163.8 97.2-437.8 107.6-594 58.8-25.6-7.6-51.2 7.6-58.8 30.8-7.6 25.6 7.6 51.2 30.8 58.8 181.8 53.8 481.2 43.6 670.8-69.2 23-12.8 30.8-43.6 18-66.6-13-17.8-43.6-25.4-66.8-12.6z" /> +<glyph unicode="" glyph-name="telegram" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM763.6 609l-84-395.8c-5.8-28.2-22.8-34.8-46.4-21.8l-128 94.6-61.4-59.8c-7.2-7-12.8-12.8-25.6-12.8-16.6 0-13.8 6.2-19.4 22l-43.6 143.2-126.6 39.4c-27.4 8.4-27.6 27.2 6.2 40.6l493.2 190.4c22.4 10.2 44.2-5.4 35.6-40z" /> +<glyph unicode="" glyph-name="twitter2" d="M1024 733.6c-37.6-16.8-78.2-28-120.6-33 43.4 26 76.6 67.2 92.4 116.2-40.6-24-85.6-41.6-133.4-51-38.4 40.8-93 66.2-153.4 66.2-116 0-210-94-210-210 0-16.4 1.8-32.4 5.4-47.8-174.6 8.8-329.4 92.4-433 219.6-18-31-28.4-67.2-28.4-105.6 0-72.8 37-137.2 93.4-174.8-34.4 1-66.8 10.6-95.2 26.2 0-0.8 0-1.8 0-2.6 0-101.8 72.4-186.8 168.6-206-17.6-4.8-36.2-7.4-55.4-7.4-13.6 0-26.6 1.4-39.6 3.8 26.8-83.4 104.4-144.2 196.2-146-72-56.4-162.4-90-261-90-17 0-33.6 1-50.2 3 93.2-59.8 203.6-94.4 322.2-94.4 386.4 0 597.8 320.2 597.8 597.8 0 9.2-0.2 18.2-0.6 27.2 41 29.4 76.6 66.4 104.8 108.6z" /> +<glyph unicode="" glyph-name="vine" d="M960.8 451c-26.4-6-51.8-8.8-74.8-8.8-129.2 0-228.6 90.2-228.6 247.2 0 77 29.8 116.8 71.8 116.8 40 0 66.6-35.8 66.6-108.6 0-41.4-11-86.8-19.2-113.6 0 0 39.8-69.4 148.6-48.2 23.2 51.4 35.6 117.8 35.6 176 0 156.8-80 248.2-226.6 248.2-150.8 0-239-115.8-239-268.6 0-151.4 70.8-281.2 187.4-340.4-49-98.2-111.4-184.6-176.6-249.8-118 142.8-224.8 333.2-268.6 705h-174.2c80.6-619.2 320.4-816.4 384-854.2 35.8-21.6 66.8-20.6 99.6-2 51.6 29.2 206.2 184 292 365 36 0 79.2 4.2 122.2 14v122z" /> +<glyph unicode="" glyph-name="vk" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM829.4 243.2l-93.6-1.4c0 0-20.2-4-46.6 14.2-35 24-68 86.6-93.8 78.4-26-8.2-25.2-64.4-25.2-64.4s0.2-12-5.8-18.4c-6.4-7-19.2-8.4-19.2-8.4h-41.8c0 0-92.4-5.6-173.8 79.2-88.8 92.4-167.2 275.8-167.2 275.8s-4.6 12 0.4 17.8c5.6 6.6 20.6 7 20.6 7l100.2 0.6c0 0 9.4-1.6 16.2-6.6 5.6-4 8.6-11.8 8.6-11.8s16.2-41 37.6-78c41.8-72.2 61.4-88 75.6-80.4 20.6 11.2 14.4 102.2 14.4 102.2s0.4 33-10.4 47.6c-8.4 11.4-24.2 14.8-31 15.6-5.6 0.8 3.6 13.8 15.6 19.8 18 8.8 49.8 9.4 87.4 9 29.2-0.2 37.8-2.2 49.2-4.8 34.6-8.4 22.8-40.6 22.8-117.8 0-24.8-4.4-59.6 13.4-71 7.6-5 26.4-0.8 73.4 79 22.2 37.8 39 82.2 39 82.2s3.6 8 9.2 11.4c5.8 3.4 13.6 2.4 13.6 2.4l105.4 0.6c0 0 31.6 3.8 36.8-10.6 5.4-15-11.8-50-54.8-107.4-70.6-94.2-78.6-85.4-19.8-139.8 56-52 67.6-77.4 69.6-80.6 22.8-38.4-26-41.4-26-41.4z" /> +<glyph unicode="" glyph-name="renren" d="M425.2 949.4c-241.2-40.6-425.2-250.4-425.2-503.2 0-125.6 45.6-240.6 120.8-329.6 178.6 86.4 303.6 282 304.4 509.8v323zM598.8 949.4c241.2-40.6 425.2-250.4 425.2-503.2 0-125.6-45.6-240.6-120.8-329.6-178.6 86.4-303.6 282-304.4 509.8v323zM510.2 317.4c-31.8-131.6-126.8-244-245-318.8 72.8-39.8 156.2-62.6 245-62.6s172.2 22.8 245 62.6c-118.2 74.8-213.2 187.2-245 318.8z" /> +<glyph unicode="" glyph-name="sina-weibo" d="M430.2 62c-169.6-16.8-316 60-327 171.2-11 111.4 117.6 215 287 231.8 169.6 16.8 316-60 326.8-171.2 11.2-111.4-117.4-215.2-286.8-231.8zM769.2 431.4c-14.4 4.4-24.4 7.2-16.8 26.2 16.4 41.2 18 76.6 0.2 102-33.2 47.4-124.2 45-228.4 1.2 0 0-32.8-14.2-24.4 11.6 16 51.6 13.6 94.6-11.4 119.6-56.6 56.6-207-2.2-336-131.2-96.4-96.2-152.4-198.8-152.4-287.4 0-169.2 217.2-272.2 429.6-272.2 278.4 0 463.8 161.8 463.8 290.2 0 77.8-65.4 121.8-124.2 140zM954.2 741.4c-67.2 74.6-166.4 103-258 83.6v0c-21.2-4.6-34.6-25.4-30-46.4 4.6-21.2 25.2-34.6 46.4-30 65.2 13.8 135.6-6.4 183.4-59.4s60.8-125.2 40.2-188.4v0c-6.6-20.6 4.6-42.6 25.2-49.4 20.6-6.6 42.6 4.6 49.4 25.2v0.2c28.8 88.4 10.6 190-56.6 264.6zM850.8 648c-32.8 36.4-81.2 50.2-125.6 40.6-18.2-3.8-29.8-22-26-40.2 4-18.2 22-29.8 40-25.8v0c21.8 4.6 45.4-2.2 61.4-19.8 16-17.8 20.4-42 13.4-63.2v0c-5.6-17.6 4-36.8 21.8-42.6 17.8-5.6 36.8 4 42.6 21.8 14 43.4 5.2 93-27.6 129.2zM439.6 263.4c-6-10.2-19-15-29.2-10.8-10.2 4-13.2 15.6-7.4 25.4 6 9.8 18.6 14.6 28.6 10.8 10-3.6 13.6-15 8-25.4zM385.4 194.2c-16.4-26.2-51.6-37.6-78-25.6-26 11.8-33.8 42.2-17.4 67.8 16.2 25.4 50.2 36.8 76.4 25.8 26.6-11.4 35.2-41.6 19-68zM447 379.4c-80.6 21-171.8-19.2-206.8-90.2-35.8-72.4-1.2-153 80.2-179.4 84.4-27.2 184 14.6 218.6 92.6 34.2 76.6-8.4 155.2-92 177z" /> +<glyph unicode="" glyph-name="rss" d="M136.294 209.070c-75.196 0-136.292-61.334-136.292-136.076 0-75.154 61.1-135.802 136.292-135.802 75.466 0 136.494 60.648 136.494 135.802-0.002 74.742-61.024 136.076-136.494 136.076zM0.156 612.070v-196.258c127.784 0 247.958-49.972 338.458-140.512 90.384-90.318 140.282-211.036 140.282-339.3h197.122c-0.002 372.82-303.282 676.070-675.862 676.070zM0.388 960v-196.356c455.782 0 826.756-371.334 826.756-827.644h196.856c0 564.47-459.254 1024-1023.612 1024z" /> +<glyph unicode="" glyph-name="rss2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM279 128.8c-48 0-87 38.6-87 86.6 0 47.6 39 86.8 87 86.8 48.2 0 87-39.2 87-86.8 0-48-39-86.6-87-86.6zM497.4 128c0 81.8-31.8 158.8-89.4 216.4-57.8 57.8-134.4 89.6-216 89.6v125.2c237.6 0 431.2-193.4 431.2-431.2h-125.8zM719.6 128c0 291-236.6 528-527.4 528v125.2c360 0 653-293.2 653-653.2h-125.6z" /> +<glyph unicode="" glyph-name="youtube" d="M1013.8 652.8c0 0-10 70.6-40.8 101.6-39 40.8-82.6 41-102.6 43.4-143.2 10.4-358.2 10.4-358.2 10.4h-0.4c0 0-215 0-358.2-10.4-20-2.4-63.6-2.6-102.6-43.4-30.8-31-40.6-101.6-40.6-101.6s-10.2-82.8-10.2-165.8v-77.6c0-82.8 10.2-165.8 10.2-165.8s10-70.6 40.6-101.6c39-40.8 90.2-39.4 113-43.8 82-7.8 348.2-10.2 348.2-10.2s215.2 0.4 358.4 10.6c20 2.4 63.6 2.6 102.6 43.4 30.8 31 40.8 101.6 40.8 101.6s10.2 82.8 10.2 165.8v77.6c-0.2 82.8-10.4 165.8-10.4 165.8zM406.2 315.2v287.8l276.6-144.4-276.6-143.4z" /> +<glyph unicode="" glyph-name="youtube2" horiz-adv-x="2569" d="M344.012 790.601c0.209 0.865 0.344 1.479 0.388 1.8l1.042 7.559-47.349 0.267c-42.779 0.242-55.87-0.007-57.047-1.084-0.565-0.516-15.333-56.633-41.655-158.273-12.556-48.484-23.124-87.206-23.487-86.051s-15.391 56.498-33.397 122.98c-18.006 66.482-33.104 121.243-33.55 121.692-0.623 0.623-57.98 0.9-104.417 0.502-6.735-0.056-10.477 13.11 60.021-211.133 9.759-31.041 24.371-74.997 32.469-97.679 9.333-26.141 15.989-46.323 20.534-63.173 8.038-32.067 8.319-52.163 6.565-75.625-2.026-27.101-2.321-218.438-0.342-221.638 1.512-2.449 91.223-3.589 99.712-1.268 1.358 0.372 2.265 1.691 2.87 8.928 2.119 6.219 2.286 30.969 2.286 133.744v131.281l5.742 18.112c3.756 11.849 13.201 42.995 20.989 69.22 7.789 26.222 17.21 57.619 20.938 69.771 33.834 110.319 66.14 218.831 66.994 225.011l0.693 5.056zM846.122 631.349l-0.021-6.838-1.065-0.014-0.595-188.993-0.577-183.227-14.666-14.929c-16.424-16.719-29.585-23.101-41.488-20.113-12.963 3.254-12.64-1.8-13.722 214.768l-0.998 199.347h-94.316v-6.851h-1.086v-216.289c0-231.737-0.007-231.599 11.752-254.875 9.366-18.536 23.010-27.559 46.391-30.671h0.002c30.79-4.1 64.001 9.849 94.77 39.809l13.373 13.022v-22.445c0-19.396 0.554-22.601 4.070-23.58 5.756-1.605 77.173-1.707 84.89-0.126l6.396 1.314v6.628l1.086 0.223v495.098l-94.195-1.258zM606.892 533.67c-8.935 38.341-25.68 64.115-53.233 81.939-43.281 27.999-92.718 30.957-138.586 8.291-33.425-16.515-54.951-43.914-66.071-84.083-1.326-4.786-2.298-8.812-3.033-14.815-2.83-14.184-3.163-35.351-3.889-133.951-1.121-151.928 0.616-170.003 19.643-204.51 18.664-33.848 57.403-58.661 99.572-63.782 12.696-1.54 38.43 0.858 53.23 4.961 33.632 9.326 65.864 35.906 80.118 66.078 6.158 13.033 9.875 22.096 12.115 38.651 4.175 22.617 4.47 59.175 4.47 152.375-0.002 118.875-0.379 131.862-4.337 148.847zM499.34 223.997c-7.907-6.028-21.734-8.649-32.983-6.249-8.656 1.847-20.338 15.419-23.934 27.801-4.479 15.436-4.823 229.985-0.954 272.059 6.379 21.054 24.19 32.050 43.635 26.813 15.157-4.082 22.915-13.575 27.336-33.457 3.282-14.754 3.67-33.129 2.972-141.26-0.46-71.701-0.716-106.742-3.058-125.553-2.382-11.87-6.319-15.047-13.015-20.154zM2300.389 425.863h45.57l-0.726 41.281c-0.705 37.869-1.263 42.2-6.324 52.472-7.982 16.21-19.759 23.401-38.446 23.401-22.448 0-36.678-10.849-43.388-33.141-2.858-9.486-5.863-74.685-3.707-80.308 1.205-3.144 7.724-3.705 47.021-3.705zM1995.795 519.763c-6.077 12.247-17.385 18.278-30.525 17.806-10.221-0.365-21.561-4.677-32.488-13.010l-8.14-6.177v-296.598l8.14-6.177c18.429-14.052 38.674-17.031 52.619-7.703 5.519 3.691 9.117 8.779 11.919 16.861 3.647 10.524 3.965 24.003 3.489 148.772-0.495 130.043-0.781 137.702-5.014 146.226zM2560.878 653.367c-9.080 108.842-16.303 144.165-38.751 189.544-29.729 60.101-72.692 91.788-133.876 98.747-47.309 5.379-225.315 12.97-390.044 16.631-285.188 6.338-754.057-5.858-813.939-21.173-27.673-7.077-48.426-19.11-70.022-40.604-37.844-37.662-60.391-91.679-69.452-166.396-20.692-170.606-21.134-376.727-1.188-553.515 8.577-76.041 26.243-125.443 59.41-166.159 20.694-25.406 56.352-46.998 88.26-53.442 22.385-4.523 134.42-10.798 297.605-16.668 24.306-0.874 88.667-2.379 143.030-3.344 113.301-2.012 321.627-0.821 440.719 2.519 80.127 2.249 226.201 8.172 253.5 10.282 7.677 0.593 25.469 1.728 39.537 2.523 47.277 2.67 77.353 12.568 105.596 34.76 36.553 28.718 64.857 81.795 76.815 144.037 11.314 58.894 18.887 163.773 20.422 282.851 1.284 99.491-0.426 153.175-7.621 239.409zM1425.273 692.808l-52.982-0.654-2.326-565.143-45.932-0.581c-35.525-0.488-46.307 0.044-47.167 2.326-0.616 1.626-1.356 129.020-1.672 283.153l-0.581 280.246-103.493 1.307v88.304l305.829-1.235 1.307-87.069-52.982-0.654zM1750.216 368.883v-243.035h-83.725v25.583c0 19.247-0.735 25.583-2.979 25.583-1.64 0-9.226-6.344-16.861-14.098-16.557-16.817-36.171-30.367-52.91-36.63-34.662-12.968-67.589-5.4-81.618 18.75-12.838 22.11-13.082 27.052-13.082 256.335v210.547h83.653l0.654-198.265c0.623-194.821 0.714-198.393 5.377-206.333 6.182-10.521 15.608-13.347 30.597-9.231 8.817 2.423 14.836 6.707 29.143 20.931l18.024 17.952v374.946h83.725v-243.035zM2076.757 160.59c-7.372-16.424-23.806-32.509-37.283-36.485-35.167-10.382-63.375-1.923-95.935 28.708-10.103 9.505-19.51 17.224-20.931 17.224-1.712 0-2.616-7.449-2.616-22.094v-22.094h-83.725v655.845h83.725v-106.982c0-58.84 0.786-106.982 1.744-106.982s9.789 7.807 19.624 17.298c22.629 21.841 41.548 31.399 65.557 33.213 42.811 3.24 68.327-18.794 80.018-69.117 3.647-15.696 3.998-33.625 3.998-179.078-0.002-177.178-0.021-177.918-14.175-209.457zM2430.99 257.832c-0.744-18.226-2.954-39.137-4.942-46.514-11.642-43.167-42.635-73.731-87.432-86.269-60.315-16.878-126.704 10.777-153.205 63.812-14.875 29.769-15.408 35.706-15.408 181.185 0 118.617 0.419 133.171 4.214 149.354 10.747 45.788 37.392 75.422 82.49 91.865 13.068 4.765 26.708 7.207 40.337 7.486 48.672 0.998 96.984-25.18 117.229-67.808 13.659-28.76 15.35-41.060 16.717-122.099l1.235-72.678-178.497-1.235-0.654-48.84c-0.93-68.901 3.716-90.088 22.313-102.621 15.645-10.54 39.679-9.745 52.765 1.744 12.263 10.768 15.726 22.336 16.933 56.107l1.091 29.653h86.195l-1.381-33.143z" /> +<glyph unicode="" glyph-name="twitch" d="M96 960l-96-160v-736h256v-128h128l128 128h160l288 288v608h-864zM832 416l-160-160h-160l-128-128v128h-192v576h640v-416zM608 704h96v-256h-96v256zM416 704h96v-256h-96v256z" /> +<glyph unicode="" glyph-name="vimeo" d="M1023.6 686c-4.6-99.6-74.2-236.2-208.8-409.4-139.2-180.8-257-271.4-353.4-271.4-59.6 0-110.2 55-151.4 165.2-27.6 101-55 202-82.6 303-30.6 110.2-63.4 165.2-98.6 165.2-7.6 0-34.4-16.2-80.4-48.2l-48.2 62c50.6 44.4 100.4 88.8 149.4 133.2 67.4 58.2 118 88.8 151.8 92 79.6 7.6 128.8-46.8 147.2-163.4 19.8-125.8 33.6-204 41.4-234.6 23-104.4 48.2-156.6 75.8-156.6 21.4 0 53.6 33.8 96.6 101.6 42.8 67.6 65.8 119.2 69 154.6 6.2 58.4-16.8 87.8-69 87.8-24.6 0-49.8-5.6-75.8-16.8 50.4 164.8 146.4 244.8 288.4 240.2 105-2.8 154.6-71 148.6-204.4z" /> +<glyph unicode="" glyph-name="vimeo2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM861.6 620c-3.2-72-53.6-170.6-151-295.8-100.6-130.8-185.8-196.2-255.4-196.2-43.2 0-79.6 39.8-109.4 119.4-20 73-39.8 146-59.8 219-22 79.6-45.8 119.4-71.2 119.4-5.6 0-25-11.6-58-34.8l-34.8 44.8c36.6 32 72.6 64.2 108 96.2 48.8 42 85.2 64.2 109.6 66.4 57.6 5.6 93-33.8 106.4-118 14.4-91 24.4-147.4 30-169.6 16.6-75.4 34.8-113 54.8-113 15.4 0 38.8 24.4 69.8 73.4s47.6 86.2 49.8 111.8c4.4 42.2-12.2 63.4-49.8 63.4-17.8 0-36-4-54.8-12.2 36.4 119 105.8 177 208.4 173.6 76-2.2 111.8-51.4 107.4-147.8z" /> +<glyph unicode="" glyph-name="lanyrd" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM822.4 191.2l-348.4-114c-79.6-26-87.6-21.8-123.6 89.6l-88 272.6c-21 64.6-85 238.6-95.8 272-20 62-20 65.4 97 103.4 91.6 30 95.4 29 128.6-74.4 26.8-83.2 44-150.4 71.6-235.4l75-232 239.6 78.4c47.2 15.6 63 14.8 76.4-43.4l9.6-44c11.2-51-14.6-64-42-72.8z" /> +<glyph unicode="" glyph-name="flickr" d="M0 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224zM576 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224z" /> +<glyph unicode="" glyph-name="flickr2" d="M800 544c-70.58 0-128-57.42-128-128s57.42-128 128-128c70.58 0 128 57.42 128 128s-57.42 128-128 128zM800 640v0c123.71 0 224-100.288 224-224 0-123.71-100.29-224-224-224s-224 100.29-224 224c0 123.712 100.29 224 224 224zM0 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224z" /> +<glyph unicode="" glyph-name="flickr3" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM288 288c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zM736 288c-88.4 0-160 71.6-160 160s71.6 160 160 160c88.4 0 160-71.6 160-160s-71.6-160-160-160z" /> +<glyph unicode="" glyph-name="flickr4" d="M512 960c-282.77 0-512-230.796-512-515.5s229.23-515.5 512-515.5 512 230.796 512 515.5-229.23 515.5-512 515.5zM288 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160c0-88.366-71.634-160-160-160zM736 288c-88.368 0-160 71.634-160 160s71.632 160 160 160 160-71.634 160-160c0-88.366-71.632-160-160-160z" /> +<glyph unicode="" glyph-name="dribbble" d="M512-64c-282.4 0-512 229.6-512 512s229.6 512 512 512c282.4 0 512-229.6 512-512s-229.6-512-512-512v0zM943.8 378c-15 4.8-135.4 40.6-272.4 18.6 57.2-157.2 80.4-285.2 85-311.8 98 66.4 168 171.4 187.4 293.2v0zM682.8 44.8c-6.6 38.4-31.8 172-93.2 331.6-1-0.4-2-0.6-2.8-1-246.8-86-335.4-257-343.2-273 74.2-57.8 167.4-92.4 268.4-92.4 60.6 0 118.4 12.4 170.8 34.8v0zM187 155c10 17 130 215.6 355.4 288.6 5.6 1.8 11.4 3.6 17.2 5.2-11 24.8-23 49.8-35.4 74.2-218.2-65.4-430.2-62.6-449.4-62.4-0.2-4.4-0.2-8.8-0.2-13.4 0-112.2 42.6-214.8 112.4-292.2v0zM84 537c19.6-0.2 199.8-1 404.4 53.2-72.4 128.8-150.6 237.2-162.2 253-122.4-57.8-214-170.6-242.2-306.2v0zM409.6 872.6c12-16.2 91.6-124.4 163.2-256 155.6 58.2 221.4 146.8 229.2 158-77.2 68.6-178.8 110.2-290 110.2-35.2-0.2-69.6-4.4-102.4-12.2v0zM850.6 723.8c-9.2-12.4-82.6-106.4-244.2-172.4 10.2-20.8 20-42 29-63.4 3.2-7.6 6.4-15 9.4-22.6 145.6 18.2 290.2-11 304.6-14-1 103.2-38 198-98.8 272.4v0z" /> +<glyph unicode="" glyph-name="behance" d="M297 754.8c30.2 0 57.4-2.6 82.2-8 24.8-5.2 45.8-14 63.6-26 17.6-12 31.2-28 41.2-48 9.6-19.8 14.4-44.6 14.4-74 0-31.8-7.2-58.2-21.6-79.4-14.6-21.2-35.8-38.4-64.2-52 38.8-11.2 67.4-30.8 86.6-58.6 19.2-28 28.4-61.6 28.4-101.2 0-32-6.2-59.4-18.4-82.6-12.4-23.4-29.2-42.4-49.8-57-20.8-14.8-44.8-25.6-71.6-32.6-26.6-7-54-10.6-82.4-10.6h-305.4v630h297zM279 500.4c24.6 0 45 5.8 61 17.6 16 11.6 23.6 30.8 23.6 57.2 0 14.6-2.6 26.8-7.8 36.2-5.4 9.4-12.4 16.8-21.4 22-8.8 5.4-18.8 9-30.6 11-11.4 2.2-23.4 3.2-35.6 3.2h-129.6v-147.2h140.4zM286.6 232.2c13.6 0 26.6 1.2 38.8 4 12.4 2.8 23.4 7 32.6 13.4 9.2 6.2 17 14.4 22.6 25.2 5.6 10.6 8.2 24.2 8.2 40.8 0 32.4-9.2 55.6-27.4 69.6-18.2 13.8-42.4 20.6-72.4 20.6h-150.4v-173.4h148zM725.2 234.4c18.8-18.4 45.8-27.6 81-27.6 25.2 0 47.2 6.4 65.4 19.2s29.2 26.4 33.4 40.4h110.4c-17.8-55-44.6-94-81.4-117.6-36.2-23.6-80.6-35.6-132-35.6-36 0-68.2 5.8-97.2 17.2-29 11.6-53.2 27.8-73.6 49-19.8 21.2-35.4 46.4-46.4 76-10.8 29.4-16.4 62-16.4 97.2 0 34.2 5.6 66 16.8 95.4 11.4 29.6 27 55 47.8 76.4s45.2 38.4 74 50.8c28.6 12.4 60.2 18.6 95.2 18.6 38.6 0 72.4-7.4 101.4-22.6 28.8-15 52.6-35.2 71.2-60.4s31.8-54.2 40-86.6c8.2-32.4 11-66.2 8.8-101.6h-329.4c0-35.8 12-70 31-88.2zM869 474c-14.8 16.4-40.2 25.4-70.8 25.4-20 0-36.6-3.4-49.8-10.2-13-6.8-23.6-15.2-31.8-25.2-8-10-13.6-20.8-16.8-32.2-3.2-11-5.2-21.2-5.8-30h204c-3 32-14 55.6-29 72.2zM668.4 704h255.4v-62.2h-255.4v62.2z" /> +<glyph unicode="" glyph-name="behance2" d="M404.2 511.4c13 9.4 19.2 25 19.2 46.6 0 12-2 21.8-6.2 29.4-4.4 7.6-10 13.6-17.4 17.8-7.2 4.4-15.4 7.4-24.8 9-9.2 1.8-19 2.6-29 2.6h-105.4v-119.6h114c20-0.2 36.6 4.6 49.6 14.2zM422 403.4c-14.8 11.2-34.4 16.8-58.8 16.8h-122.6v-141h120.2c11.2 0 21.6 1 31.6 3.2s19 5.6 26.6 10.8c7.6 5 13.8 11.8 18.4 20.4s6.8 19.8 6.8 33.2c0 26.4-7.4 45.2-22.2 56.6zM928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM671.2 690.6h207.4v-50.6h-207.4v50.6zM541.6 273.6c-10-19-23.6-34.4-40.4-46.4-17-12-36.4-20.8-58.2-26.6-21.6-5.8-44-8.6-66.8-8.6h-248.2v511.8h241.2c24.4 0 46.6-2.2 66.8-6.4 20-4.2 37.2-11.4 51.6-21.2 14.2-9.8 25.4-22.8 33.4-39 7.8-16 11.8-36.2 11.8-60 0-25.8-5.8-47.2-17.6-64.4s-29-31.2-52.2-42.2c31.6-9 54.8-25 70.2-47.6 15.6-22.8 23.2-50.2 23.2-82.2 0.2-26.2-4.8-48.6-14.8-67.2zM959.4 352.8h-267.4c0-29.2 10-57 25.2-72 15.2-14.8 37.2-22.4 65.8-22.4 20.6 0 38.2 5.2 53.2 15.6 14.8 10.4 23.8 21.4 27.2 32.8h89.6c-14.4-44.6-36.2-76.4-66-95.6-29.4-19.2-65.4-28.8-107.2-28.8-29.2 0-55.4 4.8-79 14-23.6 9.4-43.2 22.6-59.8 39.8-16.2 17.2-28.6 37.8-37.6 61.8-8.8 23.8-13.4 50.4-13.4 79 0 27.8 4.6 53.6 13.6 77.6 9.2 24 22 44.8 38.8 62 16.8 17.4 36.8 31.2 60 41.4 23.2 10 48.8 15 77.2 15 31.4 0 58.8-6 82.4-18.4 23.4-12.2 42.6-28.6 57.8-49.2s25.8-44 32.6-70.4c6.6-26 8.8-53.4 7-82.2zM776.6 496.2c-16.2 0-29.8-2.8-40.4-8.4s-19.2-12.4-25.8-20.4c-6.6-8.2-11-16.8-13.6-26.2-2.6-9-4.2-17.2-4.6-24.4h165.6c-2.4 26-11.4 45.2-23.4 58.6-12.4 13.6-32.8 20.8-57.8 20.8z" /> +<glyph unicode="" glyph-name="deviantart" d="M829 773.8v186.2h-186.2l-18.6-18.8-88-167.4-27.6-18.6h-313.6v-255.6h172.4l15.4-18.6-187.8-358.8v-186.2h186.2l18.6 18.8 88 167.4 27.6 18.6h313.6v255.6h-172.4l-15.4 18.8z" /> +<glyph unicode="" glyph-name="500px" d="M253 287.2c0.2-0.6 5.6-15.2 8.6-22.6 16.8-39.8 41-75.8 71.8-106.6s66.6-55 106.6-71.8c41.4-17.4 85.2-26.4 130.4-26.4s89.2 8.8 130.4 26.4c40 16.8 75.8 41 106.6 71.8s55 66.6 71.8 106.6c17.4 41.4 26.4 85.2 26.4 130.4s-8.8 89.2-26.4 130.4c-16.8 40-41 75.8-71.8 106.6s-66.6 55-106.6 71.8c-41.4 17.4-85.2 26.4-130.4 26.4-45.8 0-91.6-9.2-132.2-26.4-32.6-13.8-87.8-49.2-120-82.6l-0.2-0.2v276h463.4c16.8 0.2 16.8 23.8 16.8 31.4 0 7.8 0 31.2-17 31.4h-501c-13.6 0-22-11.4-22-21.8v-388.2c0-12.6 15.6-21.6 30.2-24.6 28.4-6 34.8 3 41.8 12.6l1 1.2c10.6 15.8 43.6 49 44 49.4 51.6 51.6 120.6 80 194.4 80 73.4 0 142.2-28.4 193.8-80 51.8-51.8 80.4-120.4 80.4-193.2 0-73-28.4-141.8-80-193.2-50.8-50.8-122-80-195-80-49.4 0-97.2 13.2-138.2 38.2l0.2 236c0 31.4 13.6 65.8 36.6 91.6 26.2 29.6 62.2 45.8 101.6 45.8 38 0 73.6-14.4 100.2-40.6 26.2-26 40.8-60.8 40.8-97.8 0-78.8-62-140.6-141.2-140.6-15.2 0-43 6.8-44.2 7-16 4.8-22.8-17.4-25-24.8-8.6-28.2 4.4-33.8 7-34.6 25.4-8 42.2-9.4 64.2-9.4 111.8 0 202.8 91 202.8 202.8 0 111-91 201.2-202.6 201.2-54.8 0-106.2-21-144.8-58.8-36.8-36.2-57.8-84.4-57.8-132.4v-1.2c-0.2-6-0.2-147.6-0.4-194l-0.2 0.2c-21 23.2-41.8 58.8-55.6 95.2-5.4 14.2-17.6 11.8-34.2 6.6-8-2.2-30-9-25-25.2v0zM491.2 342.6c0-6.8 6.2-12.8 10-16.2l1.2-1.2c6.4-6.2 12.4-9.4 18-9.4 4.6 0 7.4 2.2 8.4 3.2 2.8 2.6 34.4 34.8 37.6 37.8l35.4-35.2c3.2-3.6 6.8-5.6 11-5.6 5.6 0 11.8 3.4 18.2 10 15.2 15.6 7.6 24 4 28l-35.8 35.8 37.4 37.6c8.2 8.8 1 18.2-6.2 25.4-10.4 10.4-20.6 13.2-27 7.2l-37.2-37.2-37.6 37.6c-2 2-4.6 3-7.2 3-5 0-11-3.4-17.6-10-11.6-11.6-14-19.6-8-26l37.6-37.4-37.4-37.4c-3.4-3.2-5-6.6-4.8-10zM573 850.2c-60 0-124-12.2-170.8-32.4-5-2-8-6-8.6-11.6-0.6-5.4 0.8-12.4 4.4-21.6 3-7.4 10.6-27.2 25.6-21.4 48 18.4 101.2 28.4 149.4 28.4 54.8 0 108-10.8 158-31.8 39.8-16.8 77.2-41.2 118-76.4 3-2.6 6.2-3.8 9.4-3.8 8 0 15.6 7.8 22.2 15.2 10.8 12.2 18.4 22.4 7.6 32.6-39 36.8-81.6 64.4-134.4 86.8-57.2 23.8-118.2 36-180.8 36zM896.4 108.8v0c-7.2 7.2-13.4 11.4-18.8 13s-10.4 0.4-14.2-3.4l-3.6-3.6c-37.2-37.2-80.6-66.4-128.8-86.8-50-21.2-103-31.8-157.6-31.8-54.8 0-107.8 10.8-157.6 31.8-48.2 20.4-91.6 49.6-128.8 86.8-38.8 38.8-68 82.2-86.8 128.8-18.4 45.6-24.4 79.8-26.4 91-0.2 1-0.4 1.8-0.4 2.4-2.6 13.2-14.8 14.2-32.2 11.4-7.2-1.2-29.4-4.6-27.4-20.4v-0.4c5.8-37 16.2-73.2 30.8-107.6 23.4-55.4 57-105.2 99.8-148s92.6-76.2 148-99.8c57.4-24.2 118.4-36.6 181.2-36.6s123.8 12.4 181.2 36.6c55.4 23.4 105.2 57 148 99.8 0 0 2.4 2.4 3.8 3.8 4.4 5.4 8.6 14.4-10.2 33z" /> +<glyph unicode="" glyph-name="steam" d="M704 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM958.392 830.392c-87.478 87.476-229.306 87.476-316.786 0-35.578-35.578-56.684-80.146-63.322-126.392v0l-204.694-310.228c-27.506-1.41-54.776-8.416-79.966-21.016l-157.892 123.424c-36.55 28.574-89.342 22.102-117.912-14.448-28.572-36.55-22.102-89.342 14.448-117.912l155.934-121.892c-16.96-66.782 0.672-140.538 52.93-192.794 78.906-78.904 206.832-78.904 285.736 0 48.466 48.466 67.15 115.428 56.076 178.166l249.054 222.986c46.248 6.638 90.816 27.744 126.394 63.322 87.478 87.476 87.478 229.306 0 316.784zM384 57.302c-74.39 0-134.698 60.304-134.698 134.698 0 0.712 0.042 1.414 0.054 2.124l66.912-52.304c15.36-12.006 33.582-17.824 51.674-17.824 24.962 0 49.672 11.080 66.238 32.272 28.572 36.55 22.102 89.342-14.448 117.912l-63.5 49.636c8.962 1.878 18.248 2.88 27.768 2.88 74.392 0 134.698-60.304 134.698-134.698s-60.306-134.696-134.698-134.696zM800 512c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> +<glyph unicode="" glyph-name="steam2" d="M303.922 123.99c27.144 0 53.786 13.136 69.972 37.416 25.734 38.602 15.302 90.754-23.298 116.488l-66.074 44.048c11.308 3.080 23.194 4.756 35.478 4.756 74.392 0 134.696-60.304 134.696-134.698s-60.306-134.698-134.698-134.698c-72.404 0-131.444 57.132-134.548 128.774l71.954-47.968c14.322-9.548 30.506-14.118 46.518-14.118zM853.34 960c93.876 0 170.66-76.812 170.66-170.688v-682.628c0-93.936-76.784-170.684-170.66-170.684h-682.652c-93.876 0-170.688 76.75-170.688 170.682v203.028l121.334-80.888c-11.652-63.174 6.938-130.83 55.798-179.69 78.904-78.904 206.83-78.904 285.736 0 48.468 48.466 67.15 115.43 56.076 178.166l249.056 222.988c46.248 6.638 90.816 27.744 126.394 63.322 87.476 87.476 87.476 229.306 0 316.784-87.48 87.478-229.308 87.478-316.786 0-35.578-35.578-56.684-80.146-63.322-126.392v0l-204.694-310.23c-31.848-1.632-63.378-10.764-91.726-27.392l-217.866 145.244v277.69c0 93.876 76.81 170.688 170.686 170.688h682.654zM896 672c0 88.366-71.634 160-160 160s-160-71.634-160-160 71.634-160 160-160 160 71.634 160 160zM640 672c0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96-96 42.98-96 96z" /> +<glyph unicode="" glyph-name="dropbox" d="M736 928l-224-192 288-192 224 192zM512 736l-224 192-288-192 224-192zM800 544l224-192-288-160-224 192zM512 384l-288 160-224-192 288-160zM728.156 114.43l-216.156 185.278-216.158-185.278-135.842 75.468v-93.898l352-160 352 160v93.898z" /> +<glyph unicode="" glyph-name="onedrive" d="M350.868 131.612c-60.274 15.060-93.856 62.97-93.962 134.064-0.032 22.726 1.612 33.62 7.286 48.236 13.908 35.834 50.728 62.872 99.176 72.822 24.11 4.95 31.536 10.266 31.536 22.572 0 3.862 2.872 15.36 6.378 25.552 15.932 46.306 45.43 84.91 76.948 100.702 32.99 16.526 49.642 20.254 89.548 20.040 56.674-0.304 84.952-12.598 124.496-54.128l21.75-22.842 19.484 6.742c94.3 32.636 188.306-22.916 195.888-115.756l2.072-25.398 18.57-6.65c53.032-19.004 77.96-58.904 73.442-117.556-2.958-38.358-20.89-68.98-49.3-84.184l-13.356-7.146-296.822-0.57c-228.094-0.44-300.6 0.368-313.134 3.5v0zM103.218 174.034c-36.176 9.086-74.506 42.854-92.48 81.47-10.196 21.906-10.738 25.128-10.738 63.88 0 36.864 0.87 42.778 8.988 61.080 17.11 38.582 49.894 66.46 91.030 77.408 8.684 2.312 16.842 6 18.128 8.196 1.29 2.198 2.722 14.164 3.182 26.592 2.866 77.196 50.79 145.214 117.708 167.056 36.154 11.8 83.572 12.898 122.896-3.726 12.47-5.274 11.068-6.404 37.438 30.14 15.594 21.612 45.108 44.49 70.9 58.18 27.838 14.776 56.792 21.584 91.412 21.494 96.768-0.252 180.166-64.22 211.004-161.848 9.854-31.192 9.362-39.926-2.26-40.184-5.072-0.112-19.604-3.064-32.292-6.558l-23.072-6.358-21.052 22.25c-59.362 62.734-156.238 76.294-238.592 33.396-32.9-17.138-59.34-41.746-79.31-73.81-14.236-22.858-32.39-65.504-32.39-76.094 0-7.51-5.754-11.264-30.332-19.782-76.094-26.376-120.508-87.282-120.476-165.218 0.010-28.368 6.922-63.074 16.52-82.956 3.618-7.494 5.634-14.622 4.484-15.836-2.946-3.106-97.608-2.060-110.696 1.228v0z" /> +<glyph unicode="" glyph-name="github" d="M512.008 947.358c-282.738 0-512.008-229.218-512.008-511.998 0-226.214 146.704-418.132 350.136-485.836 25.586-4.738 34.992 11.11 34.992 24.632 0 12.204-0.48 52.542-0.696 95.324-142.448-30.976-172.504 60.41-172.504 60.41-23.282 59.176-56.848 74.916-56.848 74.916-46.452 31.778 3.51 31.124 3.51 31.124 51.4-3.61 78.476-52.766 78.476-52.766 45.672-78.27 119.776-55.64 149.004-42.558 4.588 33.086 17.852 55.68 32.506 68.464-113.73 12.942-233.276 56.85-233.276 253.032 0 55.898 20.004 101.574 52.76 137.428-5.316 12.9-22.854 64.972 4.952 135.5 0 0 43.006 13.752 140.84-52.49 40.836 11.348 84.636 17.036 128.154 17.234 43.502-0.198 87.336-5.886 128.256-17.234 97.734 66.244 140.656 52.49 140.656 52.49 27.872-70.528 10.35-122.6 5.036-135.5 32.82-35.856 52.694-81.532 52.694-137.428 0-196.654-119.778-239.95-233.79-252.624 18.364-15.89 34.724-47.046 34.724-94.812 0-68.508-0.596-123.644-0.596-140.508 0-13.628 9.222-29.594 35.172-24.566 203.322 67.776 349.842 259.626 349.842 485.768 0 282.78-229.234 511.998-511.992 511.998z" /> +<glyph unicode="" glyph-name="npm" d="M0 960v-1024h1024v1024h-1024zM832 128h-128v512h-192v-512h-320v640h640v-640z" /> +<glyph unicode="" glyph-name="basecamp" d="M512 853.4c-186.8 0-330.8-156.4-412.4-309.6-46-86.2-78.2-180.6-93-277.2-1.6-11-3.2-22-4.4-33.2-0.6-6-1.2-12-1.6-18-0.6-7.6-0.2-10 3.8-16.4 12-19.4 26.2-37.4 42.2-53.6 32.8-33.6 72.6-59.4 114.8-79.4 96.2-45.4 204.8-61.8 310.4-65.4 109-3.6 221 5.4 325.2 39.4 89 29 174.8 79.6 224.2 161.4 5.4 8.8 1.6 21.8 0.6 32-1.2 12.2-2.8 24.2-4.8 36.2-3.6 23.6-8.4 46.8-14.2 70-11.6 47.2-27.4 93.6-46.6 138.2-69.6 161.6-198.4 334-381.6 369.6-20.6 4-41.6 6-62.6 6zM518.4 69.8c-114.2 0-238.6 10.2-341.4 65.2-40 21.4-80.8 52.4-100 95-5.6 12.4-3.6 17.2-1 31.8 1.8 9.4 2.6 18.6 6.8 27.4 5.8 12.2 11.8 24.2 18 36.2 21 40.6 43.6 80.8 69.8 118.6 13 18.6 26.8 37 42.8 53 11.2 11.2 24.8 23.2 40.6 27 48.4 11.6 85.4-44.4 114.8-72.6 14.2-13.6 33.2-29 54.4-26.4 14.6 1.8 27.6 13.2 38 22.6 35.4 31.8 63.8 71.2 93.2 108.2 14.6 18.2 29 36.6 44.8 54 10.6 11.8 22.2 25.2 36.4 32.8 25.4 13.8 57.8-14.6 75.4-29.2 30-25 56.6-54.2 82-83.8 24.2-28.2 47.6-56.8 68.2-87.8 31.8-48 59.4-99.2 84.6-151 5.4-11.2 7.2-18.8 9.2-31.2 1.2-6.8 3.8-14.6 2.8-21.6-1.4-9.8-8.2-20.4-13.2-28.4-12-19-28.2-35.4-46-49.2-74.6-57.8-175.6-77-267.4-85.6-37.6-3.6-75.2-5-112.8-5z" /> +<glyph unicode="" glyph-name="trello" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM448 192c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v512c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-512zM832 384c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v-320z" /> +<glyph unicode="" glyph-name="wordpress" d="M128 448.008c0-148.026 88.322-275.968 216.43-336.578l-183.178 488.784c-21.308-46.508-33.252-97.982-33.252-152.206zM771.228 466.872c0 46.234-17.054 78.236-31.654 103.142-19.458 30.82-37.72 56.894-37.72 87.716 0 34.374 26.766 66.376 64.486 66.376 1.704 0 3.32-0.204 4.976-0.302-68.316 60.97-159.34 98.196-259.308 98.196-134.16 0-252.186-67.046-320.844-168.568 9.010-0.282 17.506-0.454 24.712-0.454 40.154 0 102.34 4.752 102.34 4.752 20.69 1.182 23.132-28.434 2.458-30.822 0 0-20.81-2.368-43.952-3.55l139.834-405.106 84.044 245.456-59.822 159.65c-20.688 1.184-40.278 3.55-40.278 3.55-20.702 1.192-18.272 32.002 2.438 30.822 0 0 63.4-4.752 101.134-4.752 40.146 0 102.35 4.752 102.35 4.752 20.702 1.182 23.14-28.434 2.446-30.822 0 0-20.834-2.372-43.948-3.55l138.78-402.018 38.312 124.632c16.58 51.75 29.216 88.9 29.216 120.9zM518.742 415.296l-115.226-326.058c34.416-9.858 70.794-15.238 108.488-15.238 44.716 0 87.604 7.518 127.518 21.2-1.018 1.602-1.974 3.304-2.75 5.154l-118.030 314.942zM848.962 627.428c1.652-11.91 2.588-24.686 2.588-38.458 0-37.93-7.292-80.596-29.202-133.95l-117.286-330.272c114.162 64.828 190.938 185.288 190.938 323.258 0 65.030-17.060 126.16-47.038 179.422zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 0c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448z" /> +<glyph unicode="" glyph-name="joomla" d="M266.004 683.322c32.832 32.844 86.002 32.844 118.804 0.032l7.826-7.868 101.104 101.156-7.874 7.88c-57.624 57.7-138.514 77.878-212.42 60.522-10.594 65.182-67.088 114.924-135.174 114.956-75.65 0-136.954-61.442-136.97-137.158 0-65.336 45.59-120 106.662-133.83-23.138-77.45-4.242-164.834 56.846-225.984l227.826-227.9 100.996 101.214-227.81 227.886c-32.682 32.722-32.742 86.126 0.184 119.094zM1022.712 822.842c0.016 75.762-61.318 137.158-136.984 137.158-69.234 0-126.478-51.444-135.682-118.238-77.074 22.664-163.784 3.496-224.64-57.408l-227.84-227.9 101.102-101.172 227.766 227.856c32.94 32.966 85.988 32.906 118.684 0.184 32.8-32.83 32.8-86.114-0.032-118.956l-7.794-7.836 101.010-101.248 7.858 7.928c60.458 60.566 79.678 146.756 57.612 223.638 67.15 8.834 118.94 66.364 118.94 135.994zM906.266 208.936c18.102 74.458-1.976 156.324-60.108 214.5l-227.49 227.992-101.102-101.122 227.52-228.012c32.94-32.996 32.864-86.096 0.184-118.848-32.802-32.814-86.004-32.814-118.836 0.030l-7.766 7.79-100.994-101.246 7.732-7.728c61.516-61.594 149.618-80.438 227.368-56.488 12.632-62.682 67.934-109.804 134.258-109.804 75.604 0 136.968 61.35 136.968 137.126 0 69.2-51.18 126.456-117.734 135.81zM612.344 431.316l-227.536-227.992c-32.71-32.768-86.034-32.828-118.944 0.124-32.818 32.904-32.832 86.098-0.044 118.97l7.808 7.774-101.086 101.124-7.734-7.712c-58.76-58.802-78.56-141.834-59.45-216.982-60.398-14.26-105.358-68.634-105.358-133.496-0.016-75.746 61.332-137.126 136.982-137.126 65.1 0.032 119.588 45.418 133.54 106.382 74.702-18.552 156.998 1.304 215.344 59.756l227.49 227.96-101.012 101.218z" /> +<glyph unicode="" glyph-name="ello" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM824.636 370.402c-36.798-142.716-165.358-242.402-312.63-242.402-147.282 0-275.85 99.686-312.654 242.42-6.232 24.158 8.352 48.886 32.512 55.124 3.71 0.958 7.528 1.446 11.338 1.446 20.624 0 38.628-13.972 43.788-33.976 26.512-102.748 119.042-174.51 225.014-174.51 105.978 0 198.502 71.76 225 174.51 5.152 20.006 23.15 33.982 43.766 33.982 3.822 0 7.65-0.49 11.376-1.456 11.692-3.016 21.526-10.418 27.668-20.842 6.142-10.416 7.854-22.596 4.822-34.296z" /> +<glyph unicode="" glyph-name="blogger" d="M957.796 576h-57.406c-35.166 0-65.988 29.742-68.39 64v0c0.004 182.668-147.258 320-331.19 320h-167.824c-183.812 0-332.856-148-332.986-330.666v-362.798c0-182.654 149.174-330.536 332.984-330.536h358.42c183.948 0 332.596 147.882 332.596 330.536v234.382c0 36.502-29.44 75.082-66.204 75.082zM320 704h192c35.2 0 64-28.8 64-64s-28.8-64-64-64h-192c-35.2 0-64 28.8-64 64s28.8 64 64 64zM704 192h-384c-35.2 0-64 28.8-64 64s28.8 64 64 64h384c35.2 0 64-28.8 64-64s-28.8-64-64-64z" /> +<glyph unicode="" glyph-name="blogger2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM896 312c0-137-111.4-248-249.4-248h-268.8c-138 0-249.8 111-249.8 248v272c0 137 111.8 248 249.8 248h125.8c138 0 248.4-103 248.4-240 1.8-25.6 25-48 51.2-48h43c27.6 0 49.6-29 49.6-56.4v-175.6zM704 320c0-35.2-28.8-64-64-64h-256c-35.2 0-64 28.8-64 64v0c0 35.2 28.8 64 64 64h256c35.2 0 64-28.8 64-64v0zM576 576c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v0c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v0z" /> +<glyph unicode="" glyph-name="tumblr" d="M576.032 512l-0.002-234.184c0-59.418-0.77-93.656 5.53-110.5 6.25-16.754 21.918-34.146 38.99-44.202 22.684-13.588 48.542-20.376 77.708-20.376 51.854 0 82.478 6.848 133.742 40.54v-153.944c-43.7-20.552-81.866-32.594-117.324-40.922-35.5-8.242-73.86-12.406-115.064-12.406-46.828 0-74.456 5.886-110.41 17.656-35.958 11.868-66.66 28.806-92.020 50.54-25.45 21.922-43.022 45.208-52.848 69.832-9.826 24.636-14.716 60.414-14.716 107.244v359.1h-137.426v145.006c40.208 13.042 85.164 31.788 113.78 56.152 28.754 24.45 51.766 53.706 69.106 87.944 17.392 34.146 29.348 77.712 35.872 130.516h165.084l-0.002-255.996h255.968v-192h-255.968z" /> +<glyph unicode="" glyph-name="tumblr2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM731.8 135.4c-30.2-14.2-57.6-24.2-82-30-24.4-5.6-51-8.6-79.4-8.6-32.4 0-51.4 4-76.2 12.2s-46 19.8-63.6 34.8c-17.6 15.2-29.6 31.2-36.4 48.2s-10.2 41.6-10.2 74v247.8h-96v100c27.8 9 60 22 79.6 38.8 19.8 16.8 35.8 37 47.6 60.6 12 23.6 20.2 53.6 24.8 90h100.4v-163.2h163.6v-126.2h-163.4v-181.2c0-41-0.6-64.6 3.8-76.2s15.2-23.6 27-30.4c15.6-9.4 33.6-14 53.6-14 35.8 0 71.4 11.6 106.8 34.8v-111.4z" /> +<glyph unicode="" glyph-name="yahoo" d="M568.2 371v0c112.6 197.6 298.6 520 349.6 589-22.4-15-56.8-22.6-88.4-29.8l-47.8 29.8c-38.4-71.6-180-303-270.2-451.2-91.4 151.4-199.6 326.2-270.2 451.2-56-12-79.2-12.6-135 0v0 0c0 0 0 0 0 0v0c110.8-166.8 288.2-484.6 348.6-589v0l-8.2-435 64.8 29.8v0.8l64.8-30.6-8 435z" /> +<glyph unicode="" glyph-name="yahoo2" d="M513.2 890.4c-181 0-352 23.8-513.2 69.6 0-361.8 0-933.2 0-1024 161.4 45.8 332.4 69.6 513.2 69.6 178.8 0 349.4-23.2 510.8-69.6 0 348.4 0 649.8 0 1024-161.4-46.4-331.8-69.6-510.8-69.6zM796.8 803l-6.2-9.8c-5.8-9.2-11-17-18.2-28-9.6-14.4-27.6-43-49.2-79.8-6-10.2-13.4-22.4-21-35.6-14.6-24.6-31-52.4-44-74.4-5.4-9.4-10.8-19-16.4-28.6-14.4-25-29.2-50.8-43.4-75.6-14.6-25.8-29-51.2-43.4-76.4v-25.4c0-35.2 0.8-73.6 2-107.8 0.6-15.6 1.2-43.4 2-72.8 0.8-35 1.6-71.2 2.6-89.6l0.2-5.6v-0.6l-6 1.6c-2.4 0.6-4.6 1.2-7 1.8-7.2 1.6-15 2.8-22.6 3.6-4.6 0.4-9.4 0.6-14.2 0.6 0 0 0 0 0 0s0 0 0 0c-4.8 0-9.6-0.2-14.2-0.6-7.6-0.8-15.4-2-22.6-3.6-2.4-0.6-4.8-1.2-7-1.8l-6-1.6v0.6l0.2 5.6c0.8 18.2 1.8 54.6 2.6 89.6 0.6 29.4 1.4 57.2 2 72.8 1.4 34.4 2 72.6 2 107.8v25.4c-14.4 25.4-28.8 50.6-43.4 76.4-14.2 25-29 50.6-43.2 75.6-5.6 9.6-11 19.2-16.4 28.6-12.8 22.2-29.4 50-44 74.4-7.8 13-15.2 25.4-21 35.6-21.6 36.8-39.6 65.2-49.2 79.8-7.2 11-12.4 18.8-18.2 28l-6.2 9.8 11.2-3.2c14.2-4 28.8-6 44.4-6s30.6 2 44.6 6l3.4 1 1.8-3c27.6-49.8 101.8-171.8 146.2-244.8 15.2-25.2 27.4-45 33.4-55.2 0 0 0 0 0 0.2 0 0 0 0 0-0.2 6 10 18.2 30 33.4 55.2 44.4 72.8 118.6 194.8 146.2 244.8l1.8 3 3.4-1c14-4 29-6 44.6-6s30.2 2 44.4 6l10.6 3.2z" /> +<glyph unicode="" glyph-name="tux" d="M567.656 223.084c-81.944-38.118-158.158-37.716-209.34-34.020-61.052 4.41-110.158 21.124-131.742 35.732-13.3 9.006-31.384 5.522-40.39-7.782-9.004-13.302-5.52-31.386 7.782-40.39 34.698-23.486 96.068-40.954 160.162-45.58 10.866-0.784 22.798-1.278 35.646-1.278 55.782 0 126.626 5.316 202.42 40.57 14.564 6.778 20.878 24.074 14.104 38.64-6.776 14.566-24.076 20.872-38.642 14.108zM890.948 266.184c2.786 252.688 28.762 730.206-454.97 691.612-477.6-38.442-350.964-542.968-358.082-711.95-6.308-89.386-35.978-198.648-77.896-309.846h129.1c13.266 47.122 23.024 93.72 27.232 138.15 7.782-5.428 16.108-10.674 24.994-15.7 14.458-8.518 26.884-19.844 40.040-31.834 30.744-28.018 65.59-59.774 133.712-63.752 4.572-0.262 9.174-0.394 13.676-0.394 68.896 0 116.014 30.154 153.878 54.382 18.14 11.612 33.818 21.64 48.564 26.452 41.91 13.12 78.532 34.296 105.904 61.252 4.276 4.208 8.242 8.538 11.962 12.948 15.246-55.878 36.118-118.758 59.288-181.504h275.65c-66.174 102.224-134.436 202.374-133.052 330.184zM124.11 403.648c0 0.016 0 0.030-0.002 0.046-4.746 82.462 34.71 151.832 88.126 154.936 53.412 3.106 100.56-61.228 105.304-143.692 0-0.014 0.004-0.030 0.004-0.044 0.256-4.446 0.368-8.846 0.37-13.206-16.924-4.256-32.192-10.436-45.872-17.63-0.052 0.612-0.092 1.216-0.152 1.83 0 0.008 0 0.018 0 0.026-4.57 46.81-29.572 82.16-55.852 78.958-26.28-3.204-43.88-43.75-39.312-90.558 0-0.010 0.004-0.018 0.004-0.026 1.992-20.408 7.868-38.636 16.042-52.444-2.034-1.604-7.784-5.812-14.406-10.656-4.97-3.634-11.020-8.058-18.314-13.43-19.882 26.094-33.506 63.58-35.94 105.89zM665.26 199.822c-1.9-43.586-58.908-84.592-111.582-101.044l-0.296-0.096c-21.9-7.102-41.428-19.6-62.104-32.83-34.732-22.224-70.646-45.208-122.522-45.208-3.404 0-6.894 0.104-10.326 0.296-47.516 2.778-69.742 23.032-97.88 48.676-14.842 13.526-30.19 27.514-49.976 39.124l-0.424 0.244c-42.706 24.104-69.212 54.082-70.908 80.194-0.842 12.98 4.938 24.218 17.182 33.4 26.636 19.972 44.478 33.022 56.284 41.658 13.11 9.588 17.068 12.48 20 15.264 2.096 1.986 4.364 4.188 6.804 6.562 24.446 23.774 65.36 63.562 128.15 63.562 38.404 0 80.898-14.8 126.17-43.902 21.324-13.878 39.882-20.286 63.38-28.4 16.156-5.578 34.468-11.902 58.992-22.404l0.396-0.164c22.88-9.404 49.896-26.564 48.66-54.932zM652.646 302.194c-4.4 2.214-8.974 4.32-13.744 6.286-22.106 9.456-39.832 15.874-54.534 20.998 8.116 15.894 13.16 35.72 13.624 57.242 0 0.010 0 0.022 0 0.030 1.126 52.374-25.288 94.896-58.996 94.976-33.71 0.078-61.95-42.314-63.076-94.686 0-0.010 0-0.018 0-0.028-0.038-1.714-0.042-3.416-0.020-5.11-20.762 9.552-41.18 16.49-61.166 20.76-0.092 1.968-0.204 3.932-0.244 5.92 0 0.016 0 0.036 0 0.050-1.938 95.412 56.602 174.39 130.754 176.402 74.15 2.014 135.828-73.7 137.772-169.11 0-0.018 0-0.038 0-0.052 0.874-43.146-10.66-82.866-30.37-113.678z" /> +<glyph unicode="" glyph-name="appleinc" d="M791.498 415.908c-1.294 129.682 105.758 191.876 110.542 194.966-60.152 88.020-153.85 100.078-187.242 101.472-79.742 8.074-155.596-46.948-196.066-46.948-40.368 0-102.818 45.754-168.952 44.552-86.916-1.292-167.058-50.538-211.812-128.38-90.304-156.698-23.126-388.84 64.89-515.926 43.008-62.204 94.292-132.076 161.626-129.58 64.842 2.588 89.362 41.958 167.756 41.958s100.428-41.958 169.050-40.67c69.774 1.296 113.982 63.398 156.692 125.796 49.39 72.168 69.726 142.038 70.924 145.626-1.548 0.706-136.060 52.236-137.408 207.134zM662.562 796.478c35.738 43.358 59.86 103.512 53.28 163.522-51.478-2.096-113.878-34.29-150.81-77.55-33.142-38.376-62.148-99.626-54.374-158.436 57.466-4.484 116.128 29.204 151.904 72.464z" /> +<glyph unicode="" glyph-name="finder" d="M569.226 181.744c-0.002 0.044-0.002 0.088-0.004 0.132 0.002-0.044 0.002-0.088 0.004-0.132zM570.596 145.462c-0.012 0.234-0.022 0.466-0.032 0.702 0.010-0.234 0.020-0.466 0.032-0.702zM569.814 163.688c-0.006 0.178-0.012 0.356-0.020 0.536 0.010-0.182 0.016-0.358 0.020-0.536zM960 960h-896c-35.2 0-64-28.8-64-64v-896c0-35.2 28.8-64 64-64h493.832c0.044 0 0.088-0.006 0.132-0.006 0.042 0 0.084 0.006 0.126 0.006h401.91c35.2 0 64 28.8 64 64v896c0 35.2-28.8 64-64 64zM192 736c0 17.672 14.328 32 32 32s32-14.328 32-32v-64c0-17.672-14.328-32-32-32s-32 14.328-32 32v64zM960 0h-375.058c-6.7 42.082-10.906 85.476-13.388 127.604 0.006-0.116 0.010-0.228 0.018-0.344-19.696-2.146-39.578-3.26-59.572-3.26-133.65 0-262.382 48.656-362.484 137.006-14.906 13.156-16.326 35.906-3.168 50.812 13.158 14.904 35.906 16.326 50.814 3.168 86.936-76.728 198.748-118.986 314.838-118.986 19.086 0 38.052 1.166 56.816 3.416-2.192 118.194 6.876 211.914 7.026 213.404 0.898 8.996-2.050 17.952-8.118 24.654-6.066 6.702-14.682 10.526-23.724 10.526h-95.174c1.384 34.614 5.082 93.814 14.958 160.188 18.864 126.76 51.994 225.77 96.152 287.812h400.064v-896zM800 640c-17.674 0-32 14.328-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64c0-17.672-14.326-32-32-32zM540.496 124.768c-3.646-0.192-7.298-0.336-10.956-0.454 3.658 0.116 7.31 0.264 10.956 0.454zM512 124c4.692 0 9.374 0.074 14.050 0.196-4.676-0.122-9.358-0.196-14.050-0.196zM539.074 196.798c0.784 0.044 1.568 0.084 2.352 0.132-0.782-0.048-1.568-0.088-2.352-0.132zM525.084 196.2c1.074 0.030 2.146 0.072 3.218 0.11-1.072-0.038-2.144-0.082-3.218-0.11zM877.65 311.818c-13.156 14.91-35.908 16.322-50.812 3.168-72.642-64.114-162.658-104.136-258.022-115.57 0.43-23.278 1.294-47.496 2.754-72.156 111.954 12.21 217.786 58.614 302.912 133.746 14.908 13.156 16.326 35.906 3.168 50.812zM571.498 127.252c-4.606-0.5-9.222-0.936-13.848-1.322 4.626 0.384 9.244 0.822 13.848 1.322zM555.488 125.758c-3.906-0.312-7.822-0.576-11.742-0.806 3.92 0.226 7.834 0.496 11.742 0.806z" /> +<glyph unicode="" glyph-name="android" d="M896 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.8 64-64 64zM128 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.802 64-64 64zM224 224c0-53.020 42.98-96 96-96v0-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128h128v-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128c53.020 0 96 42.98 96 96v352h-576v-352zM798.216 639.998c-9.716 87.884-59.004 163.792-129.62 209.646l32.024 64.046c7.904 15.806 1.496 35.028-14.31 42.932s-35.030 1.496-42.932-14.312l-32.142-64.286-8.35 3.316c-28.568 9.502-59.122 14.66-90.886 14.66-31.762 0-62.316-5.158-90.888-14.656l-8.348-3.316-32.142 64.282c-7.904 15.808-27.128 22.212-42.932 14.312-15.808-7.904-22.214-27.126-14.312-42.932l32.022-64.046c-70.616-45.852-119.904-121.762-129.622-209.644v-32h574.222v31.998h-1.784zM416 704c-17.674 0-32 14.328-32 32 0 17.648 14.288 31.958 31.93 31.996 0.032 0 0.062-0.002 0.094-0.002 0.018 0 0.036 0.002 0.052 0.002 17.638-0.042 31.924-14.35 31.924-31.996 0-17.672-14.326-32-32-32zM608 704c-17.674 0-32 14.328-32 32 0 17.646 14.286 31.954 31.924 31.996 0.016 0 0.034-0.002 0.050-0.002 0.032 0 0.064 0.002 0.096 0.002 17.64-0.038 31.93-14.348 31.93-31.996 0-17.672-14.326-32-32-32z" /> +<glyph unicode="" glyph-name="windows" d="M412.23 448.086c-47.708 24.518-94.086 36.958-137.88 36.958-5.956 0-11.952-0.18-17.948-0.708-55.88-4.624-106.922-19.368-139.75-30.828-8.708-3.198-17.634-6.576-26.83-10.306l-89.822-311.394c61.702 22.832 116.292 33.938 166.27 33.938 80.846 0 139.528-30.208 187.992-61.304 22.962 77.918 78.044 266.090 94.482 322.324-11.95 7.284-24.076 14.57-36.514 21.32zM528.348 368.93l-90.446-314.148c26.832-15.372 117.098-64.050 186.212-64.050 55.792 0 118.252 14.296 190.834 43.792l86.356 301.976c-58.632-18.922-114.876-28.52-167.464-28.52-95.95 0-163.114 31.098-205.492 60.95zM292.822 591.21c77.118-0.798 134.152-30.208 181.416-60.502l92.752 317.344c-19.546 11.196-70.806 39.094-107.858 48.6-24.386 5.684-50.020 8.616-77.204 8.616-51.796-0.976-108.388-13.946-172.888-39.8l-88.44-310.596c64.808 24.436 120.644 36.34 172.086 36.34 0.046-0.002 0.136-0.002 0.136-0.002zM1024 761.876c-58.814-22.832-116.208-34.466-171.028-34.466-91.686 0-159.292 31.802-203.094 62.366l-91.95-318.236c61.746-39.708 128.29-59.878 198.122-59.878 56.948 0 115.94 13.68 175.462 40.688l-0.182 2.222 3.734 0.886 88.936 306.418z" /> +<glyph unicode="" glyph-name="windows8" d="M0.35 448l-0.35 312.074 384 52.144v-364.218zM448 821.518l511.872 74.482v-448h-511.872zM959.998 384l-0.126-448-511.872 72.016v375.984zM384 16.164l-383.688 52.594-0.020 315.242h383.708z" /> +<glyph unicode="" glyph-name="soundcloud" d="M891.96 445.796c-18.086 0-35.348-3.52-51.064-9.856-10.506 114.358-110.29 204.060-232 204.060-29.786 0-58.682-5.63-84.318-15.164-9.96-3.702-12.578-7.52-12.578-14.916v-402.714c0-7.766 6.24-14.234 14.124-14.996 0.336-0.034 363.536-0.21 365.89-0.21 72.904 0 131.986 56.816 131.986 126.894s-59.134 126.902-132.040 126.902zM400 192h32l16 224.22-16 223.78h-32l-16-223.78zM304 192h-32l-16 162.75 16 157.25h32l16-160zM144 192h32l16 128-16 128h-32l-16-128zM16 256h32l16 64-16 64h-32l-16-64z" /> +<glyph unicode="" glyph-name="soundcloud2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM176 256h-32l-16 96 16 96h32l16-96-16-96zM304 256h-32l-16 128 16 128h32l16-128-16-128zM432 256h-32l-16 192 16 192h32l16-192-16-192zM825.2 256c-2 0-301.2 0.2-301.4 0.2-6.4 0.6-11.6 6.2-11.8 12.8v345.2c0 6.4 2.2 9.6 10.4 12.8 21.2 8.2 45 13 69.6 13 100.2 0 182.4-76.8 191.2-175 13 5.4 27.2 8.4 42 8.4 60 0 108.8-48.8 108.8-108.8s-48.8-108.6-108.8-108.6z" /> +<glyph unicode="" glyph-name="skype" d="M425.6 922.6c-1.6 1-3.4 1.8-5 2.6-1.8-0.4-3.4-0.6-5.2-1l10.2-1.6zM36.8 539c-0.4-1.8-0.6-3.6-0.8-5.2 1-1.6 1.6-3.2 2.6-4.8l-1.8 10zM986.8 357.4c0.4 1.8 0.6 3.6 1 5.4-1 1.6-1.6 3.2-2.6 4.8l1.6-10.2zM592-23c1.6-1 3.4-1.8 5-2.6 1.8 0.4 3.6 0.6 5.4 0.8l-10.4 1.8zM987.8 362.8c-0.4-1.8-0.6-3.6-1-5.4l-1.8 10.4c1-1.8 1.8-3.4 2.8-5 5.2 28.8 8 58.2 8 87.6 0 65.2-12.8 128.6-38 188.2-24.4 57.6-59.2 109.4-103.6 153.8s-96.2 79.2-153.6 103.6c-59.6 25.2-123 38-188.2 38-30.8 0-61.6-2.8-91.6-8.6 0 0-0.2 0-0.2 0 1.6-0.8 3.4-1.6 5-2.6l-10.2 1.6c1.8 0.4 3.4 0.6 5.2 1-41.2 21.8-87.4 33.6-134.2 33.6-76.4 0-148.4-29.8-202.4-83.8s-83.8-126-83.8-202.4c0-48.6 12.6-96.6 36-138.8 0.4 1.8 0.6 3.6 0.8 5.2l1.8-10.2c-1 1.6-1.8 3.2-2.6 4.8-4.8-27.4-7.2-55.4-7.2-83.4 0-65.2 12.8-128.6 38-188.2 24.4-57.6 59.2-109.2 103.6-153.6s96.2-79.2 153.8-103.6c59.6-25.2 123-38 188.2-38 28.4 0 56.8 2.6 84.6 7.6-1.6 1-3.2 1.8-5 2.6l10.4-1.8c-1.8-0.4-3.6-0.6-5.4-0.8 42.8-24.2 91.4-37.2 140.8-37.2 76.4 0 148.4 29.8 202.4 83.8s83.8 126 83.8 202.4c-0.2 48.6-12.8 96.6-36.4 139.2zM514.2 154.2c-171.8 0-248.6 84.4-248.6 147.8 0 32.4 24 55.2 57 55.2 73.6 0 54.4-105.6 191.6-105.6 70.2 0 109 38.2 109 77.2 0 23.4-11.6 49.4-57.8 60.8l-152.8 38.2c-123 30.8-145.4 97.4-145.4 160 0 129.8 122.2 178.6 237 178.6 105.8 0 230.4-58.4 230.4-136.4 0-33.4-29-52.8-62-52.8-62.8 0-51.2 86.8-177.6 86.8-62.8 0-97.4-28.4-97.4-69s49.6-53.6 92.6-63.4l113.2-25.2c123.8-27.6 155.2-100 155.2-168 0-105.4-81-184.2-244.4-184.2z" /> +<glyph unicode="" glyph-name="reddit" d="M256 320c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 320c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM643.112 183.222c16.482 12.986 40.376 10.154 53.364-6.332s10.152-40.378-6.334-53.366c-45.896-36.158-115.822-59.524-178.142-59.524-62.322 0-132.248 23.366-178.144 59.522-16.486 12.99-19.32 36.882-6.332 53.368 12.99 16.482 36.882 19.318 53.366 6.332 26.422-20.818 78.722-43.222 131.11-43.222s104.688 22.404 131.112 43.222zM1024 448c0 70.692-57.308 128-128 128-48.116 0-89.992-26.57-111.852-65.82-65.792 35.994-145.952 59.246-233.28 64.608l76.382 171.526 146.194-42.2c13.152-37.342 48.718-64.114 90.556-64.114 53.020 0 96 42.98 96 96s-42.98 96-96 96c-36.56 0-68.342-20.442-84.554-50.514l-162.906 47.024c-18.224 5.258-37.538-3.722-45.252-21.052l-103.77-233.026c-85.138-5.996-163.262-29.022-227.636-64.236-21.864 39.25-63.766 65.804-111.882 65.804-70.692 0-128-57.308-128-128 0-52.312 31.402-97.254 76.372-117.102-8.070-24.028-12.372-49.104-12.372-74.898 0-176.73 200.576-320 448-320 247.422 0 448 143.27 448 320 0 25.792-4.3 50.862-12.368 74.886 44.97 19.85 76.368 64.802 76.368 117.114zM864 772c19.882 0 36-16.118 36-36s-16.118-36-36-36-36 16.118-36 36 16.118 36 36 36zM64 448c0 35.29 28.71 64 64 64 25.508 0 47.572-15.004 57.846-36.646-33.448-25.366-61.166-54.626-81.666-86.738-23.524 9.47-40.18 32.512-40.18 59.384zM512 12c-205.45 0-372 109.242-372 244s166.55 244 372 244c205.45 0 372-109.242 372-244s-166.55-244-372-244zM919.82 388.616c-20.5 32.112-48.218 61.372-81.666 86.738 10.276 21.642 32.338 36.646 57.846 36.646 35.29 0 64-28.71 64-64 0-26.872-16.656-49.914-40.18-59.384z" /> +<glyph unicode="" glyph-name="hackernews" d="M0 960v-1024h1024v1024h-1024zM544 376v-216h-64v216l-175 328h72.6l134.4-252 134.4 252h72.6l-175-328z" /> +<glyph unicode="" glyph-name="wikipedia" d="M966.8 726.4c0-3.2-1-6.2-3-9-2-2.6-4.2-4-6.8-4-20-2-36.4-8.4-49-19.2-12.8-10.8-25.8-31.8-39.2-62.4l-206.4-465.4c-1.4-4.4-5.2-6.4-11.4-6.4-4.8 0-8.6 2.2-11.4 6.4l-115.8 242-133.2-242c-2.8-4.4-6.4-6.4-11.4-6.4-6 0-9.8 2.2-11.8 6.4l-202.6 465.2c-12.6 28.8-26 49-40 60.4s-33.6 18.6-58.6 21.2c-2.2 0-4.2 1.2-6 3.4-2 2.2-2.8 4.8-2.8 7.8 0 7.6 2.2 11.4 6.4 11.4 18 0 37-0.8 56.8-2.4 18.4-1.6 35.6-2.4 51.8-2.4 16.4 0 36 0.8 58.4 2.4 23.4 1.6 44.2 2.4 62.4 2.4 4.4 0 6.4-3.8 6.4-11.4s-1.4-11.2-4-11.2c-18-1.4-32.4-6-42.8-13.8s-15.6-18-15.6-30.8c0-6.4 2.2-14.6 6.4-24.2l167.4-378.4 95.2 179.6-88.6 185.8c-16 33.2-29 54.6-39.2 64.2s-25.8 15.4-46.6 17.6c-2 0-3.6 1.2-5.4 3.4s-2.6 4.8-2.6 7.8c0 7.6 1.8 11.4 5.6 11.4 18 0 34.6-0.8 49.8-2.4 14.6-1.6 30-2.4 46.6-2.4 16.2 0 33.2 0.8 51.4 2.4 18.6 1.6 37 2.4 55 2.4 4.4 0 6.4-3.8 6.4-11.4s-1.2-11.2-4-11.2c-36.2-2.4-54.2-12.8-54.2-30.8 0-8 4.2-20.6 12.6-37.6l58.6-119 58.4 108.8c8 15.4 12.2 28.4 12.2 38.8 0 24.8-18 38-54.2 39.6-3.2 0-4.8 3.8-4.8 11.2 0 2.8 0.8 5.2 2.4 7.6s3.2 3.6 4.8 3.6c13 0 28.8-0.8 47.8-2.4 18-1.6 33-2.4 44.6-2.4 8.4 0 20.6 0.8 36.8 2 20.4 1.8 37.6 2.8 51.4 2.8 3.2 0 4.8-3.2 4.8-9.6 0-8.6-3-13-8.8-13-21-2.2-38-8-50.8-17.4s-28.8-30.8-48-64.4l-78.2-143.2 105.2-214.4 155.4 361.4c5.4 13.2 8 25.4 8 36.4 0 26.4-18 40.4-54.2 42.2-3.2 0-4.8 3.8-4.8 11.2 0 7.6 2.4 11.4 7.2 11.4 13.2 0 28.8-0.8 47-2.4 16.8-1.6 30.8-2.4 42-2.4 12 0 25.6 0.8 41.2 2.4 16.2 1.6 30.8 2.4 43.8 2.4 4 0 6-3.2 6-9.6z" /> +<glyph unicode="" glyph-name="linkedin" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 128h-128v448h128v-448zM320 640c-35.4 0-64 28.6-64 64s28.6 64 64 64c35.4 0 64-28.6 64-64s-28.6-64-64-64zM832 128h-128v256c0 35.4-28.6 64-64 64s-64-28.6-64-64v-256h-128v448h128v-79.4c26.4 36.2 66.8 79.4 112 79.4 79.6 0 144-71.6 144-160v-288z" /> +<glyph unicode="" glyph-name="linkedin2" d="M384 576h177.106v-90.782h2.532c24.64 44.194 84.958 90.782 174.842 90.782 186.946 0 221.52-116.376 221.52-267.734v-308.266h-184.61v273.278c0 65.184-1.334 149.026-96.028 149.026-96.148 0-110.82-70.986-110.82-144.292v-278.012h-184.542v576zM64 576h192v-576h-192v576zM256 736c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96z" /> +<glyph unicode="" glyph-name="lastfm" d="M451.6 193.8l-37.6 102c0 0-61-68-152.4-68-81 0-138.4 70.4-138.4 183 0 144.2 72.8 195.8 144.2 195.8 103.2 0 136-66.8 164.2-152.4l37.6-117.2c37.6-113.8 108-205.2 310.8-205.2 145.4 0 244 44.6 244 161.8 0 95-54 144.2-154.8 167.8l-75 16.4c-51.6 11.8-66.8 32.8-66.8 68 0 39.8 31.6 63.4 83.2 63.4 56.4 0 86.8-21.2 91.4-71.6l117.2 14c-9.4 105.6-82.2 149-201.8 149-105.6 0-208.8-39.8-208.8-167.8 0-79.8 38.8-130.2 136-153.6l79.8-18.8c59.8-14 79.8-38.8 79.8-72.8 0-43.4-42.2-61-122-61-118.4 0-167.8 62.2-195.8 147.8l-38.8 117.2c-49 152.6-127.6 208.8-283.6 208.8-172.4 0-264-109-264-294.4 0-178.2 91.4-274.4 255.8-274.4 132.4 0 195.8 62.2 195.8 62.2v0z" /> +<glyph unicode="" glyph-name="lastfm2" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM746.6 199.2c-177.6 0-239.2 80-272 179.6l-32.8 102.6c-24.6 75-53.4 133.4-143.6 133.4-62.6 0-126.2-45.2-126.2-171.4 0-98.6 50.2-160.2 121.2-160.2 80 0 133.4 59.6 133.4 59.6l32.8-89.2c0 0-55.4-54.4-171.4-54.4-144 0-224 84-224 240 0 162.2 80 257.6 231 257.6 136.6 0 205.2-49.2 248.4-182.6l33.8-102.6c24.6-75 67.8-129.4 171.4-129.4 69.8 0 106.8 15.4 106.8 53.4 0 29.8-17.4 51.4-69.8 63.6l-69.8 16.4c-85.2 20.6-119 64.6-119 134.4 0 111.8 90.4 146.8 182.6 146.8 104.6 0 168.4-38 176.6-130.4l-102.6-12.4c-4.2 44.2-30.8 62.6-80 62.6-45.2 0-72.8-20.6-72.8-55.4 0-30.8 13.4-49.2 58.4-59.6l65.6-14.4c88.2-20.6 135.4-63.6 135.4-146.8 0-102.2-86.2-141.2-213.4-141.2z" /> +<glyph unicode="" glyph-name="delicious" d="M0 960v-1024h1024v1024h-1024zM512 0v448h-448v448h448v-448h448v-448h-448z" /> +<glyph unicode="" glyph-name="stumbleupon" d="M512 640c-35.2 0-64-28.8-64-64v-256c0-105.8-86.2-192-192-192s-192 86.2-192 192v128h128v-128c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 105.8 86.2 192 192 192s192-86.2 192-178v-62l-82-24-46 24v62c0 21.2-28.8 50-64 50zM960 320c0-105.8-86.2-192-192-192s-192 86.2-192 206v124l46-24 82 24v-124c0-49.2 28.8-78 64-78s64 28.8 64 64v128h128v-128z" /> +<glyph unicode="" glyph-name="stumbleupon2" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM512 640c-35.29 0-64-28.71-64-64v-256c0-105.872-86.13-192-192-192s-192 86.128-192 192v128h128v-128c0-35.29 28.71-64 64-64s64 28.71 64 64v256c0 105.87 86.13 192 192 192s192-86.13 192-178v-62l-82-24-46 24v62c0 21.29-28.71 50-64 50zM960 320c0-105.872-86.13-192-192-192s-192 86.128-192 206v124l46-24 82 24v-124c0-49.29 28.71-78 64-78s64 28.71 64 64v128h128v-128z" /> +<glyph unicode="" glyph-name="stackoverflow" d="M1024 320v-384h-1024v384h128v-256h768v256zM192 256h640v-128h-640zM207.152 394.534l27.698 124.964 624.832-138.496-27.698-124.964zM279.658 651.442l54.092 116.006 580.032-270.464-54.092-116.006zM991.722 598.524l-77.922-101.55-507.746 389.608 56.336 73.418h58.244z" /> +<glyph unicode="" glyph-name="pinterest" d="M512 891.6c-245 0-443.6-198.6-443.6-443.6 0-188 117-348.4 282-413-3.8 35-7.4 89 1.6 127.2 8 34.6 52 220.4 52 220.4s-13.2 26.6-13.2 65.8c0 61.6 35.8 107.8 80.2 107.8 37.8 0 56.2-28.4 56.2-62.4 0-38-24.2-95-36.8-147.6-10.6-44.2 22-80.2 65.6-80.2 78.8 0 139.4 83.2 139.4 203.2 0 106.2-76.4 180.4-185.2 180.4-126.2 0-200.2-94.6-200.2-192.6 0-38.2 14.6-79 33-101.2 3.6-4.4 4.2-8.2 3-12.8-3.4-14-10.8-44.2-12.4-50.4-2-8.2-6.4-9.8-14.8-6-55.4 25.8-90 106.8-90 171.8 0 140 101.6 268.4 293 268.4 153.8 0 273.4-109.6 273.4-256.2 0-152.8-96.4-276-230.2-276-45 0-87.2 23.4-101.6 51 0 0-22.2-84.6-27.6-105.4-10-38.6-37-86.8-55.2-116.2 41.6-12.8 85.6-19.8 131.4-19.8 245 0 443.6 198.6 443.6 443.6 0 245.2-198.6 443.8-443.6 443.8z" /> +<glyph unicode="" glyph-name="pinterest2" d="M512 960c-282.4 0-512-229.6-512-512s229.6-512 512-512 512 229.6 512 512-229.6 512-512 512zM512 4.4c-45.8 0-89.8 7-131.4 19.8 18 29.4 45.2 77.8 55.2 116.2 5.4 20.8 27.6 105.4 27.6 105.4 14.4-27.6 56.8-51 101.6-51 133.8 0 230.2 123 230.2 276 0 146.6-119.6 256.2-273.4 256.2-191.4 0-293-128.6-293-268.4 0-65 34.6-146 90-171.8 8.4-4 12.8-2.2 14.8 6 1.4 6.2 9 36.2 12.4 50.4 1 4.4 0.6 8.4-3 12.8-18.4 22.2-33 63.2-33 101.2 0 97.8 74 192.6 200.2 192.6 109 0 185.2-74.2 185.2-180.4 0-120-60.6-203.2-139.4-203.2-43.6 0-76.2 36-65.6 80.2 12.6 52.8 36.8 109.6 36.8 147.6 0 34-18.2 62.4-56.2 62.4-44.6 0-80.2-46-80.2-107.8 0-39.2 13.2-65.8 13.2-65.8s-44-185.8-52-220.4c-9-38.4-5.4-92.2-1.6-127.2-165 64.4-282 224.8-282 412.8 0 245 198.6 443.6 443.6 443.6s443.6-198.6 443.6-443.6c0-245-198.6-443.6-443.6-443.6z" /> +<glyph unicode="" glyph-name="xing" d="M928 960h-832c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM312.6 294h-110.6c-6.6 0-11.6 3-14.4 7.6-3 4.8-3 10.8 0 17l117.6 207.6c0.2 0.2 0.2 0.4 0 0.6l-74.8 129.6c-3 6.2-3.6 12.2-0.6 17 2.8 4.6 8.4 7 15.2 7h110.8c17 0 25.4-11 30.8-20.8 0 0 75.6-132 76.2-132.8-4.4-8-119.6-211.4-119.6-211.4-6-10.4-14-21.4-30.6-21.4zM836.4 807.8l-245.2-433.6c-0.2-0.2-0.2-0.6 0-0.8l156.2-285.2c3-6.2 3.2-12.4 0.2-17.2-2.8-4.6-8-7-14.8-7h-110.6c-17 0-25.4 11.2-31 21 0 0-157 288-157.4 288.8 7.8 13.8 246.4 437 246.4 437 6 10.6 13.2 21 29.6 21h112.2c6.6 0 12-2.6 14.8-7 2.8-4.6 2.8-10.8-0.4-17z" /> +<glyph unicode="" glyph-name="xing2" d="M155.6 757.8c-8.8 0-16.4-3.2-20.2-9.2-3.8-6.4-3.2-14.4 0.8-22.6l99.8-172.8c0.2-0.4 0.2-0.6 0-0.8l-156.8-277.2c-4-8.2-3.8-16.4 0-22.6 3.8-6 10.4-10 19.2-10h147.6c22 0 32.8 15 40.2 28.6 0 0 153.4 271.4 159.4 282-0.6 1-101.6 177-101.6 177-7.4 13-18.4 27.6-41.2 27.6h-147.2zM776 960c-22 0-31.6-13.8-39.6-28.2 0 0-318.2-564.2-328.6-582.8 0.6-1 209.8-385 209.8-385 7.4-13 18.6-28.2 41.2-28.2h147.6c8.8 0 15.8 3.4 19.6 9.4 4 6.4 3.8 14.6-0.4 22.8l-208 380.6c-0.2 0.4-0.2 0.6 0 1l327 578.2c4 8.2 4.2 16.4 0.4 22.8-3.8 6-10.8 9.4-19.6 9.4h-149.4z" /> +<glyph unicode="" glyph-name="flattr" d="M367.562 960c-243.358 0-367.562-140.162-367.562-401.856v0-549.034l238.39 238.628v278.896c0 108.416 28.73 177.406 125.118 192.894v0c33.672 6.584 103.75 4.278 148.306 4.278v0-165.596c0-1.51 0.208-4.206 0.594-5.586v0c1.87-6.704 7.93-11.616 15.116-11.63v0c4.062-0.008 7.868 2.104 11.79 5.97v0l413.122 412.974-584.874 0.062zM785.61 648.254v-278.89c0-108.414-28.736-177.414-125.116-192.894v0c-33.672-6.582-103.756-4.278-148.312-4.278v0 165.594c0 1.5-0.206 4.204-0.594 5.582v0c-1.864 6.712-7.922 11.622-15.112 11.63v0c-4.064 0.008-7.866-2.112-11.79-5.966v0l-413.124-412.966 584.874-0.066c243.354 0 367.564 140.168 367.564 401.852v0 549.028l-238.39-238.626z" /> +<glyph unicode="" glyph-name="foursquare" d="M851.564 869.91c-12.060 16.404-31.204 26.090-51.564 26.090h-608c-35.346 0-64-28.654-64-64v-768c0-25.884 15.592-49.222 39.508-59.128 7.918-3.28 16.234-4.874 24.478-4.874 16.656 0 33.026 6.504 45.268 18.748l237.256 237.254h165.49c27.992 0 52.736 18.192 61.086 44.91l160 512c6.074 19.432 2.538 40.596-9.522 57zM672.948 640h-224.948c-35.346 0-64-28.654-64-64s28.654-64 64-64h184.948l-40-128h-144.948c-16.974 0-33.252-6.742-45.254-18.746l-146.746-146.744v549.49h456.948l-40-128z" /> +<glyph unicode="" glyph-name="yelp" d="M608.876 306.532c-17.282-17.426-2.668-49.128-2.668-49.128l130.090-217.218c0 0 21.36-28.64 39.864-28.64 18.59 0 36.954 15.27 36.954 15.27l102.844 147.008c0 0 10.36 18.546 10.598 34.792 0.372 23.106-34.454 29.434-34.454 29.434l-243.488 78.192c-0.002-0.004-23.858 6.328-39.74-9.71zM596.532 416.016c12.46-21.128 46.828-14.972 46.828-14.972l242.938 71.006c0 0 33.106 13.466 37.832 31.418 4.64 17.954-5.46 39.622-5.46 39.622l-116.098 136.752c0 0-10.062 17.292-30.938 19.032-23.016 1.958-37.18-25.898-37.18-25.898l-137.27-216.010c0-0.004-12.134-21.516-0.652-40.95zM481.754 500.232c28.608 7.044 33.148 48.604 33.148 48.604l-1.944 345.87c0 0-4.314 42.666-23.486 54.232-30.070 18.242-38.982 8.718-47.596 7.444l-201.696-74.944c0 0-19.754-6.536-30.042-23.018-14.69-23.352 14.928-57.544 14.928-57.544l209.644-285.756c0 0 20.69-21.396 47.044-14.888zM431.944 360.262c0.722 26.676-32.030 42.7-32.030 42.7l-216.796 109.524c0 0-32.126 13.246-47.722 4.016-11.95-7.060-22.536-19.84-23.572-31.134l-14.12-173.812c0 0-2.116-30.114 5.69-43.82 11.054-19.442 47.428-5.902 47.428-5.902l253.096 55.942c9.832 6.61 27.074 7.204 28.026 42.486zM494.88 266.458c-21.726 11.156-47.724-11.95-47.724-11.95l-169.468-186.566c0 0-21.144-28.528-15.768-46.050 5.066-16.418 13.454-24.578 25.318-30.328l170.192-53.726c0 0 20.634-4.286 36.258 0.242 22.18 6.43 18.094 41.152 18.094 41.152l3.848 252.602c-0.002-0.002-0.868 24.334-20.75 34.624z" /> +<glyph unicode="" glyph-name="paypal" d="M930 651.4c-47.8-212.2-195.4-324.2-428-324.2h-77.4l-53.8-341.6h-64.8l-3.4-22c-2.2-14.6 9-27.6 23.6-27.6h165.6c19.6 0 36.2 14.2 39.4 33.6l1.6 8.4 31.2 197.8 2 10.8c3 19.4 19.8 33.6 39.4 33.6h24.6c160.4 0 286 65.2 322.8 253.6 13.8 71.6 8.6 132.4-22.8 177.6zM831 882.8c-47.4 54-133.2 77.2-242.8 77.2h-318.2c-22.4 0-41.6-16.2-45-38.4l-132.6-840.4c-2.6-16.6 10.2-31.6 27-31.6h196.6l49.4 313-1.6-9.8c3.4 22.2 22.4 38.4 44.8 38.4h93.4c183.4 0 327 74.4 369 290 1.2 6.4 2.4 12.6 3.2 18.6 12.4 79.6 0 134-43.2 183z" /> +<glyph unicode="" glyph-name="chrome" d="M258.278 513.458l-146.532 253.802c93.818 117.464 238.234 192.74 400.254 192.74 187.432 0 351.31-100.736 440.532-251h-417.77c-7.504 0.65-15.092 1-22.762 1-121.874 0-224.578-83.644-253.722-196.542zM695.306 635h293.46c22.74-57.93 35.234-121.004 35.234-187 0-280.826-226.1-508.804-506.186-511.926l209.394 362.678c29.48 42.378 46.792 93.826 46.792 149.248 0 73.17-30.164 139.42-78.694 187zM326 448c0 102.56 83.44 186 186 186s186-83.44 186-186c0-102.56-83.44-186-186-186s-186 83.44-186 186zM582.182 195.558l-146.578-253.878c-246.532 36.884-435.604 249.516-435.604 506.32 0 91.218 23.884 176.846 65.696 251.024l209.030-362.054c41.868-89.112 132.476-150.97 237.274-150.97 24.3 0 47.836 3.34 70.182 9.558z" /> +<glyph unicode="" glyph-name="firefox" d="M1022.526 625.86l-11.86-76.080c0 0-16.954 140.856-37.732 193.514-31.846 80.688-46.014 80.040-46.108 79.922 21.33-54.204 17.462-83.324 17.462-83.324s-37.792 102.998-137.712 135.768c-110.686 36.282-170.57 26.364-177.488 24.486-1.050 0.008-2.064 0.010-3.030 0.010 0.818-0.062 1.612-0.146 2.426-0.212-0.034-0.020-0.090-0.042-0.082-0.052 0.45-0.548 122.306-21.302 143.916-50.996 0 0-51.76 0-103.272-14.842-2.328-0.666 189.524-23.964 228.746-215.674 0 0-21.030 43.876-47.040 51.328 17.106-52.036 12.714-150.776-3.576-199.85-2.096-6.312-4.24 27.282-36.328 41.75 10.28-73.646-0.616-190.456-51.708-222.632-3.982-2.504 32.030 115.31 7.242 69.762-142.708-218.802-311.404-100.972-387.248-49.11 38.866-8.462 112.654 1.318 145.314 25.612 0.042 0.030 0.078 0.056 0.118 0.086 35.468 24.252 56.472 41.964 75.334 37.772 18.874-4.214 31.438 14.726 16.78 31.53-14.676 16.838-50.314 39.978-98.524 27.366-34-8.904-76.134-46.522-140.448-8.432-49.364 29.25-54.012 53.546-54.45 70.376 1.218 5.966 2.754 11.536 4.576 16.624 5.682 15.87 22.912 20.658 32.494 24.438 16.256-2.792 30.262-7.862 44.968-15.406 0.19 4.894 0.252 11.39-0.018 18.76 1.41 2.802 0.538 11.252-1.722 21.58-1.302 10.308-3.42 20.974-6.752 30.692 0.012 0.002 0.020 0.010 0.030 0.014 0.056 0.018 0.108 0.040 0.156 0.070 0.078 0.044 0.146 0.112 0.208 0.19 0.012 0.020 0.030 0.034 0.044 0.052 0.082 0.124 0.154 0.272 0.198 0.466 1.020 4.618 12.022 13.524 25.718 23.1 12.272 8.58 26.702 17.696 38.068 24.752 10.060 6.248 17.72 10.882 19.346 12.098 0.618 0.466 1.358 1.012 2.164 1.636 0.15 0.116 0.3 0.232 0.454 0.354 0.094 0.074 0.19 0.148 0.286 0.226 5.41 4.308 13.484 12.448 15.178 29.578 0.004 0.042 0.010 0.080 0.012 0.122 0.050 0.504 0.092 1.014 0.13 1.534 0.028 0.362 0.050 0.726 0.072 1.096 0.014 0.284 0.032 0.566 0.044 0.856 0.030 0.674 0.050 1.364 0.060 2.064 0 0.040 0.002 0.076 0.004 0.116 0.022 1.658-0.006 3.386-0.104 5.202-0.054 1.014-0.126 1.93-0.298 2.762-0.008 0.044-0.018 0.092-0.028 0.136-0.018 0.082-0.036 0.164-0.058 0.244-0.036 0.146-0.076 0.292-0.122 0.43-0.006 0.018-0.010 0.032-0.016 0.046-0.052 0.16-0.112 0.314-0.174 0.464-0.004 0.006-0.004 0.010-0.006 0.016-1.754 4.108-8.32 5.658-35.442 6.118-0.026 0.002-0.050 0.002-0.076 0.002v0c-11.066 0.188-25.538 0.194-44.502 0.118-33.25-0.134-51.628 32.504-57.494 45.132 8.040 44.46 31.276 76.142 69.45 97.626 0.722 0.406 0.58 0.742-0.274 0.978 7.464 4.514-90.246 0.124-135.186-57.036-39.888 9.914-74.654 9.246-104.616 2.214-5.754 0.162-12.924 0.88-21.434 2.652-19.924 18.056-48.448 51.402-49.976 91.208 0 0-0.092-0.072-0.252-0.204-0.020 0.382-0.056 0.76-0.072 1.142 0 0-60.716-46.664-51.628-173.882-0.022-2.036-0.064-3.986-0.12-5.874-16.432-22.288-24.586-41.020-25.192-45.156-14.56-29.644-29.334-74.254-41.356-141.98 0 0 8.408 26.666 25.284 56.866-12.412-38.022-22.164-97.156-16.436-185.856 0 0 1.514 19.666 6.874 47.994 4.186-55.010 22.518-122.924 68.858-202.788 88.948-153.32 225.67-230.74 376.792-242.616 26.836-2.212 54.050-2.264 81.424-0.186 2.516 0.178 5.032 0.364 7.55 0.574 30.964 2.174 62.134 6.852 93.238 14.366 425.172 102.798 378.942 616.198 378.942 616.198z" /> +<glyph unicode="" glyph-name="IE" d="M734.202 331.17h236.050c1.82 16.37 2.548 33.098 2.548 50.196 0 80.224-21.534 155.468-59.124 220.266 38.88 103.308 37.492 190.988-14.556 243.39-49.496 49.28-182.29 41.28-332.412-25.198-11.104 0.84-22.318 1.272-33.638 1.272-206.048 0-378.926-141.794-426.708-332.85 64.638 82.754 132.638 142.754 223.478 186.448-8.26-7.74-56.454-55.652-64.56-63.764-239.548-239.478-315.090-552.306-233.806-633.604 61.786-61.774 173.758-51.342 302.376 11.648 59.806-30.458 127.5-47.63 199.218-47.63 193.134 0 356.804 124.316 416.090 297.448h-237.868c-32.734-60.382-96.748-101.48-170.218-101.48-73.468 0-137.484 41.098-170.216 101.48-14.55 27.274-22.914 58.554-22.914 91.656v0.722h386.26zM348.302 447.196c5.456 97.11 86.2 174.584 184.766 174.584s179.312-77.472 184.766-174.584h-369.532zM896.966 796.192c33.526-33.88 32.688-96.214 4.012-174.022-49.136 74.908-120.518 133.936-204.792 167.64 90.106 38.638 163.406 43.756 200.78 6.382zM93.482-7.256c-42.782 42.796-29.884 132.618 25.23 240.832 34.308-96.27 101.156-177.090 187.336-229.154-95.43-43.318-173.536-50.674-212.566-11.678z" /> +<glyph unicode="" glyph-name="edge" d="M15.4 505.4c30 236.8 191.6 451.6 481.2 454.6 174.8-3.4 318.6-82.6 404.2-233.6 43-78.8 56.4-161.6 59.2-253v-107.4h-642.6c3-265 390-256 556.6-139.2v-215.8c-97.6-58.6-319-111-490.4-43.6-146 54.8-250 207.6-249.4 354.6-4.8 190.6 94.8 316.8 249.4 388.6-32.8-40.6-57.8-85.4-70.8-163h362.8c0 0 21.2 216.8-205.4 216.8-213.6-7.4-367.6-131.6-454.8-259v0z" /> +<glyph unicode="" glyph-name="safari" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM958.4 487.2l-1 10.6c0.2-3.6 0.6-7 1-10.6zM888.4 691.2l-7.2 10.8c2.4-3.6 4.8-7.2 7.2-10.8zM860.6 729.4l-4.4 5.4c1.6-1.8 3-3.6 4.4-5.4zM798.6 792.4l-5.4 4.4c2-1.6 3.6-3 5.4-4.4zM766 817.2l-10.8 7.2c3.6-2.4 7.2-4.8 10.8-7.2zM561.8 893.2l-10.8 1c3.6-0.2 7.2-0.6 10.8-1zM472.8 894.4l-10.8-1c3.6 0.2 7.2 0.6 10.8 1zM268.8 824.4l-10.8-7.2c3.6 2.4 7.2 4.8 10.8 7.2zM230.6 796.6l-5.2-4.2c1.8 1.4 3.4 2.8 5.2 4.2zM167.6 734.6l-4.4-5.4c1.6 1.8 3 3.6 4.4 5.4zM142.8 702l-7.2-10.8c2.4 3.6 4.8 7.2 7.2 10.8zM66.8 497.8l-1-10.8c0.2 3.6 0.6 7.2 1 10.8zM65.6 408.8l1-10.8c-0.2 3.6-0.6 7.2-1 10.8zM135.6 205l7.2-10.8c-2.4 3.4-4.8 7-7.2 10.8zM144 192.4l79.8 53.4-8.8 13.4-79.8-53.4c-36.2 56.2-60 120.8-68 190.4l47.8 4.8-1.6 16-47.8-4.8c-0.8 9.2-1.2 18.6-1.4 28h96v16h-96c0.2 9.4 0.6 18.6 1.4 28l47.8-4.6 1.6 16-47.8 4.6c8 69.6 32 134.2 68.2 190.4l79.8-53.4 8.8 13.4-80 53c5.4 7.6 10.8 15.2 16.6 22.4l37-30.4 10.2 12.4-37 30.4c6 7.2 12.4 14 18.8 20.8l67.8-67.8 11.4 11.4-67.8 67.8c6.8 6.4 13.6 12.8 20.6 18.8l30.4-37.2 12.4 10.2-30.4 37c7.4 5.8 14.8 11.4 22.4 16.8l53.4-79.8 13.4 8.8-53.4 79.8c56.2 36.2 120.8 60 190.4 68l4.8-47.8 16 1.6-4.8 47.8c9.2 0.8 18.6 1.2 28 1.4v-96h16v96c9.4-0.2 18.6-0.6 28-1.4l-4.6-47.8 16-1.6 4.6 47.8c69.6-8 134.2-32 190.4-68.2l-53.4-79.8 13.4-8.8 53.4 79.8c7.6-5.4 15.2-10.8 22.4-16.6l-30.4-37 12.4-10.2 30.4 37c7.2-6 14-12.4 20.8-18.8l-25.6-25-350-233.4-233.4-350-25-25c-6.4 6.8-12.8 13.6-18.8 20.6l37 30.4-10.2 12.4-37-30.4c-5.8 7.2-11.2 14.8-16.6 22.4zM167.6 161.4c-1.4 1.8-2.8 3.4-4.2 5.2l4.2-5.2zM225.4 103.6l5.2-4.2c-1.8 1.4-3.4 2.8-5.2 4.2zM258 79l10.8-7.2c-3.6 2.2-7.2 4.6-10.8 7.2zM462.2 2.8l10.8-1c-3.6 0.2-7.2 0.6-10.8 1zM551.2 1.6l10.6 1c-3.6-0.2-7-0.6-10.6-1zM755.2 71.6l10.8 7.2c-3.6-2.4-7.2-4.8-10.8-7.2zM793.4 99.4l5.4 4.4c-1.8-1.6-3.6-3-5.4-4.4zM828.4 130.8l0.8 0.8c-0.2-0.2-0.6-0.6-0.8-0.8zM856.4 161.4l4.4 5.4c-1.6-1.8-3-3.6-4.4-5.4zM863.4 170l-37 30.4-10.2-12.4 37-30.4c-6-7.2-12.4-14-18.8-20.8l-67.8 67.8-11.4-11.4 67.8-67.8c-6.8-6.4-13.6-12.8-20.6-18.8l-30.4 37.2-12.4-10.2 30.4-37c-7.4-5.8-14.8-11.4-22.4-16.8l-53.4 79.8-13.4-8.8 53.4-79.8c-56.2-36.2-120.8-60-190.4-68l-4.8 47.8-16-1.6 4.8-47.8c-9.2-0.8-18.6-1.2-28-1.4v96h-16v-96c-9.4 0.2-18.6 0.6-28 1.4l4.6 47.8-16 1.6-4.6-47.8c-69.6 8-134.2 32-190.4 68.2l53.4 79.8-13.4 8.8-53-79.8c-7.6 5.4-15.2 10.8-22.4 16.6l30.4 37-12.4 10.2-30.4-37c-7.2 6-14 12.4-20.8 18.8l25.2 25 350 233.4 233.4 350 25 25c6.4-6.8 12.8-13.6 18.8-20.6l-37-30.4 10.2-12.4 37 30.4c5.8-7.4 11.4-14.8 16.8-22.4l-79.8-53.4 8.8-13.4 79.8 53.4c36.2-56.2 60-120.8 68-190.4l-47.8-4.8 1.6-16 47.8 4.8c0.8-9.2 1.2-18.6 1.4-28h-96v-16h96c-0.2-9.4-0.6-18.6-1.4-28l-47.8 4.6-1.6-16 47.8-4.6c-8-69.6-32-134.2-68.2-190.4l-79.8 53.4-8.8-13.4 79.8-53.4c-5.2-7.2-10.8-14.6-16.6-22zM958.4 409c-0.4-3.6-0.6-7.2-1-10.8l1 10.8zM888.4 204.8c-2.4-3.6-4.8-7.2-7.2-10.8l7.2 10.8zM432.535 888.925l18.73-94.157-15.693-3.122-18.73 94.157 15.693 3.122zM591.656 7.050l-18.73 94.157 15.693 3.122 18.73-94.157-15.693-3.122zM389.628 879.11l13.939-45.931-15.31-4.646-13.939 45.931 15.31 4.646zM634.434 17.113l-13.939 45.931 15.31 4.646 13.939-45.931-15.31-4.646zM348.014 864.901l36.739-88.694-14.782-6.123-36.739 88.694 14.782 6.123zM676.123 31.035l-36.739 88.694 14.782 6.123 36.739-88.694-14.782-6.123zM293.62 839.341l14.11 7.544 22.632-42.331-14.11-7.544-22.632 42.331zM730.101 56.711l-14.11-7.544-22.632 42.331 14.11 7.544 22.632-42.331zM120.601 666.174l42.336-22.622-7.541-14.112-42.336 22.622 7.541 14.112zM903.244 229.805l-42.336 22.622 7.541 14.112 42.336-22.622-7.541-14.112zM183.811 575.377l-88.694 36.739 6.123 14.782 88.694-36.739-6.123-14.782zM840.32 320.699l88.694-36.739-6.123-14.782-88.694 36.739 6.123 14.782zM85.543 585.613l45.936-13.93-4.643-15.312-45.936 13.93 4.643 15.312zM938.308 310.333l-45.936 13.93 4.643 15.312 45.936-13.93-4.643-15.312zM74.069 543.218l94.157-18.73-3.122-15.693-94.157 18.73 3.122 15.693zM949.741 352.757l-94.157 18.73 3.122 15.693 94.157-18.73-3.122-15.693zM70.965 368.452l94.157 18.73 3.122-15.693-94.157-18.73-3.122 15.693zM952.842 527.573l-94.157-18.73-3.122 15.693 94.157 18.73 3.122-15.693zM80.974 325.486l45.931 13.939 4.646-15.31-45.931-13.939-4.646 15.31zM942.969 570.293l-45.931-13.939-4.646 15.31 45.931 13.939 4.646-15.31zM101.142 269.088l-6.123 14.782 88.694 36.739 6.123-14.782-88.694-36.739zM922.794 626.769l6.122-14.782-88.694-36.73-6.122 14.782 88.694 36.73zM120.824 229.733l-7.544 14.11 42.331 22.632 7.544-14.11-42.331-22.632zM903.455 666.215l7.544-14.11-42.331-22.632-7.544 14.11 42.331 22.632zM307.878 49.154l-14.11 7.542 22.627 42.331 14.11-7.542-22.627-42.331zM716.073 846.926l14.112-7.541-22.622-42.336-14.112 7.541 22.622 42.336zM333.267 37.201l36.739 88.694 14.782-6.123-36.739-88.694-14.782 6.123zM690.884 858.89l-36.739-88.694-14.782 6.123 36.739 88.694 14.782-6.123zM389.634 16.972l-15.31 4.645 13.934 45.931 15.31-4.645-13.934-45.931zM634.349 879.118l15.312-4.642-13.925-45.936-15.312 4.642 13.925 45.936zM432.472 7.161l-15.693 3.122 18.73 94.157 15.693-3.122-18.73-94.157zM591.536 889.031l15.693-3.122-18.73-94.157-15.693 3.122 18.73 94.157z" /> +<glyph unicode="" glyph-name="opera" d="M1024 448v0 0c0-151.6-66-288-170.8-381.6-131.4-64-253.8-19.2-294.2 8.8 129 28.2 226.4 184.2 226.4 372.8s-97.4 344.6-226.4 373c40.6 28 163 72.8 294.2 8.8 104.8-93.8 170.8-230.2 170.8-381.8v0 0zM343.4 736.6c-56.6-66.8-93.2-165.6-95.6-276.6 0-0.2 0-23.8 0-24.2 2.4-110.8 39.2-209.6 95.8-276.4 73.4-95.4 182.6-155.8 304.6-155.8 75 0 145.2 22.8 205.2 62.6-90.8-81-210.4-130.2-341.4-130.2-8.2 0-16.4 0.2-24.4 0.6-271.4 12.8-487.6 236.8-487.6 511.4 0 282.8 229.2 512 512 512 0.6 0 1.2 0 2 0 130.4-0.4 249.2-49.6 339.4-130.4-60 39.8-130.2 62.8-205.2 62.8-122 0-231.2-60.4-304.8-155.8z" /> +<glyph unicode="" glyph-name="file-pdf" d="M842.012 370.52c-13.648 13.446-43.914 20.566-89.972 21.172-31.178 0.344-68.702-2.402-108.17-7.928-17.674 10.198-35.892 21.294-50.188 34.658-38.462 35.916-70.568 85.772-90.576 140.594 1.304 5.12 2.414 9.62 3.448 14.212 0 0 21.666 123.060 15.932 164.666-0.792 5.706-1.276 7.362-2.808 11.796l-1.882 4.834c-5.894 13.592-17.448 27.994-35.564 27.208l-10.916 0.344c-20.202 0-36.664-10.332-40.986-25.774-13.138-48.434 0.418-120.892 24.98-214.738l-6.288-15.286c-17.588-42.876-39.63-86.060-59.078-124.158l-2.528-4.954c-20.46-40.040-39.026-74.028-55.856-102.822l-17.376-9.188c-1.264-0.668-31.044-16.418-38.028-20.644-59.256-35.38-98.524-75.542-105.038-107.416-2.072-10.17-0.53-23.186 10.014-29.212l16.806-8.458c7.292-3.652 14.978-5.502 22.854-5.502 42.206 0 91.202 52.572 158.698 170.366 77.93 25.37 166.652 46.458 244.412 58.090 59.258-33.368 132.142-56.544 178.142-56.544 8.168 0 15.212 0.78 20.932 2.294 8.822 2.336 16.258 7.368 20.792 14.194 8.926 13.432 10.734 31.932 8.312 50.876-0.72 5.622-5.21 12.574-10.068 17.32zM211.646 145.952c7.698 21.042 38.16 62.644 83.206 99.556 2.832 2.296 9.808 8.832 16.194 14.902-47.104-75.124-78.648-105.066-99.4-114.458zM478.434 760.314c13.566 0 21.284-34.194 21.924-66.254s-6.858-54.56-16.158-71.208c-7.702 24.648-11.426 63.5-11.426 88.904 0 0-0.566 48.558 5.66 48.558v0zM398.852 322.506c9.45 16.916 19.282 34.756 29.33 53.678 24.492 46.316 39.958 82.556 51.478 112.346 22.91-41.684 51.444-77.12 84.984-105.512 4.186-3.542 8.62-7.102 13.276-10.65-68.21-13.496-127.164-29.91-179.068-49.862v0zM828.902 326.348c-4.152-2.598-16.052-4.1-23.708-4.1-24.708 0-55.272 11.294-98.126 29.666 16.468 1.218 31.562 1.838 45.102 1.838 24.782 0 32.12 0.108 56.35-6.072 24.228-6.18 24.538-18.734 20.382-21.332v0zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="file-openoffice" d="M690.22 488.318c-60.668 28.652-137.97 34.42-194.834-6.048 69.14 6.604 144.958-4.838 195.106-57.124 48 55.080 124.116 65.406 192.958 59.732-57.488 38.144-133.22 33.024-193.23 3.44v0zM665.646 354.25c-68.376 1.578-134.434-23.172-191.1-60.104-107.176 45.588-242.736 37.124-334.002-38.982 26.33 0.934 52.006 7.446 78.056 10.792 95.182 9.488 196.588-14.142 268.512-79.824 29.772 43.542 71.644 78.242 119.652 99.922 63.074 30.52 134.16 33.684 202.82 34.52-41.688 28.648-94.614 33.954-143.938 33.676zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="file-word" d="M639.778 484.108h44.21l-51.012-226.178-66.324 318.010h-106.55l-77.114-318.010-57.816 318.010h-111.394l113.092-511.88h108.838l76.294 302.708 68.256-302.708h100.336l129.628 511.88h-170.446v-91.832zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="file-excel" d="M743.028 576h-135.292l-95.732-141.032-95.742 141.032h-135.29l162.162-242.464-182.972-269.536h251.838v91.576h-50.156l50.156 74.994 111.396-166.57h140.444l-182.976 269.536 162.164 242.464zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> +<glyph unicode="" glyph-name="libreoffice" d="M534.626 937.372c-12.444 12.444-37.026 22.628-54.626 22.628h-384c-17.6 0-32-14.4-32-32v-960c0-17.6 14.4-32 32-32h768c17.6 0 32 14.4 32 32v576c0 17.6-10.182 42.182-22.626 54.626l-338.748 338.746zM832 0h-704v896h351.158c2.916-0.48 8.408-2.754 10.81-4.478l337.556-337.554c1.722-2.402 3.996-7.894 4.476-10.81v-543.158zM864 960h-192c-17.6 0-21.818-10.182-9.374-22.626l210.746-210.746c12.446-12.446 22.628-8.228 22.628 9.372v192c0 17.6-14.4 32-32 32z" /> +<glyph unicode="" glyph-name="html-five" d="M60.538 960l82.144-921.63 368.756-102.37 369.724 102.524 82.3 921.476h-902.924zM784.63 658.572h-432.54l10.302-115.75h411.968l-31.042-347.010-231.844-64.254-231.572 64.254-15.83 177.512h113.494l8.048-90.232 125.862-33.916 0.278 0.078 125.934 33.992 13.070 146.55h-391.74l-30.494 341.8h566.214l-10.108-113.024z" /> +<glyph unicode="" glyph-name="html-five2" d="M60.538 960l82.144-921.63 368.756-102.37 369.724 102.524 82.3 921.476h-902.924zM810.762 97.176l-297.226-82.376v-0.466l-0.776 0.234-0.782-0.234v0.466l-297.222 82.376-70.242 787.486h736.496l-70.248-787.486zM650.754 429.796l-13.070-146.552-126.21-34.070-125.862 33.916-8.050 90.234h-113.49l15.83-177.512 232.076-64.176 231.342 64.176 31.040 347.012h-411.966l-10.302 115.748h432.534l10.112 113.026h-566.218l30.498-341.802z" /> +<glyph unicode="" glyph-name="css3" d="M152.388 911.478l-34.36-171.926h699.748l-21.884-111.054h-700.188l-33.892-171.898h699.684l-39.018-196.064-282.012-93.422-244.4 93.422 16.728 85.042h-171.898l-40.896-206.352 404.226-154.704 466.006 154.704 153.768 772.252z" /> +<glyph unicode="" glyph-name="git" d="M1004.692 493.606l-447.096 447.080c-25.738 25.754-67.496 25.754-93.268 0l-103.882-103.876 78.17-78.17c12.532 5.996 26.564 9.36 41.384 9.36 53.020 0 96-42.98 96-96 0-14.82-3.364-28.854-9.362-41.386l127.976-127.974c12.532 5.996 26.566 9.36 41.386 9.36 53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96c0 14.82 3.364 28.854 9.362 41.386l-127.976 127.974c-3.042-1.456-6.176-2.742-9.384-3.876v-266.968c37.282-13.182 64-48.718 64-90.516 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 41.796 26.718 77.334 64 90.516v266.968c-37.282 13.18-64 48.72-64 90.516 0 14.82 3.364 28.852 9.36 41.384l-78.17 78.17-295.892-295.876c-25.75-25.776-25.75-67.534 0-93.288l447.12-447.080c25.738-25.75 67.484-25.75 93.268 0l445.006 445.006c25.758 25.762 25.758 67.54-0.002 93.29z" /> +<glyph unicode="" glyph-name="codepen" d="M945.75 591.958l-448 298.666c-10.748 7.166-24.752 7.166-35.5 0l-448-298.666c-8.902-5.934-14.25-15.926-14.25-26.624v-298.666c0-10.7 5.348-20.692 14.25-26.624l448-298.666c5.374-3.584 11.562-5.376 17.75-5.376s12.376 1.792 17.75 5.376l448 298.666c8.902 5.934 14.25 15.926 14.25 26.624v298.666c0 10.698-5.348 20.69-14.25 26.624zM480 305.124l-166.312 110.876 166.312 110.874 166.312-110.874-166.312-110.876zM512 582.458v221.75l358.31-238.876-166.31-110.874-192 128zM448 582.458l-192-128-166.312 110.874 358.312 238.876v-221.75zM198.312 416l-134.312-89.542v179.082l134.312-89.54zM256 377.542l192-128v-221.748l-358.312 238.872 166.312 110.876zM512 249.542l192 128 166.312-110.876-358.312-238.874v221.75zM761.688 416l134.312 89.54v-179.084l-134.312 89.544z" /> +<glyph unicode="" glyph-name="svg" d="M928 544c-28.428 0-53.958-12.366-71.536-32h-189.956l134.318 134.318c26.312-1.456 53.11 7.854 73.21 27.956 37.49 37.49 37.49 98.274 0 135.764s-98.274 37.49-135.766 0c-20.102-20.102-29.41-46.898-27.956-73.21l-134.314-134.318v189.954c19.634 17.578 32 43.108 32 71.536 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-28.428 12.366-53.958 32-71.536v-189.954l-134.318 134.318c1.454 26.312-7.856 53.11-27.958 73.21-37.49 37.49-98.274 37.49-135.764 0-37.49-37.492-37.49-98.274 0-135.764 20.102-20.102 46.898-29.412 73.212-27.956l134.32-134.318h-189.956c-17.578 19.634-43.108 32-71.536 32-53.020 0-96-42.98-96-96s42.98-96 96-96c28.428 0 53.958 12.366 71.536 32h189.956l-134.318-134.318c-26.314 1.456-53.11-7.854-73.212-27.956-37.49-37.492-37.49-98.276 0-135.766 37.492-37.49 98.274-37.49 135.764 0 20.102 20.102 29.412 46.898 27.958 73.21l134.316 134.32v-189.956c-19.634-17.576-32-43.108-32-71.536 0-53.020 42.98-96 96-96s96 42.98 96 96c0 28.428-12.366 53.958-32 71.536v189.956l134.318-134.318c-1.456-26.312 7.854-53.11 27.956-73.21 37.492-37.49 98.276-37.49 135.766 0s37.49 98.274 0 135.766c-20.102 20.102-46.898 29.41-73.21 27.956l-134.32 134.316h189.956c17.576-19.634 43.108-32 71.536-32 53.020 0 96 42.98 96 96s-42.982 96-96.002 96z" /> +<glyph unicode="" glyph-name="IcoMoon" d="M259.544 448.002c0 65.416 53.030 118.446 118.446 118.446s118.446-53.030 118.446-118.446c0-65.416-53.030-118.446-118.446-118.446s-118.446 53.030-118.446 118.446zM512.004 960c-282.774 0-512.004-229.232-512.004-512s229.226-512 512.004-512c282.764 0 511.996 229.23 511.996 512 0 282.768-229.23 512-511.996 512zM379.396 0.718c-153.956 89.574-257.468 256.324-257.468 447.282s103.512 357.708 257.462 447.282c154.010-89.562 257.59-256.288 257.59-447.282 0-190.988-103.58-357.718-257.584-447.282z" /> +</font></defs></svg> \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.ttf b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.ttf new file mode 100755 index 0000000000000000000000000000000000000000..9582220605a41aee4c2e90835bc3fbe249cbecc3 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.ttf differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.woff b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.woff new file mode 100755 index 0000000000000000000000000000000000000000..b5daf37bb71321f134684fa6d32f270f659136fc Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/fonts/icomoon.woff differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/help_en.html b/src/main/webapp/static/js/paella/player/resources/style/help/help_en.html new file mode 100644 index 0000000000000000000000000000000000000000..b1c4c5c400c2c1a40a982da4c64e6ec6d1c99a5e --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/help/help_en.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<html> + <head> + <link href="https://fonts.googleapis.com/css?family=Istok+Web|Ubuntu|Varela+Round" rel="stylesheet"> + <link rel="stylesheet" href="style.css" type="text/css" media="screen" title="main style" charset="utf-8"> + </head> + <body> + + <div class="element"> + <h1>The Paella Player</h1> + <img class="imgen" src="images/player_main.jpg"> + <p class="txtblock">Paella is designed to display two video windows, with the camera and the presentation view, and some information + regarding the lecture. You can navigate through the slides and tabs, but you can also begin viewing the lecture + by pressing the play button on top of the video window or in the control bar.</p> + </div><br> + + <div class="element"> + <h1>Play & Pause</h1> + <img class="imgen" src="images/playPauseButtonPlugin.jpg"> + <p class="txtblock">Button for play and pause the video source. If you click outside the controls bar also stops/plays the player.</p> + </div><br> + + <div class="element"> + <h1>Volume</h1> + <img class="imgen" src="images/volumeRangePlugin.jpg"> + <p class="txtblock">Control the volume of the video source through the popup.</p> + </div><br> + + <div class="element"> + <h1>Back & Advance</h1> + <img class="imgen" src="images/flexSkipPlugin.jpg"> + <p class="txtblock">Button for rewind and go forward in the timeline.</p> + </div><br> + + <div class="element"> + <h1>Playback Rate</h1> + <img class="imgen" src="images/playbackRate.jpg"> + <p class="txtblock">With this control the users can control the timeline reproduction speed.</p> + </div><br> + + <div class="element"> + <h1>Qualities</h1> + <img class="imgen" src="images/multipleQualitiesPlugin.jpg"> + <p class="txtblock">Choose between all the source video resolution options.</p> + </div><br> + + <div class="element"> + <h1>Tabs</h1> + <img class="imgen" src="images/tabBarExamplePlugin.jpg"> + <p class="txtblock">Plugins imported from paella extended version, users can comment the videos and see a brief description about them.</p> + </div><br> + + <div class="element"> + <h1>Skin</h1> + <img class="imgen" src="images/themeChooserPlugin.jpg"> + <p class="txtblock">With this control you can switch between the different installed skins.</p> + </div><br> + + <div class="element"> + <h1>Social</h1> + <img class="imgen" src="images/socialPlugin.jpg"> + <p class="txtblock">Share the video in Facebook, Twitter o take the code to embed.</p> + </div><br> + + <div class="element"> + <h1>Fullscreen</h1> + <img class="imgen" src="images/fullScreenButtonPlugin.jpg"> + <p class="txtblock">Button for swap between Fullscreen and window mode.</p> + </div><br> + + <div class="element"> + <h1>Player View Mode</h1> + <img class="imgen" src="images/blackBoardPlugin.jpg"> + <p class="txtblock">Use this button if you want to change the size of the sources or if you want to set another composition.</p> + </div><br> + + <div class="element"> + <h1>Captions</h1> + <img class="imgen" src="images/captionsButtonPlugin.jpg"> + <p class="txtblock">Enable the subtitles of the video sources. When activated user can select between different language subtitles, or none for disable the subtitles.</p> + </div><br> +<!-- + <div class="element"> + <h1>Statistics</h1> + <img class="imgen" src="images/footprintsPlugin.jpg"> + <p class="txtblock">With this plugin you are able to view a new frame above the timeline for show which part of the + video is the most played.</p> + </div><br> +--> + <div class="element"> + <h1>Frame Control</h1> + <img class="imgen" src="images/frameControlPlugin.jpg"> + <p class="txtblock">Using this buttons shows the different slides in the video, clicking in the slides allows the user to jump to the same instant of time where the slide is visualized in the video source.</p> + </div><br> + + <div class="element"> + <h1>Search</h1> + <img class="imgen" src="images/searchPlugin.jpg"> + <p class="txtblock">Users can search from all sources of information (OCR from slides, subtitles) some terms. The result will display a popup with the results list sorted by the time occurrence.</p> + </div><br> + + <div class="element"> + <h1>Rate</h1> + <img class="imgen" src="images/ratePlugin.jpg"> + <p class="txtblock">Use this button to view the video score and rate the video.</p> + </div><br> + + </body> +</html> \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/help_es.html b/src/main/webapp/static/js/paella/player/resources/style/help/help_es.html new file mode 100644 index 0000000000000000000000000000000000000000..5a15e5a6a767205ee541920164af3ce44a60d616 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/help/help_es.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html> + <head> + <link href="https://fonts.googleapis.com/css?family=Istok+Web|Ubuntu|Varela+Round" rel="stylesheet"> + <link rel="stylesheet" href="style.css" type="text/css" media="screen" title="main style" charset="utf-8"> + </head> + <body> + + <div class="element"> + <h1>Paella Player</h1> + <img class="imgen" src="images/player_main.jpg"> + <p class="txtblock">Paella está diseñado para mostrar dos ventanas de vÃdeo, la cámara y la vista de la presentación, y un poco de información sobre la conferencia. Puede navegar por las diapositivas y las pestañas, pero también se puede empezar a ver la conferencia pulsando el botón de reproducción en la parte superior de la ventana de vÃdeo o en la barra de controles.</p> + </div><br> + + <div class="element"> + <h1>Reproducir y Pausar</h1> + <img class="imgen" src="images/playPauseButtonPlugin.jpg"> + <p class="txtblock">Botón de reproducción y pausa del player. Si hace clic fuera de los controles de la barra también se detiene / reproduce el player.</p> + </div><br> + + <div class="element"> + <h1>Volumen</h1> + <img class="imgen" src="images/volumeRangePlugin.jpg"> + <p class="txtblock">Controla el volumen de reproducción a través de la ventana emergente.</p> + </div><br> + + <div class="element"> + <h1>Retroceder y Avanzar</h1> + <img class="imgen" src="images/flexSkipPlugin.jpg"> + <p class="txtblock">Botón para avanzar/retroceder cierto tiempo en el vÃdeo.</p> + </div><br> + + <div class="element"> + <h1>Velocidad de Reproducción</h1> + <img class="imgen" src="images/playbackRate.jpg"> + <p class="txtblock">Con este plugin los usuarios pueden establecer la velocidad de reproducción del player.</p> + </div><br> + + <div class="element"> + <h1>Resolución</h1> + <img class="imgen" src="images/multipleQualitiesPlugin.jpg"> + <p class="txtblock">Los usuarios pueden seleccionar las diferentes resoluciones para ajustar la calidad de reproducción deseada.</p> + </div><br> + + <div class="element"> + <h1>Tabs</h1> + <img class="imgen" src="images/tabBarExamplePlugin.jpg"> + <p class="txtblock">Estos plugins son adaptados a paella de la versión de paella extended, permiten entre otras cosas, a los usuarios poder comentar los vÃdeos y ver una breve descripción de los mismos.</p> + </div><br> + + <div class="element"> + <h1>Estilo</h1> + <img class="imgen" src="images/themeChooserPlugin.jpg"> + <p class="txtblock">Los usuarios pueden cambiar la combinación de colores e iconos del reproductor a su gusto.</p> + </div><br> + + <div class="element"> + <h1>Compartir</h1> + <img class="imgen" src="images/socialPlugin.jpg"> + <p class="txtblock">El vÃdeo se puede compartir en Facebook, Twitter o incluso si le ha gustado el vÃdeo, puede conseguir el código embebido para mostrarlo en su página web.</p> + </div><br> + + <div class="element"> + <h1>Pantalla Completa</h1> + <img class="imgen" src="images/fullScreenButtonPlugin.jpg"> + <p class="txtblock">Los usuarios pueden utilizar este botón para entrar/salir del modo pantalla completa.</p> + </div><br> + + <div class="element"> + <h1>Modo de Visualización</h1> + <img class="imgen" src="images/blackBoardPlugin.jpg"> + <p class="txtblock">Se puede cambiar el modo/distribución de las fuentes de vÃdeo mostradas en el reproductor.</p> + </div><br> + + + <div class="element"> + <h1>SubtÃtulos</h1> + <img class="imgen" src="images/captionsButtonPlugin.jpg"> + <p class="txtblock">Activa los subtÃtulos con este plugin, y selecciona entre los idiomas deseados. Si se selecciona la opción "ninguno" se desactivarán los subtÃtulos para el vÃdeo reproducido.</p> + </div><br> + + <!-- <div class="element"> + <h1>EstadÃsticas</h1> + <img class="imgen" src="images/footprintsPlugin.jpg"> + <p class="txtblock">En este plugin se muestran las zonas del video mas reproducidas por todos los usuarios.</p> + </div><br> +--> + <div class="element"> + <h1>Diapositivas</h1> + <img class="imgen" src="images/frameControlPlugin.jpg"> + <p class="txtblock">Usando este plugin al usuario se le muestra un popup donde se muestran las diapositivas del vÃdeo a lo largo de la lÃnea de tiempo, permitiendo al usuario al hacer click sobre ellas, saltar al instante preciso donde se muestran.</p> + </div><br> + + <div class="element"> + <h1>Búsqueda</h1> + <img class="imgen" src="images/searchPlugin.jpg"> + <p class="txtblock">Con este plugin los usuarios son capaces de buscar términos de entre todas las fuentes configuradas (OCR de diapositivas y subtÃtulos, por ejemplo) y devolver al usuario una lista con todos los resultados ordenados por tiempo.</p> + </div><br> + + <div class="element"> + <h1>Puntuación</h1> + <img class="imgen" src="images/ratePlugin.jpg"> + <p class="txtblock">Usa este botón para consultar la calificación del vÃdeo, y votar por una puntuación.</p> + </div><br> + + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/help_ru.html b/src/main/webapp/static/js/paella/player/resources/style/help/help_ru.html new file mode 100644 index 0000000000000000000000000000000000000000..eb64bb2104d68cded66d66fb87d947afdb81c7b8 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/help/help_ru.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<html> + <head> + <link href="https://fonts.googleapis.com/css?family=Istok+Web|Ubuntu|Varela+Round" rel="stylesheet"> + <link rel="stylesheet" href="style.css" type="text/css" media="screen" title="main style" charset="utf-8"> + </head> + <body> + + <div class="element"> + <h1>The Paella Player</h1> + <img class="imgen" src="images/player_main.jpg"> + <p class="txtblock">Проигрыватель Paella предназначен Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð´Ð²ÑƒÑ… видеопотоков, Ñ ÐºÐ°Ð¼ÐµÑ€Ñ‹ и Ñкрана преподавателÑ, + а так же дополнительной информации о лекции. ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð¾ лекции доÑтупна по Ñлайдам и закладкам. Ð”Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð»ÐµÐºÑ†Ð¸Ð¸ Ñначала + можете нажать кнопку "воÑпроизведение" в окне Ñ Ð²Ð¸Ð´ÐµÐ¾ или на панели управлениÑ.</p> + </div><br> + + <div class="element"> + <h1>Play & Pause</h1> + <img class="imgen" src="images/playPauseButtonPlugin.jpg"> + <p class="txtblock">Кнопки Ð´Ð»Ñ Ñтарта воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½ÐµÐ¸Ñ Ð¸ паузы. ЕÑли щёлкнуть левой кнопкой мыши за пределами панели, то воÑпроизведение так же начнётÑÑ Ð¸Ð»Ð¸ поÑтавитÑÑ Ð½Ð° паузу.</p> + </div><br> + + <div class="element"> + <h1>Volume</h1> + <img class="imgen" src="images/volumeRangePlugin.jpg"> + <p class="txtblock">Управление громкоÑтью воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ вÑплывающего окна.</p> + </div><br> + + <div class="element"> + <h1>Back & Advance</h1> + <img class="imgen" src="images/flexSkipPlugin.jpg"> + <p class="txtblock">Кнопки Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¾Ñ‚ÐºÐ¸ вперёд/назад.</p> + </div><br> + + <div class="element"> + <h1>Playback Rate</h1> + <img class="imgen" src="images/playbackRate.jpg"> + <p class="txtblock">С помощью Ñтого Ñлемента ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ð¸ могут изменить ÑкороÑÑ‚ÑŒ воÑпроизведениÑ.</p> + </div><br> + + <div class="element"> + <h1>Qualities</h1> + <img class="imgen" src="images/multipleQualitiesPlugin.jpg"> + <p class="txtblock">Выбрать разрешение видео.</p> + </div><br> + + <div class="element"> + <h1>Tabs</h1> + <img class="imgen" src="images/tabBarExamplePlugin.jpg"> + <p class="txtblock">Дополнительные модули, позволÑющие пользователÑм оÑтавлÑÑ‚ÑŒ комментарии и проÑмотривать дополнительную информацию о видео.</p> + </div><br> + + <div class="element"> + <h1>Skin</h1> + <img class="imgen" src="images/themeChooserPlugin.jpg"> + <p class="txtblock">Выбор темы Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð³Ñ€Ñ‹Ð²Ð°Ñ‚ÐµÐ»Ñ.</p> + </div><br> + + <div class="element"> + <h1>Social</h1> + <img class="imgen" src="images/socialPlugin.jpg"> + <p class="txtblock">ПоделитьÑÑ Ð²Ð¸Ð´ÐµÐ¾ в Facebook, Twitter или получить ÑÑылку Ð´Ð»Ñ Ð²ÑÑ‚Ñ€Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾ в HTML Ñтраницы.</p> + </div><br> + + <div class="element"> + <h1>Fullscreen</h1> + <img class="imgen" src="images/fullScreenButtonPlugin.jpg"> + <p class="txtblock">Кнопка Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñƒ полноÑкранным и оконным режимом.</p> + </div><br> + + <div class="element"> + <h1>Player View Mode</h1> + <img class="imgen" src="images/blackBoardPlugin.jpg"> + <p class="txtblock">ИÑпользуйте Ñту кнопку Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° иÑточников или Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð·Ð°Ð¸Ð¼Ð½Ð¾Ð³Ð¾ раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð²Ð¸Ð´ÐµÐ¾.</p> + </div><br> + + <div class="element"> + <h1>Captions</h1> + <img class="imgen" src="images/captionsButtonPlugin.jpg"> + <p class="txtblock">Включение Ñубтитров Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ð¾Ð³Ð¾ видео. Когда активировано, пользователь может выбирать между различными Ñзыками либо отключать Ñубтитры.</p> + </div><br> +<!-- + <div class="element"> + <h1>Statistics</h1> + <img class="imgen" src="images/footprintsPlugin.jpg"> + <p class="txtblock">With this plugin you are able to view a new frame above the timeline for show which part of the + video is the most played.</p> + </div><br> +--> + <div class="element"> + <h1>Frame Control</h1> + <img class="imgen" src="images/frameControlPlugin.jpg"> + <p class="txtblock">ИÑпользование Ñтих кнопок позволÑет показать Ñлайды из видео. Выбор Ñлайда Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ мыши позволÑет перейÑти к меÑту в видео, где поÑвлÑетÑÑ Ñтот Ñлайд.</p> + </div><br> + + <div class="element"> + <h1>Search</h1> + <img class="imgen" src="images/searchPlugin.jpg"> + <p class="txtblock">Пользователи могут производить поиÑк по по вÑем иÑточникам информации о видео (раÑпознанный текÑÑ‚ Ñо Ñлайдов, Ñубтитры). Результат будет показан во вÑплывающем окне Ñ Ñортировкой по времени поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð² видео.</p> + </div><br> + + <div class="element"> + <h1>Rate</h1> + <img class="imgen" src="images/ratePlugin.jpg"> + <p class="txtblock">ИÑпользуёте Ñту кнопку Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра рейтинга и оценки Ñтого видео.</p> + </div><br> + + </body> +</html> diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/blackBoardPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/blackBoardPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac10c954ac478d358bb6797f4ba99a1f02f9784f Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/blackBoardPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/captionsButtonPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/captionsButtonPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..be33d39e680646df5d4a6881401e4d3992c49b28 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/captionsButtonPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/editor.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/editor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8cfffd91c1de4b727f7a5963b11db60fa40cf30 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/editor.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/flexSkipPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/flexSkipPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8882afb99f5eb2558a52f747351352143f5f7ef6 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/flexSkipPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/footprintsPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/footprintsPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6584e3f67569dd57e349a3fd884e2c35cd9af870 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/footprintsPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/frameControlPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/frameControlPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05150750f0404aefb2690bf1e028ff96caaba29d Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/frameControlPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/fullScreenButtonPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/fullScreenButtonPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f16f9878df83e358443a3743fc7102a6780f03fc Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/fullScreenButtonPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/helpPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/helpPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9a9ca73ef3134d7984296460ae7e62bc86a1577 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/helpPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/multipleQualitiesPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/multipleQualitiesPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23ee34035fa5ef0a9da43728da0fb6076d9dacb1 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/multipleQualitiesPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/playPauseButtonPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/playPauseButtonPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..968c98917af984bf71c3b873393a04d1c3d9919c Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/playPauseButtonPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/playbackRate.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/playbackRate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a0e91719ef111f7c9e2829f613be32c5811a99a Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/playbackRate.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/player_main.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/player_main.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0821937e3cab7fd6b70a90ba1428cfebdeb8e70 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/player_main.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/ratePlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/ratePlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..22d385555020bdb23e7c8c324c8f817ca3bb1639 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/ratePlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/searchPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/searchPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc1e84bb40480e799e8859c552565b1387d54017 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/searchPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/socialPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/socialPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c8052f584bbefbe189791c603fbaa3facc1c6bd Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/socialPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/tabBarExamplePlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/tabBarExamplePlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5ae58e001ab16530ddffba9a92e0b77cdc688784 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/tabBarExamplePlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/themeChooserPlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/themeChooserPlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..000c157ba9a809aef3cadd679a83817a3d4e5371 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/themeChooserPlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/viewModePlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/viewModePlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b07e74840e733dcdc21c692283d5681901194ad Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/viewModePlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/images/volumeRangePlugin.jpg b/src/main/webapp/static/js/paella/player/resources/style/help/images/volumeRangePlugin.jpg new file mode 100644 index 0000000000000000000000000000000000000000..31b19b79d68820558f25c460a9a600d8a171f22b Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/help/images/volumeRangePlugin.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/help/style.css b/src/main/webapp/static/js/paella/player/resources/style/help/style.css new file mode 100644 index 0000000000000000000000000000000000000000..59e6ff0d7067123f0e1bb29ab48f8c9a8bf716d0 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/help/style.css @@ -0,0 +1,226 @@ + +html { + margin: 0px; +} + +body { + font-family: 'Ubuntu', sans-serif; + margin: 0px; +} + +pre { + padding: 20px; + border-bottom: 2px solid #cc0000; + border-top: 2px solid #cc0000; +} + +iframe { + margin-left: auto; + margin-right: auto; + display: block; +} + +h2 { + color: #909090; +} + +h1 { + color: #cc0000; +} + +.alignCenter { + display: block; + margin-right: auto; + margin-left: auto; + max-width: 90%; +} + +.image { + background-size: 100% auto; + background-repeat: no-repeat; +} + +#logo { + background-image: url(logo_paella.png); + width: 140px; + height: 140px; + float: left; +} + +.pageHeader { + background-color: white; + padding: 20px; + border-bottom: 1px solid #cc0000; + height: 170px; +} + +.content { + width: 100%; + background-color: white; + margin-left: auto; + margin-right: auto; + max-width: 1100px; + padding-left: 30px; + padding-right: 30px; +} + +.content.page { + margin-top: 0px; + padding-top: 30px; + padding-bottom: 100px; +} + +#headerText { + font-family: 'Varela Round', sans-serif;; + font-size: 60pt; + display: block; + width: 100%; + line-height:90px; + margin-left: 157px; +} + +#headerSubtitle { + display: block; + width: 100%; + margin-left: 160px; + font-size: 28px; + color: gray; +} + +.logoGroup { + width: 660px; + float: left; + margin-top: 20px; +} + +a { + color: #fa8528; +} + +a:visited { + color: #fa8528; +} + +a:hover { + color: #fba352; +} + +a:active { + color: #ffb055; +} + +.linkButton { + font-size: 20px; + color: white; + background-color: #fa8528; + padding: 20px; + border-radius: 5px; + border: 1.6pt solid #BA631E; + box-shadow: inset -3px -5px 10px 0px #D9711D; + display: inline-block; + text-decoration: none; + text-align: center; +} + +.linkButton.small { + padding: 10px; + font-size: 12px; +} + +.linkButton:hover { + color:white; + background-color: #FFA863; +} + +.linkButton:active { + color:white; + box-shadow: inset 3px 5px 20px 0px #D9711D; +} + +.buttonGroup#downloads { + width: 233px; + padding-top: 5px; + margin-bottom: 30px; + margin-left: auto; + margin-right: auto; +} + +#githubLink { + display: block; +} + +#resourcesLink { + display: block; +} + +#downloadPaella3 { + display: block; + width: 189px; + margin-top: 55px; + margin-left: auto; + margin-right: auto; + color: white; +} + +.downloadGroup { + width: 250px; + float: right; +} + +.footerText { + display: inline-block; + height: 50px; + vertical-align: top; + margin-right: 10px; + font-size: 10px; +} + +.sponsorLogo { + width: 100px; + display: inline-block; +} + +.content.footer { + border-top: 4px solid #fa8528; + padding-top: 10px; +} + +.menu { + margin-top: 165px; +} + +.menuItem { + list-style-type:none; + display: inline; + margin-right: 30px +} + +.menuItemLink { + cursor: pointer; +} + +.menuItemLink.current { + color: gray; +} + +.element{ + margin-left: auto; + display: block; + margin-right: auto; + width: 65%; +} + +.imgen{ + margin-left: auto; + margin-left: auto; + width: 100%; +} + +.txtblock{ + color: black; + font-size: large; + font-family: 'Istok Web', sans-serif;; + font-style: oblique; +} + + diff --git a/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows.png b/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..fcbd854aa865fa02a1a7b4311e1c26b563aecad9 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows_orange.png b/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..f9a053789968340aaad9b074c2061cee1235c9d3 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/hscroll_arrows_orange.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/icon_rotate.svg b/src/main/webapp/static/js/paella/player/resources/style/icon_rotate.svg new file mode 100644 index 0000000000000000000000000000000000000000..3b116d5b3abd0ab09e05510be5900daf042d63ff --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/icon_rotate.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M28.675,28.287L27,26.839L33.674,26L33.808,32.725L31.703,30.906C28.782,34.039 24.618,36 20,36C14.825,36 10.22,33.538 7.295,29.722L10.798,27.699C13,30.328 16.306,32 20,32C23.41,32 26.49,30.575 28.675,28.287ZM4.41,23.613C4.142,22.452 4,21.242 4,20C4,12.02 9.855,5.396 17.5,4.195L17.5,8.261C12.075,9.413 8,14.234 8,20C8,20.79 8.077,21.563 8.223,22.31L10.597,21.499L7.955,27.686L2.08,24.409L4.41,23.613ZM22.536,8.416L22.158,10.598L18,5.31L23.594,2.335L23.22,4.472C27.411,5.361 31.237,7.919 33.616,11.877C36.283,16.312 36.546,21.527 34.783,26L31.244,24.04C32.362,20.798 32.092,17.103 30.188,13.938C28.431,11.015 25.623,9.11 22.536,8.416Z" style="fill:rgb(80,80,80);"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/icon_switch.svg b/src/main/webapp/static/js/paella/player/resources/style/icon_switch.svg new file mode 100644 index 0000000000000000000000000000000000000000..5de5a29887e268fe0b1782304ea12727de414712 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/icon_switch.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <g transform="matrix(1,0,0,1,-1.86437,4.42279)"> + <path d="M13.92,18.884L13.92,25.026L4.471,15.577L13.92,6.129L13.92,12.27L29.809,12.27L29.809,6.129L39.257,15.577L29.809,25.026L29.809,18.884L13.92,18.884Z" style="fill:rgb(80,80,80);"/> + </g> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/live_video.png b/src/main/webapp/static/js/paella/player/resources/style/live_video.png new file mode 100644 index 0000000000000000000000000000000000000000..7f92521e3d29826834082918658b95be879962ee Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/live_video.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/logo.png b/src/main/webapp/static/js/paella/player/resources/style/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed155f37afaf7be0d4b9259f13bff8d8e51d3f94 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/logo.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/minimize.svg b/src/main/webapp/static/js/paella/player/resources/style/minimize.svg new file mode 100644 index 0000000000000000000000000000000000000000..16808eb4df4ed32545de1727e8ab48c8d4603d1b --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/minimize.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 40 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><path d="M39,34l-15,0l0,-14l-22,0l0,-11l37,0l0,25Z" style="fill:#6a6a6a;"/><rect x="1" y="21" width="22" height="15" style="fill:#6a6a6a;"/></svg> \ No newline at end of file diff --git a/src/main/webapp/static/js/paella/player/resources/style/paella_logo.png b/src/main/webapp/static/js/paella/player/resources/style/paella_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce588b55e549598438e2adeee5a2176a364b0e4 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/paella_logo.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/paella_logo_old.png b/src/main/webapp/static/js/paella/player/resources/style/paella_logo_old.png new file mode 100644 index 0000000000000000000000000000000000000000..de2727678a3a7b36babf8be323777bbfaf9e16bf Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/paella_logo_old.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/professor_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..8d8ea8e94e5c80ee095804b8ea555ed070178aa0 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/professor_icon.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 36 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M36,0L36,34L0,34L0,0L36,0ZM26.968,20C27.442,20 27.828,19.615 27.828,19.14L27.828,17.86C27.828,17.385 27.442,17 26.968,17L9.032,17C8.558,17 8.172,17.385 8.172,17.86L8.172,19.14C8.172,19.615 8.558,20 9.032,20L14,20L14,31L22,31L22,20L26.968,20ZM24.991,16C24.99,15.984 24.552,11.315 23.936,10.039C23.319,8.762 20.25,8.717 20.25,8.717C20.25,8.717 19.543,12.025 19.354,12.654C19.164,13.284 19.125,13.43 19.125,13.43C19.125,13.43 18.646,10.234 18.562,9.91C18.5,9.666 18.088,9.65 18,9.65C17.912,9.65 17.5,9.678 17.437,9.921C17.354,10.246 17.01,13.359 17.01,13.359C17.01,13.359 16.905,13.284 16.716,12.654C16.526,12.025 15.75,8.717 15.75,8.717C15.75,8.717 12.681,8.762 12.064,10.039C11.447,11.317 11.009,16 11.009,16L24.991,16ZM19.125,8.717C19.186,8.978 18.358,9.54 18.358,9.54L17.696,9.524C17.696,9.524 16.814,8.978 16.875,8.717C16.931,8.477 17.686,8.503 18,8.5C18.316,8.503 19.069,8.477 19.125,8.717ZM18,1.133C19.711,1.133 21.1,2.638 21.1,4.491C21.1,6.344 19.711,7.848 18,7.848C16.289,7.848 14.9,6.344 14.9,4.491C14.9,2.638 16.289,1.133 18,1.133Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..3e4e474504259389e9cda50c31badcdfc3f7aa5a --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_icon.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 61 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M61,35L24,35L24,14L21,14L21,0L61,0L61,35ZM42.905,22.75L48.554,31.204C48.782,31.731 48.907,32.517 48.473,32.677C47.865,32.902 47.335,32.875 47.086,32.501L41.646,24.32L36.079,32.501C35.462,33.088 34.821,32.999 34.566,32.8C34.314,32.603 34.117,32.088 34.611,31.204L40.048,22.75L26.714,22.75L26.714,5.25L24.81,5.25L24.81,3.5L57.19,3.5L57.19,5.25L55.286,5.25L55.286,22.75L42.905,22.75ZM28.619,5.25L53.381,5.25L53.381,21L28.619,21L28.619,5.25ZM38.14,10.589L31.033,18.205L30.33,17.658L38.113,9.319L43.164,14.017L50.128,7.666L50.781,8.262L43.163,15.209L38.14,10.589Z"/> + <path d="M23,15L23,36L0,36L0,15L23,15ZM17.435,27C17.625,27 17.779,26.846 17.779,26.656L17.779,26.144C17.779,25.954 17.625,25.8 17.435,25.8L5.565,25.8C5.375,25.8 5.221,25.954 5.221,26.144L5.221,26.656C5.221,26.846 5.375,27 5.565,27L8.625,27L8.625,34.2L14.375,34.2L14.375,27L17.435,27ZM15.967,25.2C15.966,25.189 15.686,22.102 15.293,21.259C14.898,20.414 12.937,20.384 12.937,20.384C12.937,20.384 12.486,22.571 12.365,22.988C12.244,23.404 12.219,23.501 12.219,23.501C12.219,23.501 11.913,21.387 11.859,21.173C11.819,21.011 11.556,21.001 11.5,21.001C11.444,21.001 11.181,21.02 11.141,21.18C11.087,21.395 10.868,23.454 10.868,23.454C10.868,23.454 10.801,23.404 10.679,22.988C10.558,22.571 10.062,20.384 10.062,20.384C10.062,20.384 8.102,20.414 7.707,21.259C7.313,22.103 7.033,25.2 7.033,25.2L15.967,25.2ZM12.219,20.384C12.258,20.545 11.729,20.892 11.729,20.892L11.306,20.882C11.306,20.882 10.742,20.545 10.781,20.384C10.817,20.236 11.3,20.252 11.5,20.25C11.702,20.252 12.183,20.236 12.219,20.384ZM11.5,15.7C12.593,15.7 13.481,16.629 13.481,17.774C13.481,18.918 12.593,19.847 11.5,19.847C10.407,19.847 9.519,18.918 9.519,17.774C9.519,16.629 10.407,15.7 11.5,15.7Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_right_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_right_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..b64bde44a827741724e6e6ca281ab6bc2d227514 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/professor_over_slide_right_icon.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 61 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M40,14L37,14L37,35L0,35L0,0L40,0L40,14ZM21.905,22.75L27.554,31.204C27.782,31.731 27.907,32.517 27.473,32.677C26.865,32.902 26.335,32.875 26.086,32.501L20.646,24.32L15.079,32.501C14.462,33.088 13.821,32.999 13.566,32.8C13.314,32.603 13.117,32.088 13.611,31.204L19.048,22.75L5.714,22.75L5.714,5.25L3.81,5.25L3.81,3.5L36.19,3.5L36.19,5.25L34.286,5.25L34.286,22.75L21.905,22.75ZM7.619,5.25L32.381,5.25L32.381,21L7.619,21L7.619,5.25ZM17.14,10.589L10.033,18.205L9.33,17.658L17.113,9.319L22.164,14.017L29.128,7.666L29.781,8.262L22.163,15.209L17.14,10.589Z"/> + <path d="M61,15L61,36L38,36L38,15L61,15ZM55.435,27C55.625,27 55.779,26.846 55.779,26.656L55.779,26.144C55.779,25.954 55.625,25.8 55.435,25.8L43.565,25.8C43.375,25.8 43.221,25.954 43.221,26.144L43.221,26.656C43.221,26.846 43.375,27 43.565,27L46.625,27L46.625,34.2L52.375,34.2L52.375,27L55.435,27ZM53.967,25.2C53.966,25.189 53.686,22.102 53.293,21.259C52.898,20.414 50.937,20.384 50.937,20.384C50.937,20.384 50.486,22.571 50.365,22.988C50.244,23.404 50.219,23.501 50.219,23.501C50.219,23.501 49.913,21.387 49.859,21.173C49.819,21.011 49.556,21.001 49.5,21.001C49.444,21.001 49.181,21.02 49.141,21.18C49.087,21.395 48.868,23.454 48.868,23.454C48.868,23.454 48.801,23.404 48.679,22.988C48.558,22.571 48.062,20.384 48.062,20.384C48.062,20.384 46.102,20.414 45.707,21.259C45.313,22.103 45.033,25.2 45.033,25.2L53.967,25.2ZM50.219,20.384C50.258,20.545 49.729,20.892 49.729,20.892L49.306,20.882C49.306,20.882 48.742,20.545 48.781,20.384C48.817,20.236 49.3,20.252 49.5,20.25C49.702,20.252 50.183,20.236 50.219,20.384ZM49.5,15.7C50.593,15.7 51.481,16.629 51.481,17.774C51.481,18.918 50.593,19.847 49.5,19.847C48.407,19.847 47.519,18.918 47.519,17.774C47.519,16.629 48.407,15.7 49.5,15.7Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_slide.jpg b/src/main/webapp/static/js/paella/player/resources/style/professor_slide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c2ccd471f44e2de39f46e5d6b8eac48823592ea9 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/professor_slide.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_slide_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/professor_slide_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..2355bd61cc0b4ad634e223d7a369113386f81cb6 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/professor_slide_icon.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 74 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <g transform="matrix(1,0,0,1,-3,-163)"> + <g> + <g transform="matrix(1,0,0,1,41,163)"> + <path d="M36,34L0,34L0,0L36,0L36,34ZM20,22L24.998,30.289C25.21,30.807 25.325,31.582 24.923,31.74C24.361,31.961 23.869,31.935 23.639,31.566L18.598,23.508L13.441,31.566C12.869,32.144 12.275,32.057 12.039,31.861C11.805,31.667 11.623,31.16 12.081,30.289L17,22L5,22L5,5L3,5L3,3L33,3L33,5L31,5L31,22L20,22ZM7,5L29,5L29,20L7,20L7,5ZM15.459,10.085L9.145,17.338L8.52,16.818L15.435,8.876L19.923,13.35L26.11,7.301L26.69,7.869L19.921,14.484L15.459,10.085Z"/> + </g> + <g transform="matrix(1,0,0,1,-35,163)"> + <path d="M74,0L74,34L38,34L38,0L74,0ZM64.968,20C65.442,20 65.828,19.615 65.828,19.14L65.828,17.86C65.828,17.385 65.442,17 64.968,17L47.032,17C46.558,17 46.172,17.385 46.172,17.86L46.172,19.14C46.172,19.615 46.558,20 47.032,20L52,20L52,31L60,31L60,20L64.968,20ZM62.991,16C62.99,15.984 62.552,11.315 61.936,10.039C61.319,8.762 58.25,8.717 58.25,8.717C58.25,8.717 57.543,12.025 57.354,12.654C57.164,13.284 57.125,13.43 57.125,13.43C57.125,13.43 56.646,10.234 56.562,9.91C56.5,9.666 56.088,9.65 56,9.65C55.912,9.65 55.5,9.678 55.437,9.921C55.354,10.246 55.01,13.359 55.01,13.359C55.01,13.359 54.905,13.284 54.716,12.654C54.526,12.025 53.75,8.717 53.75,8.717C53.75,8.717 50.681,8.762 50.064,10.039C49.447,11.317 49.009,16 49.009,16L62.991,16ZM57.125,8.717C57.186,8.978 56.358,9.54 56.358,9.54L55.696,9.524C55.696,9.524 54.814,8.978 54.875,8.717C54.931,8.477 55.686,8.503 56,8.5C56.316,8.503 57.069,8.477 57.125,8.717ZM56,1.133C57.711,1.133 59.1,2.638 59.1,4.491C59.1,6.344 57.711,7.848 56,7.848C54.289,7.848 52.9,6.344 52.9,4.491C52.9,2.638 54.289,1.133 56,1.133Z"/> + </g> + </g> + </g> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/professor_slide_paella.jpg b/src/main/webapp/static/js/paella/player/resources/style/professor_slide_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d97008a9b51463de8432eb8eac17b3824ffb158 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/professor_slide_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/s_p_blackboard.svg b/src/main/webapp/static/js/paella/player/resources/style/s_p_blackboard.svg new file mode 100644 index 0000000000000000000000000000000000000000..5443212684249cd12a70f34f6b8c4f9667f2f6b1 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/s_p_blackboard.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 66 37" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <g transform="matrix(1,0,0,1,-0.467307,-280.688)"> + <g> + <g transform="matrix(1,0,0,1,0.467307,280.688)"> + <path d="M22.17,17.719L0,17.719L0,0L22.17,0L22.17,17.719ZM12.141,11.518L15.272,15.798C15.399,16.064 15.468,16.462 15.227,16.544C14.89,16.657 14.596,16.644 14.458,16.454L11.443,12.313L8.358,16.454C8.016,16.751 7.66,16.707 7.519,16.606C7.379,16.506 7.27,16.245 7.544,15.798L10.557,11.518L3.167,11.518L3.167,2.658L2.111,2.658L2.111,1.772L20.059,1.772L20.059,2.658L19.003,2.658L19.003,11.518L12.141,11.518ZM4.223,2.658L17.947,2.658L17.947,10.632L4.223,10.632L4.223,2.658ZM9.5,5.361L5.561,9.217L5.171,8.94L9.485,4.718L12.285,7.096L16.144,3.881L16.506,4.183L12.284,7.7L9.5,5.361Z"/> + </g> + <g transform="matrix(1,0,0,1,0.467307,280.688)"> + <path d="M63.96,4.937L63.96,30.773L25.402,30.773L25.402,4.937L63.96,4.937ZM49.693,12.301L49.693,10.801C49.693,9.881 49.145,9.301 48.193,9.301L41.193,9.301C40.241,9.301 39.693,9.881 39.693,10.801C39.693,11.722 39.693,12.301 39.693,12.301L36.193,12.301C35.431,12.301 34.693,13.065 34.693,13.801L34.693,23.801C34.693,24.538 35.431,25.301 36.193,25.301L53.193,25.301C53.955,25.301 54.693,24.538 54.693,23.801L54.693,13.801C54.693,13.065 53.955,12.301 53.193,12.301L49.693,12.301ZM44.554,14.301C46.839,14.301 48.554,16.092 48.554,18.301C48.554,20.51 46.839,22.301 44.554,22.301C42.269,22.301 40.554,20.51 40.554,18.301C40.554,16.092 42.269,14.301 44.554,14.301Z"/> + </g> + <g transform="matrix(1,0,0,1,0.467307,280.688)"> + <path d="M22.114,18.915L22.114,36.602L0,36.602L0,18.915L22.114,18.915ZM16.804,29.022C16.964,29.021 17.094,28.892 17.094,28.732L17.094,28.3C17.094,28.141 16.964,28.011 16.804,28.011L5.31,28.011C5.15,28.011 5.02,28.141 5.02,28.3L5.02,28.732C5.02,28.892 5.15,29.022 5.31,29.022L8.293,29.022L8.293,35.086L13.821,35.086L13.821,29.022L16.804,29.022ZM15.352,27.506C15.351,27.494 15.082,24.896 14.704,24.186C14.325,23.474 12.439,23.45 12.439,23.45C12.439,23.45 12.005,25.292 11.889,25.642C11.772,25.993 11.748,26.074 11.748,26.074C11.748,26.074 11.454,24.294 11.403,24.114C11.364,23.978 11.111,23.969 11.057,23.969C11.003,23.969 10.75,23.985 10.712,24.12C10.66,24.301 10.449,26.035 10.449,26.035C10.449,26.035 10.385,25.993 10.268,25.642C10.152,25.292 9.675,23.45 9.675,23.45C9.675,23.45 7.79,23.474 7.411,24.186C7.032,24.897 6.762,27.506 6.762,27.506L15.352,27.506ZM11.748,23.45C11.786,23.585 11.277,23.878 11.277,23.878L10.87,23.869C10.87,23.869 10.329,23.585 10.366,23.45C10.401,23.324 10.864,23.338 11.057,23.337C11.251,23.338 11.714,23.324 11.748,23.45ZM11.057,19.505C12.108,19.505 12.961,20.287 12.961,21.251C12.961,22.215 12.108,22.997 11.057,22.997C10.006,22.997 9.153,22.215 9.153,21.251C9.153,20.287 10.006,19.505 11.057,19.505Z"/> + </g> + </g> + </g> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/slide_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..c637633d7e36a4887693ecd5506bda2f9d8245d7 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/slide_icon.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 36 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M36,34L0,34L0,0L36,0L36,34ZM20,22L24.998,30.289C25.21,30.807 25.325,31.582 24.923,31.74C24.361,31.961 23.869,31.935 23.639,31.566L18.598,23.508L13.441,31.566C12.869,32.144 12.275,32.057 12.039,31.861C11.805,31.667 11.623,31.16 12.081,30.289L17,22L5,22L5,5L3,5L3,3L33,3L33,5L31,5L31,22L20,22ZM7,5L29,5L29,20L7,20L7,5ZM15.459,10.085L9.145,17.338L8.52,16.818L15.435,8.876L19.923,13.35L26.11,7.301L26.69,7.869L19.921,14.484L15.459,10.085Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..7450f6f7fb173b4149ab8b5c923a3856ecb6d54b --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_icon.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 57 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M21,36L0,36L0,16L21,16L21,36ZM11.5,29L14.466,33.831C14.586,34.132 14.651,34.581 14.423,34.673C14.104,34.801 13.826,34.786 13.695,34.572L10.839,29.897L7.916,34.572C7.593,34.907 7.256,34.857 7.122,34.743C6.99,34.63 6.887,34.336 7.146,33.831L10,29L3,29L3,19L2,19L2,18L19,18L19,19L18,19L18,29L11.5,29ZM4,19L17,19L17,28L4,28L4,19ZM8.999,22.051L5.267,26.403L4.898,26.091L8.984,21.325L11.636,24.01L15.292,20.381L15.635,20.721L11.635,24.691L8.999,22.051Z"/> + <path d="M57,35L22,35L22,15L17,15L17,0L57,0L57,35ZM47.346,20C47.663,20 47.92,19.743 47.92,19.427L47.92,18.573C47.92,18.257 47.663,18 47.346,18L26.654,18C26.337,18 26.08,18.257 26.08,18.573L26.08,19.427C26.08,19.743 26.337,20 26.654,20L32,20L32,32L42,32L42,20L47.346,20ZM44.768,17C44.766,16.977 44.28,11.836 43.596,10.431C42.91,9.023 39.5,8.974 39.5,8.974C39.5,8.974 38.715,12.619 38.504,13.313C38.294,14.007 38.25,14.168 38.25,14.168C38.25,14.168 37.718,10.646 37.625,10.288C37.555,10.019 37.098,10.002 37,10.002C36.902,10.002 36.445,10.033 36.375,10.301C36.282,10.659 35.9,14.089 35.9,14.089C35.9,14.089 35.784,14.007 35.573,13.313C35.362,12.619 34.5,8.974 34.5,8.974C34.5,8.974 31.09,9.023 30.404,10.431C29.719,11.839 29.232,17 29.232,17L44.768,17ZM38.25,8.974C38.318,9.242 37.398,9.821 37.398,9.821L36.662,9.804C36.662,9.804 35.682,9.242 35.75,8.974C35.812,8.726 36.651,8.754 37,8.75C37.351,8.753 38.188,8.726 38.25,8.974ZM37,1.167C38.901,1.167 40.444,2.715 40.444,4.623C40.444,6.53 38.901,8.079 37,8.079C35.099,8.079 33.556,6.53 33.556,4.623C33.556,2.715 35.099,1.167 37,1.167Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_right_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_right_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..940720cc10d837a4dbc61a6b3123c828196d151b --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/slide_over_professor_right_icon.svg @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 57 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <g transform="matrix(1,0,0,1,-11,-242)"> + <g> + <g transform="matrix(1,0,0,1,11,242)"> + <path d="M57,36L36,36L36,16L57,16L57,36ZM47.5,29L50.466,33.831C50.586,34.132 50.651,34.581 50.423,34.673C50.104,34.801 49.826,34.786 49.695,34.572L46.839,29.897L43.916,34.572C43.593,34.907 43.256,34.857 43.122,34.743C42.99,34.63 42.887,34.336 43.146,33.831L46,29L39,29L39,19L38,19L38,18L55,18L55,19L54,19L54,29L47.5,29ZM40,19L53,19L53,28L40,28L40,19ZM44.999,22.051L41.267,26.403L40.898,26.091L44.984,21.325L47.636,24.01L51.292,20.381L51.635,20.721L47.635,24.691L44.999,22.051Z"/> + </g> + <g transform="matrix(1,0,0,1,11,242)"> + <path d="M0,0L40,0L40,15L35,15L35,35L0,35L0,0ZM30.346,20C30.663,20 30.92,19.743 30.92,19.427L30.92,18.573C30.92,18.257 30.663,18 30.346,18L9.654,18C9.337,18 9.08,18.257 9.08,18.573L9.08,19.427C9.08,19.743 9.337,20 9.654,20L15,20L15,32L25,32L25,20L30.346,20ZM27.768,17C27.765,16.969 27.279,11.835 26.596,10.431C25.91,9.023 22.5,8.974 22.5,8.974C22.5,8.974 21.715,12.619 21.504,13.313C21.294,14.007 21.25,14.168 21.25,14.168C21.25,14.168 20.718,10.646 20.625,10.288C20.555,10.019 20.098,10.002 20,10.002C19.902,10.002 19.445,10.033 19.375,10.301C19.282,10.659 18.9,14.089 18.9,14.089C18.9,14.089 18.784,14.007 18.573,13.313C18.362,12.619 17.5,8.974 17.5,8.974C17.5,8.974 14.09,9.023 13.404,10.431C12.719,11.839 12.232,17 12.232,17L27.768,17ZM21.25,8.974C21.318,9.242 20.398,9.821 20.398,9.821L19.662,9.804C19.662,9.804 18.682,9.242 18.75,8.974C18.812,8.726 19.651,8.754 20,8.75C20.351,8.753 21.188,8.726 21.25,8.974ZM20,1.167C21.901,1.167 23.444,2.715 23.444,4.623C23.444,6.53 21.901,8.079 20,8.079C18.099,8.079 16.556,6.53 16.556,4.623C16.556,2.715 18.099,1.167 20,1.167Z"/> + </g> + </g> + </g> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_professor.jpg b/src/main/webapp/static/js/paella/player/resources/style/slide_professor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bb8c19933662de96b89eed218849222a73b4237 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/slide_professor.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_professor_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/slide_professor_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..fcd048d393a58d1cb314759ef2fdd31d3e316e21 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/slide_professor_icon.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 74 34" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <path d="M36,34L0,34L0,0L36,0L36,34ZM74,34L38,34L38,0L74,0L74,34ZM20,22L24.998,30.289C25.21,30.807 25.325,31.582 24.923,31.74C24.361,31.961 23.869,31.935 23.639,31.566L18.598,23.508L13.441,31.566C12.869,32.144 12.275,32.057 12.039,31.861C11.805,31.667 11.623,31.16 12.081,30.289L17,22L5,22L5,5L3,5L3,3L33,3L33,5L31,5L31,22L20,22ZM64.968,17L47.032,17C46.557,17 46.172,17.385 46.172,17.86L46.172,19.14C46.172,19.615 46.557,20 47.032,20L52,20L52,31L60,31L60,20L64.968,20C65.442,20 65.828,19.615 65.828,19.14L65.828,17.86C65.828,17.385 65.443,17 64.968,17ZM7,5L29,5L29,20L7,20L7,5ZM15.459,10.085L9.145,17.338L8.52,16.818L15.435,8.876L19.923,13.35L26.11,7.301L26.69,7.869L19.921,14.484L15.459,10.085ZM62.991,16C62.99,15.984 62.552,11.315 61.936,10.039C61.319,8.762 58.25,8.717 58.25,8.717C58.25,8.717 57.543,12.025 57.354,12.654C57.164,13.284 57.125,13.43 57.125,13.43C57.125,13.43 56.646,10.234 56.562,9.91C56.5,9.666 56.088,9.65 56,9.65C55.912,9.65 55.5,9.678 55.437,9.921C55.354,10.246 55.01,13.359 55.01,13.359C55.01,13.359 54.905,13.284 54.716,12.654C54.526,12.025 53.75,8.717 53.75,8.717C53.75,8.717 50.681,8.762 50.064,10.039C49.447,11.317 49.009,16 49.009,16L62.991,16ZM57.125,8.717C57.186,8.978 56.358,9.54 56.358,9.54L55.696,9.524C55.696,9.524 54.814,8.978 54.875,8.717C54.931,8.477 55.686,8.503 56,8.5C56.316,8.503 57.069,8.477 57.125,8.717ZM56,1.133C57.711,1.133 59.1,2.638 59.1,4.491C59.1,6.344 57.711,7.848 56,7.848C54.289,7.848 52.9,6.344 52.9,4.491C52.9,2.638 54.289,1.133 56,1.133Z"/> +</svg> diff --git a/src/main/webapp/static/js/paella/player/resources/style/slide_professor_paella.jpg b/src/main/webapp/static/js/paella/player/resources/style/slide_professor_paella.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7484910f897ea7e9a9e70343f495eec10002ee06 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/slide_professor_paella.jpg differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/slides_icon.png b/src/main/webapp/static/js/paella/player/resources/style/slides_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e8707b56614c1fd0813141a9acfed1bc196d1827 Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/slides_icon.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/statistics_icon.png b/src/main/webapp/static/js/paella/player/resources/style/statistics_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4eaf6492311ae092dd7e1044fbd8f9c30eebfc4a Binary files /dev/null and b/src/main/webapp/static/js/paella/player/resources/style/statistics_icon.png differ diff --git a/src/main/webapp/static/js/paella/player/resources/style/style_dark.css b/src/main/webapp/static/js/paella/player/resources/style/style_dark.css new file mode 100644 index 0000000000000000000000000000000000000000..8706cc2083235587ec50669d3923960b33dca697 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/style_dark.css @@ -0,0 +1,3990 @@ +/* Light icons over dark background */ +body { + height: 100%; + width: 100%; + font-family: Verdana, sans-serif; + font-size: 12px; + background: #4b4b4b; + touch-action: none; +} +a { + color: #636363; +} +a:hover { + color: #a4a4a4; +} +a:active { + color: #3d3d3d; +} +a:visited { + color: #636363; +} +.videoWrapper { + -moz-box-shadow: 2px 2px 6px #000; + -webkit-box-shadow: 2px 2px 6px #000; + box-shadow: 2px 2px 6px #000; + background: black; +} +div { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.buttonPlugin { + cursor: pointer; + padding-right: 0px; + padding-left: 0px; + background-origin: border-box; + position: relative; + display: block; + float: left; + align-items: stretch; + background-color: transparent; + border: none; + box-sizing: border-box; + min-width: 30px; + height: 30px; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + color: #151515; + text-align: center; +} +button, +div i.button-icon { + color: white; + font-size: 18px; + line-height: 30px; + position: absolute; + top: 0px; + left: 5px; +} +span.expandable-content { + color: #151515; + width: 80px; + display: block; + float: left; +} +.buttonPlugin.expandable-content { + background-color: transparent !important; +} +.buttonPlugin { + position: relative; +} +.button-text { + position: absolute; + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + text-align: center; + line-height: 30px; + z-index: 1; +} +i.button-icon.icon-screen { + font-size: 21.96px; + padding-left: 0px; +} +.play-button-on-screen { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.play-button-on-screen .play-icon { + width: 300px; + height: 300px; + background-image: url(../images/play.svg); +} +@media screen and (max-width: 1000px) { + .play-button-on-screen .play-icon { + width: 300px; + height: 300px; + } +} +@media screen and (max-width: 700px) { + .play-button-on-screen .play-icon { + width: 150px; + height: 150px; + } +} +@media screen and (max-width: 400px) { + .play-button-on-screen .play-icon { + width: 80px; + height: 80px; + } +} +#playerContainer { + background-color: white; +} +#playerContainer.modalVisible > :not(.modalMessageContainer) { + filter: blur(10px); +} +#playerContainer:-webkit-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-moz-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-ms-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-o-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#ignoreBrowserCheckLink { + color: black; + text-decoration: underline; +} +.alt-scroll-message-container { + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0.45); + display: flex; + justify-content: center; + align-items: center; + font-size: 20px; + color: white; + text-shadow: 1px 1px 4px black; +} +.alt-scroll-message-container p { + text-align: center; +} +.playbackControls { + background-color: rgba(0, 0, 0, 0.75); + background-image: none; + background-size: auto; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 56px; + z-index: 100; +} +.playbackBarPlugins { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 40px; + font-size: 12px; + overflow: hidden; +} +.playbackBar { + position: absolute; + left: 0px; + right: 0px; + height: 14px; + background-color: rgba(125, 125, 125, 0.5); + border-bottom: 1px solid rgba(90, 90, 90, 0.6); + border-top: 1px solid rgba(90, 90, 90, 0.6); + cursor: pointer; +} +.playbackBar:focus { + box-shadow: inset 0px 0px 5px 0px #FF4C4C; + outline: none; +} +.playbackBarFull { + height: 12px; + background-color: #cc0000; + background: linear-gradient(to bottom, #ff0000 0%, #690000 100%); +} +.playbackBarFull.disabled { + opacity: 0.2; +} +.buttonPlugin.left { + float: left; +} +.buttonPlugin.right { + float: right; +} +.buttonPlugin:hover { + background-color: #FF4C4C; +} +.buttonPlugin:focus { + box-shadow: inset 0px 0px 5px 0px #FF4C4C; + outline: none; +} +.buttonPlugin.selected { + background-color: #cc0000; +} +.popUpPluginContainer { + position: absolute; + right: 0px; + z-index: 110; + color: white; +} +.buttonPluginPopUp { + background-color: rgba(0, 0, 0, 0.75); + position: absolute; + bottom: -14px; +} +.timelinePluginContainer { + position: absolute; + left: 0px; + width: 100%; + background-color: rgba(0, 0, 0, 0.75); + bottom: 56px; + color: white; +} +.buttonTimeLine { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; +} +/* old style time control */ +.timeControlOld { + color: white; + display: block; + position: relative; + width: 69px; + height: 44px; + background-size: 100%; + background-image: url(../images/time_monitor.png); + font-size: 10px; + padding-top: 11px; + background-repeat: no-repeat; + bottom: 70px; + font-family: verdana; + text-align: center; + z-index: 100; +} +.timeControl { + color: white; + display: block; + position: relative; + width: 69px; + height: 12px; + font-size: 10px; + background-repeat: no-repeat; + padding-left: 5px; + font-family: verdana; + text-align: left; + z-index: 100; + line-height: 12px; + margin-top: -12px; + cursor: pointer; +} +.editControlContainer { + z-index: 20; +} +.paellaLoadErrorContainer { + width: 1000px; + margin: auto; + margin-top: 200px; + text-align: center; + padding-top: 80px; + padding-bottom: 80px; + background-color: rgba(220, 228, 234, 0.9); + border-radius: 22px; + box-shadow: 1px 1px 8px black; + font-family: sans-serif; + font-size: 20px; +} +.modalMessageContainer { + background-color: rgba(0, 0, 0, 0.5); +} +.messageContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; +} +.frameContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + /*vertical-align: middle;*/ + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + display: block; +} +.errorContainer { + width: 55%; + min-height: 55%; + margin-top: 22%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + padding-left: 120px; + padding-right: 60px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-family: sans-serif; + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + border: 7px solid maroon; + color: maroon; + font-weight: bold; + background-image: url(../images/error_icon.png); + background-size: 10%; + background-repeat: no-repeat; + background-position: 50px 40px; +} +.paella_messageContainer_closeButton { + /*background-image: url(../images/close_button.png);*/ + width: 20px; + height: 20px; + position: absolute; + display: block; + top: 10px; + right: 10px; + z-index: 999999999; + border-radius: 20px; +} +.paella_messageContainer_closeButton:hover { + color: white; + background-color: black; +} +.paella_messageContainer_closeButton:active { + background-position: 20px; +} +.overlayContainer.background { + background-color: rgba(0, 0, 0, 0.5); +} +#overlayContainer { + pointer-events: none; +} +#overlayContainer div { + pointer-events: none; +} +.videoLoaderOverlay { + background-color: black; +} +.videoOverlayButtonPlugins { + z-index: 100; + position: absolute; + right: 0px; + left: 0px; + top: 0px; + pointer-events: none; +} +.divTimeOverlay { + position: fixed; + background-color: rgba(0, 0, 0, 0.75); + color: white; + text-align: center; + padding-right: 3px; + padding-left: 3px; + padding-top: 1px; + text-shadow: 1px 1px #888888; + z-index: 100; +} +.divTimeImageOverlay { + position: fixed; + background-color: rgba(0, 0, 0, 0.75); + z-index: 99; + width: 256px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: contain; +} +.imgOverlay { + height: 100%; + width: 100%; + max-width: none; + border: 1px solid rgba(0, 0, 0, 0.75); +} +.videoPosterFrameImage { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + height: 100%; + width: 100%; +} +.playerContainer_controls_playback_playbackBar_canvas { + overflow: hidden; + position: absolute; +} +#playerContainer_controls_playback_playbackBar { + overflow: hidden; + background-color: #333333; +} +.login-link { + margin-top: 20px; + margin-bottom: 20px; +} +video::-internal-media-controls-download-button { + display: none; +} +video::-webkit-media-controls-enclosure { + overflow: hidden; +} +video::-webkit-media-controls-panel { + width: calc(100% + 8px); + /* Adjust as needed */ +} +#lazyLoadThumbnailContainer { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + z-index: 20; + /* Over the video contaniner and video layout buttons, but under the play button */ +} +.dimmed-element { + filter: blur(4px); +} +/* TODO: Extract this CSS to editor plugins */ +.editorTrackItem.mainTrackTrim { + background-image: url(../images/main_track_bkg.png); + background-size: 56px 100%; +} +/* END EXTRACT */ +/* Begin new editor */ +a.btn { + color: #f3f3f3; +} +.listItem { + color: #f3f3f3; +} +.editorContainer { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: 100%; + height: 100%; +} +.paellaEditorRightBar { + position: fixed; + right: 0px; + top: 0px; + background-color: #4f4f4f; + box-shadow: 1px -4px 12px black; +} +.paellaEditorBottomBar { + position: fixed; + right: 0px; + bottom: 0px; + left: 0px; + background-color: #4f4f4f; + box-shadow: 1px 1px 12px black; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.paellaEditorRightBarContent { + padding-left: 10px; + padding-right: 10px; + font-size: 11px; +} +.editorTimelineContainer { + margin-top: -21px; + position: relative; + overflow: auto; +} +.editorTimelineContent { + background-image: url(../images/light_background.png); + top: 0px; + box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.7); + position: relative; +} +.editorTimeLineTimeMarks { + position: absolute; + top: 0px; + height: 20px; + left: 0px; + right: 0px; + z-index: 1; + padding-left: 3px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorTimeLineMark { + float: left; + /* background-color: rgb(61,62,62);*/ + font-size: 9px; + height: 20px; + line-height: 18px; +} +.editorTimeLineMark.odd { + /* background-color: rgb(73,82,82);*/ +} +.editorTrackListItem.master { + position: absolute; + left: 0px; + right: 0px; + top: 38px; + height: 51px; +} +.editorTrackListItem.secondary { + height: 23px; + position: relative; +} +.editorTrackListItem.secondary.track0 { + margin-top: 90px; +} +.editorTrackItem { + position: absolute; + height: 97%; + border-radius: 5px; + border: 1px solid #6f6f6f; + overflow: hidden; +} +.editorTrackItemResizer { + width: 2px; + top: 20%; + bottom: 23%; + position: absolute; + overflow: hidden; + cursor: pointer; +} +.editorTrackItemResizer.left { + border-right: 8px double #7c7c7c; + left: 0px; +} +.editorTrackItemResizer.right { + border-left: 8px double #7c7c7c; + right: 0px; +} +.editorTrackItemMoveArea { + position: absolute; + left: 18px; + right: 18px; + top: 0px; + bottom: 0px; + cursor: pointer; +} +.editorTrackItemLabel { + margin-left: 20px; + margin-right: 20px; + height: 100%; + line-height: 48px; + cursor: pointer; +} +.editorTrackItemLock { + top: 5%; + position: absolute; +} +.editorTrackItemLabel.secondary { + line-height: 23px; +} +.editorTimeLineMark.last { + overflow: hidden; +} +.editorTimeLineTracks { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + padding-bottom: 20px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorBottomToolbarContainer { + background-color: #52595F; + height: 27px; +} +.zoomDropup { + margin-top: 2px; + float: right; + margin-right: 10px; +} +.navbar.tiny { + font-size: 11px; +} +.navbar-inner.tiny { + min-height: 21px; +} +.navbar .nav > li { + line-height: 11px; +} +.navbar .nav > li > a.rightBarPlugin { + padding: 5px 5px 5px; +} +.editorToolbar_selectedToolUtils { + margin-left: 10px; +} +.editorToolbarPlaybackControls { + position: absolute; + left: 45%; +} +.editorTimelineCursor { + position: absolute; + height: 100%; + width: 1px; + border-left: 1px dashed rgba(238, 0, 12, 0.92); + left: 352px; + z-index: 0; + top: 0px; + line-height: 54px; + font-size: 11px; + padding-left: 3px; +} +.editorTimelineCursor.currentTime { + border-left: 1px solid white; +} +.editorRightBarTabIcon { + /* display: inline-block; to add icon, set this property and the background image in the plugin css file, using .editorRightBarTabIcon.pluginName as class name */ + width: 15px; + height: 14px; + margin-bottom: -3px; + margin-right: 2px; +} +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?u9ewd1'); + src: url('fonts/icomoon.eot?u9ewd1#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?u9ewd1') format('truetype'), url('fonts/icomoon.woff?u9ewd1') format('woff'), url('fonts/icomoon.svg?u9ewd1#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-mini-camera:before { + content: "\e900"; +} +.icon-captions:before { + content: "\e901"; +} +.icon-paintbrush:before { + content: "\e902"; +} +.icon-airplay:before { + content: "\e903"; +} +.icon-arrow-down:before { + content: "\e904"; +} +.icon-arrow-left:before { + content: "\e905"; +} +.icon-arrow-right:before { + content: "\e906"; +} +.icon-arrow-up:before { + content: "\e907"; +} +.icon-back-10-s:before { + content: "\e908"; +} +.icon-back-30-s:before { + content: "\e909"; +} +.icon-comments-disabled:before { + content: "\e90a"; +} +.icon-comments:before { + content: "\e90b"; +} +.icon-edit:before { + content: "\e90c"; +} +.icon-facebook:before { + content: "\e90d"; +} +.icon-folder:before { + content: "\e90e"; +} +.icon-forward-30-s:before { + content: "\e90f"; +} +.icon-frames:before { + content: "\e910"; +} +.icon-fullscreen:before { + content: "\e911"; +} +.icon-headphone:before { + content: "\e912"; +} +.icon-help:before { + content: "\e913"; +} +.icon-info:before { + content: "\e914"; +} +.icon-link:before { + content: "\e915"; +} +.icon-mini-frames:before { + content: "\e916"; +} +.icon-mini-videocamera:before { + content: "\e917"; +} +.icon-mini-window:before { + content: "\e918"; +} +.icon-mini-zoom-in:before { + content: "\e919"; +} +.icon-mini-zoom-out:before { + content: "\e91a"; +} +.icon-pause:before { + content: "\e91b"; +} +.icon-photo:before { + content: "\e91c"; +} +.icon-pip:before { + content: "\e91d"; +} +.icon-play:before { + content: "\e91e"; +} +.icon-player-mode-1:before { + content: "\e91f"; +} +.icon-player-mode-2:before { + content: "\e920"; +} +.icon-player-mode-3:before { + content: "\e921"; +} +.icon-present-mode-1:before { + content: "\e922"; +} +.icon-present-mode-2:before { + content: "\e923"; +} +.icon-present-mode-3:before { + content: "\e924"; +} +.icon-present-mode-4:before { + content: "\e925"; +} +.icon-present-mode-5:before { + content: "\e926"; +} +.icon-present-mode-6:before { + content: "\e927"; +} +.icon-present-mode-7:before { + content: "\e928"; +} +.icon-present-mode-8:before { + content: "\e929"; +} +.icon-present-mode-9:before { + content: "\e92a"; +} +.icon-present-mode-10:before { + content: "\e92b"; +} +.icon-presentation-mode:before { + content: "\e92c"; +} +.icon-screen:before { + content: "\e92d"; +} +.icon-slideshow:before { + content: "\e92e"; +} +.icon-social:before { + content: "\e92f"; +} +.icon-star-empty:before { + content: "\e930"; +} +.icon-star:before { + content: "\e931"; +} +.icon-stats:before { + content: "\e932"; +} +.icon-twitter:before { + content: "\e933"; +} +.icon-user:before { + content: "\e934"; +} +.icon-volume-high:before { + content: "\e935"; +} +.icon-volume-low:before { + content: "\e936"; +} +.icon-volume-mid:before { + content: "\e937"; +} +.icon-volume-mute:before { + content: "\e938"; +} +.icon-windowed:before { + content: "\e939"; +} +.icon-zoom-in:before { + content: "\e93a"; +} +.icon-zoom:before { + content: "\e93b"; +} +.icon-home:before { + content: "\e93c"; +} +.icon-home2:before { + content: "\e93d"; +} +.icon-home3:before { + content: "\e93e"; +} +.icon-office:before { + content: "\e93f"; +} +.icon-newspaper:before { + content: "\e940"; +} +.icon-pencil:before { + content: "\e941"; +} +.icon-pencil2:before { + content: "\e942"; +} +.icon-quill:before { + content: "\e943"; +} +.icon-pen:before { + content: "\e944"; +} +.icon-blog:before { + content: "\e945"; +} +.icon-eyedropper:before { + content: "\e946"; +} +.icon-droplet:before { + content: "\e947"; +} +.icon-paint-format:before { + content: "\e948"; +} +.icon-image:before { + content: "\e949"; +} +.icon-images:before { + content: "\e94a"; +} +.icon-camera:before { + content: "\e94b"; +} +.icon-headphones:before { + content: "\e94c"; +} +.icon-music:before { + content: "\e94d"; +} +.icon-play2:before { + content: "\e94e"; +} +.icon-film:before { + content: "\e94f"; +} +.icon-video-camera:before { + content: "\e950"; +} +.icon-dice:before { + content: "\e951"; +} +.icon-pacman:before { + content: "\e952"; +} +.icon-spades:before { + content: "\e953"; +} +.icon-clubs:before { + content: "\e954"; +} +.icon-diamonds:before { + content: "\e955"; +} +.icon-bullhorn:before { + content: "\e956"; +} +.icon-connection:before { + content: "\e957"; +} +.icon-podcast:before { + content: "\e958"; +} +.icon-feed:before { + content: "\e959"; +} +.icon-mic:before { + content: "\e95a"; +} +.icon-book:before { + content: "\e95b"; +} +.icon-books:before { + content: "\e95c"; +} +.icon-library:before { + content: "\e95d"; +} +.icon-file-text:before { + content: "\e95e"; +} +.icon-profile:before { + content: "\e95f"; +} +.icon-file-empty:before { + content: "\e960"; +} +.icon-files-empty:before { + content: "\e961"; +} +.icon-file-text2:before { + content: "\e962"; +} +.icon-file-picture:before { + content: "\e963"; +} +.icon-file-music:before { + content: "\e964"; +} +.icon-file-play:before { + content: "\e965"; +} +.icon-file-video:before { + content: "\e966"; +} +.icon-file-zip:before { + content: "\e967"; +} +.icon-copy:before { + content: "\e968"; +} +.icon-paste:before { + content: "\e969"; +} +.icon-stack:before { + content: "\e96a"; +} +.icon-folder2:before { + content: "\e96b"; +} +.icon-folder-open:before { + content: "\e96c"; +} +.icon-folder-plus:before { + content: "\e96d"; +} +.icon-folder-minus:before { + content: "\e96e"; +} +.icon-folder-download:before { + content: "\e96f"; +} +.icon-folder-upload:before { + content: "\e970"; +} +.icon-price-tag:before { + content: "\e971"; +} +.icon-price-tags:before { + content: "\e972"; +} +.icon-barcode:before { + content: "\e973"; +} +.icon-qrcode:before { + content: "\e974"; +} +.icon-ticket:before { + content: "\e975"; +} +.icon-cart:before { + content: "\e976"; +} +.icon-coin-dollar:before { + content: "\e977"; +} +.icon-coin-euro:before { + content: "\e978"; +} +.icon-coin-pound:before { + content: "\e979"; +} +.icon-coin-yen:before { + content: "\e97a"; +} +.icon-credit-card:before { + content: "\e97b"; +} +.icon-calculator:before { + content: "\e97c"; +} +.icon-lifebuoy:before { + content: "\e97d"; +} +.icon-phone:before { + content: "\e97e"; +} +.icon-phone-hang-up:before { + content: "\e97f"; +} +.icon-address-book:before { + content: "\e980"; +} +.icon-envelop:before { + content: "\e981"; +} +.icon-pushpin:before { + content: "\e982"; +} +.icon-location:before { + content: "\e983"; +} +.icon-location2:before { + content: "\e984"; +} +.icon-compass:before { + content: "\e985"; +} +.icon-compass2:before { + content: "\e986"; +} +.icon-map:before { + content: "\e987"; +} +.icon-map2:before { + content: "\e988"; +} +.icon-history:before { + content: "\e989"; +} +.icon-clock:before { + content: "\e98a"; +} +.icon-clock2:before { + content: "\e98b"; +} +.icon-alarm:before { + content: "\e98c"; +} +.icon-bell:before { + content: "\e98d"; +} +.icon-stopwatch:before { + content: "\e98e"; +} +.icon-calendar:before { + content: "\e98f"; +} +.icon-printer:before { + content: "\e990"; +} +.icon-keyboard:before { + content: "\e991"; +} +.icon-display:before { + content: "\e992"; +} +.icon-laptop:before { + content: "\e993"; +} +.icon-mobile:before { + content: "\e994"; +} +.icon-mobile2:before { + content: "\e995"; +} +.icon-tablet:before { + content: "\e996"; +} +.icon-tv:before { + content: "\e997"; +} +.icon-drawer:before { + content: "\e998"; +} +.icon-drawer2:before { + content: "\e999"; +} +.icon-box-add:before { + content: "\e99a"; +} +.icon-box-remove:before { + content: "\e99b"; +} +.icon-download:before { + content: "\e99c"; +} +.icon-upload:before { + content: "\e99d"; +} +.icon-floppy-disk:before { + content: "\e99e"; +} +.icon-drive:before { + content: "\e99f"; +} +.icon-database:before { + content: "\e9a0"; +} +.icon-undo:before { + content: "\e9a1"; +} +.icon-redo:before { + content: "\e9a2"; +} +.icon-undo2:before { + content: "\e9a3"; +} +.icon-redo2:before { + content: "\e9a4"; +} +.icon-forward:before { + content: "\e9a5"; +} +.icon-reply:before { + content: "\e9a6"; +} +.icon-bubble:before { + content: "\e9a7"; +} +.icon-bubbles:before { + content: "\e9a8"; +} +.icon-bubbles2:before { + content: "\e9a9"; +} +.icon-bubble2:before { + content: "\e9aa"; +} +.icon-bubbles3:before { + content: "\e9ab"; +} +.icon-bubbles4:before { + content: "\e9ac"; +} +.icon-user2:before { + content: "\e9ad"; +} +.icon-users:before { + content: "\e9ae"; +} +.icon-user-plus:before { + content: "\e9af"; +} +.icon-user-minus:before { + content: "\e9b0"; +} +.icon-user-check:before { + content: "\e9b1"; +} +.icon-user-tie:before { + content: "\e9b2"; +} +.icon-quotes-left:before { + content: "\e9b3"; +} +.icon-quotes-right:before { + content: "\e9b4"; +} +.icon-hour-glass:before { + content: "\e9b5"; +} +.icon-spinner:before { + content: "\e9b6"; +} +.icon-spinner2:before { + content: "\e9b7"; +} +.icon-spinner3:before { + content: "\e9b8"; +} +.icon-spinner4:before { + content: "\e9b9"; +} +.icon-spinner5:before { + content: "\e9ba"; +} +.icon-spinner6:before { + content: "\e9bb"; +} +.icon-spinner7:before { + content: "\e9bc"; +} +.icon-spinner8:before { + content: "\e9bd"; +} +.icon-spinner9:before { + content: "\e9be"; +} +.icon-spinner10:before { + content: "\e9bf"; +} +.icon-spinner11:before { + content: "\e9c0"; +} +.icon-binoculars:before { + content: "\e9c1"; +} +.icon-search:before { + content: "\e9c2"; +} +.icon-zoom-in2:before { + content: "\e9c3"; +} +.icon-zoom-out:before { + content: "\e9c4"; +} +.icon-enlarge:before { + content: "\e9c5"; +} +.icon-shrink:before { + content: "\e9c6"; +} +.icon-enlarge2:before { + content: "\e9c7"; +} +.icon-shrink2:before { + content: "\e9c8"; +} +.icon-key:before { + content: "\e9c9"; +} +.icon-key2:before { + content: "\e9ca"; +} +.icon-lock:before { + content: "\e9cb"; +} +.icon-unlocked:before { + content: "\e9cc"; +} +.icon-wrench:before { + content: "\e9cd"; +} +.icon-equalizer:before { + content: "\e9ce"; +} +.icon-equalizer2:before { + content: "\e9cf"; +} +.icon-cog:before { + content: "\e9d0"; +} +.icon-cogs:before { + content: "\e9d1"; +} +.icon-hammer:before { + content: "\e9d2"; +} +.icon-magic-wand:before { + content: "\e9d3"; +} +.icon-aid-kit:before { + content: "\e9d4"; +} +.icon-bug:before { + content: "\e9d5"; +} +.icon-pie-chart:before { + content: "\e9d6"; +} +.icon-stats-dots:before { + content: "\e9d7"; +} +.icon-stats-bars:before { + content: "\e9d8"; +} +.icon-stats-bars2:before { + content: "\e9d9"; +} +.icon-trophy:before { + content: "\e9da"; +} +.icon-gift:before { + content: "\e9db"; +} +.icon-glass:before { + content: "\e9dc"; +} +.icon-glass2:before { + content: "\e9dd"; +} +.icon-mug:before { + content: "\e9de"; +} +.icon-spoon-knife:before { + content: "\e9df"; +} +.icon-leaf:before { + content: "\e9e0"; +} +.icon-rocket:before { + content: "\e9e1"; +} +.icon-meter:before { + content: "\e9e2"; +} +.icon-meter2:before { + content: "\e9e3"; +} +.icon-hammer2:before { + content: "\e9e4"; +} +.icon-fire:before { + content: "\e9e5"; +} +.icon-lab:before { + content: "\e9e6"; +} +.icon-magnet:before { + content: "\e9e7"; +} +.icon-bin:before { + content: "\e9e8"; +} +.icon-bin2:before { + content: "\e9e9"; +} +.icon-briefcase:before { + content: "\e9ea"; +} +.icon-airplane:before { + content: "\e9eb"; +} +.icon-truck:before { + content: "\e9ec"; +} +.icon-road:before { + content: "\e9ed"; +} +.icon-accessibility:before { + content: "\e9ee"; +} +.icon-target:before { + content: "\e9ef"; +} +.icon-shield:before { + content: "\e9f0"; +} +.icon-power:before { + content: "\e9f1"; +} +.icon-switch:before { + content: "\e9f2"; +} +.icon-power-cord:before { + content: "\e9f3"; +} +.icon-clipboard:before { + content: "\e9f4"; +} +.icon-list-numbered:before { + content: "\e9f5"; +} +.icon-list:before { + content: "\e9f6"; +} +.icon-list2:before { + content: "\e9f7"; +} +.icon-tree:before { + content: "\e9f8"; +} +.icon-menu:before { + content: "\e9f9"; +} +.icon-menu2:before { + content: "\e9fa"; +} +.icon-menu3:before { + content: "\e9fb"; +} +.icon-menu4:before { + content: "\e9fc"; +} +.icon-cloud:before { + content: "\e9fd"; +} +.icon-cloud-download:before { + content: "\e9fe"; +} +.icon-cloud-upload:before { + content: "\e9ff"; +} +.icon-cloud-check:before { + content: "\ea00"; +} +.icon-download2:before { + content: "\ea01"; +} +.icon-upload2:before { + content: "\ea02"; +} +.icon-download3:before { + content: "\ea03"; +} +.icon-upload3:before { + content: "\ea04"; +} +.icon-sphere:before { + content: "\ea05"; +} +.icon-earth:before { + content: "\ea06"; +} +.icon-link2:before { + content: "\ea07"; +} +.icon-flag:before { + content: "\ea08"; +} +.icon-attachment:before { + content: "\ea09"; +} +.icon-eye:before { + content: "\ea0a"; +} +.icon-eye-plus:before { + content: "\ea0b"; +} +.icon-eye-minus:before { + content: "\ea0c"; +} +.icon-eye-blocked:before { + content: "\ea0d"; +} +.icon-bookmark:before { + content: "\ea0e"; +} +.icon-bookmarks:before { + content: "\ea0f"; +} +.icon-sun:before { + content: "\ea10"; +} +.icon-contrast:before { + content: "\ea11"; +} +.icon-brightness-contrast:before { + content: "\ea12"; +} +.icon-star-empty2:before { + content: "\ea13"; +} +.icon-star-half:before { + content: "\ea14"; +} +.icon-star-full:before { + content: "\ea15"; +} +.icon-heart:before { + content: "\ea16"; +} +.icon-heart-broken:before { + content: "\ea17"; +} +.icon-man:before { + content: "\ea18"; +} +.icon-woman:before { + content: "\ea19"; +} +.icon-man-woman:before { + content: "\ea1a"; +} +.icon-happy:before { + content: "\ea1b"; +} +.icon-happy2:before { + content: "\ea1c"; +} +.icon-smile:before { + content: "\ea1d"; +} +.icon-smile2:before { + content: "\ea1e"; +} +.icon-tongue:before { + content: "\ea1f"; +} +.icon-tongue2:before { + content: "\ea20"; +} +.icon-sad:before { + content: "\ea21"; +} +.icon-sad2:before { + content: "\ea22"; +} +.icon-wink:before { + content: "\ea23"; +} +.icon-wink2:before { + content: "\ea24"; +} +.icon-grin:before { + content: "\ea25"; +} +.icon-grin2:before { + content: "\ea26"; +} +.icon-cool:before { + content: "\ea27"; +} +.icon-cool2:before { + content: "\ea28"; +} +.icon-angry:before { + content: "\ea29"; +} +.icon-angry2:before { + content: "\ea2a"; +} +.icon-evil:before { + content: "\ea2b"; +} +.icon-evil2:before { + content: "\ea2c"; +} +.icon-shocked:before { + content: "\ea2d"; +} +.icon-shocked2:before { + content: "\ea2e"; +} +.icon-baffled:before { + content: "\ea2f"; +} +.icon-baffled2:before { + content: "\ea30"; +} +.icon-confused:before { + content: "\ea31"; +} +.icon-confused2:before { + content: "\ea32"; +} +.icon-neutral:before { + content: "\ea33"; +} +.icon-neutral2:before { + content: "\ea34"; +} +.icon-hipster:before { + content: "\ea35"; +} +.icon-hipster2:before { + content: "\ea36"; +} +.icon-wondering:before { + content: "\ea37"; +} +.icon-wondering2:before { + content: "\ea38"; +} +.icon-sleepy:before { + content: "\ea39"; +} +.icon-sleepy2:before { + content: "\ea3a"; +} +.icon-frustrated:before { + content: "\ea3b"; +} +.icon-frustrated2:before { + content: "\ea3c"; +} +.icon-crying:before { + content: "\ea3d"; +} +.icon-crying2:before { + content: "\ea3e"; +} +.icon-point-up:before { + content: "\ea3f"; +} +.icon-point-right:before { + content: "\ea40"; +} +.icon-point-down:before { + content: "\ea41"; +} +.icon-point-left:before { + content: "\ea42"; +} +.icon-warning:before { + content: "\ea43"; +} +.icon-notification:before { + content: "\ea44"; +} +.icon-question:before { + content: "\ea45"; +} +.icon-plus:before { + content: "\ea46"; +} +.icon-minus:before { + content: "\ea47"; +} +.icon-info2:before { + content: "\ea48"; +} +.icon-cancel-circle:before { + content: "\ea49"; +} +.icon-blocked:before { + content: "\ea4a"; +} +.icon-cross:before { + content: "\ea4b"; +} +.icon-checkmark:before { + content: "\ea4c"; +} +.icon-checkmark2:before { + content: "\ea4d"; +} +.icon-spell-check:before { + content: "\ea4e"; +} +.icon-enter:before { + content: "\ea4f"; +} +.icon-exit:before { + content: "\ea50"; +} +.icon-play22:before { + content: "\ea51"; +} +.icon-pause2:before { + content: "\ea52"; +} +.icon-stop:before { + content: "\ea53"; +} +.icon-previous:before { + content: "\ea54"; +} +.icon-next:before { + content: "\ea55"; +} +.icon-backward:before { + content: "\ea56"; +} +.icon-forward2:before { + content: "\ea57"; +} +.icon-play3:before { + content: "\ea58"; +} +.icon-pause22:before { + content: "\ea59"; +} +.icon-stop2:before { + content: "\ea5a"; +} +.icon-backward2:before { + content: "\ea5b"; +} +.icon-forward3:before { + content: "\ea5c"; +} +.icon-first:before { + content: "\ea5d"; +} +.icon-last:before { + content: "\ea5e"; +} +.icon-previous2:before { + content: "\ea5f"; +} +.icon-next2:before { + content: "\ea60"; +} +.icon-eject:before { + content: "\ea61"; +} +.icon-volume-high2:before { + content: "\ea62"; +} +.icon-volume-medium:before { + content: "\ea63"; +} +.icon-volume-low2:before { + content: "\ea64"; +} +.icon-volume-mute2:before { + content: "\ea65"; +} +.icon-volume-mute22:before { + content: "\ea66"; +} +.icon-volume-increase:before { + content: "\ea67"; +} +.icon-volume-decrease:before { + content: "\ea68"; +} +.icon-loop:before { + content: "\ea69"; +} +.icon-loop2:before { + content: "\ea6a"; +} +.icon-infinite:before { + content: "\ea6b"; +} +.icon-shuffle:before { + content: "\ea6c"; +} +.icon-arrow-up-left:before { + content: "\ea6d"; +} +.icon-arrow-up2:before { + content: "\ea6e"; +} +.icon-arrow-up-right:before { + content: "\ea6f"; +} +.icon-arrow-right2:before { + content: "\ea70"; +} +.icon-arrow-down-right:before { + content: "\ea71"; +} +.icon-arrow-down2:before { + content: "\ea72"; +} +.icon-arrow-down-left:before { + content: "\ea73"; +} +.icon-arrow-left2:before { + content: "\ea74"; +} +.icon-arrow-up-left2:before { + content: "\ea75"; +} +.icon-arrow-up22:before { + content: "\ea76"; +} +.icon-arrow-up-right2:before { + content: "\ea77"; +} +.icon-arrow-right22:before { + content: "\ea78"; +} +.icon-arrow-down-right2:before { + content: "\ea79"; +} +.icon-arrow-down22:before { + content: "\ea7a"; +} +.icon-arrow-down-left2:before { + content: "\ea7b"; +} +.icon-arrow-left22:before { + content: "\ea7c"; +} +.icon-circle-up:before { + content: "\ea7d"; +} +.icon-circle-right:before { + content: "\ea7e"; +} +.icon-circle-down:before { + content: "\ea7f"; +} +.icon-circle-left:before { + content: "\ea80"; +} +.icon-tab:before { + content: "\ea81"; +} +.icon-move-up:before { + content: "\ea82"; +} +.icon-move-down:before { + content: "\ea83"; +} +.icon-sort-alpha-asc:before { + content: "\ea84"; +} +.icon-sort-alpha-desc:before { + content: "\ea85"; +} +.icon-sort-numeric-asc:before { + content: "\ea86"; +} +.icon-sort-numberic-desc:before { + content: "\ea87"; +} +.icon-sort-amount-asc:before { + content: "\ea88"; +} +.icon-sort-amount-desc:before { + content: "\ea89"; +} +.icon-command:before { + content: "\ea8a"; +} +.icon-shift:before { + content: "\ea8b"; +} +.icon-ctrl:before { + content: "\ea8c"; +} +.icon-opt:before { + content: "\ea8d"; +} +.icon-checkbox-checked:before { + content: "\ea8e"; +} +.icon-checkbox-unchecked:before { + content: "\ea8f"; +} +.icon-radio-checked:before { + content: "\ea90"; +} +.icon-radio-checked2:before { + content: "\ea91"; +} +.icon-radio-unchecked:before { + content: "\ea92"; +} +.icon-crop:before { + content: "\ea93"; +} +.icon-make-group:before { + content: "\ea94"; +} +.icon-ungroup:before { + content: "\ea95"; +} +.icon-scissors:before { + content: "\ea96"; +} +.icon-filter:before { + content: "\ea97"; +} +.icon-font:before { + content: "\ea98"; +} +.icon-ligature:before { + content: "\ea99"; +} +.icon-ligature2:before { + content: "\ea9a"; +} +.icon-text-height:before { + content: "\ea9b"; +} +.icon-text-width:before { + content: "\ea9c"; +} +.icon-font-size:before { + content: "\ea9d"; +} +.icon-bold:before { + content: "\ea9e"; +} +.icon-underline:before { + content: "\ea9f"; +} +.icon-italic:before { + content: "\eaa0"; +} +.icon-strikethrough:before { + content: "\eaa1"; +} +.icon-omega:before { + content: "\eaa2"; +} +.icon-sigma:before { + content: "\eaa3"; +} +.icon-page-break:before { + content: "\eaa4"; +} +.icon-superscript:before { + content: "\eaa5"; +} +.icon-subscript:before { + content: "\eaa6"; +} +.icon-superscript2:before { + content: "\eaa7"; +} +.icon-subscript2:before { + content: "\eaa8"; +} +.icon-text-color:before { + content: "\eaa9"; +} +.icon-pagebreak:before { + content: "\eaaa"; +} +.icon-clear-formatting:before { + content: "\eaab"; +} +.icon-table:before { + content: "\eaac"; +} +.icon-table2:before { + content: "\eaad"; +} +.icon-insert-template:before { + content: "\eaae"; +} +.icon-pilcrow:before { + content: "\eaaf"; +} +.icon-ltr:before { + content: "\eab0"; +} +.icon-rtl:before { + content: "\eab1"; +} +.icon-section:before { + content: "\eab2"; +} +.icon-paragraph-left:before { + content: "\eab3"; +} +.icon-paragraph-center:before { + content: "\eab4"; +} +.icon-paragraph-right:before { + content: "\eab5"; +} +.icon-paragraph-justify:before { + content: "\eab6"; +} +.icon-indent-increase:before { + content: "\eab7"; +} +.icon-indent-decrease:before { + content: "\eab8"; +} +.icon-share:before { + content: "\eab9"; +} +.icon-new-tab:before { + content: "\eaba"; +} +.icon-embed:before { + content: "\eabb"; +} +.icon-embed2:before { + content: "\eabc"; +} +.icon-terminal:before { + content: "\eabd"; +} +.icon-share2:before { + content: "\eabe"; +} +.icon-mail:before { + content: "\eabf"; +} +.icon-mail2:before { + content: "\eac0"; +} +.icon-mail3:before { + content: "\eac1"; +} +.icon-mail4:before { + content: "\eac2"; +} +.icon-amazon:before { + content: "\eac3"; +} +.icon-google:before { + content: "\eac4"; +} +.icon-google2:before { + content: "\eac5"; +} +.icon-google3:before { + content: "\eac6"; +} +.icon-google-plus:before { + content: "\eac7"; +} +.icon-google-plus2:before { + content: "\eac8"; +} +.icon-google-plus3:before { + content: "\eac9"; +} +.icon-hangouts:before { + content: "\eaca"; +} +.icon-google-drive:before { + content: "\eacb"; +} +.icon-facebook2:before { + content: "\eacc"; +} +.icon-facebook22:before { + content: "\eacd"; +} +.icon-instagram:before { + content: "\eace"; +} +.icon-whatsapp:before { + content: "\eacf"; +} +.icon-spotify:before { + content: "\ead0"; +} +.icon-telegram:before { + content: "\ead1"; +} +.icon-twitter2:before { + content: "\ead2"; +} +.icon-vine:before { + content: "\ead3"; +} +.icon-vk:before { + content: "\ead4"; +} +.icon-renren:before { + content: "\ead5"; +} +.icon-sina-weibo:before { + content: "\ead6"; +} +.icon-rss:before { + content: "\ead7"; +} +.icon-rss2:before { + content: "\ead8"; +} +.icon-youtube:before { + content: "\ead9"; +} +.icon-youtube2:before { + content: "\eada"; +} +.icon-twitch:before { + content: "\eadb"; +} +.icon-vimeo:before { + content: "\eadc"; +} +.icon-vimeo2:before { + content: "\eadd"; +} +.icon-lanyrd:before { + content: "\eade"; +} +.icon-flickr:before { + content: "\eadf"; +} +.icon-flickr2:before { + content: "\eae0"; +} +.icon-flickr3:before { + content: "\eae1"; +} +.icon-flickr4:before { + content: "\eae2"; +} +.icon-dribbble:before { + content: "\eae3"; +} +.icon-behance:before { + content: "\eae4"; +} +.icon-behance2:before { + content: "\eae5"; +} +.icon-deviantart:before { + content: "\eae6"; +} +.icon-500px:before { + content: "\eae7"; +} +.icon-steam:before { + content: "\eae8"; +} +.icon-steam2:before { + content: "\eae9"; +} +.icon-dropbox:before { + content: "\eaea"; +} +.icon-onedrive:before { + content: "\eaeb"; +} +.icon-github:before { + content: "\eaec"; +} +.icon-npm:before { + content: "\eaed"; +} +.icon-basecamp:before { + content: "\eaee"; +} +.icon-trello:before { + content: "\eaef"; +} +.icon-wordpress:before { + content: "\eaf0"; +} +.icon-joomla:before { + content: "\eaf1"; +} +.icon-ello:before { + content: "\eaf2"; +} +.icon-blogger:before { + content: "\eaf3"; +} +.icon-blogger2:before { + content: "\eaf4"; +} +.icon-tumblr:before { + content: "\eaf5"; +} +.icon-tumblr2:before { + content: "\eaf6"; +} +.icon-yahoo:before { + content: "\eaf7"; +} +.icon-yahoo2:before { + content: "\eaf8"; +} +.icon-tux:before { + content: "\eaf9"; +} +.icon-appleinc:before { + content: "\eafa"; +} +.icon-finder:before { + content: "\eafb"; +} +.icon-android:before { + content: "\eafc"; +} +.icon-windows:before { + content: "\eafd"; +} +.icon-windows8:before { + content: "\eafe"; +} +.icon-soundcloud:before { + content: "\eaff"; +} +.icon-soundcloud2:before { + content: "\eb00"; +} +.icon-skype:before { + content: "\eb01"; +} +.icon-reddit:before { + content: "\eb02"; +} +.icon-hackernews:before { + content: "\eb03"; +} +.icon-wikipedia:before { + content: "\eb04"; +} +.icon-linkedin:before { + content: "\eb05"; +} +.icon-linkedin2:before { + content: "\eb06"; +} +.icon-lastfm:before { + content: "\eb07"; +} +.icon-lastfm2:before { + content: "\eb08"; +} +.icon-delicious:before { + content: "\eb09"; +} +.icon-stumbleupon:before { + content: "\eb0a"; +} +.icon-stumbleupon2:before { + content: "\eb0b"; +} +.icon-stackoverflow:before { + content: "\eb0c"; +} +.icon-pinterest:before { + content: "\eb0d"; +} +.icon-pinterest2:before { + content: "\eb0e"; +} +.icon-xing:before { + content: "\eb0f"; +} +.icon-xing2:before { + content: "\eb10"; +} +.icon-flattr:before { + content: "\eb11"; +} +.icon-foursquare:before { + content: "\eb12"; +} +.icon-yelp:before { + content: "\eb13"; +} +.icon-paypal:before { + content: "\eb14"; +} +.icon-chrome:before { + content: "\eb15"; +} +.icon-firefox:before { + content: "\eb16"; +} +.icon-IE:before { + content: "\eb17"; +} +.icon-edge:before { + content: "\eb18"; +} +.icon-safari:before { + content: "\eb19"; +} +.icon-opera:before { + content: "\eb1a"; +} +.icon-file-pdf:before { + content: "\eb1b"; +} +.icon-file-openoffice:before { + content: "\eb1c"; +} +.icon-file-word:before { + content: "\eb1d"; +} +.icon-file-excel:before { + content: "\eb1e"; +} +.icon-libreoffice:before { + content: "\eb1f"; +} +.icon-html-five:before { + content: "\eb20"; +} +.icon-html-five2:before { + content: "\eb21"; +} +.icon-css3:before { + content: "\eb22"; +} +.icon-git:before { + content: "\eb23"; +} +.icon-codepen:before { + content: "\eb24"; +} +.icon-svg:before { + content: "\eb25"; +} +.icon-IcoMoon:before { + content: "\eb26"; +} +.buttonPlugin.flexSkip_Rewind_10 { + background-position: -205% 22%; +} +.buttonPlugin.flexSkip_Forward_30 { + background-position: -200% 22%; +} +.buttonPlugin.arrowSlideNavidator.nextButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.buttonPlugin.arrowSlideNavidator.prevButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.arrow-slide-navigator-container { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; +} +.buttonPlugin.audioTags { + text-align: center; + background-position: -900% -200%; + font-size: 0.8em; + line-height: 30px; + color: white; + text-transform: uppercase; +} +.videoAudioTrackItem { + padding: 10px; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; +} +.videoAudioTrackItem.selected { + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #cc0000; +} +.videoAudioTrackItem:hover { + background-color: #cc0000; +} +.blackBoardDiv { + position: absolute; + /* 16:9 */ + width: 816px; + height: 459px; + top: 135px; + left: 450px; + background-size: 100%; +} +.lensClass { + background-color: rgba(255, 236, 195, 0.3); + position: absolute; + border: 1px dotted white; +} +.lensContainer img { + width: 100% !important; +} +#overlayContainer div.lensContainer { + pointer-events: all; +} +.textBreak { + background-color: rgba(128, 128, 128, 0.7); + text-align: center; + color: white; + line-height: 17px; + font-size: 18px; + padding-top: 10px; + padding-bottom: 10px; + border-radius: 12px; +} +.buttonPlugin.captionsPluginButton { + background-position: 0% -100%; +} +.captionsPluginContainer { + width: 400px; + overflow: hidden; +} +.captionsBar input { + color: white; + background-color: rgba(0, 0, 0, 0.75); + border-color: #cc0000; + width: 49%; + margin-bottom: 0px; + margin-left: 1px; + float: left; +} +.captionsBar select { + width: 39%; + display: inline; + background-color: #cc0000; + border: 1px solid #ccc; + color: white; + margin-bottom: 0px; + height: 31px; +} +.captionsBar button { + float: right; + width: 7%; + min-height: 30px; + min-width: 30px; + margin-right: 2px; + background: url(../images/paella_icons_light.png); + background-position: -400% -100%; + background-size: 2000% 1000%; + position: static; +} +.captionsBar button:hover { + background-color: #cc0000; +} +.bodyInnerContainer { + margin-bottom: 5px; + display: block; + margin-left: 3px; + height: auto; +} +.captionsBar input:hover { + border-color: #FF4C4C; +} +.captionsBar input:focus { + border-color: #cc0000; +} +.captionsBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.captionsBar input:hover { + border-color: #FF4C4C; +} +.captionsBar input:focus { + border-color: #FF4C4C; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #cc0000; +} +/* CSS OVERLAY */ +.CaptionsOnScreen { + position: absolute; + width: 100%; + height: 100%; + text-align: center; + top: 0; + left: 0; + z-index: 99; +} +.CaptionsOnScreenInner { + background-color: rgba(0, 0, 0, 0.6); + position: relative; + text-align: center; + color: white; + font-size: 17px; + width: 70%; + min-height: 20px; + margin-left: auto; + margin-right: auto; + padding: 8px; + border-radius: 12px; +} +.Highlight { + color: #FF4C4C; + font-weight: bold; +} +#CommentPlugin_Publish_entry_buttons_area { + margin-top: 5px; +} +.comments_entry { + margin: 5px; + margin-bottom: 20px; + width: 90%; +} +.comments_entry_username { + color: #438bc5; + font-size: 14px; + font-family: arial, sans-serif; + font-weight: bold; +} +.comments_entry_datepublish { + color: #999; + font-size: 11px; + font-family: arial, sans-serif; + margin-left: 20px; +} +.comments_entry_comment { + margin-top: 5px; + margin-bottom: 10px; +} +.comments_entry_silhouette { + float: left; + width: 6%; +} +.comments_entry_container { + vertical-align: top; + margin: 10px; + margin-left: 50px; + width: 100%; +} +.comments_entry_container textarea { + width: 98%; + height: 45px; + /*margin-top:10px;*/ + margin-bottom: 5px; + color: #52575c; +} +.CommentPlugin_Publish { + /*box-shadow: inset 0px 0px 10px 2px rgba(10, 10,10, 0.39); */ + border-radius: 7px; + padding: 10px; + padding-bottom: 1px; +} +textarea { + resize: vertical; +} +.reply_button { + color: #999; + font-size: 12px; + font-family: arial, sans-serif; + margin-bottom: 15px; + font-weight: bold; + cursor: pointer; +} +.reply_button:hover { + color: #438bc5; + text-decoration: underline; +} +.buttonPlugin.extendedTabAdapterPlugin { + background-position: -500% -200%; +} +.buttonPluginPopUp.extendedTabAdapterPlugin { + background-image: none; + background-color: rgba(0, 0, 0, 0); +} +.extendedTabAdapterPlugin > .tabsPluginContainer { + width: 600px; + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel { + display: inline; + background-color: rgba(0, 0, 0, 0.75); + line-height: 26px; + padding-left: 10px; + padding-right: 10px; + padding-top: 7px; + padding-bottom: 7px; + cursor: pointer; + cursor: hand; + font-family: sans-serif; + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.48); + border-radius: 6px 6px 0px 0px; + font-size: 12px; + margin-left: 1px; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.enabled { + cursor: default; + box-shadow: inset 0px 0px 12px rgba(0, 0, 0, 0.9); +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.disabled { + background-color: #e6e6e6; + color: black; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer { + height: 200px; + background-color: rgba(0, 0, 0, 0.75); + padding-left: 5px; + padding-top: 9px; + padding-right: 5px; + overflow-y: scroll; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #FF4C4C; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.enabled { + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.disabled { + display: none; +} +.buttonPlugin.footPrints { + background-position: -700% 0%; +} +.footPrintsContainer { + height: 20px; + width: 100%; + overflow: hidden; + display: block; +} +.footPrintsCanvas { + width: 100%; + height: 100%; + overflow: hidden; + display: inline-block; +} +.frameControlContainer { + height: 87px; + width: 90%; + overflow: hidden; + display: inline-block; + margin-left: 5%; +} +.frameControl.navButton { + width: 40px; + height: 40px; + display: block; + cursor: pointer; + background-image: url(../images/paella_icons_light.png); + background-size: 2000% 1000%; + background-position: 100% 100%; + position: absolute; + top: 28px; +} +.frameControl.navButton.left { + background-position: -1600% -100%; + opacity: 0.5; +} +.frameControl.navButton.right { + right: 0px; + opacity: 0.5; + background-position: -1500% -100%; +} +.frameControl.navButton.left:hover { + opacity: 1; +} +.frameControl.navButton.right:hover { + opacity: 1; +} +.frameControlContent { + height: 100px; + overflow: hidden; + padding-top: 6px; +} +.frameControlItem { + width: 140px; + cursor: pointer; + margin-left: 3px; + margin-right: 3px; + float: left; + opacity: 0.8; +} +/*.frameControlItem:hover { + width:94px; + border: 3px dotted #23ff00; + opacity: 1; +}*/ +.frameControlItem.selected { + width: 134px; + border: 3px dotted #cc0000; + opacity: 1; +} +.frameControlItem.current { + width: 134px; + border: 3px solid #cc0000; + opacity: 1; +} +.frameControlImage { + width: 100%; +} +.frameCaption { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + text-align: center; + padding: 5px; + color: black; + text-shadow: 1px 1px 2px #ffffff; +} +.showFramesButton { + position: absolute; + display: block; + width: 40px; + height: 37px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +/* +.showFramesButton:hover { +} +*/ +.showFramesButton_active { + position: absolute; + display: block; + width: 40px; + height: 37px; + right: 0px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +.frameListContainer { + background-image: url(../../resources/images/playback_bkg.png); +} +.frameThumbnail { + /* + margin-top:8px; + margin-right:3px; + margin-bottom:8px; + margin-left:3px; +*/ + margin: 8px 3px 8px 3px; + height: 40px; +} +.frameThumbnail:hover { + margin: 0px; + border: 3px #cc0000 solid; + height: 50px; +} +.enabledFrameThumbnail { + border: 3px #cc0000 solid; + height: 50px; +} +.enabledFrameThumbnail:hover { + border: 3px #cc0000 solid; +} +.buttonPlugin.showFullScreenButton { + background-position: -900% 0%; +} +.buttonPlugin.showFullScreenButton.active { + background-position: -1000% 0%; +} +.buttonPlugin.helpButton { + background-position: -1300% 0%; +} +.buttonPlugin.right.liveIndicator { + width: 100px; + height: 40px; + background-image: url(live_video.png); + background-size: 100% 100%; + margin-top: 5px; + margin-right: 5px; +} +/*.showMultipleQualitiesPlugin { + background-image: url(advanced_button.png); + background-size: 300%; +} + +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image:none; +} + +.selectQuality { + padding: 10px; +}*/ +.buttonPlugin.showMultipleQualitiesPlugin { + text-align: center; + font-size: 0.8em; + line-height: 30px; + min-width: 36px; +} +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image: none; +} +.selectQuality { + padding: 10px; +} +.multipleQualityItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.multipleQualityItem:hover { + background-color: #FF4C4C; +} +.multipleQualityItem.selected { + color: #cc0000; +} +.multipleQualityItem.selected:hover { + color: white; +} +.buttonPlugin.playButton { + background-position: -500% -100%; +} +.buttonPlugin.pauseButton { + background-position: -100% 0%; +} +.playButtonOnScreen { + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.playButtonOnScreenIcon { + display: block; + cursor: pointer; + width: 100%; +} +.playbackRateItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.playbackRateItem:hover { + background-color: #FF4C4C; +} +.buttonPlugin.showPlaybackRateButton { + text-align: center; + line-height: 30px; + background-position: -600% -100%; + font-size: 1em; +} +.playbackRateItem.selected { + color: #cc0000; +} +.playbackRateItem.selected:hover { + color: white; +} +.buttonPlugin.showPlaybackRateButton { + min-width: 36px; +} +.buttonPlugin.rateButtonPlugin { + text-align: center; + background-position: -700% -200%; + font-size: 0.8em; + line-height: 40px; +} +.buttonPluginPopUp { + right: 0px; +} +.rateButtons { + /*padding: 10px;*/ + width: 250px; +} +.starButton { + display: inline-block; + width: 26px; + height: 26px; + font-size: 25px; +} +.rateButtonPlugin h4 { + margin-left: 10px; +} +.rateButtonPlugin h5 { + margin-left: 19px; +} +.rateButtons .starButton:first-of-type { + margin-left: 19px; +} +.buttonPlugin.searchButton { + background-size: 2000% 1000%; + background-position: -900% -100%; + display: block; +} +.buttonPluginPopUp.searchButton { + position: absolute; +} +.searchPluginContainer { + width: 400px; + overflow: hidden; +} +.searchBar input { + color: white; + background-color: rgba(0, 0, 0, 0.75); + border-color: #cc0000; + width: 96%; + margin-bottom: 0px; + margin-left: 1px; +} +.searchBar input:hover { + border-color: #FF4C4C; +} +.searchBar input:focus { + border-color: #FF4C4C; +} +.searchBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.sBodyInnerContainer { + display: block; + margin-left: 3px; + min-height: 70px; + border: 1px solid rgba(0, 0, 0, 0.75); +} +.hover { + background-color: #FF4C4C; +} +.redScore { + background-color: rgba(255, 0, 0, 0.2); +} +.greenScore { + background-color: rgba(0, 255, 0, 0.2); +} +.sBodyText { + width: 100%; + display: block; + text-align: left; +} +.timeSpan { + color: #cc0000; + margin-right: 5px; +} +.TimePicContainer { + float: left; + width: 24%; + text-align: center; + margin-right: 5px; +} +.TimePicContainer img { + width: 100%; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #FF4C4C; +} +svg path, +svg rect { + fill: #FF6700; +} +.loader { + float: left; + display: inline-block; + vertical-align: top; +} +.noResults { + margin: 5px; +} +.buttonPlugin.showSocialPluginButton { + background-position: -800% 0%; +} +.buttonPluginPopUp.showSocialPluginButton { + background-image: none; +} +.socialItemButton { + /*crea el popup*/ + width: 40px; + height: 40px; + cursor: pointer; + background-image: url(../images/paella_icons_light.png); + background-size: 2000% 1000%; + background-position: 0px 0px; +} +.socialItemButton.selected { + /*background-color: rgba(90,90,90,0.8); + border: 3px solid #23ff00;*/ + background-color: rgba(90, 90, 90, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.socialItemButton:hover { + background-color: #faa166; +} +.socialItemButton.facebook { + background-position: -1600% 0%; +} +.socialItemButton.twitter { + background-position: -1400% 0%; +} +.socialItemButton.embed { + background-position: -1500% 0%; +} +.embedSizeButton { + display: inline-block; + background-color: #fa8533; + border: 1px solid #313135; + border-radius: 10px; + cursor: pointer; + margin-right: 5px; + vertical-align: middle; + font-size: 14px; + text-align: center; + color: white; +} +.embedSizeInput { + background-color: #ffffff; + width: 40px; + height: 20px; + color: #000000; + font-size: 12px; + margin: 0px; + padding: 0px; +} +.buttonPlugin.themeChooserPlugin { + background-position: -800% -100%; +} +.buttonPluginPopUp.themeChooserPlugin { + background-image: none; + min-width: 40px; + width: 120px; + text-align: right; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton { + cursor: pointer; + text-align: left; + text-transform: capitalize; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 3px; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton:hover { + background-color: #FF4C4C; +} +.translecturesCaptionsMessageBox { + margin-left: auto; + margin-right: auto; + text-align: center; + width: 700px; + height: 200px; + font-size: 14px; +} +.translecturesCaptionsMessageBox .title { + color: #635e5e; + font-size: 20px; + margin-bottom: 20px; +} +.translecturesCaptionsMessageBox .authMethodsContainer { + margin-left: auto; + margin-right: auto; + width: 500px; + height: 200px; + margin-top: 10px; + position: relative; +} +.translecturesCaptionsMessageBox .authMethodsContainer .authMethod { + display: inline-block; + width: 200px; + height: 200px; + /* + position:absolute; + left: 0px; +*/ +} +.buttonPlugin.left.videoData { + height: auto; + width: 100%; + margin-top: 5px; + margin-left: auto; + margin-right: auto; + background-color: rgba(0, 0, 0, 0.6); +} +.buttonPlugin.left.videoData h1 { + color: white; + padding: 0px 0px 0px 20px; + margin: 0px; +} +@media (max-width: 400px) { + .buttonPlugin.left.videoData h1 { + font-size: 16px; + line-height: 24px; + } +} +@media (min-width: 401px) and (max-width: 800px) { + .buttonPlugin.left.videoData h1 { + font-size: 20px; + line-height: 34px; + } +} +@media (min-width: 801px) { + .buttonPlugin.left.videoData h1 { + font-size: 30px; + line-height: 44px; + } +} +.buttonPlugin.right.videoZoom { + width: 200px; + background-image: none; + position: absolute; + right: 0px; + top: 0px; + text-align: right; +} +.buttonPlugin.right.videoZoom:hover { + background-color: transparent !important; +} +.buttonPlugin.right.videoZoom:active { + background-color: transparent !important; +} +.zoom-thumbnail { + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; +} +.zoom-container { + width: 160px; + height: 90px; + margin: 5px; + box-sizing: border-box; + box-shadow: 0px 0px 3px 0px black; + border-radius: 2px; + position: relative; + right: 0px; +} +.zoom-rect { + background-color: rgba(255, 255, 255, 0.5); + position: absolute; + top: 0px; + left: 0px; + border: 1px solid #0e0e0e; +} +/* The canvas "freeze frame" to overlay video element, instead of flex side aligned */ +.freezeFrame { + align-self: center; + position: absolute; +} +.videoZoomButton { + z-index: 1; + margin-left: 2px; + margin-right: 2px; + margin-top: 4px; + opacity: 0.2; + background: white; + font-size: 2em; + padding: 0px 4px 0px 4px; + box-shadow: 2px 2px 5px 0px black; + width: 30px; + height: 30px; + position: relative; + left: 40%; +} +.videoZoomButton:hover { + opacity: 0.999; +} +.videoZoomButton:active { + opacity: 0.999; +} +@media (max-width: 600px) { + .buttonPlugin.right.videoZoom { + width: 89px; + } + .zoom-container { + width: 80px; + height: 45px; + } +} +@media (max-width: 800px) and (min-width: 601px) { + .buttonPlugin.right.videoZoom { + width: 100px; + } + .zoom-container { + width: 120px; + height: 68px; + } +} +.videoZoomToolbarItem { + width: 30px; + height: 30px; + cursor: pointer; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + font-size: 20px; +} +.buttonPluginPopUp.showViewModeButton { + background-image: none; +} +.buttonPlugin.showViewModeButton { + background-position: -1100% 0%; +} +.viewModeItemButton { + background-image: url(../images/paella_icons_light.png); + width: 80px; + height: 40px; + cursor: pointer; + background-size: 100% 100% !important; + background-position: 0px 0px ! important; + background-color: white; +} +.viewModeItemButton:hover { + background-color: #FF4C4C; +} +.viewModeItemButton.selected { + /*background-position: 78px 0;*/ + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #cc0000; +} +.viewModeItemButton.slide_professor { + background-position: 80px -80px; +} +.viewModeItemButton.professor_slide { + background-position: 80px -120px; +} +.viewModeItemButton.professor { + background-position: 80px -40px; +} +.viewModeItemButton.slide_over_professor { + background-position: 80px -200px; +} +.viewModeItemButton.slide_over_professor_right { + background-position: 80px -160px; +} +.viewModeItemButton.s_p_blackboard2 { + background-position: 80px -240px; +} +.viewModeItemButton.professor_over_slide { + background-position: 80px -320px; +} +.viewModeItemButton.professor_over_slide_right { + background-position: 80px -280px; +} +.viewModeItemButton.slide { + background-position: 80px 0px; +} +.viewModeItemButton.chroma { + background-position: 80px -360px; +} +.buttonPlugin.volumeRangeButton.mute { + background-position: -300% 0%; +} +.buttonPlugin.volumeRangeButton.max { + background-position: -600% 0%; +} +.buttonPlugin.volumeRangeButton.med { + background-position: -500% 0%; +} +.buttonPlugin.volumeRangeButton.min { + background-position: -400% 0%; +} +.buttonPluginPopUp.volumeRangeButton { + position: absolute; + /* right: -220px; */ +} +.videoRangeContainer { + width: 260px; +} +span.videoRangeButton.expandable-content { + padding-top: 12px; +} +/* Range control */ +.volumeRangeButton input[type=range] { + display: inline-block; + width: 80px; + height: 18px; +} +input[type=range] { + -webkit-appearance: none; + width: 100%; + margin: 6.2px 0; + background-color: transparent; +} +input[type=range]:focus { + outline: none; +} +input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-webkit-slider-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.4px; +} +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ffffff; +} +input[type=range]::-moz-range-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-moz-range-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; +} +input[type=range]::-ms-track { + width: 100%; + height: 4.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #f2f2f2; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-fill-upper { + background: #ffffff; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 14px; + width: 14px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + margin-top: -2px; +} +input[type=range]:focus::-ms-fill-lower { + background: #ffffff; +} +input[type=range]:focus::-ms-fill-upper { + background: #ffffff; +} +.cc-window { + opacity: 1; + transition: opacity 1s ease; +} +.cc-window.cc-invisible { + opacity: 0; +} +.cc-animate.cc-revoke { + transition: transform 1s ease; +} +.cc-animate.cc-revoke.cc-top { + transform: translateY(-2em); +} +.cc-animate.cc-revoke.cc-bottom { + transform: translateY(2em); +} +.cc-animate.cc-revoke.cc-active.cc-bottom, +.cc-animate.cc-revoke.cc-active.cc-top, +.cc-revoke:hover { + transform: translateY(0); +} +.cc-grower { + max-height: 0; + overflow: hidden; + transition: max-height 1s; +} +.cc-link, +.cc-revoke:hover { + text-decoration: underline; +} +.cc-revoke, +.cc-window { + position: fixed; + overflow: hidden; + box-sizing: border-box; + font-family: Helvetica, Calibri, Arial, sans-serif; + font-size: 16px; + line-height: 1.5em; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + z-index: 9999; +} +.cc-window.cc-static { + position: static; +} +.cc-window.cc-floating { + padding: 2em; + max-width: 24em; + -ms-flex-direction: column; + flex-direction: column; +} +.cc-window.cc-banner { + padding: 1em 1.8em; + width: 100%; + -ms-flex-direction: row; + flex-direction: row; +} +.cc-revoke { + padding: 0.5em; +} +.cc-header { + font-size: 18px; + font-weight: 700; +} +.cc-btn, +.cc-close, +.cc-link, +.cc-revoke { + cursor: pointer; +} +.cc-link { + opacity: 0.8; + display: inline-block; + padding: 0.2em; +} +.cc-link:hover { + opacity: 1; +} +.cc-link:active, +.cc-link:visited { + color: initial; +} +.cc-btn { + display: block; + padding: 0.4em 0.8em; + font-size: 0.9em; + font-weight: 700; + border-width: 2px; + border-style: solid; + text-align: center; + white-space: nowrap; +} +.cc-highlight .cc-btn:first-child { + background-color: transparent; + border-color: transparent; +} +.cc-highlight .cc-btn:first-child:focus, +.cc-highlight .cc-btn:first-child:hover { + background-color: transparent; + text-decoration: underline; +} +.cc-close { + display: block; + position: absolute; + top: 0.5em; + right: 0.5em; + font-size: 1.6em; + opacity: 0.9; + line-height: 0.75; +} +.cc-close:focus, +.cc-close:hover { + opacity: 1; +} +.cc-revoke.cc-top { + top: 0; + left: 3em; + border-bottom-left-radius: 0.5em; + border-bottom-right-radius: 0.5em; +} +.cc-revoke.cc-bottom { + bottom: 0; + left: 3em; + border-top-left-radius: 0.5em; + border-top-right-radius: 0.5em; +} +.cc-revoke.cc-left { + left: 3em; + right: unset; +} +.cc-revoke.cc-right { + right: 3em; + left: unset; +} +.cc-top { + top: 1em; +} +.cc-left { + left: 1em; +} +.cc-right { + right: 1em; +} +.cc-bottom { + bottom: 1em; +} +.cc-floating > .cc-link { + margin-bottom: 1em; +} +.cc-floating .cc-message { + display: block; + margin-bottom: 1em; +} +.cc-window.cc-floating .cc-compliance { + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.cc-window.cc-banner { + -ms-flex-align: center; + align-items: center; +} +.cc-banner.cc-top { + left: 0; + right: 0; + top: 0; +} +.cc-banner.cc-bottom { + left: 0; + right: 0; + bottom: 0; +} +.cc-banner .cc-message { + display: block; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + max-width: 100%; + margin-right: 1em; +} +.cc-compliance { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: justify; + align-content: space-between; +} +.cc-floating .cc-compliance > .cc-btn { + -ms-flex: 1; + flex: 1; +} +.cc-btn + .cc-btn { + margin-left: 0.5em; +} +@media print { + .cc-revoke, + .cc-window { + display: none; + } +} +@media screen and (max-width: 900px) { + .cc-btn { + white-space: normal; + } +} +@media screen and (max-width: 414px) and (orientation: portrait), screen and (max-width: 736px) and (orientation: landscape) { + .cc-window.cc-top { + top: 0; + } + .cc-window.cc-bottom { + bottom: 0; + } + .cc-window.cc-banner, + .cc-window.cc-floating, + .cc-window.cc-left, + .cc-window.cc-right { + left: 0; + right: 0; + } + .cc-window.cc-banner { + -ms-flex-direction: column; + flex-direction: column; + } + .cc-window.cc-banner .cc-compliance { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + } + .cc-window.cc-floating { + max-width: none; + } + .cc-window .cc-message { + margin-bottom: 1em; + } + .cc-window.cc-banner { + -ms-flex-align: unset; + align-items: unset; + } + .cc-window.cc-banner .cc-message { + margin-right: 0; + } +} +.cc-floating.cc-theme-classic { + padding: 1.2em; + border-radius: 5px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-compliance { + text-align: center; + display: inline; + -ms-flex: none; + flex: none; +} +.cc-theme-classic .cc-btn { + border-radius: 5px; +} +.cc-theme-classic .cc-btn:last-child { + min-width: 140px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-btn { + display: inline-block; +} +.cc-theme-edgeless.cc-window { + padding: 0; +} +.cc-floating.cc-theme-edgeless .cc-message { + margin: 2em 2em 1.5em; +} +.cc-banner.cc-theme-edgeless .cc-btn { + margin: 0; + padding: 0.8em 1.8em; + height: 100%; +} +.cc-banner.cc-theme-edgeless .cc-message { + margin-left: 1em; +} +.cc-floating.cc-theme-edgeless .cc-btn + .cc-btn { + margin-left: 0; +} +.paella-profile-button { + background-color: lightgray; + border: none; + border-radius: 10%; + box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.9); +} +.paella-profile-button:hover { + background-color: #9b9b9b; +} +.paella-profile-button:active { + background-color: #000000; +} +.buttonPlugin.AirPlayButton { + background-position: -1100% -100%; +} +.buttonPlugin.AirPlayButton.not-available { + opacity: 0.4; +} +.buttonPlugin.legal { + pointer-events: all; + padding-right: 5px; + height: 20px; + text-align: right; + padding: 1px; + margin: 1px; + margin-right: 12px; + margin-top: -7px; + margin-bottom: 4px; + width: auto; +} +.buttonPlugin.legal a { + color: lightgrey !important; + text-decoration: underline !important; +} +.buttonPlugin.legal a:hover { + background-color: transparent !important; + font-weight: bold !important; +} +.buttonPlugin.legal:hover { + background-color: transparent !important; +} +.buttonPlugin.PIPModeButton { + background-position: -1000% -100%; +} +.related-video-container { + z-index: 5; + background-color: rgba(255, 255, 255, 0.7); +} +.related-video-container .related-video-link { + width: 30%; + overflow: hidden; + display: block; + background-color: white; + padding: 3px; + box-shadow: 1px 1px 3px 0px black; + position: absolute; + pointer-events: all; +} +.related-video-container .related-video-link.related-video-single { + width: 50%; + left: 25%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-1 { + width: 30%; + left: 10%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-2 { + width: 30%; + right: 10%; + top: 30%; +} +.related-video-container .related-video-link img { + width: 100%; +} +.related-video-container .related-video-link p { + width: 100%; + text-align: center; +} +.buttonPlugin.showEditorButton { + pointer-events: all; +} +.buttonPluginPopUp.videoZoomToolbar { + width: 50px; + text-align: center; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-videocamera { + font-size: 27px; + margin-left: -2px; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-zoom-in { + font-size: 29px; + margin-left: -6px; +} +.autoTrackingActivated { + color: red !important; +} +html { + margin: 0px; +} +body { + font-family: 'Ubuntu', sans-serif; + margin: 0px; +} +pre { + padding: 20px; + border-bottom: 2px solid #cc0000; + border-top: 2px solid #cc0000; +} +iframe { + margin-left: auto; + margin-right: auto; + display: block; +} +h2 { + color: #909090; +} +h1 { + color: #cc0000; +} +.alignCenter { + display: block; + margin-right: auto; + margin-left: auto; + max-width: 90%; +} +.image { + background-size: 100% auto; + background-repeat: no-repeat; +} +#logo { + background-image: url(logo_paella.png); + width: 140px; + height: 140px; + float: left; +} +.pageHeader { + background-color: white; + padding: 20px; + border-bottom: 1px solid #cc0000; + height: 170px; +} +.content { + width: 100%; + background-color: white; + margin-left: auto; + margin-right: auto; + max-width: 1100px; + padding-left: 30px; + padding-right: 30px; +} +.content.page { + margin-top: 0px; + padding-top: 30px; + padding-bottom: 100px; +} +#headerText { + font-family: 'Varela Round', sans-serif; + font-size: 60pt; + display: block; + width: 100%; + line-height: 90px; + margin-left: 157px; +} +#headerSubtitle { + display: block; + width: 100%; + margin-left: 160px; + font-size: 28px; + color: gray; +} +.logoGroup { + width: 660px; + float: left; + margin-top: 20px; +} +a { + color: #fa8528; +} +a:visited { + color: #fa8528; +} +a:hover { + color: #fba352; +} +a:active { + color: #ffb055; +} +.linkButton { + font-size: 20px; + color: white; + background-color: #fa8528; + padding: 20px; + border-radius: 5px; + border: 1.6pt solid #BA631E; + box-shadow: inset -3px -5px 10px 0px #D9711D; + display: inline-block; + text-decoration: none; + text-align: center; +} +.linkButton.small { + padding: 10px; + font-size: 12px; +} +.linkButton:hover { + color: white; + background-color: #FFA863; +} +.linkButton:active { + color: white; + box-shadow: inset 3px 5px 20px 0px #D9711D; +} +.buttonGroup#downloads { + width: 233px; + padding-top: 5px; + margin-bottom: 30px; + margin-left: auto; + margin-right: auto; +} +#githubLink { + display: block; +} +#resourcesLink { + display: block; +} +#downloadPaella3 { + display: block; + width: 189px; + margin-top: 55px; + margin-left: auto; + margin-right: auto; + color: white; +} +.downloadGroup { + width: 250px; + float: right; +} +.footerText { + display: inline-block; + height: 50px; + vertical-align: top; + margin-right: 10px; + font-size: 10px; +} +.sponsorLogo { + width: 100px; + display: inline-block; +} +.content.footer { + border-top: 4px solid #fa8528; + padding-top: 10px; +} +.menu { + margin-top: 165px; +} +.menuItem { + list-style-type: none; + display: inline; + margin-right: 30px; +} +.menuItemLink { + cursor: pointer; +} +.menuItemLink.current { + color: gray; +} +.element { + margin-left: auto; + display: block; + margin-right: auto; + width: 65%; +} +.imgen { + margin-left: auto; + width: 100%; +} +.txtblock { + color: black; + font-size: large; + font-family: 'Istok Web', sans-serif; + font-style: oblique; +} diff --git a/src/main/webapp/static/js/paella/player/resources/style/style_dark_small.css b/src/main/webapp/static/js/paella/player/resources/style/style_dark_small.css new file mode 100644 index 0000000000000000000000000000000000000000..a4d767f574c178474f6d45c09c084c14f97dfdef --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/style_dark_small.css @@ -0,0 +1,3990 @@ +/* Light icons over dark background */ +body { + height: 100%; + width: 100%; + font-family: Verdana, sans-serif; + font-size: 12px; + background: #4b4b4b; + touch-action: none; +} +a { + color: #636363; +} +a:hover { + color: #a4a4a4; +} +a:active { + color: #3d3d3d; +} +a:visited { + color: #636363; +} +.videoWrapper { + -moz-box-shadow: 2px 2px 6px #000; + -webkit-box-shadow: 2px 2px 6px #000; + box-shadow: 2px 2px 6px #000; + background: black; +} +div { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.buttonPlugin { + cursor: pointer; + padding-right: 0px; + padding-left: 0px; + background-origin: border-box; + position: relative; + display: block; + float: left; + align-items: stretch; + background-color: transparent; + border: none; + box-sizing: border-box; + min-width: 20px; + height: 20px; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + color: #151515; + text-align: center; +} +button, +div i.button-icon { + color: white; + font-size: 12px; + line-height: 20px; + position: absolute; + top: 0px; + left: 0px; +} +span.expandable-content { + color: #151515; + width: 80px; + display: block; + float: left; +} +.buttonPlugin.expandable-content { + background-color: transparent !important; +} +.buttonPlugin { + position: relative; +} +.button-text { + position: absolute; + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + text-align: center; + line-height: 15px; + z-index: 1; +} +i.button-icon.icon-screen { + font-size: 14.64px; + padding-left: 0px; +} +.play-button-on-screen { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.play-button-on-screen .play-icon { + width: 300px; + height: 300px; + background-image: url(../images/play.svg); +} +@media screen and (max-width: 1000px) { + .play-button-on-screen .play-icon { + width: 300px; + height: 300px; + } +} +@media screen and (max-width: 700px) { + .play-button-on-screen .play-icon { + width: 150px; + height: 150px; + } +} +@media screen and (max-width: 400px) { + .play-button-on-screen .play-icon { + width: 80px; + height: 80px; + } +} +#playerContainer { + background-color: white; +} +#playerContainer.modalVisible > :not(.modalMessageContainer) { + filter: blur(10px); +} +#playerContainer:-webkit-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-moz-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-ms-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-o-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#ignoreBrowserCheckLink { + color: black; + text-decoration: underline; +} +.alt-scroll-message-container { + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0.45); + display: flex; + justify-content: center; + align-items: center; + font-size: 20px; + color: white; + text-shadow: 1px 1px 4px black; +} +.alt-scroll-message-container p { + text-align: center; +} +.playbackControls { + background-color: rgba(0, 0, 0, 0.78); + background-image: none; + background-size: auto; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 34px; + z-index: 100; +} +.playbackBarPlugins { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 20px; + font-size: 6px; + overflow: hidden; +} +.playbackBar { + position: absolute; + left: 0px; + right: 0px; + height: 12px; + background-color: rgba(125, 125, 125, 0.5); + border-bottom: 1px solid rgba(90, 90, 90, 0.6); + border-top: 1px solid rgba(90, 90, 90, 0.6); + cursor: pointer; +} +.playbackBar:focus { + box-shadow: inset 0px 0px 5px 0px #FF4C4C; + outline: none; +} +.playbackBarFull { + height: 10px; + background-color: #cc0000; + background: linear-gradient(to bottom, #ff0000 0%, #690000 100%); +} +.playbackBarFull.disabled { + opacity: 0.2; +} +.buttonPlugin.left { + float: left; +} +.buttonPlugin.right { + float: right; +} +.buttonPlugin:hover { + background-color: #FF4C4C; +} +.buttonPlugin:focus { + box-shadow: inset 0px 0px 5px 0px #FF4C4C; + outline: none; +} +.buttonPlugin.selected { + background-color: #cc0000; +} +.popUpPluginContainer { + position: absolute; + right: 0px; + z-index: 110; + color: white; +} +.buttonPluginPopUp { + background-color: rgba(0, 0, 0, 0.78); + position: absolute; + bottom: -12px; +} +.timelinePluginContainer { + position: absolute; + left: 0px; + width: 100%; + background-color: rgba(0, 0, 0, 0.78); + bottom: 34px; + color: white; +} +.buttonTimeLine { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; +} +/* old style time control */ +.timeControlOld { + color: white; + display: block; + position: relative; + width: 69px; + height: 44px; + background-size: 100%; + background-image: url(../images/time_monitor.png); + font-size: 10px; + padding-top: 11px; + background-repeat: no-repeat; + bottom: 70px; + font-family: verdana; + text-align: center; + z-index: 100; +} +.timeControl { + color: white; + display: block; + position: relative; + width: 69px; + height: 10px; + font-size: 10px; + background-repeat: no-repeat; + padding-left: 5px; + font-family: verdana; + text-align: left; + z-index: 100; + line-height: 10px; + margin-top: -10px; + cursor: pointer; +} +.editControlContainer { + z-index: 20; +} +.paellaLoadErrorContainer { + width: 1000px; + margin: auto; + margin-top: 200px; + text-align: center; + padding-top: 80px; + padding-bottom: 80px; + background-color: rgba(220, 228, 234, 0.9); + border-radius: 22px; + box-shadow: 1px 1px 8px black; + font-family: sans-serif; + font-size: 20px; +} +.modalMessageContainer { + background-color: rgba(0, 0, 0, 0.5); +} +.messageContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; +} +.frameContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + /*vertical-align: middle;*/ + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + display: block; +} +.errorContainer { + width: 55%; + min-height: 55%; + margin-top: 22%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + padding-left: 120px; + padding-right: 60px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-family: sans-serif; + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + border: 7px solid maroon; + color: maroon; + font-weight: bold; + background-image: url(../images/error_icon.png); + background-size: 10%; + background-repeat: no-repeat; + background-position: 50px 40px; +} +.paella_messageContainer_closeButton { + /*background-image: url(../images/close_button.png);*/ + width: 20px; + height: 20px; + position: absolute; + display: block; + top: 10px; + right: 10px; + z-index: 999999999; + border-radius: 20px; +} +.paella_messageContainer_closeButton:hover { + color: white; + background-color: black; +} +.paella_messageContainer_closeButton:active { + background-position: 20px; +} +.overlayContainer.background { + background-color: rgba(0, 0, 0, 0.5); +} +#overlayContainer { + pointer-events: none; +} +#overlayContainer div { + pointer-events: none; +} +.videoLoaderOverlay { + background-color: black; +} +.videoOverlayButtonPlugins { + z-index: 100; + position: absolute; + right: 0px; + left: 0px; + top: 0px; + pointer-events: none; +} +.divTimeOverlay { + position: fixed; + background-color: rgba(0, 0, 0, 0.78); + color: white; + text-align: center; + padding-right: 3px; + padding-left: 3px; + padding-top: 1px; + text-shadow: 1px 1px #888888; + z-index: 100; +} +.divTimeImageOverlay { + position: fixed; + background-color: rgba(0, 0, 0, 0.78); + z-index: 99; + width: 256px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: contain; +} +.imgOverlay { + height: 100%; + width: 100%; + max-width: none; + border: 1px solid rgba(0, 0, 0, 0.78); +} +.videoPosterFrameImage { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + height: 100%; + width: 100%; +} +.playerContainer_controls_playback_playbackBar_canvas { + overflow: hidden; + position: absolute; +} +#playerContainer_controls_playback_playbackBar { + overflow: hidden; + background-color: #333333; +} +.login-link { + margin-top: 20px; + margin-bottom: 20px; +} +video::-internal-media-controls-download-button { + display: none; +} +video::-webkit-media-controls-enclosure { + overflow: hidden; +} +video::-webkit-media-controls-panel { + width: calc(100% + 8px); + /* Adjust as needed */ +} +#lazyLoadThumbnailContainer { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + z-index: 20; + /* Over the video contaniner and video layout buttons, but under the play button */ +} +.dimmed-element { + filter: blur(4px); +} +/* TODO: Extract this CSS to editor plugins */ +.editorTrackItem.mainTrackTrim { + background-image: url(../images/main_track_bkg.png); + background-size: 56px 100%; +} +/* END EXTRACT */ +/* Begin new editor */ +a.btn { + color: #f3f3f3; +} +.listItem { + color: #f3f3f3; +} +.editorContainer { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: 100%; + height: 100%; +} +.paellaEditorRightBar { + position: fixed; + right: 0px; + top: 0px; + background-color: #4f4f4f; + box-shadow: 1px -4px 12px black; +} +.paellaEditorBottomBar { + position: fixed; + right: 0px; + bottom: 0px; + left: 0px; + background-color: #4f4f4f; + box-shadow: 1px 1px 12px black; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.paellaEditorRightBarContent { + padding-left: 10px; + padding-right: 10px; + font-size: 11px; +} +.editorTimelineContainer { + margin-top: -21px; + position: relative; + overflow: auto; +} +.editorTimelineContent { + background-image: url(../images/light_background.png); + top: 0px; + box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.7); + position: relative; +} +.editorTimeLineTimeMarks { + position: absolute; + top: 0px; + height: 20px; + left: 0px; + right: 0px; + z-index: 1; + padding-left: 3px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorTimeLineMark { + float: left; + /* background-color: rgb(61,62,62);*/ + font-size: 9px; + height: 20px; + line-height: 18px; +} +.editorTimeLineMark.odd { + /* background-color: rgb(73,82,82);*/ +} +.editorTrackListItem.master { + position: absolute; + left: 0px; + right: 0px; + top: 38px; + height: 51px; +} +.editorTrackListItem.secondary { + height: 23px; + position: relative; +} +.editorTrackListItem.secondary.track0 { + margin-top: 90px; +} +.editorTrackItem { + position: absolute; + height: 97%; + border-radius: 5px; + border: 1px solid #6f6f6f; + overflow: hidden; +} +.editorTrackItemResizer { + width: 2px; + top: 20%; + bottom: 23%; + position: absolute; + overflow: hidden; + cursor: pointer; +} +.editorTrackItemResizer.left { + border-right: 8px double #7c7c7c; + left: 0px; +} +.editorTrackItemResizer.right { + border-left: 8px double #7c7c7c; + right: 0px; +} +.editorTrackItemMoveArea { + position: absolute; + left: 18px; + right: 18px; + top: 0px; + bottom: 0px; + cursor: pointer; +} +.editorTrackItemLabel { + margin-left: 20px; + margin-right: 20px; + height: 100%; + line-height: 48px; + cursor: pointer; +} +.editorTrackItemLock { + top: 5%; + position: absolute; +} +.editorTrackItemLabel.secondary { + line-height: 23px; +} +.editorTimeLineMark.last { + overflow: hidden; +} +.editorTimeLineTracks { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + padding-bottom: 20px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorBottomToolbarContainer { + background-color: #52595F; + height: 27px; +} +.zoomDropup { + margin-top: 2px; + float: right; + margin-right: 10px; +} +.navbar.tiny { + font-size: 11px; +} +.navbar-inner.tiny { + min-height: 21px; +} +.navbar .nav > li { + line-height: 11px; +} +.navbar .nav > li > a.rightBarPlugin { + padding: 5px 5px 5px; +} +.editorToolbar_selectedToolUtils { + margin-left: 10px; +} +.editorToolbarPlaybackControls { + position: absolute; + left: 45%; +} +.editorTimelineCursor { + position: absolute; + height: 100%; + width: 1px; + border-left: 1px dashed rgba(238, 0, 12, 0.92); + left: 352px; + z-index: 0; + top: 0px; + line-height: 54px; + font-size: 11px; + padding-left: 3px; +} +.editorTimelineCursor.currentTime { + border-left: 1px solid white; +} +.editorRightBarTabIcon { + /* display: inline-block; to add icon, set this property and the background image in the plugin css file, using .editorRightBarTabIcon.pluginName as class name */ + width: 15px; + height: 14px; + margin-bottom: -3px; + margin-right: 2px; +} +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?u9ewd1'); + src: url('fonts/icomoon.eot?u9ewd1#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?u9ewd1') format('truetype'), url('fonts/icomoon.woff?u9ewd1') format('woff'), url('fonts/icomoon.svg?u9ewd1#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-mini-camera:before { + content: "\e900"; +} +.icon-captions:before { + content: "\e901"; +} +.icon-paintbrush:before { + content: "\e902"; +} +.icon-airplay:before { + content: "\e903"; +} +.icon-arrow-down:before { + content: "\e904"; +} +.icon-arrow-left:before { + content: "\e905"; +} +.icon-arrow-right:before { + content: "\e906"; +} +.icon-arrow-up:before { + content: "\e907"; +} +.icon-back-10-s:before { + content: "\e908"; +} +.icon-back-30-s:before { + content: "\e909"; +} +.icon-comments-disabled:before { + content: "\e90a"; +} +.icon-comments:before { + content: "\e90b"; +} +.icon-edit:before { + content: "\e90c"; +} +.icon-facebook:before { + content: "\e90d"; +} +.icon-folder:before { + content: "\e90e"; +} +.icon-forward-30-s:before { + content: "\e90f"; +} +.icon-frames:before { + content: "\e910"; +} +.icon-fullscreen:before { + content: "\e911"; +} +.icon-headphone:before { + content: "\e912"; +} +.icon-help:before { + content: "\e913"; +} +.icon-info:before { + content: "\e914"; +} +.icon-link:before { + content: "\e915"; +} +.icon-mini-frames:before { + content: "\e916"; +} +.icon-mini-videocamera:before { + content: "\e917"; +} +.icon-mini-window:before { + content: "\e918"; +} +.icon-mini-zoom-in:before { + content: "\e919"; +} +.icon-mini-zoom-out:before { + content: "\e91a"; +} +.icon-pause:before { + content: "\e91b"; +} +.icon-photo:before { + content: "\e91c"; +} +.icon-pip:before { + content: "\e91d"; +} +.icon-play:before { + content: "\e91e"; +} +.icon-player-mode-1:before { + content: "\e91f"; +} +.icon-player-mode-2:before { + content: "\e920"; +} +.icon-player-mode-3:before { + content: "\e921"; +} +.icon-present-mode-1:before { + content: "\e922"; +} +.icon-present-mode-2:before { + content: "\e923"; +} +.icon-present-mode-3:before { + content: "\e924"; +} +.icon-present-mode-4:before { + content: "\e925"; +} +.icon-present-mode-5:before { + content: "\e926"; +} +.icon-present-mode-6:before { + content: "\e927"; +} +.icon-present-mode-7:before { + content: "\e928"; +} +.icon-present-mode-8:before { + content: "\e929"; +} +.icon-present-mode-9:before { + content: "\e92a"; +} +.icon-present-mode-10:before { + content: "\e92b"; +} +.icon-presentation-mode:before { + content: "\e92c"; +} +.icon-screen:before { + content: "\e92d"; +} +.icon-slideshow:before { + content: "\e92e"; +} +.icon-social:before { + content: "\e92f"; +} +.icon-star-empty:before { + content: "\e930"; +} +.icon-star:before { + content: "\e931"; +} +.icon-stats:before { + content: "\e932"; +} +.icon-twitter:before { + content: "\e933"; +} +.icon-user:before { + content: "\e934"; +} +.icon-volume-high:before { + content: "\e935"; +} +.icon-volume-low:before { + content: "\e936"; +} +.icon-volume-mid:before { + content: "\e937"; +} +.icon-volume-mute:before { + content: "\e938"; +} +.icon-windowed:before { + content: "\e939"; +} +.icon-zoom-in:before { + content: "\e93a"; +} +.icon-zoom:before { + content: "\e93b"; +} +.icon-home:before { + content: "\e93c"; +} +.icon-home2:before { + content: "\e93d"; +} +.icon-home3:before { + content: "\e93e"; +} +.icon-office:before { + content: "\e93f"; +} +.icon-newspaper:before { + content: "\e940"; +} +.icon-pencil:before { + content: "\e941"; +} +.icon-pencil2:before { + content: "\e942"; +} +.icon-quill:before { + content: "\e943"; +} +.icon-pen:before { + content: "\e944"; +} +.icon-blog:before { + content: "\e945"; +} +.icon-eyedropper:before { + content: "\e946"; +} +.icon-droplet:before { + content: "\e947"; +} +.icon-paint-format:before { + content: "\e948"; +} +.icon-image:before { + content: "\e949"; +} +.icon-images:before { + content: "\e94a"; +} +.icon-camera:before { + content: "\e94b"; +} +.icon-headphones:before { + content: "\e94c"; +} +.icon-music:before { + content: "\e94d"; +} +.icon-play2:before { + content: "\e94e"; +} +.icon-film:before { + content: "\e94f"; +} +.icon-video-camera:before { + content: "\e950"; +} +.icon-dice:before { + content: "\e951"; +} +.icon-pacman:before { + content: "\e952"; +} +.icon-spades:before { + content: "\e953"; +} +.icon-clubs:before { + content: "\e954"; +} +.icon-diamonds:before { + content: "\e955"; +} +.icon-bullhorn:before { + content: "\e956"; +} +.icon-connection:before { + content: "\e957"; +} +.icon-podcast:before { + content: "\e958"; +} +.icon-feed:before { + content: "\e959"; +} +.icon-mic:before { + content: "\e95a"; +} +.icon-book:before { + content: "\e95b"; +} +.icon-books:before { + content: "\e95c"; +} +.icon-library:before { + content: "\e95d"; +} +.icon-file-text:before { + content: "\e95e"; +} +.icon-profile:before { + content: "\e95f"; +} +.icon-file-empty:before { + content: "\e960"; +} +.icon-files-empty:before { + content: "\e961"; +} +.icon-file-text2:before { + content: "\e962"; +} +.icon-file-picture:before { + content: "\e963"; +} +.icon-file-music:before { + content: "\e964"; +} +.icon-file-play:before { + content: "\e965"; +} +.icon-file-video:before { + content: "\e966"; +} +.icon-file-zip:before { + content: "\e967"; +} +.icon-copy:before { + content: "\e968"; +} +.icon-paste:before { + content: "\e969"; +} +.icon-stack:before { + content: "\e96a"; +} +.icon-folder2:before { + content: "\e96b"; +} +.icon-folder-open:before { + content: "\e96c"; +} +.icon-folder-plus:before { + content: "\e96d"; +} +.icon-folder-minus:before { + content: "\e96e"; +} +.icon-folder-download:before { + content: "\e96f"; +} +.icon-folder-upload:before { + content: "\e970"; +} +.icon-price-tag:before { + content: "\e971"; +} +.icon-price-tags:before { + content: "\e972"; +} +.icon-barcode:before { + content: "\e973"; +} +.icon-qrcode:before { + content: "\e974"; +} +.icon-ticket:before { + content: "\e975"; +} +.icon-cart:before { + content: "\e976"; +} +.icon-coin-dollar:before { + content: "\e977"; +} +.icon-coin-euro:before { + content: "\e978"; +} +.icon-coin-pound:before { + content: "\e979"; +} +.icon-coin-yen:before { + content: "\e97a"; +} +.icon-credit-card:before { + content: "\e97b"; +} +.icon-calculator:before { + content: "\e97c"; +} +.icon-lifebuoy:before { + content: "\e97d"; +} +.icon-phone:before { + content: "\e97e"; +} +.icon-phone-hang-up:before { + content: "\e97f"; +} +.icon-address-book:before { + content: "\e980"; +} +.icon-envelop:before { + content: "\e981"; +} +.icon-pushpin:before { + content: "\e982"; +} +.icon-location:before { + content: "\e983"; +} +.icon-location2:before { + content: "\e984"; +} +.icon-compass:before { + content: "\e985"; +} +.icon-compass2:before { + content: "\e986"; +} +.icon-map:before { + content: "\e987"; +} +.icon-map2:before { + content: "\e988"; +} +.icon-history:before { + content: "\e989"; +} +.icon-clock:before { + content: "\e98a"; +} +.icon-clock2:before { + content: "\e98b"; +} +.icon-alarm:before { + content: "\e98c"; +} +.icon-bell:before { + content: "\e98d"; +} +.icon-stopwatch:before { + content: "\e98e"; +} +.icon-calendar:before { + content: "\e98f"; +} +.icon-printer:before { + content: "\e990"; +} +.icon-keyboard:before { + content: "\e991"; +} +.icon-display:before { + content: "\e992"; +} +.icon-laptop:before { + content: "\e993"; +} +.icon-mobile:before { + content: "\e994"; +} +.icon-mobile2:before { + content: "\e995"; +} +.icon-tablet:before { + content: "\e996"; +} +.icon-tv:before { + content: "\e997"; +} +.icon-drawer:before { + content: "\e998"; +} +.icon-drawer2:before { + content: "\e999"; +} +.icon-box-add:before { + content: "\e99a"; +} +.icon-box-remove:before { + content: "\e99b"; +} +.icon-download:before { + content: "\e99c"; +} +.icon-upload:before { + content: "\e99d"; +} +.icon-floppy-disk:before { + content: "\e99e"; +} +.icon-drive:before { + content: "\e99f"; +} +.icon-database:before { + content: "\e9a0"; +} +.icon-undo:before { + content: "\e9a1"; +} +.icon-redo:before { + content: "\e9a2"; +} +.icon-undo2:before { + content: "\e9a3"; +} +.icon-redo2:before { + content: "\e9a4"; +} +.icon-forward:before { + content: "\e9a5"; +} +.icon-reply:before { + content: "\e9a6"; +} +.icon-bubble:before { + content: "\e9a7"; +} +.icon-bubbles:before { + content: "\e9a8"; +} +.icon-bubbles2:before { + content: "\e9a9"; +} +.icon-bubble2:before { + content: "\e9aa"; +} +.icon-bubbles3:before { + content: "\e9ab"; +} +.icon-bubbles4:before { + content: "\e9ac"; +} +.icon-user2:before { + content: "\e9ad"; +} +.icon-users:before { + content: "\e9ae"; +} +.icon-user-plus:before { + content: "\e9af"; +} +.icon-user-minus:before { + content: "\e9b0"; +} +.icon-user-check:before { + content: "\e9b1"; +} +.icon-user-tie:before { + content: "\e9b2"; +} +.icon-quotes-left:before { + content: "\e9b3"; +} +.icon-quotes-right:before { + content: "\e9b4"; +} +.icon-hour-glass:before { + content: "\e9b5"; +} +.icon-spinner:before { + content: "\e9b6"; +} +.icon-spinner2:before { + content: "\e9b7"; +} +.icon-spinner3:before { + content: "\e9b8"; +} +.icon-spinner4:before { + content: "\e9b9"; +} +.icon-spinner5:before { + content: "\e9ba"; +} +.icon-spinner6:before { + content: "\e9bb"; +} +.icon-spinner7:before { + content: "\e9bc"; +} +.icon-spinner8:before { + content: "\e9bd"; +} +.icon-spinner9:before { + content: "\e9be"; +} +.icon-spinner10:before { + content: "\e9bf"; +} +.icon-spinner11:before { + content: "\e9c0"; +} +.icon-binoculars:before { + content: "\e9c1"; +} +.icon-search:before { + content: "\e9c2"; +} +.icon-zoom-in2:before { + content: "\e9c3"; +} +.icon-zoom-out:before { + content: "\e9c4"; +} +.icon-enlarge:before { + content: "\e9c5"; +} +.icon-shrink:before { + content: "\e9c6"; +} +.icon-enlarge2:before { + content: "\e9c7"; +} +.icon-shrink2:before { + content: "\e9c8"; +} +.icon-key:before { + content: "\e9c9"; +} +.icon-key2:before { + content: "\e9ca"; +} +.icon-lock:before { + content: "\e9cb"; +} +.icon-unlocked:before { + content: "\e9cc"; +} +.icon-wrench:before { + content: "\e9cd"; +} +.icon-equalizer:before { + content: "\e9ce"; +} +.icon-equalizer2:before { + content: "\e9cf"; +} +.icon-cog:before { + content: "\e9d0"; +} +.icon-cogs:before { + content: "\e9d1"; +} +.icon-hammer:before { + content: "\e9d2"; +} +.icon-magic-wand:before { + content: "\e9d3"; +} +.icon-aid-kit:before { + content: "\e9d4"; +} +.icon-bug:before { + content: "\e9d5"; +} +.icon-pie-chart:before { + content: "\e9d6"; +} +.icon-stats-dots:before { + content: "\e9d7"; +} +.icon-stats-bars:before { + content: "\e9d8"; +} +.icon-stats-bars2:before { + content: "\e9d9"; +} +.icon-trophy:before { + content: "\e9da"; +} +.icon-gift:before { + content: "\e9db"; +} +.icon-glass:before { + content: "\e9dc"; +} +.icon-glass2:before { + content: "\e9dd"; +} +.icon-mug:before { + content: "\e9de"; +} +.icon-spoon-knife:before { + content: "\e9df"; +} +.icon-leaf:before { + content: "\e9e0"; +} +.icon-rocket:before { + content: "\e9e1"; +} +.icon-meter:before { + content: "\e9e2"; +} +.icon-meter2:before { + content: "\e9e3"; +} +.icon-hammer2:before { + content: "\e9e4"; +} +.icon-fire:before { + content: "\e9e5"; +} +.icon-lab:before { + content: "\e9e6"; +} +.icon-magnet:before { + content: "\e9e7"; +} +.icon-bin:before { + content: "\e9e8"; +} +.icon-bin2:before { + content: "\e9e9"; +} +.icon-briefcase:before { + content: "\e9ea"; +} +.icon-airplane:before { + content: "\e9eb"; +} +.icon-truck:before { + content: "\e9ec"; +} +.icon-road:before { + content: "\e9ed"; +} +.icon-accessibility:before { + content: "\e9ee"; +} +.icon-target:before { + content: "\e9ef"; +} +.icon-shield:before { + content: "\e9f0"; +} +.icon-power:before { + content: "\e9f1"; +} +.icon-switch:before { + content: "\e9f2"; +} +.icon-power-cord:before { + content: "\e9f3"; +} +.icon-clipboard:before { + content: "\e9f4"; +} +.icon-list-numbered:before { + content: "\e9f5"; +} +.icon-list:before { + content: "\e9f6"; +} +.icon-list2:before { + content: "\e9f7"; +} +.icon-tree:before { + content: "\e9f8"; +} +.icon-menu:before { + content: "\e9f9"; +} +.icon-menu2:before { + content: "\e9fa"; +} +.icon-menu3:before { + content: "\e9fb"; +} +.icon-menu4:before { + content: "\e9fc"; +} +.icon-cloud:before { + content: "\e9fd"; +} +.icon-cloud-download:before { + content: "\e9fe"; +} +.icon-cloud-upload:before { + content: "\e9ff"; +} +.icon-cloud-check:before { + content: "\ea00"; +} +.icon-download2:before { + content: "\ea01"; +} +.icon-upload2:before { + content: "\ea02"; +} +.icon-download3:before { + content: "\ea03"; +} +.icon-upload3:before { + content: "\ea04"; +} +.icon-sphere:before { + content: "\ea05"; +} +.icon-earth:before { + content: "\ea06"; +} +.icon-link2:before { + content: "\ea07"; +} +.icon-flag:before { + content: "\ea08"; +} +.icon-attachment:before { + content: "\ea09"; +} +.icon-eye:before { + content: "\ea0a"; +} +.icon-eye-plus:before { + content: "\ea0b"; +} +.icon-eye-minus:before { + content: "\ea0c"; +} +.icon-eye-blocked:before { + content: "\ea0d"; +} +.icon-bookmark:before { + content: "\ea0e"; +} +.icon-bookmarks:before { + content: "\ea0f"; +} +.icon-sun:before { + content: "\ea10"; +} +.icon-contrast:before { + content: "\ea11"; +} +.icon-brightness-contrast:before { + content: "\ea12"; +} +.icon-star-empty2:before { + content: "\ea13"; +} +.icon-star-half:before { + content: "\ea14"; +} +.icon-star-full:before { + content: "\ea15"; +} +.icon-heart:before { + content: "\ea16"; +} +.icon-heart-broken:before { + content: "\ea17"; +} +.icon-man:before { + content: "\ea18"; +} +.icon-woman:before { + content: "\ea19"; +} +.icon-man-woman:before { + content: "\ea1a"; +} +.icon-happy:before { + content: "\ea1b"; +} +.icon-happy2:before { + content: "\ea1c"; +} +.icon-smile:before { + content: "\ea1d"; +} +.icon-smile2:before { + content: "\ea1e"; +} +.icon-tongue:before { + content: "\ea1f"; +} +.icon-tongue2:before { + content: "\ea20"; +} +.icon-sad:before { + content: "\ea21"; +} +.icon-sad2:before { + content: "\ea22"; +} +.icon-wink:before { + content: "\ea23"; +} +.icon-wink2:before { + content: "\ea24"; +} +.icon-grin:before { + content: "\ea25"; +} +.icon-grin2:before { + content: "\ea26"; +} +.icon-cool:before { + content: "\ea27"; +} +.icon-cool2:before { + content: "\ea28"; +} +.icon-angry:before { + content: "\ea29"; +} +.icon-angry2:before { + content: "\ea2a"; +} +.icon-evil:before { + content: "\ea2b"; +} +.icon-evil2:before { + content: "\ea2c"; +} +.icon-shocked:before { + content: "\ea2d"; +} +.icon-shocked2:before { + content: "\ea2e"; +} +.icon-baffled:before { + content: "\ea2f"; +} +.icon-baffled2:before { + content: "\ea30"; +} +.icon-confused:before { + content: "\ea31"; +} +.icon-confused2:before { + content: "\ea32"; +} +.icon-neutral:before { + content: "\ea33"; +} +.icon-neutral2:before { + content: "\ea34"; +} +.icon-hipster:before { + content: "\ea35"; +} +.icon-hipster2:before { + content: "\ea36"; +} +.icon-wondering:before { + content: "\ea37"; +} +.icon-wondering2:before { + content: "\ea38"; +} +.icon-sleepy:before { + content: "\ea39"; +} +.icon-sleepy2:before { + content: "\ea3a"; +} +.icon-frustrated:before { + content: "\ea3b"; +} +.icon-frustrated2:before { + content: "\ea3c"; +} +.icon-crying:before { + content: "\ea3d"; +} +.icon-crying2:before { + content: "\ea3e"; +} +.icon-point-up:before { + content: "\ea3f"; +} +.icon-point-right:before { + content: "\ea40"; +} +.icon-point-down:before { + content: "\ea41"; +} +.icon-point-left:before { + content: "\ea42"; +} +.icon-warning:before { + content: "\ea43"; +} +.icon-notification:before { + content: "\ea44"; +} +.icon-question:before { + content: "\ea45"; +} +.icon-plus:before { + content: "\ea46"; +} +.icon-minus:before { + content: "\ea47"; +} +.icon-info2:before { + content: "\ea48"; +} +.icon-cancel-circle:before { + content: "\ea49"; +} +.icon-blocked:before { + content: "\ea4a"; +} +.icon-cross:before { + content: "\ea4b"; +} +.icon-checkmark:before { + content: "\ea4c"; +} +.icon-checkmark2:before { + content: "\ea4d"; +} +.icon-spell-check:before { + content: "\ea4e"; +} +.icon-enter:before { + content: "\ea4f"; +} +.icon-exit:before { + content: "\ea50"; +} +.icon-play22:before { + content: "\ea51"; +} +.icon-pause2:before { + content: "\ea52"; +} +.icon-stop:before { + content: "\ea53"; +} +.icon-previous:before { + content: "\ea54"; +} +.icon-next:before { + content: "\ea55"; +} +.icon-backward:before { + content: "\ea56"; +} +.icon-forward2:before { + content: "\ea57"; +} +.icon-play3:before { + content: "\ea58"; +} +.icon-pause22:before { + content: "\ea59"; +} +.icon-stop2:before { + content: "\ea5a"; +} +.icon-backward2:before { + content: "\ea5b"; +} +.icon-forward3:before { + content: "\ea5c"; +} +.icon-first:before { + content: "\ea5d"; +} +.icon-last:before { + content: "\ea5e"; +} +.icon-previous2:before { + content: "\ea5f"; +} +.icon-next2:before { + content: "\ea60"; +} +.icon-eject:before { + content: "\ea61"; +} +.icon-volume-high2:before { + content: "\ea62"; +} +.icon-volume-medium:before { + content: "\ea63"; +} +.icon-volume-low2:before { + content: "\ea64"; +} +.icon-volume-mute2:before { + content: "\ea65"; +} +.icon-volume-mute22:before { + content: "\ea66"; +} +.icon-volume-increase:before { + content: "\ea67"; +} +.icon-volume-decrease:before { + content: "\ea68"; +} +.icon-loop:before { + content: "\ea69"; +} +.icon-loop2:before { + content: "\ea6a"; +} +.icon-infinite:before { + content: "\ea6b"; +} +.icon-shuffle:before { + content: "\ea6c"; +} +.icon-arrow-up-left:before { + content: "\ea6d"; +} +.icon-arrow-up2:before { + content: "\ea6e"; +} +.icon-arrow-up-right:before { + content: "\ea6f"; +} +.icon-arrow-right2:before { + content: "\ea70"; +} +.icon-arrow-down-right:before { + content: "\ea71"; +} +.icon-arrow-down2:before { + content: "\ea72"; +} +.icon-arrow-down-left:before { + content: "\ea73"; +} +.icon-arrow-left2:before { + content: "\ea74"; +} +.icon-arrow-up-left2:before { + content: "\ea75"; +} +.icon-arrow-up22:before { + content: "\ea76"; +} +.icon-arrow-up-right2:before { + content: "\ea77"; +} +.icon-arrow-right22:before { + content: "\ea78"; +} +.icon-arrow-down-right2:before { + content: "\ea79"; +} +.icon-arrow-down22:before { + content: "\ea7a"; +} +.icon-arrow-down-left2:before { + content: "\ea7b"; +} +.icon-arrow-left22:before { + content: "\ea7c"; +} +.icon-circle-up:before { + content: "\ea7d"; +} +.icon-circle-right:before { + content: "\ea7e"; +} +.icon-circle-down:before { + content: "\ea7f"; +} +.icon-circle-left:before { + content: "\ea80"; +} +.icon-tab:before { + content: "\ea81"; +} +.icon-move-up:before { + content: "\ea82"; +} +.icon-move-down:before { + content: "\ea83"; +} +.icon-sort-alpha-asc:before { + content: "\ea84"; +} +.icon-sort-alpha-desc:before { + content: "\ea85"; +} +.icon-sort-numeric-asc:before { + content: "\ea86"; +} +.icon-sort-numberic-desc:before { + content: "\ea87"; +} +.icon-sort-amount-asc:before { + content: "\ea88"; +} +.icon-sort-amount-desc:before { + content: "\ea89"; +} +.icon-command:before { + content: "\ea8a"; +} +.icon-shift:before { + content: "\ea8b"; +} +.icon-ctrl:before { + content: "\ea8c"; +} +.icon-opt:before { + content: "\ea8d"; +} +.icon-checkbox-checked:before { + content: "\ea8e"; +} +.icon-checkbox-unchecked:before { + content: "\ea8f"; +} +.icon-radio-checked:before { + content: "\ea90"; +} +.icon-radio-checked2:before { + content: "\ea91"; +} +.icon-radio-unchecked:before { + content: "\ea92"; +} +.icon-crop:before { + content: "\ea93"; +} +.icon-make-group:before { + content: "\ea94"; +} +.icon-ungroup:before { + content: "\ea95"; +} +.icon-scissors:before { + content: "\ea96"; +} +.icon-filter:before { + content: "\ea97"; +} +.icon-font:before { + content: "\ea98"; +} +.icon-ligature:before { + content: "\ea99"; +} +.icon-ligature2:before { + content: "\ea9a"; +} +.icon-text-height:before { + content: "\ea9b"; +} +.icon-text-width:before { + content: "\ea9c"; +} +.icon-font-size:before { + content: "\ea9d"; +} +.icon-bold:before { + content: "\ea9e"; +} +.icon-underline:before { + content: "\ea9f"; +} +.icon-italic:before { + content: "\eaa0"; +} +.icon-strikethrough:before { + content: "\eaa1"; +} +.icon-omega:before { + content: "\eaa2"; +} +.icon-sigma:before { + content: "\eaa3"; +} +.icon-page-break:before { + content: "\eaa4"; +} +.icon-superscript:before { + content: "\eaa5"; +} +.icon-subscript:before { + content: "\eaa6"; +} +.icon-superscript2:before { + content: "\eaa7"; +} +.icon-subscript2:before { + content: "\eaa8"; +} +.icon-text-color:before { + content: "\eaa9"; +} +.icon-pagebreak:before { + content: "\eaaa"; +} +.icon-clear-formatting:before { + content: "\eaab"; +} +.icon-table:before { + content: "\eaac"; +} +.icon-table2:before { + content: "\eaad"; +} +.icon-insert-template:before { + content: "\eaae"; +} +.icon-pilcrow:before { + content: "\eaaf"; +} +.icon-ltr:before { + content: "\eab0"; +} +.icon-rtl:before { + content: "\eab1"; +} +.icon-section:before { + content: "\eab2"; +} +.icon-paragraph-left:before { + content: "\eab3"; +} +.icon-paragraph-center:before { + content: "\eab4"; +} +.icon-paragraph-right:before { + content: "\eab5"; +} +.icon-paragraph-justify:before { + content: "\eab6"; +} +.icon-indent-increase:before { + content: "\eab7"; +} +.icon-indent-decrease:before { + content: "\eab8"; +} +.icon-share:before { + content: "\eab9"; +} +.icon-new-tab:before { + content: "\eaba"; +} +.icon-embed:before { + content: "\eabb"; +} +.icon-embed2:before { + content: "\eabc"; +} +.icon-terminal:before { + content: "\eabd"; +} +.icon-share2:before { + content: "\eabe"; +} +.icon-mail:before { + content: "\eabf"; +} +.icon-mail2:before { + content: "\eac0"; +} +.icon-mail3:before { + content: "\eac1"; +} +.icon-mail4:before { + content: "\eac2"; +} +.icon-amazon:before { + content: "\eac3"; +} +.icon-google:before { + content: "\eac4"; +} +.icon-google2:before { + content: "\eac5"; +} +.icon-google3:before { + content: "\eac6"; +} +.icon-google-plus:before { + content: "\eac7"; +} +.icon-google-plus2:before { + content: "\eac8"; +} +.icon-google-plus3:before { + content: "\eac9"; +} +.icon-hangouts:before { + content: "\eaca"; +} +.icon-google-drive:before { + content: "\eacb"; +} +.icon-facebook2:before { + content: "\eacc"; +} +.icon-facebook22:before { + content: "\eacd"; +} +.icon-instagram:before { + content: "\eace"; +} +.icon-whatsapp:before { + content: "\eacf"; +} +.icon-spotify:before { + content: "\ead0"; +} +.icon-telegram:before { + content: "\ead1"; +} +.icon-twitter2:before { + content: "\ead2"; +} +.icon-vine:before { + content: "\ead3"; +} +.icon-vk:before { + content: "\ead4"; +} +.icon-renren:before { + content: "\ead5"; +} +.icon-sina-weibo:before { + content: "\ead6"; +} +.icon-rss:before { + content: "\ead7"; +} +.icon-rss2:before { + content: "\ead8"; +} +.icon-youtube:before { + content: "\ead9"; +} +.icon-youtube2:before { + content: "\eada"; +} +.icon-twitch:before { + content: "\eadb"; +} +.icon-vimeo:before { + content: "\eadc"; +} +.icon-vimeo2:before { + content: "\eadd"; +} +.icon-lanyrd:before { + content: "\eade"; +} +.icon-flickr:before { + content: "\eadf"; +} +.icon-flickr2:before { + content: "\eae0"; +} +.icon-flickr3:before { + content: "\eae1"; +} +.icon-flickr4:before { + content: "\eae2"; +} +.icon-dribbble:before { + content: "\eae3"; +} +.icon-behance:before { + content: "\eae4"; +} +.icon-behance2:before { + content: "\eae5"; +} +.icon-deviantart:before { + content: "\eae6"; +} +.icon-500px:before { + content: "\eae7"; +} +.icon-steam:before { + content: "\eae8"; +} +.icon-steam2:before { + content: "\eae9"; +} +.icon-dropbox:before { + content: "\eaea"; +} +.icon-onedrive:before { + content: "\eaeb"; +} +.icon-github:before { + content: "\eaec"; +} +.icon-npm:before { + content: "\eaed"; +} +.icon-basecamp:before { + content: "\eaee"; +} +.icon-trello:before { + content: "\eaef"; +} +.icon-wordpress:before { + content: "\eaf0"; +} +.icon-joomla:before { + content: "\eaf1"; +} +.icon-ello:before { + content: "\eaf2"; +} +.icon-blogger:before { + content: "\eaf3"; +} +.icon-blogger2:before { + content: "\eaf4"; +} +.icon-tumblr:before { + content: "\eaf5"; +} +.icon-tumblr2:before { + content: "\eaf6"; +} +.icon-yahoo:before { + content: "\eaf7"; +} +.icon-yahoo2:before { + content: "\eaf8"; +} +.icon-tux:before { + content: "\eaf9"; +} +.icon-appleinc:before { + content: "\eafa"; +} +.icon-finder:before { + content: "\eafb"; +} +.icon-android:before { + content: "\eafc"; +} +.icon-windows:before { + content: "\eafd"; +} +.icon-windows8:before { + content: "\eafe"; +} +.icon-soundcloud:before { + content: "\eaff"; +} +.icon-soundcloud2:before { + content: "\eb00"; +} +.icon-skype:before { + content: "\eb01"; +} +.icon-reddit:before { + content: "\eb02"; +} +.icon-hackernews:before { + content: "\eb03"; +} +.icon-wikipedia:before { + content: "\eb04"; +} +.icon-linkedin:before { + content: "\eb05"; +} +.icon-linkedin2:before { + content: "\eb06"; +} +.icon-lastfm:before { + content: "\eb07"; +} +.icon-lastfm2:before { + content: "\eb08"; +} +.icon-delicious:before { + content: "\eb09"; +} +.icon-stumbleupon:before { + content: "\eb0a"; +} +.icon-stumbleupon2:before { + content: "\eb0b"; +} +.icon-stackoverflow:before { + content: "\eb0c"; +} +.icon-pinterest:before { + content: "\eb0d"; +} +.icon-pinterest2:before { + content: "\eb0e"; +} +.icon-xing:before { + content: "\eb0f"; +} +.icon-xing2:before { + content: "\eb10"; +} +.icon-flattr:before { + content: "\eb11"; +} +.icon-foursquare:before { + content: "\eb12"; +} +.icon-yelp:before { + content: "\eb13"; +} +.icon-paypal:before { + content: "\eb14"; +} +.icon-chrome:before { + content: "\eb15"; +} +.icon-firefox:before { + content: "\eb16"; +} +.icon-IE:before { + content: "\eb17"; +} +.icon-edge:before { + content: "\eb18"; +} +.icon-safari:before { + content: "\eb19"; +} +.icon-opera:before { + content: "\eb1a"; +} +.icon-file-pdf:before { + content: "\eb1b"; +} +.icon-file-openoffice:before { + content: "\eb1c"; +} +.icon-file-word:before { + content: "\eb1d"; +} +.icon-file-excel:before { + content: "\eb1e"; +} +.icon-libreoffice:before { + content: "\eb1f"; +} +.icon-html-five:before { + content: "\eb20"; +} +.icon-html-five2:before { + content: "\eb21"; +} +.icon-css3:before { + content: "\eb22"; +} +.icon-git:before { + content: "\eb23"; +} +.icon-codepen:before { + content: "\eb24"; +} +.icon-svg:before { + content: "\eb25"; +} +.icon-IcoMoon:before { + content: "\eb26"; +} +.buttonPlugin.flexSkip_Rewind_10 { + background-position: -205% 22%; +} +.buttonPlugin.flexSkip_Forward_30 { + background-position: -200% 22%; +} +.buttonPlugin.arrowSlideNavidator.nextButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.buttonPlugin.arrowSlideNavidator.prevButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.arrow-slide-navigator-container { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; +} +.buttonPlugin.audioTags { + text-align: center; + background-position: -900% -200%; + font-size: 0.8em; + line-height: 20px; + color: white; + text-transform: uppercase; +} +.videoAudioTrackItem { + padding: 10px; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; +} +.videoAudioTrackItem.selected { + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #cc0000; +} +.videoAudioTrackItem:hover { + background-color: #cc0000; +} +.blackBoardDiv { + position: absolute; + /* 16:9 */ + width: 816px; + height: 459px; + top: 135px; + left: 450px; + background-size: 100%; +} +.lensClass { + background-color: rgba(255, 236, 195, 0.3); + position: absolute; + border: 1px dotted white; +} +.lensContainer img { + width: 100% !important; +} +#overlayContainer div.lensContainer { + pointer-events: all; +} +.textBreak { + background-color: rgba(128, 128, 128, 0.7); + text-align: center; + color: white; + line-height: 17px; + font-size: 18px; + padding-top: 10px; + padding-bottom: 10px; + border-radius: 12px; +} +.buttonPlugin.captionsPluginButton { + background-position: 0% -100%; +} +.captionsPluginContainer { + width: 400px; + overflow: hidden; +} +.captionsBar input { + color: white; + background-color: rgba(0, 0, 0, 0.78); + border-color: #cc0000; + width: 49%; + margin-bottom: 0px; + margin-left: 1px; + float: left; +} +.captionsBar select { + width: 39%; + display: inline; + background-color: #cc0000; + border: 1px solid #ccc; + color: white; + margin-bottom: 0px; + height: 31px; +} +.captionsBar button { + float: right; + width: 7%; + min-height: 30px; + min-width: 30px; + margin-right: 2px; + background: url(../images/paella_icons_light.png); + background-position: -400% -100%; + background-size: 2000% 1000%; + position: static; +} +.captionsBar button:hover { + background-color: #cc0000; +} +.bodyInnerContainer { + margin-bottom: 5px; + display: block; + margin-left: 3px; + height: auto; +} +.captionsBar input:hover { + border-color: #FF4C4C; +} +.captionsBar input:focus { + border-color: #cc0000; +} +.captionsBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.captionsBar input:hover { + border-color: #FF4C4C; +} +.captionsBar input:focus { + border-color: #FF4C4C; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #cc0000; +} +/* CSS OVERLAY */ +.CaptionsOnScreen { + position: absolute; + width: 100%; + height: 100%; + text-align: center; + top: 0; + left: 0; + z-index: 99; +} +.CaptionsOnScreenInner { + background-color: rgba(0, 0, 0, 0.6); + position: relative; + text-align: center; + color: white; + font-size: 17px; + width: 70%; + min-height: 20px; + margin-left: auto; + margin-right: auto; + padding: 8px; + border-radius: 12px; +} +.Highlight { + color: #FF4C4C; + font-weight: bold; +} +#CommentPlugin_Publish_entry_buttons_area { + margin-top: 5px; +} +.comments_entry { + margin: 5px; + margin-bottom: 20px; + width: 90%; +} +.comments_entry_username { + color: #438bc5; + font-size: 14px; + font-family: arial, sans-serif; + font-weight: bold; +} +.comments_entry_datepublish { + color: #999; + font-size: 11px; + font-family: arial, sans-serif; + margin-left: 20px; +} +.comments_entry_comment { + margin-top: 5px; + margin-bottom: 10px; +} +.comments_entry_silhouette { + float: left; + width: 6%; +} +.comments_entry_container { + vertical-align: top; + margin: 10px; + margin-left: 50px; + width: 100%; +} +.comments_entry_container textarea { + width: 98%; + height: 45px; + /*margin-top:10px;*/ + margin-bottom: 5px; + color: #52575c; +} +.CommentPlugin_Publish { + /*box-shadow: inset 0px 0px 10px 2px rgba(10, 10,10, 0.39); */ + border-radius: 7px; + padding: 10px; + padding-bottom: 1px; +} +textarea { + resize: vertical; +} +.reply_button { + color: #999; + font-size: 12px; + font-family: arial, sans-serif; + margin-bottom: 15px; + font-weight: bold; + cursor: pointer; +} +.reply_button:hover { + color: #438bc5; + text-decoration: underline; +} +.buttonPlugin.extendedTabAdapterPlugin { + background-position: -500% -200%; +} +.buttonPluginPopUp.extendedTabAdapterPlugin { + background-image: none; + background-color: rgba(0, 0, 0, 0); +} +.extendedTabAdapterPlugin > .tabsPluginContainer { + width: 600px; + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel { + display: inline; + background-color: rgba(0, 0, 0, 0.78); + line-height: 26px; + padding-left: 10px; + padding-right: 10px; + padding-top: 7px; + padding-bottom: 7px; + cursor: pointer; + cursor: hand; + font-family: sans-serif; + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.48); + border-radius: 6px 6px 0px 0px; + font-size: 12px; + margin-left: 1px; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.enabled { + cursor: default; + box-shadow: inset 0px 0px 12px rgba(0, 0, 0, 0.9); +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.disabled { + background-color: #e6e6e6; + color: black; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer { + height: 200px; + background-color: rgba(0, 0, 0, 0.78); + padding-left: 5px; + padding-top: 9px; + padding-right: 5px; + overflow-y: scroll; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #FF4C4C; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.enabled { + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.disabled { + display: none; +} +.buttonPlugin.footPrints { + background-position: -700% 0%; +} +.footPrintsContainer { + height: 20px; + width: 100%; + overflow: hidden; + display: block; +} +.footPrintsCanvas { + width: 100%; + height: 100%; + overflow: hidden; + display: inline-block; +} +.frameControlContainer { + height: 87px; + width: 90%; + overflow: hidden; + display: inline-block; + margin-left: 5%; +} +.frameControl.navButton { + width: 40px; + height: 40px; + display: block; + cursor: pointer; + background-image: url(../images/paella_icons_light.png); + background-size: 2000% 1000%; + background-position: 100% 100%; + position: absolute; + top: 28px; +} +.frameControl.navButton.left { + background-position: -1600% -100%; + opacity: 0.5; +} +.frameControl.navButton.right { + right: 0px; + opacity: 0.5; + background-position: -1500% -100%; +} +.frameControl.navButton.left:hover { + opacity: 1; +} +.frameControl.navButton.right:hover { + opacity: 1; +} +.frameControlContent { + height: 100px; + overflow: hidden; + padding-top: 6px; +} +.frameControlItem { + width: 140px; + cursor: pointer; + margin-left: 3px; + margin-right: 3px; + float: left; + opacity: 0.8; +} +/*.frameControlItem:hover { + width:94px; + border: 3px dotted #23ff00; + opacity: 1; +}*/ +.frameControlItem.selected { + width: 134px; + border: 3px dotted #cc0000; + opacity: 1; +} +.frameControlItem.current { + width: 134px; + border: 3px solid #cc0000; + opacity: 1; +} +.frameControlImage { + width: 100%; +} +.frameCaption { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + text-align: center; + padding: 5px; + color: black; + text-shadow: 1px 1px 2px #ffffff; +} +.showFramesButton { + position: absolute; + display: block; + width: 40px; + height: 37px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +/* +.showFramesButton:hover { +} +*/ +.showFramesButton_active { + position: absolute; + display: block; + width: 40px; + height: 37px; + right: 0px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +.frameListContainer { + background-image: url(../../resources/images/playback_bkg.png); +} +.frameThumbnail { + /* + margin-top:8px; + margin-right:3px; + margin-bottom:8px; + margin-left:3px; +*/ + margin: 8px 3px 8px 3px; + height: 40px; +} +.frameThumbnail:hover { + margin: 0px; + border: 3px #cc0000 solid; + height: 50px; +} +.enabledFrameThumbnail { + border: 3px #cc0000 solid; + height: 50px; +} +.enabledFrameThumbnail:hover { + border: 3px #cc0000 solid; +} +.buttonPlugin.showFullScreenButton { + background-position: -900% 0%; +} +.buttonPlugin.showFullScreenButton.active { + background-position: -1000% 0%; +} +.buttonPlugin.helpButton { + background-position: -1300% 0%; +} +.buttonPlugin.right.liveIndicator { + width: 100px; + height: 40px; + background-image: url(live_video.png); + background-size: 100% 100%; + margin-top: 5px; + margin-right: 5px; +} +/*.showMultipleQualitiesPlugin { + background-image: url(advanced_button.png); + background-size: 300%; +} + +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image:none; +} + +.selectQuality { + padding: 10px; +}*/ +.buttonPlugin.showMultipleQualitiesPlugin { + text-align: center; + font-size: 0.8em; + line-height: 20px; + min-width: 36px; +} +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image: none; +} +.selectQuality { + padding: 10px; +} +.multipleQualityItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.multipleQualityItem:hover { + background-color: #FF4C4C; +} +.multipleQualityItem.selected { + color: #cc0000; +} +.multipleQualityItem.selected:hover { + color: white; +} +.buttonPlugin.playButton { + background-position: -500% -100%; +} +.buttonPlugin.pauseButton { + background-position: -100% 0%; +} +.playButtonOnScreen { + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.playButtonOnScreenIcon { + display: block; + cursor: pointer; + width: 100%; +} +.playbackRateItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.playbackRateItem:hover { + background-color: #FF4C4C; +} +.buttonPlugin.showPlaybackRateButton { + text-align: center; + line-height: 20px; + background-position: -600% -100%; + font-size: 1em; +} +.playbackRateItem.selected { + color: #cc0000; +} +.playbackRateItem.selected:hover { + color: white; +} +.buttonPlugin.showPlaybackRateButton { + min-width: 36px; +} +.buttonPlugin.rateButtonPlugin { + text-align: center; + background-position: -700% -200%; + font-size: 0.8em; + line-height: 20px; +} +.buttonPluginPopUp { + right: 0px; +} +.rateButtons { + /*padding: 10px;*/ + width: 250px; +} +.starButton { + display: inline-block; + width: 26px; + height: 26px; + font-size: 25px; +} +.rateButtonPlugin h4 { + margin-left: 10px; +} +.rateButtonPlugin h5 { + margin-left: 19px; +} +.rateButtons .starButton:first-of-type { + margin-left: 19px; +} +.buttonPlugin.searchButton { + background-size: 2000% 1000%; + background-position: -900% -100%; + display: block; +} +.buttonPluginPopUp.searchButton { + position: absolute; +} +.searchPluginContainer { + width: 400px; + overflow: hidden; +} +.searchBar input { + color: white; + background-color: rgba(0, 0, 0, 0.78); + border-color: #cc0000; + width: 96%; + margin-bottom: 0px; + margin-left: 1px; +} +.searchBar input:hover { + border-color: #FF4C4C; +} +.searchBar input:focus { + border-color: #FF4C4C; +} +.searchBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.sBodyInnerContainer { + display: block; + margin-left: 3px; + min-height: 70px; + border: 1px solid rgba(0, 0, 0, 0.78); +} +.hover { + background-color: #FF4C4C; +} +.redScore { + background-color: rgba(255, 0, 0, 0.2); +} +.greenScore { + background-color: rgba(0, 255, 0, 0.2); +} +.sBodyText { + width: 100%; + display: block; + text-align: left; +} +.timeSpan { + color: #cc0000; + margin-right: 5px; +} +.TimePicContainer { + float: left; + width: 24%; + text-align: center; + margin-right: 5px; +} +.TimePicContainer img { + width: 100%; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #cc0000; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #FF4C4C; +} +svg path, +svg rect { + fill: #FF6700; +} +.loader { + float: left; + display: inline-block; + vertical-align: top; +} +.noResults { + margin: 5px; +} +.buttonPlugin.showSocialPluginButton { + background-position: -800% 0%; +} +.buttonPluginPopUp.showSocialPluginButton { + background-image: none; +} +.socialItemButton { + /*crea el popup*/ + width: 20px; + height: 20px; + cursor: pointer; + background-image: url(../images/paella_icons_light.png); + background-size: 2000% 1000%; + background-position: 0px 0px; +} +.socialItemButton.selected { + /*background-color: rgba(90,90,90,0.8); + border: 3px solid #23ff00;*/ + background-color: rgba(90, 90, 90, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.socialItemButton:hover { + background-color: #faa166; +} +.socialItemButton.facebook { + background-position: -1600% 0%; +} +.socialItemButton.twitter { + background-position: -1400% 0%; +} +.socialItemButton.embed { + background-position: -1500% 0%; +} +.embedSizeButton { + display: inline-block; + background-color: #fa8533; + border: 1px solid #313135; + border-radius: 10px; + cursor: pointer; + margin-right: 5px; + vertical-align: middle; + font-size: 14px; + text-align: center; + color: white; +} +.embedSizeInput { + background-color: #ffffff; + width: 40px; + height: 20px; + color: #000000; + font-size: 12px; + margin: 0px; + padding: 0px; +} +.buttonPlugin.themeChooserPlugin { + background-position: -800% -100%; +} +.buttonPluginPopUp.themeChooserPlugin { + background-image: none; + min-width: 40px; + width: 120px; + text-align: right; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton { + cursor: pointer; + text-align: left; + text-transform: capitalize; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 3px; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton:hover { + background-color: #FF4C4C; +} +.translecturesCaptionsMessageBox { + margin-left: auto; + margin-right: auto; + text-align: center; + width: 700px; + height: 200px; + font-size: 14px; +} +.translecturesCaptionsMessageBox .title { + color: #635e5e; + font-size: 20px; + margin-bottom: 20px; +} +.translecturesCaptionsMessageBox .authMethodsContainer { + margin-left: auto; + margin-right: auto; + width: 500px; + height: 200px; + margin-top: 10px; + position: relative; +} +.translecturesCaptionsMessageBox .authMethodsContainer .authMethod { + display: inline-block; + width: 200px; + height: 200px; + /* + position:absolute; + left: 0px; +*/ +} +.buttonPlugin.left.videoData { + height: auto; + width: 100%; + margin-top: 5px; + margin-left: auto; + margin-right: auto; + background-color: rgba(0, 0, 0, 0.6); +} +.buttonPlugin.left.videoData h1 { + color: white; + padding: 0px 0px 0px 20px; + margin: 0px; +} +@media (max-width: 400px) { + .buttonPlugin.left.videoData h1 { + font-size: 16px; + line-height: 24px; + } +} +@media (min-width: 401px) and (max-width: 800px) { + .buttonPlugin.left.videoData h1 { + font-size: 20px; + line-height: 34px; + } +} +@media (min-width: 801px) { + .buttonPlugin.left.videoData h1 { + font-size: 30px; + line-height: 44px; + } +} +.buttonPlugin.right.videoZoom { + width: 200px; + background-image: none; + position: absolute; + right: 0px; + top: 0px; + text-align: right; +} +.buttonPlugin.right.videoZoom:hover { + background-color: transparent !important; +} +.buttonPlugin.right.videoZoom:active { + background-color: transparent !important; +} +.zoom-thumbnail { + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; +} +.zoom-container { + width: 160px; + height: 90px; + margin: 5px; + box-sizing: border-box; + box-shadow: 0px 0px 3px 0px black; + border-radius: 2px; + position: relative; + right: 0px; +} +.zoom-rect { + background-color: rgba(255, 255, 255, 0.5); + position: absolute; + top: 0px; + left: 0px; + border: 1px solid #0e0e0e; +} +/* The canvas "freeze frame" to overlay video element, instead of flex side aligned */ +.freezeFrame { + align-self: center; + position: absolute; +} +.videoZoomButton { + z-index: 1; + margin-left: 2px; + margin-right: 2px; + margin-top: 4px; + opacity: 0.2; + background: white; + font-size: 2em; + padding: 0px 4px 0px 4px; + box-shadow: 2px 2px 5px 0px black; + width: 30px; + height: 30px; + position: relative; + left: 40%; +} +.videoZoomButton:hover { + opacity: 0.999; +} +.videoZoomButton:active { + opacity: 0.999; +} +@media (max-width: 600px) { + .buttonPlugin.right.videoZoom { + width: 89px; + } + .zoom-container { + width: 80px; + height: 45px; + } +} +@media (max-width: 800px) and (min-width: 601px) { + .buttonPlugin.right.videoZoom { + width: 100px; + } + .zoom-container { + width: 120px; + height: 68px; + } +} +.videoZoomToolbarItem { + width: 30px; + height: 30px; + cursor: pointer; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + font-size: 20px; +} +.buttonPluginPopUp.showViewModeButton { + background-image: none; +} +.buttonPlugin.showViewModeButton { + background-position: -1100% 0%; +} +.viewModeItemButton { + background-image: url(../images/paella_icons_light.png); + width: 80px; + height: 40px; + cursor: pointer; + background-size: 100% 100% !important; + background-position: 0px 0px ! important; + background-color: white; +} +.viewModeItemButton:hover { + background-color: #FF4C4C; +} +.viewModeItemButton.selected { + /*background-position: 78px 0;*/ + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #cc0000; +} +.viewModeItemButton.slide_professor { + background-position: 80px -80px; +} +.viewModeItemButton.professor_slide { + background-position: 80px -120px; +} +.viewModeItemButton.professor { + background-position: 80px -40px; +} +.viewModeItemButton.slide_over_professor { + background-position: 80px -200px; +} +.viewModeItemButton.slide_over_professor_right { + background-position: 80px -160px; +} +.viewModeItemButton.s_p_blackboard2 { + background-position: 80px -240px; +} +.viewModeItemButton.professor_over_slide { + background-position: 80px -320px; +} +.viewModeItemButton.professor_over_slide_right { + background-position: 80px -280px; +} +.viewModeItemButton.slide { + background-position: 80px 0px; +} +.viewModeItemButton.chroma { + background-position: 80px -360px; +} +.buttonPlugin.volumeRangeButton.mute { + background-position: -300% 0%; +} +.buttonPlugin.volumeRangeButton.max { + background-position: -600% 0%; +} +.buttonPlugin.volumeRangeButton.med { + background-position: -500% 0%; +} +.buttonPlugin.volumeRangeButton.min { + background-position: -400% 0%; +} +.buttonPluginPopUp.volumeRangeButton { + position: absolute; + /* right: -220px; */ +} +.videoRangeContainer { + width: 260px; +} +span.videoRangeButton.expandable-content { + padding-top: 10px; +} +/* Range control */ +.volumeRangeButton input[type=range] { + display: inline-block; + width: 80px; + height: 12px; +} +input[type=range] { + -webkit-appearance: none; + width: 100%; + margin: 6.2px 0; + background-color: transparent; +} +input[type=range]:focus { + outline: none; +} +input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-webkit-slider-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.4px; +} +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ffffff; +} +input[type=range]::-moz-range-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-moz-range-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; +} +input[type=range]::-ms-track { + width: 100%; + height: 4.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #f2f2f2; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-fill-upper { + background: #ffffff; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 14px; + width: 14px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + margin-top: -2px; +} +input[type=range]:focus::-ms-fill-lower { + background: #ffffff; +} +input[type=range]:focus::-ms-fill-upper { + background: #ffffff; +} +.cc-window { + opacity: 1; + transition: opacity 1s ease; +} +.cc-window.cc-invisible { + opacity: 0; +} +.cc-animate.cc-revoke { + transition: transform 1s ease; +} +.cc-animate.cc-revoke.cc-top { + transform: translateY(-2em); +} +.cc-animate.cc-revoke.cc-bottom { + transform: translateY(2em); +} +.cc-animate.cc-revoke.cc-active.cc-bottom, +.cc-animate.cc-revoke.cc-active.cc-top, +.cc-revoke:hover { + transform: translateY(0); +} +.cc-grower { + max-height: 0; + overflow: hidden; + transition: max-height 1s; +} +.cc-link, +.cc-revoke:hover { + text-decoration: underline; +} +.cc-revoke, +.cc-window { + position: fixed; + overflow: hidden; + box-sizing: border-box; + font-family: Helvetica, Calibri, Arial, sans-serif; + font-size: 16px; + line-height: 1.5em; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + z-index: 9999; +} +.cc-window.cc-static { + position: static; +} +.cc-window.cc-floating { + padding: 2em; + max-width: 24em; + -ms-flex-direction: column; + flex-direction: column; +} +.cc-window.cc-banner { + padding: 1em 1.8em; + width: 100%; + -ms-flex-direction: row; + flex-direction: row; +} +.cc-revoke { + padding: 0.5em; +} +.cc-header { + font-size: 18px; + font-weight: 700; +} +.cc-btn, +.cc-close, +.cc-link, +.cc-revoke { + cursor: pointer; +} +.cc-link { + opacity: 0.8; + display: inline-block; + padding: 0.2em; +} +.cc-link:hover { + opacity: 1; +} +.cc-link:active, +.cc-link:visited { + color: initial; +} +.cc-btn { + display: block; + padding: 0.4em 0.8em; + font-size: 0.9em; + font-weight: 700; + border-width: 2px; + border-style: solid; + text-align: center; + white-space: nowrap; +} +.cc-highlight .cc-btn:first-child { + background-color: transparent; + border-color: transparent; +} +.cc-highlight .cc-btn:first-child:focus, +.cc-highlight .cc-btn:first-child:hover { + background-color: transparent; + text-decoration: underline; +} +.cc-close { + display: block; + position: absolute; + top: 0.5em; + right: 0.5em; + font-size: 1.6em; + opacity: 0.9; + line-height: 0.75; +} +.cc-close:focus, +.cc-close:hover { + opacity: 1; +} +.cc-revoke.cc-top { + top: 0; + left: 3em; + border-bottom-left-radius: 0.5em; + border-bottom-right-radius: 0.5em; +} +.cc-revoke.cc-bottom { + bottom: 0; + left: 3em; + border-top-left-radius: 0.5em; + border-top-right-radius: 0.5em; +} +.cc-revoke.cc-left { + left: 3em; + right: unset; +} +.cc-revoke.cc-right { + right: 3em; + left: unset; +} +.cc-top { + top: 1em; +} +.cc-left { + left: 1em; +} +.cc-right { + right: 1em; +} +.cc-bottom { + bottom: 1em; +} +.cc-floating > .cc-link { + margin-bottom: 1em; +} +.cc-floating .cc-message { + display: block; + margin-bottom: 1em; +} +.cc-window.cc-floating .cc-compliance { + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.cc-window.cc-banner { + -ms-flex-align: center; + align-items: center; +} +.cc-banner.cc-top { + left: 0; + right: 0; + top: 0; +} +.cc-banner.cc-bottom { + left: 0; + right: 0; + bottom: 0; +} +.cc-banner .cc-message { + display: block; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + max-width: 100%; + margin-right: 1em; +} +.cc-compliance { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: justify; + align-content: space-between; +} +.cc-floating .cc-compliance > .cc-btn { + -ms-flex: 1; + flex: 1; +} +.cc-btn + .cc-btn { + margin-left: 0.5em; +} +@media print { + .cc-revoke, + .cc-window { + display: none; + } +} +@media screen and (max-width: 900px) { + .cc-btn { + white-space: normal; + } +} +@media screen and (max-width: 414px) and (orientation: portrait), screen and (max-width: 736px) and (orientation: landscape) { + .cc-window.cc-top { + top: 0; + } + .cc-window.cc-bottom { + bottom: 0; + } + .cc-window.cc-banner, + .cc-window.cc-floating, + .cc-window.cc-left, + .cc-window.cc-right { + left: 0; + right: 0; + } + .cc-window.cc-banner { + -ms-flex-direction: column; + flex-direction: column; + } + .cc-window.cc-banner .cc-compliance { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + } + .cc-window.cc-floating { + max-width: none; + } + .cc-window .cc-message { + margin-bottom: 1em; + } + .cc-window.cc-banner { + -ms-flex-align: unset; + align-items: unset; + } + .cc-window.cc-banner .cc-message { + margin-right: 0; + } +} +.cc-floating.cc-theme-classic { + padding: 1.2em; + border-radius: 5px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-compliance { + text-align: center; + display: inline; + -ms-flex: none; + flex: none; +} +.cc-theme-classic .cc-btn { + border-radius: 5px; +} +.cc-theme-classic .cc-btn:last-child { + min-width: 140px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-btn { + display: inline-block; +} +.cc-theme-edgeless.cc-window { + padding: 0; +} +.cc-floating.cc-theme-edgeless .cc-message { + margin: 2em 2em 1.5em; +} +.cc-banner.cc-theme-edgeless .cc-btn { + margin: 0; + padding: 0.8em 1.8em; + height: 100%; +} +.cc-banner.cc-theme-edgeless .cc-message { + margin-left: 1em; +} +.cc-floating.cc-theme-edgeless .cc-btn + .cc-btn { + margin-left: 0; +} +.paella-profile-button { + background-color: lightgray; + border: none; + border-radius: 10%; + box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.9); +} +.paella-profile-button:hover { + background-color: #9b9b9b; +} +.paella-profile-button:active { + background-color: #000000; +} +.buttonPlugin.AirPlayButton { + background-position: -1100% -100%; +} +.buttonPlugin.AirPlayButton.not-available { + opacity: 0.4; +} +.buttonPlugin.legal { + pointer-events: all; + padding-right: 5px; + height: 20px; + text-align: right; + padding: 1px; + margin: 1px; + margin-right: 12px; + margin-top: -7px; + margin-bottom: 4px; + width: auto; +} +.buttonPlugin.legal a { + color: lightgrey !important; + text-decoration: underline !important; +} +.buttonPlugin.legal a:hover { + background-color: transparent !important; + font-weight: bold !important; +} +.buttonPlugin.legal:hover { + background-color: transparent !important; +} +.buttonPlugin.PIPModeButton { + background-position: -1000% -100%; +} +.related-video-container { + z-index: 5; + background-color: rgba(255, 255, 255, 0.7); +} +.related-video-container .related-video-link { + width: 30%; + overflow: hidden; + display: block; + background-color: white; + padding: 3px; + box-shadow: 1px 1px 3px 0px black; + position: absolute; + pointer-events: all; +} +.related-video-container .related-video-link.related-video-single { + width: 50%; + left: 25%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-1 { + width: 30%; + left: 10%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-2 { + width: 30%; + right: 10%; + top: 30%; +} +.related-video-container .related-video-link img { + width: 100%; +} +.related-video-container .related-video-link p { + width: 100%; + text-align: center; +} +.buttonPlugin.showEditorButton { + pointer-events: all; +} +.buttonPluginPopUp.videoZoomToolbar { + width: 50px; + text-align: center; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-videocamera { + font-size: 27px; + margin-left: -2px; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-zoom-in { + font-size: 29px; + margin-left: -6px; +} +.autoTrackingActivated { + color: red !important; +} +html { + margin: 0px; +} +body { + font-family: 'Ubuntu', sans-serif; + margin: 0px; +} +pre { + padding: 20px; + border-bottom: 2px solid #cc0000; + border-top: 2px solid #cc0000; +} +iframe { + margin-left: auto; + margin-right: auto; + display: block; +} +h2 { + color: #909090; +} +h1 { + color: #cc0000; +} +.alignCenter { + display: block; + margin-right: auto; + margin-left: auto; + max-width: 90%; +} +.image { + background-size: 100% auto; + background-repeat: no-repeat; +} +#logo { + background-image: url(logo_paella.png); + width: 140px; + height: 140px; + float: left; +} +.pageHeader { + background-color: white; + padding: 20px; + border-bottom: 1px solid #cc0000; + height: 170px; +} +.content { + width: 100%; + background-color: white; + margin-left: auto; + margin-right: auto; + max-width: 1100px; + padding-left: 30px; + padding-right: 30px; +} +.content.page { + margin-top: 0px; + padding-top: 30px; + padding-bottom: 100px; +} +#headerText { + font-family: 'Varela Round', sans-serif; + font-size: 60pt; + display: block; + width: 100%; + line-height: 90px; + margin-left: 157px; +} +#headerSubtitle { + display: block; + width: 100%; + margin-left: 160px; + font-size: 28px; + color: gray; +} +.logoGroup { + width: 660px; + float: left; + margin-top: 20px; +} +a { + color: #fa8528; +} +a:visited { + color: #fa8528; +} +a:hover { + color: #fba352; +} +a:active { + color: #ffb055; +} +.linkButton { + font-size: 20px; + color: white; + background-color: #fa8528; + padding: 20px; + border-radius: 5px; + border: 1.6pt solid #BA631E; + box-shadow: inset -3px -5px 10px 0px #D9711D; + display: inline-block; + text-decoration: none; + text-align: center; +} +.linkButton.small { + padding: 10px; + font-size: 12px; +} +.linkButton:hover { + color: white; + background-color: #FFA863; +} +.linkButton:active { + color: white; + box-shadow: inset 3px 5px 20px 0px #D9711D; +} +.buttonGroup#downloads { + width: 233px; + padding-top: 5px; + margin-bottom: 30px; + margin-left: auto; + margin-right: auto; +} +#githubLink { + display: block; +} +#resourcesLink { + display: block; +} +#downloadPaella3 { + display: block; + width: 189px; + margin-top: 55px; + margin-left: auto; + margin-right: auto; + color: white; +} +.downloadGroup { + width: 250px; + float: right; +} +.footerText { + display: inline-block; + height: 50px; + vertical-align: top; + margin-right: 10px; + font-size: 10px; +} +.sponsorLogo { + width: 100px; + display: inline-block; +} +.content.footer { + border-top: 4px solid #fa8528; + padding-top: 10px; +} +.menu { + margin-top: 165px; +} +.menuItem { + list-style-type: none; + display: inline; + margin-right: 30px; +} +.menuItemLink { + cursor: pointer; +} +.menuItemLink.current { + color: gray; +} +.element { + margin-left: auto; + display: block; + margin-right: auto; + width: 65%; +} +.imgen { + margin-left: auto; + width: 100%; +} +.txtblock { + color: black; + font-size: large; + font-family: 'Istok Web', sans-serif; + font-style: oblique; +} diff --git a/src/main/webapp/static/js/paella/player/resources/style/style_light.css b/src/main/webapp/static/js/paella/player/resources/style/style_light.css new file mode 100644 index 0000000000000000000000000000000000000000..c46dd91c8d030050036312b31472fefe691d5f83 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/style_light.css @@ -0,0 +1,3990 @@ +/* Dark icons over light background */ +body { + height: 100%; + width: 100%; + font-family: Verdana, sans-serif; + font-size: 12px; + background: #fafafa; + touch-action: none; +} +a { + color: #636363; +} +a:hover { + color: #a4a4a4; +} +a:active { + color: #3d3d3d; +} +a:visited { + color: #636363; +} +.videoWrapper { + -moz-box-shadow: 2px 2px 6px #000; + -webkit-box-shadow: 2px 2px 6px #000; + box-shadow: 2px 2px 6px #000; + background: black; +} +div { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.buttonPlugin { + cursor: pointer; + padding-right: 0px; + padding-left: 0px; + background-origin: border-box; + position: relative; + display: block; + float: left; + align-items: stretch; + background-color: transparent; + border: none; + box-sizing: border-box; + min-width: 30px; + height: 30px; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + color: white; + text-align: center; +} +button, +div i.button-icon { + color: black; + font-size: 18px; + line-height: 30px; + position: absolute; + top: 0px; + left: 5px; +} +span.expandable-content { + color: white; + width: 80px; + display: block; + float: left; +} +.buttonPlugin.expandable-content { + background-color: transparent !important; +} +.buttonPlugin { + position: relative; +} +.button-text { + position: absolute; + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + text-align: center; + line-height: 30px; + z-index: 1; +} +i.button-icon.icon-screen { + font-size: 21.96px; + padding-left: 0px; +} +.play-button-on-screen { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.play-button-on-screen .play-icon { + width: 300px; + height: 300px; + background-image: url(../images/play.svg); +} +@media screen and (max-width: 1000px) { + .play-button-on-screen .play-icon { + width: 300px; + height: 300px; + } +} +@media screen and (max-width: 700px) { + .play-button-on-screen .play-icon { + width: 150px; + height: 150px; + } +} +@media screen and (max-width: 400px) { + .play-button-on-screen .play-icon { + width: 80px; + height: 80px; + } +} +#playerContainer { + background-color: white; +} +#playerContainer.modalVisible > :not(.modalMessageContainer) { + filter: blur(10px); +} +#playerContainer:-webkit-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-moz-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-ms-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-o-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#ignoreBrowserCheckLink { + color: black; + text-decoration: underline; +} +.alt-scroll-message-container { + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0.45); + display: flex; + justify-content: center; + align-items: center; + font-size: 20px; + color: white; + text-shadow: 1px 1px 4px black; +} +.alt-scroll-message-container p { + text-align: center; +} +.playbackControls { + background-color: rgba(242, 242, 242, 0.78); + background-image: none; + background-size: auto; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 56px; + z-index: 100; +} +.playbackBarPlugins { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 40px; + font-size: 12px; + overflow: hidden; +} +.playbackBar { + position: absolute; + left: 0px; + right: 0px; + height: 14px; + background-color: rgba(125, 125, 125, 0.5); + border-bottom: 1px solid rgba(90, 90, 90, 0.6); + border-top: 1px solid rgba(90, 90, 90, 0.6); + cursor: pointer; +} +.playbackBar:focus { + box-shadow: inset 0px 0px 5px 0px #faa166; + outline: none; +} +.playbackBarFull { + height: 12px; + background-color: #fa8533; + background: #fa8533; +} +.playbackBarFull.disabled { + opacity: 0.2; +} +.buttonPlugin.left { + float: left; +} +.buttonPlugin.right { + float: right; +} +.buttonPlugin:hover { + background-color: #faa166; +} +.buttonPlugin:focus { + box-shadow: inset 0px 0px 5px 0px #faa166; + outline: none; +} +.buttonPlugin.selected { + background-color: #fa8533; +} +.popUpPluginContainer { + position: absolute; + right: 0px; + z-index: 110; + color: black; +} +.buttonPluginPopUp { + background-color: rgba(242, 242, 242, 0.78); + position: absolute; + bottom: -14px; +} +.timelinePluginContainer { + position: absolute; + left: 0px; + width: 100%; + background-color: rgba(242, 242, 242, 0.78); + bottom: 56px; + color: black; +} +.buttonTimeLine { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; +} +/* old style time control */ +.timeControlOld { + color: white; + display: block; + position: relative; + width: 69px; + height: 44px; + background-size: 100%; + background-image: url(../images/time_monitor.png); + font-size: 10px; + padding-top: 11px; + background-repeat: no-repeat; + bottom: 70px; + font-family: verdana; + text-align: center; + z-index: 100; +} +.timeControl { + color: white; + display: block; + position: relative; + width: 69px; + height: 12px; + font-size: 10px; + background-repeat: no-repeat; + padding-left: 5px; + font-family: verdana; + text-align: left; + z-index: 100; + line-height: 12px; + margin-top: -12px; + cursor: pointer; +} +.editControlContainer { + z-index: 20; +} +.paellaLoadErrorContainer { + width: 1000px; + margin: auto; + margin-top: 200px; + text-align: center; + padding-top: 80px; + padding-bottom: 80px; + background-color: rgba(220, 228, 234, 0.9); + border-radius: 22px; + box-shadow: 1px 1px 8px black; + font-family: sans-serif; + font-size: 20px; +} +.modalMessageContainer { + background-color: rgba(0, 0, 0, 0.5); +} +.messageContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; +} +.frameContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + /*vertical-align: middle;*/ + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + display: block; +} +.errorContainer { + width: 55%; + min-height: 55%; + margin-top: 22%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + padding-left: 120px; + padding-right: 60px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-family: sans-serif; + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + border: 7px solid maroon; + color: maroon; + font-weight: bold; + background-image: url(../images/error_icon.png); + background-size: 10%; + background-repeat: no-repeat; + background-position: 50px 40px; +} +.paella_messageContainer_closeButton { + /*background-image: url(../images/close_button.png);*/ + width: 20px; + height: 20px; + position: absolute; + display: block; + top: 10px; + right: 10px; + z-index: 999999999; + border-radius: 20px; +} +.paella_messageContainer_closeButton:hover { + color: white; + background-color: black; +} +.paella_messageContainer_closeButton:active { + background-position: 20px; +} +.overlayContainer.background { + background-color: rgba(0, 0, 0, 0.5); +} +#overlayContainer { + pointer-events: none; +} +#overlayContainer div { + pointer-events: none; +} +.videoLoaderOverlay { + background-color: black; +} +.videoOverlayButtonPlugins { + z-index: 100; + position: absolute; + right: 0px; + left: 0px; + top: 0px; + pointer-events: none; +} +.divTimeOverlay { + position: fixed; + background-color: rgba(242, 242, 242, 0.78); + color: white; + text-align: center; + padding-right: 3px; + padding-left: 3px; + padding-top: 1px; + text-shadow: 1px 1px #888888; + z-index: 100; +} +.divTimeImageOverlay { + position: fixed; + background-color: rgba(242, 242, 242, 0.78); + z-index: 99; + width: 256px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: contain; +} +.imgOverlay { + height: 100%; + width: 100%; + max-width: none; + border: 1px solid rgba(242, 242, 242, 0.78); +} +.videoPosterFrameImage { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + height: 100%; + width: 100%; +} +.playerContainer_controls_playback_playbackBar_canvas { + overflow: hidden; + position: absolute; +} +#playerContainer_controls_playback_playbackBar { + overflow: hidden; + background-color: #333333; +} +.login-link { + margin-top: 20px; + margin-bottom: 20px; +} +video::-internal-media-controls-download-button { + display: none; +} +video::-webkit-media-controls-enclosure { + overflow: hidden; +} +video::-webkit-media-controls-panel { + width: calc(100% + 8px); + /* Adjust as needed */ +} +#lazyLoadThumbnailContainer { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + z-index: 20; + /* Over the video contaniner and video layout buttons, but under the play button */ +} +.dimmed-element { + filter: blur(4px); +} +/* TODO: Extract this CSS to editor plugins */ +.editorTrackItem.mainTrackTrim { + background-image: url(../images/main_track_bkg.png); + background-size: 56px 100%; +} +/* END EXTRACT */ +/* Begin new editor */ +a.btn { + color: #f3f3f3; +} +.listItem { + color: #f3f3f3; +} +.editorContainer { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: 100%; + height: 100%; +} +.paellaEditorRightBar { + position: fixed; + right: 0px; + top: 0px; + background-color: #4f4f4f; + box-shadow: 1px -4px 12px black; +} +.paellaEditorBottomBar { + position: fixed; + right: 0px; + bottom: 0px; + left: 0px; + background-color: #4f4f4f; + box-shadow: 1px 1px 12px black; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.paellaEditorRightBarContent { + padding-left: 10px; + padding-right: 10px; + font-size: 11px; +} +.editorTimelineContainer { + margin-top: -21px; + position: relative; + overflow: auto; +} +.editorTimelineContent { + background-image: url(../images/light_background.png); + top: 0px; + box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.7); + position: relative; +} +.editorTimeLineTimeMarks { + position: absolute; + top: 0px; + height: 20px; + left: 0px; + right: 0px; + z-index: 1; + padding-left: 3px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorTimeLineMark { + float: left; + /* background-color: rgb(61,62,62);*/ + font-size: 9px; + height: 20px; + line-height: 18px; +} +.editorTimeLineMark.odd { + /* background-color: rgb(73,82,82);*/ +} +.editorTrackListItem.master { + position: absolute; + left: 0px; + right: 0px; + top: 38px; + height: 51px; +} +.editorTrackListItem.secondary { + height: 23px; + position: relative; +} +.editorTrackListItem.secondary.track0 { + margin-top: 90px; +} +.editorTrackItem { + position: absolute; + height: 97%; + border-radius: 5px; + border: 1px solid #6f6f6f; + overflow: hidden; +} +.editorTrackItemResizer { + width: 2px; + top: 20%; + bottom: 23%; + position: absolute; + overflow: hidden; + cursor: pointer; +} +.editorTrackItemResizer.left { + border-right: 8px double #7c7c7c; + left: 0px; +} +.editorTrackItemResizer.right { + border-left: 8px double #7c7c7c; + right: 0px; +} +.editorTrackItemMoveArea { + position: absolute; + left: 18px; + right: 18px; + top: 0px; + bottom: 0px; + cursor: pointer; +} +.editorTrackItemLabel { + margin-left: 20px; + margin-right: 20px; + height: 100%; + line-height: 48px; + cursor: pointer; +} +.editorTrackItemLock { + top: 5%; + position: absolute; +} +.editorTrackItemLabel.secondary { + line-height: 23px; +} +.editorTimeLineMark.last { + overflow: hidden; +} +.editorTimeLineTracks { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + padding-bottom: 20px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorBottomToolbarContainer { + background-color: #52595F; + height: 27px; +} +.zoomDropup { + margin-top: 2px; + float: right; + margin-right: 10px; +} +.navbar.tiny { + font-size: 11px; +} +.navbar-inner.tiny { + min-height: 21px; +} +.navbar .nav > li { + line-height: 11px; +} +.navbar .nav > li > a.rightBarPlugin { + padding: 5px 5px 5px; +} +.editorToolbar_selectedToolUtils { + margin-left: 10px; +} +.editorToolbarPlaybackControls { + position: absolute; + left: 45%; +} +.editorTimelineCursor { + position: absolute; + height: 100%; + width: 1px; + border-left: 1px dashed rgba(238, 0, 12, 0.92); + left: 352px; + z-index: 0; + top: 0px; + line-height: 54px; + font-size: 11px; + padding-left: 3px; +} +.editorTimelineCursor.currentTime { + border-left: 1px solid white; +} +.editorRightBarTabIcon { + /* display: inline-block; to add icon, set this property and the background image in the plugin css file, using .editorRightBarTabIcon.pluginName as class name */ + width: 15px; + height: 14px; + margin-bottom: -3px; + margin-right: 2px; +} +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?u9ewd1'); + src: url('fonts/icomoon.eot?u9ewd1#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?u9ewd1') format('truetype'), url('fonts/icomoon.woff?u9ewd1') format('woff'), url('fonts/icomoon.svg?u9ewd1#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-mini-camera:before { + content: "\e900"; +} +.icon-captions:before { + content: "\e901"; +} +.icon-paintbrush:before { + content: "\e902"; +} +.icon-airplay:before { + content: "\e903"; +} +.icon-arrow-down:before { + content: "\e904"; +} +.icon-arrow-left:before { + content: "\e905"; +} +.icon-arrow-right:before { + content: "\e906"; +} +.icon-arrow-up:before { + content: "\e907"; +} +.icon-back-10-s:before { + content: "\e908"; +} +.icon-back-30-s:before { + content: "\e909"; +} +.icon-comments-disabled:before { + content: "\e90a"; +} +.icon-comments:before { + content: "\e90b"; +} +.icon-edit:before { + content: "\e90c"; +} +.icon-facebook:before { + content: "\e90d"; +} +.icon-folder:before { + content: "\e90e"; +} +.icon-forward-30-s:before { + content: "\e90f"; +} +.icon-frames:before { + content: "\e910"; +} +.icon-fullscreen:before { + content: "\e911"; +} +.icon-headphone:before { + content: "\e912"; +} +.icon-help:before { + content: "\e913"; +} +.icon-info:before { + content: "\e914"; +} +.icon-link:before { + content: "\e915"; +} +.icon-mini-frames:before { + content: "\e916"; +} +.icon-mini-videocamera:before { + content: "\e917"; +} +.icon-mini-window:before { + content: "\e918"; +} +.icon-mini-zoom-in:before { + content: "\e919"; +} +.icon-mini-zoom-out:before { + content: "\e91a"; +} +.icon-pause:before { + content: "\e91b"; +} +.icon-photo:before { + content: "\e91c"; +} +.icon-pip:before { + content: "\e91d"; +} +.icon-play:before { + content: "\e91e"; +} +.icon-player-mode-1:before { + content: "\e91f"; +} +.icon-player-mode-2:before { + content: "\e920"; +} +.icon-player-mode-3:before { + content: "\e921"; +} +.icon-present-mode-1:before { + content: "\e922"; +} +.icon-present-mode-2:before { + content: "\e923"; +} +.icon-present-mode-3:before { + content: "\e924"; +} +.icon-present-mode-4:before { + content: "\e925"; +} +.icon-present-mode-5:before { + content: "\e926"; +} +.icon-present-mode-6:before { + content: "\e927"; +} +.icon-present-mode-7:before { + content: "\e928"; +} +.icon-present-mode-8:before { + content: "\e929"; +} +.icon-present-mode-9:before { + content: "\e92a"; +} +.icon-present-mode-10:before { + content: "\e92b"; +} +.icon-presentation-mode:before { + content: "\e92c"; +} +.icon-screen:before { + content: "\e92d"; +} +.icon-slideshow:before { + content: "\e92e"; +} +.icon-social:before { + content: "\e92f"; +} +.icon-star-empty:before { + content: "\e930"; +} +.icon-star:before { + content: "\e931"; +} +.icon-stats:before { + content: "\e932"; +} +.icon-twitter:before { + content: "\e933"; +} +.icon-user:before { + content: "\e934"; +} +.icon-volume-high:before { + content: "\e935"; +} +.icon-volume-low:before { + content: "\e936"; +} +.icon-volume-mid:before { + content: "\e937"; +} +.icon-volume-mute:before { + content: "\e938"; +} +.icon-windowed:before { + content: "\e939"; +} +.icon-zoom-in:before { + content: "\e93a"; +} +.icon-zoom:before { + content: "\e93b"; +} +.icon-home:before { + content: "\e93c"; +} +.icon-home2:before { + content: "\e93d"; +} +.icon-home3:before { + content: "\e93e"; +} +.icon-office:before { + content: "\e93f"; +} +.icon-newspaper:before { + content: "\e940"; +} +.icon-pencil:before { + content: "\e941"; +} +.icon-pencil2:before { + content: "\e942"; +} +.icon-quill:before { + content: "\e943"; +} +.icon-pen:before { + content: "\e944"; +} +.icon-blog:before { + content: "\e945"; +} +.icon-eyedropper:before { + content: "\e946"; +} +.icon-droplet:before { + content: "\e947"; +} +.icon-paint-format:before { + content: "\e948"; +} +.icon-image:before { + content: "\e949"; +} +.icon-images:before { + content: "\e94a"; +} +.icon-camera:before { + content: "\e94b"; +} +.icon-headphones:before { + content: "\e94c"; +} +.icon-music:before { + content: "\e94d"; +} +.icon-play2:before { + content: "\e94e"; +} +.icon-film:before { + content: "\e94f"; +} +.icon-video-camera:before { + content: "\e950"; +} +.icon-dice:before { + content: "\e951"; +} +.icon-pacman:before { + content: "\e952"; +} +.icon-spades:before { + content: "\e953"; +} +.icon-clubs:before { + content: "\e954"; +} +.icon-diamonds:before { + content: "\e955"; +} +.icon-bullhorn:before { + content: "\e956"; +} +.icon-connection:before { + content: "\e957"; +} +.icon-podcast:before { + content: "\e958"; +} +.icon-feed:before { + content: "\e959"; +} +.icon-mic:before { + content: "\e95a"; +} +.icon-book:before { + content: "\e95b"; +} +.icon-books:before { + content: "\e95c"; +} +.icon-library:before { + content: "\e95d"; +} +.icon-file-text:before { + content: "\e95e"; +} +.icon-profile:before { + content: "\e95f"; +} +.icon-file-empty:before { + content: "\e960"; +} +.icon-files-empty:before { + content: "\e961"; +} +.icon-file-text2:before { + content: "\e962"; +} +.icon-file-picture:before { + content: "\e963"; +} +.icon-file-music:before { + content: "\e964"; +} +.icon-file-play:before { + content: "\e965"; +} +.icon-file-video:before { + content: "\e966"; +} +.icon-file-zip:before { + content: "\e967"; +} +.icon-copy:before { + content: "\e968"; +} +.icon-paste:before { + content: "\e969"; +} +.icon-stack:before { + content: "\e96a"; +} +.icon-folder2:before { + content: "\e96b"; +} +.icon-folder-open:before { + content: "\e96c"; +} +.icon-folder-plus:before { + content: "\e96d"; +} +.icon-folder-minus:before { + content: "\e96e"; +} +.icon-folder-download:before { + content: "\e96f"; +} +.icon-folder-upload:before { + content: "\e970"; +} +.icon-price-tag:before { + content: "\e971"; +} +.icon-price-tags:before { + content: "\e972"; +} +.icon-barcode:before { + content: "\e973"; +} +.icon-qrcode:before { + content: "\e974"; +} +.icon-ticket:before { + content: "\e975"; +} +.icon-cart:before { + content: "\e976"; +} +.icon-coin-dollar:before { + content: "\e977"; +} +.icon-coin-euro:before { + content: "\e978"; +} +.icon-coin-pound:before { + content: "\e979"; +} +.icon-coin-yen:before { + content: "\e97a"; +} +.icon-credit-card:before { + content: "\e97b"; +} +.icon-calculator:before { + content: "\e97c"; +} +.icon-lifebuoy:before { + content: "\e97d"; +} +.icon-phone:before { + content: "\e97e"; +} +.icon-phone-hang-up:before { + content: "\e97f"; +} +.icon-address-book:before { + content: "\e980"; +} +.icon-envelop:before { + content: "\e981"; +} +.icon-pushpin:before { + content: "\e982"; +} +.icon-location:before { + content: "\e983"; +} +.icon-location2:before { + content: "\e984"; +} +.icon-compass:before { + content: "\e985"; +} +.icon-compass2:before { + content: "\e986"; +} +.icon-map:before { + content: "\e987"; +} +.icon-map2:before { + content: "\e988"; +} +.icon-history:before { + content: "\e989"; +} +.icon-clock:before { + content: "\e98a"; +} +.icon-clock2:before { + content: "\e98b"; +} +.icon-alarm:before { + content: "\e98c"; +} +.icon-bell:before { + content: "\e98d"; +} +.icon-stopwatch:before { + content: "\e98e"; +} +.icon-calendar:before { + content: "\e98f"; +} +.icon-printer:before { + content: "\e990"; +} +.icon-keyboard:before { + content: "\e991"; +} +.icon-display:before { + content: "\e992"; +} +.icon-laptop:before { + content: "\e993"; +} +.icon-mobile:before { + content: "\e994"; +} +.icon-mobile2:before { + content: "\e995"; +} +.icon-tablet:before { + content: "\e996"; +} +.icon-tv:before { + content: "\e997"; +} +.icon-drawer:before { + content: "\e998"; +} +.icon-drawer2:before { + content: "\e999"; +} +.icon-box-add:before { + content: "\e99a"; +} +.icon-box-remove:before { + content: "\e99b"; +} +.icon-download:before { + content: "\e99c"; +} +.icon-upload:before { + content: "\e99d"; +} +.icon-floppy-disk:before { + content: "\e99e"; +} +.icon-drive:before { + content: "\e99f"; +} +.icon-database:before { + content: "\e9a0"; +} +.icon-undo:before { + content: "\e9a1"; +} +.icon-redo:before { + content: "\e9a2"; +} +.icon-undo2:before { + content: "\e9a3"; +} +.icon-redo2:before { + content: "\e9a4"; +} +.icon-forward:before { + content: "\e9a5"; +} +.icon-reply:before { + content: "\e9a6"; +} +.icon-bubble:before { + content: "\e9a7"; +} +.icon-bubbles:before { + content: "\e9a8"; +} +.icon-bubbles2:before { + content: "\e9a9"; +} +.icon-bubble2:before { + content: "\e9aa"; +} +.icon-bubbles3:before { + content: "\e9ab"; +} +.icon-bubbles4:before { + content: "\e9ac"; +} +.icon-user2:before { + content: "\e9ad"; +} +.icon-users:before { + content: "\e9ae"; +} +.icon-user-plus:before { + content: "\e9af"; +} +.icon-user-minus:before { + content: "\e9b0"; +} +.icon-user-check:before { + content: "\e9b1"; +} +.icon-user-tie:before { + content: "\e9b2"; +} +.icon-quotes-left:before { + content: "\e9b3"; +} +.icon-quotes-right:before { + content: "\e9b4"; +} +.icon-hour-glass:before { + content: "\e9b5"; +} +.icon-spinner:before { + content: "\e9b6"; +} +.icon-spinner2:before { + content: "\e9b7"; +} +.icon-spinner3:before { + content: "\e9b8"; +} +.icon-spinner4:before { + content: "\e9b9"; +} +.icon-spinner5:before { + content: "\e9ba"; +} +.icon-spinner6:before { + content: "\e9bb"; +} +.icon-spinner7:before { + content: "\e9bc"; +} +.icon-spinner8:before { + content: "\e9bd"; +} +.icon-spinner9:before { + content: "\e9be"; +} +.icon-spinner10:before { + content: "\e9bf"; +} +.icon-spinner11:before { + content: "\e9c0"; +} +.icon-binoculars:before { + content: "\e9c1"; +} +.icon-search:before { + content: "\e9c2"; +} +.icon-zoom-in2:before { + content: "\e9c3"; +} +.icon-zoom-out:before { + content: "\e9c4"; +} +.icon-enlarge:before { + content: "\e9c5"; +} +.icon-shrink:before { + content: "\e9c6"; +} +.icon-enlarge2:before { + content: "\e9c7"; +} +.icon-shrink2:before { + content: "\e9c8"; +} +.icon-key:before { + content: "\e9c9"; +} +.icon-key2:before { + content: "\e9ca"; +} +.icon-lock:before { + content: "\e9cb"; +} +.icon-unlocked:before { + content: "\e9cc"; +} +.icon-wrench:before { + content: "\e9cd"; +} +.icon-equalizer:before { + content: "\e9ce"; +} +.icon-equalizer2:before { + content: "\e9cf"; +} +.icon-cog:before { + content: "\e9d0"; +} +.icon-cogs:before { + content: "\e9d1"; +} +.icon-hammer:before { + content: "\e9d2"; +} +.icon-magic-wand:before { + content: "\e9d3"; +} +.icon-aid-kit:before { + content: "\e9d4"; +} +.icon-bug:before { + content: "\e9d5"; +} +.icon-pie-chart:before { + content: "\e9d6"; +} +.icon-stats-dots:before { + content: "\e9d7"; +} +.icon-stats-bars:before { + content: "\e9d8"; +} +.icon-stats-bars2:before { + content: "\e9d9"; +} +.icon-trophy:before { + content: "\e9da"; +} +.icon-gift:before { + content: "\e9db"; +} +.icon-glass:before { + content: "\e9dc"; +} +.icon-glass2:before { + content: "\e9dd"; +} +.icon-mug:before { + content: "\e9de"; +} +.icon-spoon-knife:before { + content: "\e9df"; +} +.icon-leaf:before { + content: "\e9e0"; +} +.icon-rocket:before { + content: "\e9e1"; +} +.icon-meter:before { + content: "\e9e2"; +} +.icon-meter2:before { + content: "\e9e3"; +} +.icon-hammer2:before { + content: "\e9e4"; +} +.icon-fire:before { + content: "\e9e5"; +} +.icon-lab:before { + content: "\e9e6"; +} +.icon-magnet:before { + content: "\e9e7"; +} +.icon-bin:before { + content: "\e9e8"; +} +.icon-bin2:before { + content: "\e9e9"; +} +.icon-briefcase:before { + content: "\e9ea"; +} +.icon-airplane:before { + content: "\e9eb"; +} +.icon-truck:before { + content: "\e9ec"; +} +.icon-road:before { + content: "\e9ed"; +} +.icon-accessibility:before { + content: "\e9ee"; +} +.icon-target:before { + content: "\e9ef"; +} +.icon-shield:before { + content: "\e9f0"; +} +.icon-power:before { + content: "\e9f1"; +} +.icon-switch:before { + content: "\e9f2"; +} +.icon-power-cord:before { + content: "\e9f3"; +} +.icon-clipboard:before { + content: "\e9f4"; +} +.icon-list-numbered:before { + content: "\e9f5"; +} +.icon-list:before { + content: "\e9f6"; +} +.icon-list2:before { + content: "\e9f7"; +} +.icon-tree:before { + content: "\e9f8"; +} +.icon-menu:before { + content: "\e9f9"; +} +.icon-menu2:before { + content: "\e9fa"; +} +.icon-menu3:before { + content: "\e9fb"; +} +.icon-menu4:before { + content: "\e9fc"; +} +.icon-cloud:before { + content: "\e9fd"; +} +.icon-cloud-download:before { + content: "\e9fe"; +} +.icon-cloud-upload:before { + content: "\e9ff"; +} +.icon-cloud-check:before { + content: "\ea00"; +} +.icon-download2:before { + content: "\ea01"; +} +.icon-upload2:before { + content: "\ea02"; +} +.icon-download3:before { + content: "\ea03"; +} +.icon-upload3:before { + content: "\ea04"; +} +.icon-sphere:before { + content: "\ea05"; +} +.icon-earth:before { + content: "\ea06"; +} +.icon-link2:before { + content: "\ea07"; +} +.icon-flag:before { + content: "\ea08"; +} +.icon-attachment:before { + content: "\ea09"; +} +.icon-eye:before { + content: "\ea0a"; +} +.icon-eye-plus:before { + content: "\ea0b"; +} +.icon-eye-minus:before { + content: "\ea0c"; +} +.icon-eye-blocked:before { + content: "\ea0d"; +} +.icon-bookmark:before { + content: "\ea0e"; +} +.icon-bookmarks:before { + content: "\ea0f"; +} +.icon-sun:before { + content: "\ea10"; +} +.icon-contrast:before { + content: "\ea11"; +} +.icon-brightness-contrast:before { + content: "\ea12"; +} +.icon-star-empty2:before { + content: "\ea13"; +} +.icon-star-half:before { + content: "\ea14"; +} +.icon-star-full:before { + content: "\ea15"; +} +.icon-heart:before { + content: "\ea16"; +} +.icon-heart-broken:before { + content: "\ea17"; +} +.icon-man:before { + content: "\ea18"; +} +.icon-woman:before { + content: "\ea19"; +} +.icon-man-woman:before { + content: "\ea1a"; +} +.icon-happy:before { + content: "\ea1b"; +} +.icon-happy2:before { + content: "\ea1c"; +} +.icon-smile:before { + content: "\ea1d"; +} +.icon-smile2:before { + content: "\ea1e"; +} +.icon-tongue:before { + content: "\ea1f"; +} +.icon-tongue2:before { + content: "\ea20"; +} +.icon-sad:before { + content: "\ea21"; +} +.icon-sad2:before { + content: "\ea22"; +} +.icon-wink:before { + content: "\ea23"; +} +.icon-wink2:before { + content: "\ea24"; +} +.icon-grin:before { + content: "\ea25"; +} +.icon-grin2:before { + content: "\ea26"; +} +.icon-cool:before { + content: "\ea27"; +} +.icon-cool2:before { + content: "\ea28"; +} +.icon-angry:before { + content: "\ea29"; +} +.icon-angry2:before { + content: "\ea2a"; +} +.icon-evil:before { + content: "\ea2b"; +} +.icon-evil2:before { + content: "\ea2c"; +} +.icon-shocked:before { + content: "\ea2d"; +} +.icon-shocked2:before { + content: "\ea2e"; +} +.icon-baffled:before { + content: "\ea2f"; +} +.icon-baffled2:before { + content: "\ea30"; +} +.icon-confused:before { + content: "\ea31"; +} +.icon-confused2:before { + content: "\ea32"; +} +.icon-neutral:before { + content: "\ea33"; +} +.icon-neutral2:before { + content: "\ea34"; +} +.icon-hipster:before { + content: "\ea35"; +} +.icon-hipster2:before { + content: "\ea36"; +} +.icon-wondering:before { + content: "\ea37"; +} +.icon-wondering2:before { + content: "\ea38"; +} +.icon-sleepy:before { + content: "\ea39"; +} +.icon-sleepy2:before { + content: "\ea3a"; +} +.icon-frustrated:before { + content: "\ea3b"; +} +.icon-frustrated2:before { + content: "\ea3c"; +} +.icon-crying:before { + content: "\ea3d"; +} +.icon-crying2:before { + content: "\ea3e"; +} +.icon-point-up:before { + content: "\ea3f"; +} +.icon-point-right:before { + content: "\ea40"; +} +.icon-point-down:before { + content: "\ea41"; +} +.icon-point-left:before { + content: "\ea42"; +} +.icon-warning:before { + content: "\ea43"; +} +.icon-notification:before { + content: "\ea44"; +} +.icon-question:before { + content: "\ea45"; +} +.icon-plus:before { + content: "\ea46"; +} +.icon-minus:before { + content: "\ea47"; +} +.icon-info2:before { + content: "\ea48"; +} +.icon-cancel-circle:before { + content: "\ea49"; +} +.icon-blocked:before { + content: "\ea4a"; +} +.icon-cross:before { + content: "\ea4b"; +} +.icon-checkmark:before { + content: "\ea4c"; +} +.icon-checkmark2:before { + content: "\ea4d"; +} +.icon-spell-check:before { + content: "\ea4e"; +} +.icon-enter:before { + content: "\ea4f"; +} +.icon-exit:before { + content: "\ea50"; +} +.icon-play22:before { + content: "\ea51"; +} +.icon-pause2:before { + content: "\ea52"; +} +.icon-stop:before { + content: "\ea53"; +} +.icon-previous:before { + content: "\ea54"; +} +.icon-next:before { + content: "\ea55"; +} +.icon-backward:before { + content: "\ea56"; +} +.icon-forward2:before { + content: "\ea57"; +} +.icon-play3:before { + content: "\ea58"; +} +.icon-pause22:before { + content: "\ea59"; +} +.icon-stop2:before { + content: "\ea5a"; +} +.icon-backward2:before { + content: "\ea5b"; +} +.icon-forward3:before { + content: "\ea5c"; +} +.icon-first:before { + content: "\ea5d"; +} +.icon-last:before { + content: "\ea5e"; +} +.icon-previous2:before { + content: "\ea5f"; +} +.icon-next2:before { + content: "\ea60"; +} +.icon-eject:before { + content: "\ea61"; +} +.icon-volume-high2:before { + content: "\ea62"; +} +.icon-volume-medium:before { + content: "\ea63"; +} +.icon-volume-low2:before { + content: "\ea64"; +} +.icon-volume-mute2:before { + content: "\ea65"; +} +.icon-volume-mute22:before { + content: "\ea66"; +} +.icon-volume-increase:before { + content: "\ea67"; +} +.icon-volume-decrease:before { + content: "\ea68"; +} +.icon-loop:before { + content: "\ea69"; +} +.icon-loop2:before { + content: "\ea6a"; +} +.icon-infinite:before { + content: "\ea6b"; +} +.icon-shuffle:before { + content: "\ea6c"; +} +.icon-arrow-up-left:before { + content: "\ea6d"; +} +.icon-arrow-up2:before { + content: "\ea6e"; +} +.icon-arrow-up-right:before { + content: "\ea6f"; +} +.icon-arrow-right2:before { + content: "\ea70"; +} +.icon-arrow-down-right:before { + content: "\ea71"; +} +.icon-arrow-down2:before { + content: "\ea72"; +} +.icon-arrow-down-left:before { + content: "\ea73"; +} +.icon-arrow-left2:before { + content: "\ea74"; +} +.icon-arrow-up-left2:before { + content: "\ea75"; +} +.icon-arrow-up22:before { + content: "\ea76"; +} +.icon-arrow-up-right2:before { + content: "\ea77"; +} +.icon-arrow-right22:before { + content: "\ea78"; +} +.icon-arrow-down-right2:before { + content: "\ea79"; +} +.icon-arrow-down22:before { + content: "\ea7a"; +} +.icon-arrow-down-left2:before { + content: "\ea7b"; +} +.icon-arrow-left22:before { + content: "\ea7c"; +} +.icon-circle-up:before { + content: "\ea7d"; +} +.icon-circle-right:before { + content: "\ea7e"; +} +.icon-circle-down:before { + content: "\ea7f"; +} +.icon-circle-left:before { + content: "\ea80"; +} +.icon-tab:before { + content: "\ea81"; +} +.icon-move-up:before { + content: "\ea82"; +} +.icon-move-down:before { + content: "\ea83"; +} +.icon-sort-alpha-asc:before { + content: "\ea84"; +} +.icon-sort-alpha-desc:before { + content: "\ea85"; +} +.icon-sort-numeric-asc:before { + content: "\ea86"; +} +.icon-sort-numberic-desc:before { + content: "\ea87"; +} +.icon-sort-amount-asc:before { + content: "\ea88"; +} +.icon-sort-amount-desc:before { + content: "\ea89"; +} +.icon-command:before { + content: "\ea8a"; +} +.icon-shift:before { + content: "\ea8b"; +} +.icon-ctrl:before { + content: "\ea8c"; +} +.icon-opt:before { + content: "\ea8d"; +} +.icon-checkbox-checked:before { + content: "\ea8e"; +} +.icon-checkbox-unchecked:before { + content: "\ea8f"; +} +.icon-radio-checked:before { + content: "\ea90"; +} +.icon-radio-checked2:before { + content: "\ea91"; +} +.icon-radio-unchecked:before { + content: "\ea92"; +} +.icon-crop:before { + content: "\ea93"; +} +.icon-make-group:before { + content: "\ea94"; +} +.icon-ungroup:before { + content: "\ea95"; +} +.icon-scissors:before { + content: "\ea96"; +} +.icon-filter:before { + content: "\ea97"; +} +.icon-font:before { + content: "\ea98"; +} +.icon-ligature:before { + content: "\ea99"; +} +.icon-ligature2:before { + content: "\ea9a"; +} +.icon-text-height:before { + content: "\ea9b"; +} +.icon-text-width:before { + content: "\ea9c"; +} +.icon-font-size:before { + content: "\ea9d"; +} +.icon-bold:before { + content: "\ea9e"; +} +.icon-underline:before { + content: "\ea9f"; +} +.icon-italic:before { + content: "\eaa0"; +} +.icon-strikethrough:before { + content: "\eaa1"; +} +.icon-omega:before { + content: "\eaa2"; +} +.icon-sigma:before { + content: "\eaa3"; +} +.icon-page-break:before { + content: "\eaa4"; +} +.icon-superscript:before { + content: "\eaa5"; +} +.icon-subscript:before { + content: "\eaa6"; +} +.icon-superscript2:before { + content: "\eaa7"; +} +.icon-subscript2:before { + content: "\eaa8"; +} +.icon-text-color:before { + content: "\eaa9"; +} +.icon-pagebreak:before { + content: "\eaaa"; +} +.icon-clear-formatting:before { + content: "\eaab"; +} +.icon-table:before { + content: "\eaac"; +} +.icon-table2:before { + content: "\eaad"; +} +.icon-insert-template:before { + content: "\eaae"; +} +.icon-pilcrow:before { + content: "\eaaf"; +} +.icon-ltr:before { + content: "\eab0"; +} +.icon-rtl:before { + content: "\eab1"; +} +.icon-section:before { + content: "\eab2"; +} +.icon-paragraph-left:before { + content: "\eab3"; +} +.icon-paragraph-center:before { + content: "\eab4"; +} +.icon-paragraph-right:before { + content: "\eab5"; +} +.icon-paragraph-justify:before { + content: "\eab6"; +} +.icon-indent-increase:before { + content: "\eab7"; +} +.icon-indent-decrease:before { + content: "\eab8"; +} +.icon-share:before { + content: "\eab9"; +} +.icon-new-tab:before { + content: "\eaba"; +} +.icon-embed:before { + content: "\eabb"; +} +.icon-embed2:before { + content: "\eabc"; +} +.icon-terminal:before { + content: "\eabd"; +} +.icon-share2:before { + content: "\eabe"; +} +.icon-mail:before { + content: "\eabf"; +} +.icon-mail2:before { + content: "\eac0"; +} +.icon-mail3:before { + content: "\eac1"; +} +.icon-mail4:before { + content: "\eac2"; +} +.icon-amazon:before { + content: "\eac3"; +} +.icon-google:before { + content: "\eac4"; +} +.icon-google2:before { + content: "\eac5"; +} +.icon-google3:before { + content: "\eac6"; +} +.icon-google-plus:before { + content: "\eac7"; +} +.icon-google-plus2:before { + content: "\eac8"; +} +.icon-google-plus3:before { + content: "\eac9"; +} +.icon-hangouts:before { + content: "\eaca"; +} +.icon-google-drive:before { + content: "\eacb"; +} +.icon-facebook2:before { + content: "\eacc"; +} +.icon-facebook22:before { + content: "\eacd"; +} +.icon-instagram:before { + content: "\eace"; +} +.icon-whatsapp:before { + content: "\eacf"; +} +.icon-spotify:before { + content: "\ead0"; +} +.icon-telegram:before { + content: "\ead1"; +} +.icon-twitter2:before { + content: "\ead2"; +} +.icon-vine:before { + content: "\ead3"; +} +.icon-vk:before { + content: "\ead4"; +} +.icon-renren:before { + content: "\ead5"; +} +.icon-sina-weibo:before { + content: "\ead6"; +} +.icon-rss:before { + content: "\ead7"; +} +.icon-rss2:before { + content: "\ead8"; +} +.icon-youtube:before { + content: "\ead9"; +} +.icon-youtube2:before { + content: "\eada"; +} +.icon-twitch:before { + content: "\eadb"; +} +.icon-vimeo:before { + content: "\eadc"; +} +.icon-vimeo2:before { + content: "\eadd"; +} +.icon-lanyrd:before { + content: "\eade"; +} +.icon-flickr:before { + content: "\eadf"; +} +.icon-flickr2:before { + content: "\eae0"; +} +.icon-flickr3:before { + content: "\eae1"; +} +.icon-flickr4:before { + content: "\eae2"; +} +.icon-dribbble:before { + content: "\eae3"; +} +.icon-behance:before { + content: "\eae4"; +} +.icon-behance2:before { + content: "\eae5"; +} +.icon-deviantart:before { + content: "\eae6"; +} +.icon-500px:before { + content: "\eae7"; +} +.icon-steam:before { + content: "\eae8"; +} +.icon-steam2:before { + content: "\eae9"; +} +.icon-dropbox:before { + content: "\eaea"; +} +.icon-onedrive:before { + content: "\eaeb"; +} +.icon-github:before { + content: "\eaec"; +} +.icon-npm:before { + content: "\eaed"; +} +.icon-basecamp:before { + content: "\eaee"; +} +.icon-trello:before { + content: "\eaef"; +} +.icon-wordpress:before { + content: "\eaf0"; +} +.icon-joomla:before { + content: "\eaf1"; +} +.icon-ello:before { + content: "\eaf2"; +} +.icon-blogger:before { + content: "\eaf3"; +} +.icon-blogger2:before { + content: "\eaf4"; +} +.icon-tumblr:before { + content: "\eaf5"; +} +.icon-tumblr2:before { + content: "\eaf6"; +} +.icon-yahoo:before { + content: "\eaf7"; +} +.icon-yahoo2:before { + content: "\eaf8"; +} +.icon-tux:before { + content: "\eaf9"; +} +.icon-appleinc:before { + content: "\eafa"; +} +.icon-finder:before { + content: "\eafb"; +} +.icon-android:before { + content: "\eafc"; +} +.icon-windows:before { + content: "\eafd"; +} +.icon-windows8:before { + content: "\eafe"; +} +.icon-soundcloud:before { + content: "\eaff"; +} +.icon-soundcloud2:before { + content: "\eb00"; +} +.icon-skype:before { + content: "\eb01"; +} +.icon-reddit:before { + content: "\eb02"; +} +.icon-hackernews:before { + content: "\eb03"; +} +.icon-wikipedia:before { + content: "\eb04"; +} +.icon-linkedin:before { + content: "\eb05"; +} +.icon-linkedin2:before { + content: "\eb06"; +} +.icon-lastfm:before { + content: "\eb07"; +} +.icon-lastfm2:before { + content: "\eb08"; +} +.icon-delicious:before { + content: "\eb09"; +} +.icon-stumbleupon:before { + content: "\eb0a"; +} +.icon-stumbleupon2:before { + content: "\eb0b"; +} +.icon-stackoverflow:before { + content: "\eb0c"; +} +.icon-pinterest:before { + content: "\eb0d"; +} +.icon-pinterest2:before { + content: "\eb0e"; +} +.icon-xing:before { + content: "\eb0f"; +} +.icon-xing2:before { + content: "\eb10"; +} +.icon-flattr:before { + content: "\eb11"; +} +.icon-foursquare:before { + content: "\eb12"; +} +.icon-yelp:before { + content: "\eb13"; +} +.icon-paypal:before { + content: "\eb14"; +} +.icon-chrome:before { + content: "\eb15"; +} +.icon-firefox:before { + content: "\eb16"; +} +.icon-IE:before { + content: "\eb17"; +} +.icon-edge:before { + content: "\eb18"; +} +.icon-safari:before { + content: "\eb19"; +} +.icon-opera:before { + content: "\eb1a"; +} +.icon-file-pdf:before { + content: "\eb1b"; +} +.icon-file-openoffice:before { + content: "\eb1c"; +} +.icon-file-word:before { + content: "\eb1d"; +} +.icon-file-excel:before { + content: "\eb1e"; +} +.icon-libreoffice:before { + content: "\eb1f"; +} +.icon-html-five:before { + content: "\eb20"; +} +.icon-html-five2:before { + content: "\eb21"; +} +.icon-css3:before { + content: "\eb22"; +} +.icon-git:before { + content: "\eb23"; +} +.icon-codepen:before { + content: "\eb24"; +} +.icon-svg:before { + content: "\eb25"; +} +.icon-IcoMoon:before { + content: "\eb26"; +} +.buttonPlugin.flexSkip_Rewind_10 { + background-position: -205% 22%; +} +.buttonPlugin.flexSkip_Forward_30 { + background-position: -200% 22%; +} +.buttonPlugin.arrowSlideNavidator.nextButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.buttonPlugin.arrowSlideNavidator.prevButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.arrow-slide-navigator-container { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; +} +.buttonPlugin.audioTags { + text-align: center; + background-position: -900% -200%; + font-size: 0.8em; + line-height: 30px; + color: black; + text-transform: uppercase; +} +.videoAudioTrackItem { + padding: 10px; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; +} +.videoAudioTrackItem.selected { + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.videoAudioTrackItem:hover { + background-color: #cc0000; +} +.blackBoardDiv { + position: absolute; + /* 16:9 */ + width: 816px; + height: 459px; + top: 135px; + left: 450px; + background-size: 100%; +} +.lensClass { + background-color: rgba(255, 236, 195, 0.3); + position: absolute; + border: 1px dotted white; +} +.lensContainer img { + width: 100% !important; +} +#overlayContainer div.lensContainer { + pointer-events: all; +} +.textBreak { + background-color: rgba(128, 128, 128, 0.7); + text-align: center; + color: white; + line-height: 17px; + font-size: 18px; + padding-top: 10px; + padding-bottom: 10px; + border-radius: 12px; +} +.buttonPlugin.captionsPluginButton { + background-position: 0% -100%; +} +.captionsPluginContainer { + width: 400px; + overflow: hidden; +} +.captionsBar input { + color: black; + background-color: rgba(242, 242, 242, 0.78); + border-color: #fa8533; + width: 49%; + margin-bottom: 0px; + margin-left: 1px; + float: left; +} +.captionsBar select { + width: 39%; + display: inline; + background-color: #fa8533; + border: 1px solid #ccc; + color: white; + margin-bottom: 0px; + height: 31px; +} +.captionsBar button { + float: right; + width: 7%; + min-height: 30px; + min-width: 30px; + margin-right: 2px; + background: url(../images/paella_icons_dark.png); + background-position: -400% -100%; + background-size: 2000% 1000%; + position: static; +} +.captionsBar button:hover { + background-color: #fa8533; +} +.bodyInnerContainer { + margin-bottom: 5px; + display: block; + margin-left: 3px; + height: auto; +} +.captionsBar input:hover { + border-color: #faa166; +} +.captionsBar input:focus { + border-color: #fa8533; +} +.captionsBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.captionsBar input:hover { + border-color: #faa166; +} +.captionsBar input:focus { + border-color: #faa166; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #fa8533; +} +/* CSS OVERLAY */ +.CaptionsOnScreen { + position: absolute; + width: 100%; + height: 100%; + text-align: center; + top: 0; + left: 0; + z-index: 99; +} +.CaptionsOnScreenInner { + background-color: rgba(0, 0, 0, 0.6); + position: relative; + text-align: center; + color: white; + font-size: 17px; + width: 70%; + min-height: 20px; + margin-left: auto; + margin-right: auto; + padding: 8px; + border-radius: 12px; +} +.Highlight { + color: #faa166; + font-weight: bold; +} +#CommentPlugin_Publish_entry_buttons_area { + margin-top: 5px; +} +.comments_entry { + margin: 5px; + margin-bottom: 20px; + width: 90%; +} +.comments_entry_username { + color: #438bc5; + font-size: 14px; + font-family: arial, sans-serif; + font-weight: bold; +} +.comments_entry_datepublish { + color: #999; + font-size: 11px; + font-family: arial, sans-serif; + margin-left: 20px; +} +.comments_entry_comment { + margin-top: 5px; + margin-bottom: 10px; +} +.comments_entry_silhouette { + float: left; + width: 6%; +} +.comments_entry_container { + vertical-align: top; + margin: 10px; + margin-left: 50px; + width: 100%; +} +.comments_entry_container textarea { + width: 98%; + height: 45px; + /*margin-top:10px;*/ + margin-bottom: 5px; + color: #52575c; +} +.CommentPlugin_Publish { + /*box-shadow: inset 0px 0px 10px 2px rgba(10, 10,10, 0.39); */ + border-radius: 7px; + padding: 10px; + padding-bottom: 1px; +} +textarea { + resize: vertical; +} +.reply_button { + color: #999; + font-size: 12px; + font-family: arial, sans-serif; + margin-bottom: 15px; + font-weight: bold; + cursor: pointer; +} +.reply_button:hover { + color: #438bc5; + text-decoration: underline; +} +.buttonPlugin.extendedTabAdapterPlugin { + background-position: -500% -200%; +} +.buttonPluginPopUp.extendedTabAdapterPlugin { + background-image: none; + background-color: rgba(0, 0, 0, 0); +} +.extendedTabAdapterPlugin > .tabsPluginContainer { + width: 600px; + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel { + display: inline; + background-color: rgba(242, 242, 242, 0.78); + line-height: 26px; + padding-left: 10px; + padding-right: 10px; + padding-top: 7px; + padding-bottom: 7px; + cursor: pointer; + cursor: hand; + font-family: sans-serif; + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.48); + border-radius: 6px 6px 0px 0px; + font-size: 12px; + margin-left: 1px; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.enabled { + cursor: default; + box-shadow: inset 0px 0px 12px rgba(0, 0, 0, 0.9); +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.disabled { + background-color: #e6e6e6; + color: black; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer { + height: 200px; + background-color: rgba(242, 242, 242, 0.78); + padding-left: 5px; + padding-top: 9px; + padding-right: 5px; + overflow-y: scroll; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #faa166; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.enabled { + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.disabled { + display: none; +} +.buttonPlugin.footPrints { + background-position: -700% 0%; +} +.footPrintsContainer { + height: 20px; + width: 100%; + overflow: hidden; + display: block; +} +.footPrintsCanvas { + width: 100%; + height: 100%; + overflow: hidden; + display: inline-block; +} +.frameControlContainer { + height: 87px; + width: 90%; + overflow: hidden; + display: inline-block; + margin-left: 5%; +} +.frameControl.navButton { + width: 40px; + height: 40px; + display: block; + cursor: pointer; + background-image: url(../images/paella_icons_dark.png); + background-size: 2000% 1000%; + background-position: 100% 100%; + position: absolute; + top: 28px; +} +.frameControl.navButton.left { + background-position: -1600% -100%; + opacity: 0.5; +} +.frameControl.navButton.right { + right: 0px; + opacity: 0.5; + background-position: -1500% -100%; +} +.frameControl.navButton.left:hover { + opacity: 1; +} +.frameControl.navButton.right:hover { + opacity: 1; +} +.frameControlContent { + height: 100px; + overflow: hidden; + padding-top: 6px; +} +.frameControlItem { + width: 140px; + cursor: pointer; + margin-left: 3px; + margin-right: 3px; + float: left; + opacity: 0.8; +} +/*.frameControlItem:hover { + width:94px; + border: 3px dotted #23ff00; + opacity: 1; +}*/ +.frameControlItem.selected { + width: 134px; + border: 3px dotted #fa8533; + opacity: 1; +} +.frameControlItem.current { + width: 134px; + border: 3px solid #fa8533; + opacity: 1; +} +.frameControlImage { + width: 100%; +} +.frameCaption { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + text-align: center; + padding: 5px; + color: black; + text-shadow: 1px 1px 2px #ffffff; +} +.showFramesButton { + position: absolute; + display: block; + width: 40px; + height: 37px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +/* +.showFramesButton:hover { +} +*/ +.showFramesButton_active { + position: absolute; + display: block; + width: 40px; + height: 37px; + right: 0px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +.frameListContainer { + background-image: url(../../resources/images/playback_bkg.png); +} +.frameThumbnail { + /* + margin-top:8px; + margin-right:3px; + margin-bottom:8px; + margin-left:3px; +*/ + margin: 8px 3px 8px 3px; + height: 40px; +} +.frameThumbnail:hover { + margin: 0px; + border: 3px #fa8533 solid; + height: 50px; +} +.enabledFrameThumbnail { + border: 3px #fa8533 solid; + height: 50px; +} +.enabledFrameThumbnail:hover { + border: 3px #fa8533 solid; +} +.buttonPlugin.showFullScreenButton { + background-position: -900% 0%; +} +.buttonPlugin.showFullScreenButton.active { + background-position: -1000% 0%; +} +.buttonPlugin.helpButton { + background-position: -1300% 0%; +} +.buttonPlugin.right.liveIndicator { + width: 100px; + height: 40px; + background-image: url(live_video.png); + background-size: 100% 100%; + margin-top: 5px; + margin-right: 5px; +} +/*.showMultipleQualitiesPlugin { + background-image: url(advanced_button.png); + background-size: 300%; +} + +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image:none; +} + +.selectQuality { + padding: 10px; +}*/ +.buttonPlugin.showMultipleQualitiesPlugin { + text-align: center; + font-size: 0.8em; + line-height: 30px; + min-width: 36px; +} +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image: none; +} +.selectQuality { + padding: 10px; +} +.multipleQualityItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.multipleQualityItem:hover { + background-color: #faa166; +} +.multipleQualityItem.selected { + color: #fa8533; +} +.multipleQualityItem.selected:hover { + color: black; +} +.buttonPlugin.playButton { + background-position: -500% -100%; +} +.buttonPlugin.pauseButton { + background-position: -100% 0%; +} +.playButtonOnScreen { + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.playButtonOnScreenIcon { + display: block; + cursor: pointer; + width: 100%; +} +.playbackRateItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.playbackRateItem:hover { + background-color: #faa166; +} +.buttonPlugin.showPlaybackRateButton { + text-align: center; + line-height: 30px; + background-position: -600% -100%; + font-size: 1em; +} +.playbackRateItem.selected { + color: #fa8533; +} +.playbackRateItem.selected:hover { + color: black; +} +.buttonPlugin.showPlaybackRateButton { + min-width: 36px; +} +.buttonPlugin.rateButtonPlugin { + text-align: center; + background-position: -700% -200%; + font-size: 0.8em; + line-height: 40px; +} +.buttonPluginPopUp { + right: 0px; +} +.rateButtons { + /*padding: 10px;*/ + width: 250px; +} +.starButton { + display: inline-block; + width: 26px; + height: 26px; + font-size: 25px; +} +.rateButtonPlugin h4 { + margin-left: 10px; +} +.rateButtonPlugin h5 { + margin-left: 19px; +} +.rateButtons .starButton:first-of-type { + margin-left: 19px; +} +.buttonPlugin.searchButton { + background-size: 2000% 1000%; + background-position: -900% -100%; + display: block; +} +.buttonPluginPopUp.searchButton { + position: absolute; +} +.searchPluginContainer { + width: 400px; + overflow: hidden; +} +.searchBar input { + color: black; + background-color: rgba(242, 242, 242, 0.78); + border-color: #fa8533; + width: 96%; + margin-bottom: 0px; + margin-left: 1px; +} +.searchBar input:hover { + border-color: #faa166; +} +.searchBar input:focus { + border-color: #faa166; +} +.searchBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.sBodyInnerContainer { + display: block; + margin-left: 3px; + min-height: 70px; + border: 1px solid rgba(242, 242, 242, 0.78); +} +.hover { + background-color: #faa166; +} +.redScore { + background-color: rgba(255, 0, 0, 0.2); +} +.greenScore { + background-color: rgba(0, 255, 0, 0.2); +} +.sBodyText { + width: 100%; + display: block; + text-align: left; +} +.timeSpan { + color: #fa8533; + margin-right: 5px; +} +.TimePicContainer { + float: left; + width: 24%; + text-align: center; + margin-right: 5px; +} +.TimePicContainer img { + width: 100%; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #faa166; +} +svg path, +svg rect { + fill: #FF6700; +} +.loader { + float: left; + display: inline-block; + vertical-align: top; +} +.noResults { + margin: 5px; +} +.buttonPlugin.showSocialPluginButton { + background-position: -800% 0%; +} +.buttonPluginPopUp.showSocialPluginButton { + background-image: none; +} +.socialItemButton { + /*crea el popup*/ + width: 40px; + height: 40px; + cursor: pointer; + background-image: url(../images/paella_icons_dark.png); + background-size: 2000% 1000%; + background-position: 0px 0px; +} +.socialItemButton.selected { + /*background-color: rgba(90,90,90,0.8); + border: 3px solid #23ff00;*/ + background-color: rgba(90, 90, 90, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.socialItemButton:hover { + background-color: #faa166; +} +.socialItemButton.facebook { + background-position: -1600% 0%; +} +.socialItemButton.twitter { + background-position: -1400% 0%; +} +.socialItemButton.embed { + background-position: -1500% 0%; +} +.embedSizeButton { + display: inline-block; + background-color: #fa8533; + border: 1px solid #313135; + border-radius: 10px; + cursor: pointer; + margin-right: 5px; + vertical-align: middle; + font-size: 14px; + text-align: center; + color: white; +} +.embedSizeInput { + background-color: #ffffff; + width: 40px; + height: 20px; + color: #000000; + font-size: 12px; + margin: 0px; + padding: 0px; +} +.buttonPlugin.themeChooserPlugin { + background-position: -800% -100%; +} +.buttonPluginPopUp.themeChooserPlugin { + background-image: none; + min-width: 40px; + width: 120px; + text-align: right; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton { + cursor: pointer; + text-align: left; + text-transform: capitalize; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 3px; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton:hover { + background-color: #faa166; +} +.translecturesCaptionsMessageBox { + margin-left: auto; + margin-right: auto; + text-align: center; + width: 700px; + height: 200px; + font-size: 14px; +} +.translecturesCaptionsMessageBox .title { + color: #635e5e; + font-size: 20px; + margin-bottom: 20px; +} +.translecturesCaptionsMessageBox .authMethodsContainer { + margin-left: auto; + margin-right: auto; + width: 500px; + height: 200px; + margin-top: 10px; + position: relative; +} +.translecturesCaptionsMessageBox .authMethodsContainer .authMethod { + display: inline-block; + width: 200px; + height: 200px; + /* + position:absolute; + left: 0px; +*/ +} +.buttonPlugin.left.videoData { + height: auto; + width: 100%; + margin-top: 5px; + margin-left: auto; + margin-right: auto; + background-color: rgba(0, 0, 0, 0.6); +} +.buttonPlugin.left.videoData h1 { + color: white; + padding: 0px 0px 0px 20px; + margin: 0px; +} +@media (max-width: 400px) { + .buttonPlugin.left.videoData h1 { + font-size: 16px; + line-height: 24px; + } +} +@media (min-width: 401px) and (max-width: 800px) { + .buttonPlugin.left.videoData h1 { + font-size: 20px; + line-height: 34px; + } +} +@media (min-width: 801px) { + .buttonPlugin.left.videoData h1 { + font-size: 30px; + line-height: 44px; + } +} +.buttonPlugin.right.videoZoom { + width: 200px; + background-image: none; + position: absolute; + right: 0px; + top: 0px; + text-align: right; +} +.buttonPlugin.right.videoZoom:hover { + background-color: transparent !important; +} +.buttonPlugin.right.videoZoom:active { + background-color: transparent !important; +} +.zoom-thumbnail { + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; +} +.zoom-container { + width: 160px; + height: 90px; + margin: 5px; + box-sizing: border-box; + box-shadow: 0px 0px 3px 0px black; + border-radius: 2px; + position: relative; + right: 0px; +} +.zoom-rect { + background-color: rgba(255, 255, 255, 0.5); + position: absolute; + top: 0px; + left: 0px; + border: 1px solid #0e0e0e; +} +/* The canvas "freeze frame" to overlay video element, instead of flex side aligned */ +.freezeFrame { + align-self: center; + position: absolute; +} +.videoZoomButton { + z-index: 1; + margin-left: 2px; + margin-right: 2px; + margin-top: 4px; + opacity: 0.2; + background: white; + font-size: 2em; + padding: 0px 4px 0px 4px; + box-shadow: 2px 2px 5px 0px black; + width: 30px; + height: 30px; + position: relative; + left: 40%; +} +.videoZoomButton:hover { + opacity: 0.999; +} +.videoZoomButton:active { + opacity: 0.999; +} +@media (max-width: 600px) { + .buttonPlugin.right.videoZoom { + width: 89px; + } + .zoom-container { + width: 80px; + height: 45px; + } +} +@media (max-width: 800px) and (min-width: 601px) { + .buttonPlugin.right.videoZoom { + width: 100px; + } + .zoom-container { + width: 120px; + height: 68px; + } +} +.videoZoomToolbarItem { + width: 30px; + height: 30px; + cursor: pointer; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + font-size: 20px; +} +.buttonPluginPopUp.showViewModeButton { + background-image: none; +} +.buttonPlugin.showViewModeButton { + background-position: -1100% 0%; +} +.viewModeItemButton { + background-image: url(../images/paella_icons_dark.png); + width: 80px; + height: 40px; + cursor: pointer; + background-size: 100% 100% !important; + background-position: 0px 0px ! important; + background-color: white; +} +.viewModeItemButton:hover { + background-color: #faa166; +} +.viewModeItemButton.selected { + /*background-position: 78px 0;*/ + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.viewModeItemButton.slide_professor { + background-position: 80px -80px; +} +.viewModeItemButton.professor_slide { + background-position: 80px -120px; +} +.viewModeItemButton.professor { + background-position: 80px -40px; +} +.viewModeItemButton.slide_over_professor { + background-position: 80px -200px; +} +.viewModeItemButton.slide_over_professor_right { + background-position: 80px -160px; +} +.viewModeItemButton.s_p_blackboard2 { + background-position: 80px -240px; +} +.viewModeItemButton.professor_over_slide { + background-position: 80px -320px; +} +.viewModeItemButton.professor_over_slide_right { + background-position: 80px -280px; +} +.viewModeItemButton.slide { + background-position: 80px 0px; +} +.viewModeItemButton.chroma { + background-position: 80px -360px; +} +.buttonPlugin.volumeRangeButton.mute { + background-position: -300% 0%; +} +.buttonPlugin.volumeRangeButton.max { + background-position: -600% 0%; +} +.buttonPlugin.volumeRangeButton.med { + background-position: -500% 0%; +} +.buttonPlugin.volumeRangeButton.min { + background-position: -400% 0%; +} +.buttonPluginPopUp.volumeRangeButton { + position: absolute; + /* right: -220px; */ +} +.videoRangeContainer { + width: 260px; +} +span.videoRangeButton.expandable-content { + padding-top: 12px; +} +/* Range control */ +.volumeRangeButton input[type=range] { + display: inline-block; + width: 80px; + height: 18px; +} +input[type=range] { + -webkit-appearance: none; + width: 100%; + margin: 6.2px 0; + background-color: transparent; +} +input[type=range]:focus { + outline: none; +} +input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-webkit-slider-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.4px; +} +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ffffff; +} +input[type=range]::-moz-range-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-moz-range-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; +} +input[type=range]::-ms-track { + width: 100%; + height: 4.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #f2f2f2; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-fill-upper { + background: #ffffff; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 14px; + width: 14px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + margin-top: -2px; +} +input[type=range]:focus::-ms-fill-lower { + background: #ffffff; +} +input[type=range]:focus::-ms-fill-upper { + background: #ffffff; +} +.cc-window { + opacity: 1; + transition: opacity 1s ease; +} +.cc-window.cc-invisible { + opacity: 0; +} +.cc-animate.cc-revoke { + transition: transform 1s ease; +} +.cc-animate.cc-revoke.cc-top { + transform: translateY(-2em); +} +.cc-animate.cc-revoke.cc-bottom { + transform: translateY(2em); +} +.cc-animate.cc-revoke.cc-active.cc-bottom, +.cc-animate.cc-revoke.cc-active.cc-top, +.cc-revoke:hover { + transform: translateY(0); +} +.cc-grower { + max-height: 0; + overflow: hidden; + transition: max-height 1s; +} +.cc-link, +.cc-revoke:hover { + text-decoration: underline; +} +.cc-revoke, +.cc-window { + position: fixed; + overflow: hidden; + box-sizing: border-box; + font-family: Helvetica, Calibri, Arial, sans-serif; + font-size: 16px; + line-height: 1.5em; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + z-index: 9999; +} +.cc-window.cc-static { + position: static; +} +.cc-window.cc-floating { + padding: 2em; + max-width: 24em; + -ms-flex-direction: column; + flex-direction: column; +} +.cc-window.cc-banner { + padding: 1em 1.8em; + width: 100%; + -ms-flex-direction: row; + flex-direction: row; +} +.cc-revoke { + padding: 0.5em; +} +.cc-header { + font-size: 18px; + font-weight: 700; +} +.cc-btn, +.cc-close, +.cc-link, +.cc-revoke { + cursor: pointer; +} +.cc-link { + opacity: 0.8; + display: inline-block; + padding: 0.2em; +} +.cc-link:hover { + opacity: 1; +} +.cc-link:active, +.cc-link:visited { + color: initial; +} +.cc-btn { + display: block; + padding: 0.4em 0.8em; + font-size: 0.9em; + font-weight: 700; + border-width: 2px; + border-style: solid; + text-align: center; + white-space: nowrap; +} +.cc-highlight .cc-btn:first-child { + background-color: transparent; + border-color: transparent; +} +.cc-highlight .cc-btn:first-child:focus, +.cc-highlight .cc-btn:first-child:hover { + background-color: transparent; + text-decoration: underline; +} +.cc-close { + display: block; + position: absolute; + top: 0.5em; + right: 0.5em; + font-size: 1.6em; + opacity: 0.9; + line-height: 0.75; +} +.cc-close:focus, +.cc-close:hover { + opacity: 1; +} +.cc-revoke.cc-top { + top: 0; + left: 3em; + border-bottom-left-radius: 0.5em; + border-bottom-right-radius: 0.5em; +} +.cc-revoke.cc-bottom { + bottom: 0; + left: 3em; + border-top-left-radius: 0.5em; + border-top-right-radius: 0.5em; +} +.cc-revoke.cc-left { + left: 3em; + right: unset; +} +.cc-revoke.cc-right { + right: 3em; + left: unset; +} +.cc-top { + top: 1em; +} +.cc-left { + left: 1em; +} +.cc-right { + right: 1em; +} +.cc-bottom { + bottom: 1em; +} +.cc-floating > .cc-link { + margin-bottom: 1em; +} +.cc-floating .cc-message { + display: block; + margin-bottom: 1em; +} +.cc-window.cc-floating .cc-compliance { + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.cc-window.cc-banner { + -ms-flex-align: center; + align-items: center; +} +.cc-banner.cc-top { + left: 0; + right: 0; + top: 0; +} +.cc-banner.cc-bottom { + left: 0; + right: 0; + bottom: 0; +} +.cc-banner .cc-message { + display: block; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + max-width: 100%; + margin-right: 1em; +} +.cc-compliance { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: justify; + align-content: space-between; +} +.cc-floating .cc-compliance > .cc-btn { + -ms-flex: 1; + flex: 1; +} +.cc-btn + .cc-btn { + margin-left: 0.5em; +} +@media print { + .cc-revoke, + .cc-window { + display: none; + } +} +@media screen and (max-width: 900px) { + .cc-btn { + white-space: normal; + } +} +@media screen and (max-width: 414px) and (orientation: portrait), screen and (max-width: 736px) and (orientation: landscape) { + .cc-window.cc-top { + top: 0; + } + .cc-window.cc-bottom { + bottom: 0; + } + .cc-window.cc-banner, + .cc-window.cc-floating, + .cc-window.cc-left, + .cc-window.cc-right { + left: 0; + right: 0; + } + .cc-window.cc-banner { + -ms-flex-direction: column; + flex-direction: column; + } + .cc-window.cc-banner .cc-compliance { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + } + .cc-window.cc-floating { + max-width: none; + } + .cc-window .cc-message { + margin-bottom: 1em; + } + .cc-window.cc-banner { + -ms-flex-align: unset; + align-items: unset; + } + .cc-window.cc-banner .cc-message { + margin-right: 0; + } +} +.cc-floating.cc-theme-classic { + padding: 1.2em; + border-radius: 5px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-compliance { + text-align: center; + display: inline; + -ms-flex: none; + flex: none; +} +.cc-theme-classic .cc-btn { + border-radius: 5px; +} +.cc-theme-classic .cc-btn:last-child { + min-width: 140px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-btn { + display: inline-block; +} +.cc-theme-edgeless.cc-window { + padding: 0; +} +.cc-floating.cc-theme-edgeless .cc-message { + margin: 2em 2em 1.5em; +} +.cc-banner.cc-theme-edgeless .cc-btn { + margin: 0; + padding: 0.8em 1.8em; + height: 100%; +} +.cc-banner.cc-theme-edgeless .cc-message { + margin-left: 1em; +} +.cc-floating.cc-theme-edgeless .cc-btn + .cc-btn { + margin-left: 0; +} +.paella-profile-button { + background-color: lightgray; + border: none; + border-radius: 10%; + box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.9); +} +.paella-profile-button:hover { + background-color: #9b9b9b; +} +.paella-profile-button:active { + background-color: #000000; +} +.buttonPlugin.AirPlayButton { + background-position: -1100% -100%; +} +.buttonPlugin.AirPlayButton.not-available { + opacity: 0.4; +} +.buttonPlugin.legal { + pointer-events: all; + padding-right: 5px; + height: 20px; + text-align: right; + padding: 1px; + margin: 1px; + margin-right: 12px; + margin-top: -7px; + margin-bottom: 4px; + width: auto; +} +.buttonPlugin.legal a { + color: lightgrey !important; + text-decoration: underline !important; +} +.buttonPlugin.legal a:hover { + background-color: transparent !important; + font-weight: bold !important; +} +.buttonPlugin.legal:hover { + background-color: transparent !important; +} +.buttonPlugin.PIPModeButton { + background-position: -1000% -100%; +} +.related-video-container { + z-index: 5; + background-color: rgba(255, 255, 255, 0.7); +} +.related-video-container .related-video-link { + width: 30%; + overflow: hidden; + display: block; + background-color: white; + padding: 3px; + box-shadow: 1px 1px 3px 0px black; + position: absolute; + pointer-events: all; +} +.related-video-container .related-video-link.related-video-single { + width: 50%; + left: 25%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-1 { + width: 30%; + left: 10%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-2 { + width: 30%; + right: 10%; + top: 30%; +} +.related-video-container .related-video-link img { + width: 100%; +} +.related-video-container .related-video-link p { + width: 100%; + text-align: center; +} +.buttonPlugin.showEditorButton { + pointer-events: all; +} +.buttonPluginPopUp.videoZoomToolbar { + width: 50px; + text-align: center; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-videocamera { + font-size: 27px; + margin-left: -2px; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-zoom-in { + font-size: 29px; + margin-left: -6px; +} +.autoTrackingActivated { + color: red !important; +} +html { + margin: 0px; +} +body { + font-family: 'Ubuntu', sans-serif; + margin: 0px; +} +pre { + padding: 20px; + border-bottom: 2px solid #cc0000; + border-top: 2px solid #cc0000; +} +iframe { + margin-left: auto; + margin-right: auto; + display: block; +} +h2 { + color: #909090; +} +h1 { + color: #cc0000; +} +.alignCenter { + display: block; + margin-right: auto; + margin-left: auto; + max-width: 90%; +} +.image { + background-size: 100% auto; + background-repeat: no-repeat; +} +#logo { + background-image: url(logo_paella.png); + width: 140px; + height: 140px; + float: left; +} +.pageHeader { + background-color: white; + padding: 20px; + border-bottom: 1px solid #cc0000; + height: 170px; +} +.content { + width: 100%; + background-color: white; + margin-left: auto; + margin-right: auto; + max-width: 1100px; + padding-left: 30px; + padding-right: 30px; +} +.content.page { + margin-top: 0px; + padding-top: 30px; + padding-bottom: 100px; +} +#headerText { + font-family: 'Varela Round', sans-serif; + font-size: 60pt; + display: block; + width: 100%; + line-height: 90px; + margin-left: 157px; +} +#headerSubtitle { + display: block; + width: 100%; + margin-left: 160px; + font-size: 28px; + color: gray; +} +.logoGroup { + width: 660px; + float: left; + margin-top: 20px; +} +a { + color: #fa8528; +} +a:visited { + color: #fa8528; +} +a:hover { + color: #fba352; +} +a:active { + color: #ffb055; +} +.linkButton { + font-size: 20px; + color: white; + background-color: #fa8528; + padding: 20px; + border-radius: 5px; + border: 1.6pt solid #BA631E; + box-shadow: inset -3px -5px 10px 0px #D9711D; + display: inline-block; + text-decoration: none; + text-align: center; +} +.linkButton.small { + padding: 10px; + font-size: 12px; +} +.linkButton:hover { + color: white; + background-color: #FFA863; +} +.linkButton:active { + color: white; + box-shadow: inset 3px 5px 20px 0px #D9711D; +} +.buttonGroup#downloads { + width: 233px; + padding-top: 5px; + margin-bottom: 30px; + margin-left: auto; + margin-right: auto; +} +#githubLink { + display: block; +} +#resourcesLink { + display: block; +} +#downloadPaella3 { + display: block; + width: 189px; + margin-top: 55px; + margin-left: auto; + margin-right: auto; + color: white; +} +.downloadGroup { + width: 250px; + float: right; +} +.footerText { + display: inline-block; + height: 50px; + vertical-align: top; + margin-right: 10px; + font-size: 10px; +} +.sponsorLogo { + width: 100px; + display: inline-block; +} +.content.footer { + border-top: 4px solid #fa8528; + padding-top: 10px; +} +.menu { + margin-top: 165px; +} +.menuItem { + list-style-type: none; + display: inline; + margin-right: 30px; +} +.menuItemLink { + cursor: pointer; +} +.menuItemLink.current { + color: gray; +} +.element { + margin-left: auto; + display: block; + margin-right: auto; + width: 65%; +} +.imgen { + margin-left: auto; + width: 100%; +} +.txtblock { + color: black; + font-size: large; + font-family: 'Istok Web', sans-serif; + font-style: oblique; +} diff --git a/src/main/webapp/static/js/paella/player/resources/style/style_light_small.css b/src/main/webapp/static/js/paella/player/resources/style/style_light_small.css new file mode 100644 index 0000000000000000000000000000000000000000..3c3003be8ce5e4e0d7b3253103f795fe00326718 --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/style_light_small.css @@ -0,0 +1,3990 @@ +/* Dark icons over light background */ +body { + height: 100%; + width: 100%; + font-family: Verdana, sans-serif; + font-size: 12px; + background: #fafafa; + touch-action: none; +} +a { + color: #636363; +} +a:hover { + color: #a4a4a4; +} +a:active { + color: #3d3d3d; +} +a:visited { + color: #636363; +} +.videoWrapper { + -moz-box-shadow: 2px 2px 6px #000; + -webkit-box-shadow: 2px 2px 6px #000; + box-shadow: 2px 2px 6px #000; + background: black; +} +div { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.buttonPlugin { + cursor: pointer; + padding-right: 0px; + padding-left: 0px; + background-origin: border-box; + position: relative; + display: block; + float: left; + align-items: stretch; + background-color: transparent; + border: none; + box-sizing: border-box; + min-width: 20px; + height: 20px; + margin-left: 0px; + margin-right: 0px; + margin-top: 0px; + color: white; + text-align: center; +} +button, +div i.button-icon { + color: black; + font-size: 12px; + line-height: 20px; + position: absolute; + top: 0px; + left: 0px; +} +span.expandable-content { + color: white; + width: 80px; + display: block; + float: left; +} +.buttonPlugin.expandable-content { + background-color: transparent !important; +} +.buttonPlugin { + position: relative; +} +.button-text { + position: absolute; + left: 0px; + right: 0px; + top: 0px; + bottom: 0px; + text-align: center; + line-height: 15px; + z-index: 1; +} +i.button-icon.icon-screen { + font-size: 14.64px; + padding-left: 0px; +} +.play-button-on-screen { + display: flex; + align-items: center; + justify-content: center; + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.play-button-on-screen .play-icon { + width: 300px; + height: 300px; + background-image: url(../images/play.svg); +} +@media screen and (max-width: 1000px) { + .play-button-on-screen .play-icon { + width: 300px; + height: 300px; + } +} +@media screen and (max-width: 700px) { + .play-button-on-screen .play-icon { + width: 150px; + height: 150px; + } +} +@media screen and (max-width: 400px) { + .play-button-on-screen .play-icon { + width: 80px; + height: 80px; + } +} +#playerContainer { + background-color: white; +} +#playerContainer.modalVisible > :not(.modalMessageContainer) { + filter: blur(10px); +} +#playerContainer:-webkit-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-moz-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-ms-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:-o-full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#playerContainer:full-screen { + width: 100%; + height: 100%; + background-color: white; +} +#ignoreBrowserCheckLink { + color: black; + text-decoration: underline; +} +.alt-scroll-message-container { + position: absolute; + left: 0px; + top: 0px; + bottom: 0px; + right: 0px; + background-color: rgba(0, 0, 0, 0.45); + display: flex; + justify-content: center; + align-items: center; + font-size: 20px; + color: white; + text-shadow: 1px 1px 4px black; +} +.alt-scroll-message-container p { + text-align: center; +} +.playbackControls { + background-color: rgba(242, 242, 242, 0.78); + background-image: none; + background-size: auto; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 34px; + z-index: 100; +} +.playbackBarPlugins { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + height: 20px; + font-size: 6px; + overflow: hidden; +} +.playbackBar { + position: absolute; + left: 0px; + right: 0px; + height: 12px; + background-color: rgba(125, 125, 125, 0.5); + border-bottom: 1px solid rgba(90, 90, 90, 0.6); + border-top: 1px solid rgba(90, 90, 90, 0.6); + cursor: pointer; +} +.playbackBar:focus { + box-shadow: inset 0px 0px 5px 0px #faa166; + outline: none; +} +.playbackBarFull { + height: 10px; + background-color: #fa8533; + background: #fa8533; +} +.playbackBarFull.disabled { + opacity: 0.2; +} +.buttonPlugin.left { + float: left; +} +.buttonPlugin.right { + float: right; +} +.buttonPlugin:hover { + background-color: #faa166; +} +.buttonPlugin:focus { + box-shadow: inset 0px 0px 5px 0px #faa166; + outline: none; +} +.buttonPlugin.selected { + background-color: #fa8533; +} +.popUpPluginContainer { + position: absolute; + right: 0px; + z-index: 110; + color: black; +} +.buttonPluginPopUp { + background-color: rgba(242, 242, 242, 0.78); + position: absolute; + bottom: -12px; +} +.timelinePluginContainer { + position: absolute; + left: 0px; + width: 100%; + background-color: rgba(242, 242, 242, 0.78); + bottom: 34px; + color: black; +} +.buttonTimeLine { + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; +} +/* old style time control */ +.timeControlOld { + color: white; + display: block; + position: relative; + width: 69px; + height: 44px; + background-size: 100%; + background-image: url(../images/time_monitor.png); + font-size: 10px; + padding-top: 11px; + background-repeat: no-repeat; + bottom: 70px; + font-family: verdana; + text-align: center; + z-index: 100; +} +.timeControl { + color: white; + display: block; + position: relative; + width: 69px; + height: 10px; + font-size: 10px; + background-repeat: no-repeat; + padding-left: 5px; + font-family: verdana; + text-align: left; + z-index: 100; + line-height: 10px; + margin-top: -10px; + cursor: pointer; +} +.editControlContainer { + z-index: 20; +} +.paellaLoadErrorContainer { + width: 1000px; + margin: auto; + margin-top: 200px; + text-align: center; + padding-top: 80px; + padding-bottom: 80px; + background-color: rgba(220, 228, 234, 0.9); + border-radius: 22px; + box-shadow: 1px 1px 8px black; + font-family: sans-serif; + font-size: 20px; +} +.modalMessageContainer { + background-color: rgba(0, 0, 0, 0.5); +} +.messageContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; +} +.frameContainer { + width: 95%; + height: 95%; + margin-top: 2%; + position: relative; + margin: auto; + text-align: center; + /*vertical-align: middle;*/ + font-family: sans-serif; + padding-left: 80px; + padding-right: 80px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + display: block; +} +.errorContainer { + width: 55%; + min-height: 55%; + margin-top: 22%; + position: relative; + margin: auto; + text-align: center; + vertical-align: middle; + padding-left: 120px; + padding-right: 60px; + background-color: white; + border-radius: 2px; + box-shadow: 1px 1px 8px rgba(0, 0, 0, 0.29); + font-family: sans-serif; + font-size: 20px; + padding-top: 40px; + padding-bottom: 40px; + border: 7px solid maroon; + color: maroon; + font-weight: bold; + background-image: url(../images/error_icon.png); + background-size: 10%; + background-repeat: no-repeat; + background-position: 50px 40px; +} +.paella_messageContainer_closeButton { + /*background-image: url(../images/close_button.png);*/ + width: 20px; + height: 20px; + position: absolute; + display: block; + top: 10px; + right: 10px; + z-index: 999999999; + border-radius: 20px; +} +.paella_messageContainer_closeButton:hover { + color: white; + background-color: black; +} +.paella_messageContainer_closeButton:active { + background-position: 20px; +} +.overlayContainer.background { + background-color: rgba(0, 0, 0, 0.5); +} +#overlayContainer { + pointer-events: none; +} +#overlayContainer div { + pointer-events: none; +} +.videoLoaderOverlay { + background-color: black; +} +.videoOverlayButtonPlugins { + z-index: 100; + position: absolute; + right: 0px; + left: 0px; + top: 0px; + pointer-events: none; +} +.divTimeOverlay { + position: fixed; + background-color: rgba(242, 242, 242, 0.78); + color: white; + text-align: center; + padding-right: 3px; + padding-left: 3px; + padding-top: 1px; + text-shadow: 1px 1px #888888; + z-index: 100; +} +.divTimeImageOverlay { + position: fixed; + background-color: rgba(242, 242, 242, 0.78); + z-index: 99; + width: 256px; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: contain; +} +.imgOverlay { + height: 100%; + width: 100%; + max-width: none; + border: 1px solid rgba(242, 242, 242, 0.78); +} +.videoPosterFrameImage { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + height: 100%; + width: 100%; +} +.playerContainer_controls_playback_playbackBar_canvas { + overflow: hidden; + position: absolute; +} +#playerContainer_controls_playback_playbackBar { + overflow: hidden; + background-color: #333333; +} +.login-link { + margin-top: 20px; + margin-bottom: 20px; +} +video::-internal-media-controls-download-button { + display: none; +} +video::-webkit-media-controls-enclosure { + overflow: hidden; +} +video::-webkit-media-controls-panel { + width: calc(100% + 8px); + /* Adjust as needed */ +} +#lazyLoadThumbnailContainer { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 100%; + z-index: 20; + /* Over the video contaniner and video layout buttons, but under the play button */ +} +.dimmed-element { + filter: blur(4px); +} +/* TODO: Extract this CSS to editor plugins */ +.editorTrackItem.mainTrackTrim { + background-image: url(../images/main_track_bkg.png); + background-size: 56px 100%; +} +/* END EXTRACT */ +/* Begin new editor */ +a.btn { + color: #f3f3f3; +} +.listItem { + color: #f3f3f3; +} +.editorContainer { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + bottom: 0px; + width: 100%; + height: 100%; +} +.paellaEditorRightBar { + position: fixed; + right: 0px; + top: 0px; + background-color: #4f4f4f; + box-shadow: 1px -4px 12px black; +} +.paellaEditorBottomBar { + position: fixed; + right: 0px; + bottom: 0px; + left: 0px; + background-color: #4f4f4f; + box-shadow: 1px 1px 12px black; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.paellaEditorRightBarContent { + padding-left: 10px; + padding-right: 10px; + font-size: 11px; +} +.editorTimelineContainer { + margin-top: -21px; + position: relative; + overflow: auto; +} +.editorTimelineContent { + background-image: url(../images/light_background.png); + top: 0px; + box-shadow: inset 0px 0px 10px 0px rgba(0, 0, 0, 0.7); + position: relative; +} +.editorTimeLineTimeMarks { + position: absolute; + top: 0px; + height: 20px; + left: 0px; + right: 0px; + z-index: 1; + padding-left: 3px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorTimeLineMark { + float: left; + /* background-color: rgb(61,62,62);*/ + font-size: 9px; + height: 20px; + line-height: 18px; +} +.editorTimeLineMark.odd { + /* background-color: rgb(73,82,82);*/ +} +.editorTrackListItem.master { + position: absolute; + left: 0px; + right: 0px; + top: 38px; + height: 51px; +} +.editorTrackListItem.secondary { + height: 23px; + position: relative; +} +.editorTrackListItem.secondary.track0 { + margin-top: 90px; +} +.editorTrackItem { + position: absolute; + height: 97%; + border-radius: 5px; + border: 1px solid #6f6f6f; + overflow: hidden; +} +.editorTrackItemResizer { + width: 2px; + top: 20%; + bottom: 23%; + position: absolute; + overflow: hidden; + cursor: pointer; +} +.editorTrackItemResizer.left { + border-right: 8px double #7c7c7c; + left: 0px; +} +.editorTrackItemResizer.right { + border-left: 8px double #7c7c7c; + right: 0px; +} +.editorTrackItemMoveArea { + position: absolute; + left: 18px; + right: 18px; + top: 0px; + bottom: 0px; + cursor: pointer; +} +.editorTrackItemLabel { + margin-left: 20px; + margin-right: 20px; + height: 100%; + line-height: 48px; + cursor: pointer; +} +.editorTrackItemLock { + top: 5%; + position: absolute; +} +.editorTrackItemLabel.secondary { + line-height: 23px; +} +.editorTimeLineMark.last { + overflow: hidden; +} +.editorTimeLineTracks { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + padding-bottom: 20px; + background-image: url(../images/timeline_tracks_bkg.png); +} +.editorBottomToolbarContainer { + background-color: #52595F; + height: 27px; +} +.zoomDropup { + margin-top: 2px; + float: right; + margin-right: 10px; +} +.navbar.tiny { + font-size: 11px; +} +.navbar-inner.tiny { + min-height: 21px; +} +.navbar .nav > li { + line-height: 11px; +} +.navbar .nav > li > a.rightBarPlugin { + padding: 5px 5px 5px; +} +.editorToolbar_selectedToolUtils { + margin-left: 10px; +} +.editorToolbarPlaybackControls { + position: absolute; + left: 45%; +} +.editorTimelineCursor { + position: absolute; + height: 100%; + width: 1px; + border-left: 1px dashed rgba(238, 0, 12, 0.92); + left: 352px; + z-index: 0; + top: 0px; + line-height: 54px; + font-size: 11px; + padding-left: 3px; +} +.editorTimelineCursor.currentTime { + border-left: 1px solid white; +} +.editorRightBarTabIcon { + /* display: inline-block; to add icon, set this property and the background image in the plugin css file, using .editorRightBarTabIcon.pluginName as class name */ + width: 15px; + height: 14px; + margin-bottom: -3px; + margin-right: 2px; +} +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?u9ewd1'); + src: url('fonts/icomoon.eot?u9ewd1#iefix') format('embedded-opentype'), url('fonts/icomoon.ttf?u9ewd1') format('truetype'), url('fonts/icomoon.woff?u9ewd1') format('woff'), url('fonts/icomoon.svg?u9ewd1#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} +[class^="icon-"], +[class*=" icon-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-mini-camera:before { + content: "\e900"; +} +.icon-captions:before { + content: "\e901"; +} +.icon-paintbrush:before { + content: "\e902"; +} +.icon-airplay:before { + content: "\e903"; +} +.icon-arrow-down:before { + content: "\e904"; +} +.icon-arrow-left:before { + content: "\e905"; +} +.icon-arrow-right:before { + content: "\e906"; +} +.icon-arrow-up:before { + content: "\e907"; +} +.icon-back-10-s:before { + content: "\e908"; +} +.icon-back-30-s:before { + content: "\e909"; +} +.icon-comments-disabled:before { + content: "\e90a"; +} +.icon-comments:before { + content: "\e90b"; +} +.icon-edit:before { + content: "\e90c"; +} +.icon-facebook:before { + content: "\e90d"; +} +.icon-folder:before { + content: "\e90e"; +} +.icon-forward-30-s:before { + content: "\e90f"; +} +.icon-frames:before { + content: "\e910"; +} +.icon-fullscreen:before { + content: "\e911"; +} +.icon-headphone:before { + content: "\e912"; +} +.icon-help:before { + content: "\e913"; +} +.icon-info:before { + content: "\e914"; +} +.icon-link:before { + content: "\e915"; +} +.icon-mini-frames:before { + content: "\e916"; +} +.icon-mini-videocamera:before { + content: "\e917"; +} +.icon-mini-window:before { + content: "\e918"; +} +.icon-mini-zoom-in:before { + content: "\e919"; +} +.icon-mini-zoom-out:before { + content: "\e91a"; +} +.icon-pause:before { + content: "\e91b"; +} +.icon-photo:before { + content: "\e91c"; +} +.icon-pip:before { + content: "\e91d"; +} +.icon-play:before { + content: "\e91e"; +} +.icon-player-mode-1:before { + content: "\e91f"; +} +.icon-player-mode-2:before { + content: "\e920"; +} +.icon-player-mode-3:before { + content: "\e921"; +} +.icon-present-mode-1:before { + content: "\e922"; +} +.icon-present-mode-2:before { + content: "\e923"; +} +.icon-present-mode-3:before { + content: "\e924"; +} +.icon-present-mode-4:before { + content: "\e925"; +} +.icon-present-mode-5:before { + content: "\e926"; +} +.icon-present-mode-6:before { + content: "\e927"; +} +.icon-present-mode-7:before { + content: "\e928"; +} +.icon-present-mode-8:before { + content: "\e929"; +} +.icon-present-mode-9:before { + content: "\e92a"; +} +.icon-present-mode-10:before { + content: "\e92b"; +} +.icon-presentation-mode:before { + content: "\e92c"; +} +.icon-screen:before { + content: "\e92d"; +} +.icon-slideshow:before { + content: "\e92e"; +} +.icon-social:before { + content: "\e92f"; +} +.icon-star-empty:before { + content: "\e930"; +} +.icon-star:before { + content: "\e931"; +} +.icon-stats:before { + content: "\e932"; +} +.icon-twitter:before { + content: "\e933"; +} +.icon-user:before { + content: "\e934"; +} +.icon-volume-high:before { + content: "\e935"; +} +.icon-volume-low:before { + content: "\e936"; +} +.icon-volume-mid:before { + content: "\e937"; +} +.icon-volume-mute:before { + content: "\e938"; +} +.icon-windowed:before { + content: "\e939"; +} +.icon-zoom-in:before { + content: "\e93a"; +} +.icon-zoom:before { + content: "\e93b"; +} +.icon-home:before { + content: "\e93c"; +} +.icon-home2:before { + content: "\e93d"; +} +.icon-home3:before { + content: "\e93e"; +} +.icon-office:before { + content: "\e93f"; +} +.icon-newspaper:before { + content: "\e940"; +} +.icon-pencil:before { + content: "\e941"; +} +.icon-pencil2:before { + content: "\e942"; +} +.icon-quill:before { + content: "\e943"; +} +.icon-pen:before { + content: "\e944"; +} +.icon-blog:before { + content: "\e945"; +} +.icon-eyedropper:before { + content: "\e946"; +} +.icon-droplet:before { + content: "\e947"; +} +.icon-paint-format:before { + content: "\e948"; +} +.icon-image:before { + content: "\e949"; +} +.icon-images:before { + content: "\e94a"; +} +.icon-camera:before { + content: "\e94b"; +} +.icon-headphones:before { + content: "\e94c"; +} +.icon-music:before { + content: "\e94d"; +} +.icon-play2:before { + content: "\e94e"; +} +.icon-film:before { + content: "\e94f"; +} +.icon-video-camera:before { + content: "\e950"; +} +.icon-dice:before { + content: "\e951"; +} +.icon-pacman:before { + content: "\e952"; +} +.icon-spades:before { + content: "\e953"; +} +.icon-clubs:before { + content: "\e954"; +} +.icon-diamonds:before { + content: "\e955"; +} +.icon-bullhorn:before { + content: "\e956"; +} +.icon-connection:before { + content: "\e957"; +} +.icon-podcast:before { + content: "\e958"; +} +.icon-feed:before { + content: "\e959"; +} +.icon-mic:before { + content: "\e95a"; +} +.icon-book:before { + content: "\e95b"; +} +.icon-books:before { + content: "\e95c"; +} +.icon-library:before { + content: "\e95d"; +} +.icon-file-text:before { + content: "\e95e"; +} +.icon-profile:before { + content: "\e95f"; +} +.icon-file-empty:before { + content: "\e960"; +} +.icon-files-empty:before { + content: "\e961"; +} +.icon-file-text2:before { + content: "\e962"; +} +.icon-file-picture:before { + content: "\e963"; +} +.icon-file-music:before { + content: "\e964"; +} +.icon-file-play:before { + content: "\e965"; +} +.icon-file-video:before { + content: "\e966"; +} +.icon-file-zip:before { + content: "\e967"; +} +.icon-copy:before { + content: "\e968"; +} +.icon-paste:before { + content: "\e969"; +} +.icon-stack:before { + content: "\e96a"; +} +.icon-folder2:before { + content: "\e96b"; +} +.icon-folder-open:before { + content: "\e96c"; +} +.icon-folder-plus:before { + content: "\e96d"; +} +.icon-folder-minus:before { + content: "\e96e"; +} +.icon-folder-download:before { + content: "\e96f"; +} +.icon-folder-upload:before { + content: "\e970"; +} +.icon-price-tag:before { + content: "\e971"; +} +.icon-price-tags:before { + content: "\e972"; +} +.icon-barcode:before { + content: "\e973"; +} +.icon-qrcode:before { + content: "\e974"; +} +.icon-ticket:before { + content: "\e975"; +} +.icon-cart:before { + content: "\e976"; +} +.icon-coin-dollar:before { + content: "\e977"; +} +.icon-coin-euro:before { + content: "\e978"; +} +.icon-coin-pound:before { + content: "\e979"; +} +.icon-coin-yen:before { + content: "\e97a"; +} +.icon-credit-card:before { + content: "\e97b"; +} +.icon-calculator:before { + content: "\e97c"; +} +.icon-lifebuoy:before { + content: "\e97d"; +} +.icon-phone:before { + content: "\e97e"; +} +.icon-phone-hang-up:before { + content: "\e97f"; +} +.icon-address-book:before { + content: "\e980"; +} +.icon-envelop:before { + content: "\e981"; +} +.icon-pushpin:before { + content: "\e982"; +} +.icon-location:before { + content: "\e983"; +} +.icon-location2:before { + content: "\e984"; +} +.icon-compass:before { + content: "\e985"; +} +.icon-compass2:before { + content: "\e986"; +} +.icon-map:before { + content: "\e987"; +} +.icon-map2:before { + content: "\e988"; +} +.icon-history:before { + content: "\e989"; +} +.icon-clock:before { + content: "\e98a"; +} +.icon-clock2:before { + content: "\e98b"; +} +.icon-alarm:before { + content: "\e98c"; +} +.icon-bell:before { + content: "\e98d"; +} +.icon-stopwatch:before { + content: "\e98e"; +} +.icon-calendar:before { + content: "\e98f"; +} +.icon-printer:before { + content: "\e990"; +} +.icon-keyboard:before { + content: "\e991"; +} +.icon-display:before { + content: "\e992"; +} +.icon-laptop:before { + content: "\e993"; +} +.icon-mobile:before { + content: "\e994"; +} +.icon-mobile2:before { + content: "\e995"; +} +.icon-tablet:before { + content: "\e996"; +} +.icon-tv:before { + content: "\e997"; +} +.icon-drawer:before { + content: "\e998"; +} +.icon-drawer2:before { + content: "\e999"; +} +.icon-box-add:before { + content: "\e99a"; +} +.icon-box-remove:before { + content: "\e99b"; +} +.icon-download:before { + content: "\e99c"; +} +.icon-upload:before { + content: "\e99d"; +} +.icon-floppy-disk:before { + content: "\e99e"; +} +.icon-drive:before { + content: "\e99f"; +} +.icon-database:before { + content: "\e9a0"; +} +.icon-undo:before { + content: "\e9a1"; +} +.icon-redo:before { + content: "\e9a2"; +} +.icon-undo2:before { + content: "\e9a3"; +} +.icon-redo2:before { + content: "\e9a4"; +} +.icon-forward:before { + content: "\e9a5"; +} +.icon-reply:before { + content: "\e9a6"; +} +.icon-bubble:before { + content: "\e9a7"; +} +.icon-bubbles:before { + content: "\e9a8"; +} +.icon-bubbles2:before { + content: "\e9a9"; +} +.icon-bubble2:before { + content: "\e9aa"; +} +.icon-bubbles3:before { + content: "\e9ab"; +} +.icon-bubbles4:before { + content: "\e9ac"; +} +.icon-user2:before { + content: "\e9ad"; +} +.icon-users:before { + content: "\e9ae"; +} +.icon-user-plus:before { + content: "\e9af"; +} +.icon-user-minus:before { + content: "\e9b0"; +} +.icon-user-check:before { + content: "\e9b1"; +} +.icon-user-tie:before { + content: "\e9b2"; +} +.icon-quotes-left:before { + content: "\e9b3"; +} +.icon-quotes-right:before { + content: "\e9b4"; +} +.icon-hour-glass:before { + content: "\e9b5"; +} +.icon-spinner:before { + content: "\e9b6"; +} +.icon-spinner2:before { + content: "\e9b7"; +} +.icon-spinner3:before { + content: "\e9b8"; +} +.icon-spinner4:before { + content: "\e9b9"; +} +.icon-spinner5:before { + content: "\e9ba"; +} +.icon-spinner6:before { + content: "\e9bb"; +} +.icon-spinner7:before { + content: "\e9bc"; +} +.icon-spinner8:before { + content: "\e9bd"; +} +.icon-spinner9:before { + content: "\e9be"; +} +.icon-spinner10:before { + content: "\e9bf"; +} +.icon-spinner11:before { + content: "\e9c0"; +} +.icon-binoculars:before { + content: "\e9c1"; +} +.icon-search:before { + content: "\e9c2"; +} +.icon-zoom-in2:before { + content: "\e9c3"; +} +.icon-zoom-out:before { + content: "\e9c4"; +} +.icon-enlarge:before { + content: "\e9c5"; +} +.icon-shrink:before { + content: "\e9c6"; +} +.icon-enlarge2:before { + content: "\e9c7"; +} +.icon-shrink2:before { + content: "\e9c8"; +} +.icon-key:before { + content: "\e9c9"; +} +.icon-key2:before { + content: "\e9ca"; +} +.icon-lock:before { + content: "\e9cb"; +} +.icon-unlocked:before { + content: "\e9cc"; +} +.icon-wrench:before { + content: "\e9cd"; +} +.icon-equalizer:before { + content: "\e9ce"; +} +.icon-equalizer2:before { + content: "\e9cf"; +} +.icon-cog:before { + content: "\e9d0"; +} +.icon-cogs:before { + content: "\e9d1"; +} +.icon-hammer:before { + content: "\e9d2"; +} +.icon-magic-wand:before { + content: "\e9d3"; +} +.icon-aid-kit:before { + content: "\e9d4"; +} +.icon-bug:before { + content: "\e9d5"; +} +.icon-pie-chart:before { + content: "\e9d6"; +} +.icon-stats-dots:before { + content: "\e9d7"; +} +.icon-stats-bars:before { + content: "\e9d8"; +} +.icon-stats-bars2:before { + content: "\e9d9"; +} +.icon-trophy:before { + content: "\e9da"; +} +.icon-gift:before { + content: "\e9db"; +} +.icon-glass:before { + content: "\e9dc"; +} +.icon-glass2:before { + content: "\e9dd"; +} +.icon-mug:before { + content: "\e9de"; +} +.icon-spoon-knife:before { + content: "\e9df"; +} +.icon-leaf:before { + content: "\e9e0"; +} +.icon-rocket:before { + content: "\e9e1"; +} +.icon-meter:before { + content: "\e9e2"; +} +.icon-meter2:before { + content: "\e9e3"; +} +.icon-hammer2:before { + content: "\e9e4"; +} +.icon-fire:before { + content: "\e9e5"; +} +.icon-lab:before { + content: "\e9e6"; +} +.icon-magnet:before { + content: "\e9e7"; +} +.icon-bin:before { + content: "\e9e8"; +} +.icon-bin2:before { + content: "\e9e9"; +} +.icon-briefcase:before { + content: "\e9ea"; +} +.icon-airplane:before { + content: "\e9eb"; +} +.icon-truck:before { + content: "\e9ec"; +} +.icon-road:before { + content: "\e9ed"; +} +.icon-accessibility:before { + content: "\e9ee"; +} +.icon-target:before { + content: "\e9ef"; +} +.icon-shield:before { + content: "\e9f0"; +} +.icon-power:before { + content: "\e9f1"; +} +.icon-switch:before { + content: "\e9f2"; +} +.icon-power-cord:before { + content: "\e9f3"; +} +.icon-clipboard:before { + content: "\e9f4"; +} +.icon-list-numbered:before { + content: "\e9f5"; +} +.icon-list:before { + content: "\e9f6"; +} +.icon-list2:before { + content: "\e9f7"; +} +.icon-tree:before { + content: "\e9f8"; +} +.icon-menu:before { + content: "\e9f9"; +} +.icon-menu2:before { + content: "\e9fa"; +} +.icon-menu3:before { + content: "\e9fb"; +} +.icon-menu4:before { + content: "\e9fc"; +} +.icon-cloud:before { + content: "\e9fd"; +} +.icon-cloud-download:before { + content: "\e9fe"; +} +.icon-cloud-upload:before { + content: "\e9ff"; +} +.icon-cloud-check:before { + content: "\ea00"; +} +.icon-download2:before { + content: "\ea01"; +} +.icon-upload2:before { + content: "\ea02"; +} +.icon-download3:before { + content: "\ea03"; +} +.icon-upload3:before { + content: "\ea04"; +} +.icon-sphere:before { + content: "\ea05"; +} +.icon-earth:before { + content: "\ea06"; +} +.icon-link2:before { + content: "\ea07"; +} +.icon-flag:before { + content: "\ea08"; +} +.icon-attachment:before { + content: "\ea09"; +} +.icon-eye:before { + content: "\ea0a"; +} +.icon-eye-plus:before { + content: "\ea0b"; +} +.icon-eye-minus:before { + content: "\ea0c"; +} +.icon-eye-blocked:before { + content: "\ea0d"; +} +.icon-bookmark:before { + content: "\ea0e"; +} +.icon-bookmarks:before { + content: "\ea0f"; +} +.icon-sun:before { + content: "\ea10"; +} +.icon-contrast:before { + content: "\ea11"; +} +.icon-brightness-contrast:before { + content: "\ea12"; +} +.icon-star-empty2:before { + content: "\ea13"; +} +.icon-star-half:before { + content: "\ea14"; +} +.icon-star-full:before { + content: "\ea15"; +} +.icon-heart:before { + content: "\ea16"; +} +.icon-heart-broken:before { + content: "\ea17"; +} +.icon-man:before { + content: "\ea18"; +} +.icon-woman:before { + content: "\ea19"; +} +.icon-man-woman:before { + content: "\ea1a"; +} +.icon-happy:before { + content: "\ea1b"; +} +.icon-happy2:before { + content: "\ea1c"; +} +.icon-smile:before { + content: "\ea1d"; +} +.icon-smile2:before { + content: "\ea1e"; +} +.icon-tongue:before { + content: "\ea1f"; +} +.icon-tongue2:before { + content: "\ea20"; +} +.icon-sad:before { + content: "\ea21"; +} +.icon-sad2:before { + content: "\ea22"; +} +.icon-wink:before { + content: "\ea23"; +} +.icon-wink2:before { + content: "\ea24"; +} +.icon-grin:before { + content: "\ea25"; +} +.icon-grin2:before { + content: "\ea26"; +} +.icon-cool:before { + content: "\ea27"; +} +.icon-cool2:before { + content: "\ea28"; +} +.icon-angry:before { + content: "\ea29"; +} +.icon-angry2:before { + content: "\ea2a"; +} +.icon-evil:before { + content: "\ea2b"; +} +.icon-evil2:before { + content: "\ea2c"; +} +.icon-shocked:before { + content: "\ea2d"; +} +.icon-shocked2:before { + content: "\ea2e"; +} +.icon-baffled:before { + content: "\ea2f"; +} +.icon-baffled2:before { + content: "\ea30"; +} +.icon-confused:before { + content: "\ea31"; +} +.icon-confused2:before { + content: "\ea32"; +} +.icon-neutral:before { + content: "\ea33"; +} +.icon-neutral2:before { + content: "\ea34"; +} +.icon-hipster:before { + content: "\ea35"; +} +.icon-hipster2:before { + content: "\ea36"; +} +.icon-wondering:before { + content: "\ea37"; +} +.icon-wondering2:before { + content: "\ea38"; +} +.icon-sleepy:before { + content: "\ea39"; +} +.icon-sleepy2:before { + content: "\ea3a"; +} +.icon-frustrated:before { + content: "\ea3b"; +} +.icon-frustrated2:before { + content: "\ea3c"; +} +.icon-crying:before { + content: "\ea3d"; +} +.icon-crying2:before { + content: "\ea3e"; +} +.icon-point-up:before { + content: "\ea3f"; +} +.icon-point-right:before { + content: "\ea40"; +} +.icon-point-down:before { + content: "\ea41"; +} +.icon-point-left:before { + content: "\ea42"; +} +.icon-warning:before { + content: "\ea43"; +} +.icon-notification:before { + content: "\ea44"; +} +.icon-question:before { + content: "\ea45"; +} +.icon-plus:before { + content: "\ea46"; +} +.icon-minus:before { + content: "\ea47"; +} +.icon-info2:before { + content: "\ea48"; +} +.icon-cancel-circle:before { + content: "\ea49"; +} +.icon-blocked:before { + content: "\ea4a"; +} +.icon-cross:before { + content: "\ea4b"; +} +.icon-checkmark:before { + content: "\ea4c"; +} +.icon-checkmark2:before { + content: "\ea4d"; +} +.icon-spell-check:before { + content: "\ea4e"; +} +.icon-enter:before { + content: "\ea4f"; +} +.icon-exit:before { + content: "\ea50"; +} +.icon-play22:before { + content: "\ea51"; +} +.icon-pause2:before { + content: "\ea52"; +} +.icon-stop:before { + content: "\ea53"; +} +.icon-previous:before { + content: "\ea54"; +} +.icon-next:before { + content: "\ea55"; +} +.icon-backward:before { + content: "\ea56"; +} +.icon-forward2:before { + content: "\ea57"; +} +.icon-play3:before { + content: "\ea58"; +} +.icon-pause22:before { + content: "\ea59"; +} +.icon-stop2:before { + content: "\ea5a"; +} +.icon-backward2:before { + content: "\ea5b"; +} +.icon-forward3:before { + content: "\ea5c"; +} +.icon-first:before { + content: "\ea5d"; +} +.icon-last:before { + content: "\ea5e"; +} +.icon-previous2:before { + content: "\ea5f"; +} +.icon-next2:before { + content: "\ea60"; +} +.icon-eject:before { + content: "\ea61"; +} +.icon-volume-high2:before { + content: "\ea62"; +} +.icon-volume-medium:before { + content: "\ea63"; +} +.icon-volume-low2:before { + content: "\ea64"; +} +.icon-volume-mute2:before { + content: "\ea65"; +} +.icon-volume-mute22:before { + content: "\ea66"; +} +.icon-volume-increase:before { + content: "\ea67"; +} +.icon-volume-decrease:before { + content: "\ea68"; +} +.icon-loop:before { + content: "\ea69"; +} +.icon-loop2:before { + content: "\ea6a"; +} +.icon-infinite:before { + content: "\ea6b"; +} +.icon-shuffle:before { + content: "\ea6c"; +} +.icon-arrow-up-left:before { + content: "\ea6d"; +} +.icon-arrow-up2:before { + content: "\ea6e"; +} +.icon-arrow-up-right:before { + content: "\ea6f"; +} +.icon-arrow-right2:before { + content: "\ea70"; +} +.icon-arrow-down-right:before { + content: "\ea71"; +} +.icon-arrow-down2:before { + content: "\ea72"; +} +.icon-arrow-down-left:before { + content: "\ea73"; +} +.icon-arrow-left2:before { + content: "\ea74"; +} +.icon-arrow-up-left2:before { + content: "\ea75"; +} +.icon-arrow-up22:before { + content: "\ea76"; +} +.icon-arrow-up-right2:before { + content: "\ea77"; +} +.icon-arrow-right22:before { + content: "\ea78"; +} +.icon-arrow-down-right2:before { + content: "\ea79"; +} +.icon-arrow-down22:before { + content: "\ea7a"; +} +.icon-arrow-down-left2:before { + content: "\ea7b"; +} +.icon-arrow-left22:before { + content: "\ea7c"; +} +.icon-circle-up:before { + content: "\ea7d"; +} +.icon-circle-right:before { + content: "\ea7e"; +} +.icon-circle-down:before { + content: "\ea7f"; +} +.icon-circle-left:before { + content: "\ea80"; +} +.icon-tab:before { + content: "\ea81"; +} +.icon-move-up:before { + content: "\ea82"; +} +.icon-move-down:before { + content: "\ea83"; +} +.icon-sort-alpha-asc:before { + content: "\ea84"; +} +.icon-sort-alpha-desc:before { + content: "\ea85"; +} +.icon-sort-numeric-asc:before { + content: "\ea86"; +} +.icon-sort-numberic-desc:before { + content: "\ea87"; +} +.icon-sort-amount-asc:before { + content: "\ea88"; +} +.icon-sort-amount-desc:before { + content: "\ea89"; +} +.icon-command:before { + content: "\ea8a"; +} +.icon-shift:before { + content: "\ea8b"; +} +.icon-ctrl:before { + content: "\ea8c"; +} +.icon-opt:before { + content: "\ea8d"; +} +.icon-checkbox-checked:before { + content: "\ea8e"; +} +.icon-checkbox-unchecked:before { + content: "\ea8f"; +} +.icon-radio-checked:before { + content: "\ea90"; +} +.icon-radio-checked2:before { + content: "\ea91"; +} +.icon-radio-unchecked:before { + content: "\ea92"; +} +.icon-crop:before { + content: "\ea93"; +} +.icon-make-group:before { + content: "\ea94"; +} +.icon-ungroup:before { + content: "\ea95"; +} +.icon-scissors:before { + content: "\ea96"; +} +.icon-filter:before { + content: "\ea97"; +} +.icon-font:before { + content: "\ea98"; +} +.icon-ligature:before { + content: "\ea99"; +} +.icon-ligature2:before { + content: "\ea9a"; +} +.icon-text-height:before { + content: "\ea9b"; +} +.icon-text-width:before { + content: "\ea9c"; +} +.icon-font-size:before { + content: "\ea9d"; +} +.icon-bold:before { + content: "\ea9e"; +} +.icon-underline:before { + content: "\ea9f"; +} +.icon-italic:before { + content: "\eaa0"; +} +.icon-strikethrough:before { + content: "\eaa1"; +} +.icon-omega:before { + content: "\eaa2"; +} +.icon-sigma:before { + content: "\eaa3"; +} +.icon-page-break:before { + content: "\eaa4"; +} +.icon-superscript:before { + content: "\eaa5"; +} +.icon-subscript:before { + content: "\eaa6"; +} +.icon-superscript2:before { + content: "\eaa7"; +} +.icon-subscript2:before { + content: "\eaa8"; +} +.icon-text-color:before { + content: "\eaa9"; +} +.icon-pagebreak:before { + content: "\eaaa"; +} +.icon-clear-formatting:before { + content: "\eaab"; +} +.icon-table:before { + content: "\eaac"; +} +.icon-table2:before { + content: "\eaad"; +} +.icon-insert-template:before { + content: "\eaae"; +} +.icon-pilcrow:before { + content: "\eaaf"; +} +.icon-ltr:before { + content: "\eab0"; +} +.icon-rtl:before { + content: "\eab1"; +} +.icon-section:before { + content: "\eab2"; +} +.icon-paragraph-left:before { + content: "\eab3"; +} +.icon-paragraph-center:before { + content: "\eab4"; +} +.icon-paragraph-right:before { + content: "\eab5"; +} +.icon-paragraph-justify:before { + content: "\eab6"; +} +.icon-indent-increase:before { + content: "\eab7"; +} +.icon-indent-decrease:before { + content: "\eab8"; +} +.icon-share:before { + content: "\eab9"; +} +.icon-new-tab:before { + content: "\eaba"; +} +.icon-embed:before { + content: "\eabb"; +} +.icon-embed2:before { + content: "\eabc"; +} +.icon-terminal:before { + content: "\eabd"; +} +.icon-share2:before { + content: "\eabe"; +} +.icon-mail:before { + content: "\eabf"; +} +.icon-mail2:before { + content: "\eac0"; +} +.icon-mail3:before { + content: "\eac1"; +} +.icon-mail4:before { + content: "\eac2"; +} +.icon-amazon:before { + content: "\eac3"; +} +.icon-google:before { + content: "\eac4"; +} +.icon-google2:before { + content: "\eac5"; +} +.icon-google3:before { + content: "\eac6"; +} +.icon-google-plus:before { + content: "\eac7"; +} +.icon-google-plus2:before { + content: "\eac8"; +} +.icon-google-plus3:before { + content: "\eac9"; +} +.icon-hangouts:before { + content: "\eaca"; +} +.icon-google-drive:before { + content: "\eacb"; +} +.icon-facebook2:before { + content: "\eacc"; +} +.icon-facebook22:before { + content: "\eacd"; +} +.icon-instagram:before { + content: "\eace"; +} +.icon-whatsapp:before { + content: "\eacf"; +} +.icon-spotify:before { + content: "\ead0"; +} +.icon-telegram:before { + content: "\ead1"; +} +.icon-twitter2:before { + content: "\ead2"; +} +.icon-vine:before { + content: "\ead3"; +} +.icon-vk:before { + content: "\ead4"; +} +.icon-renren:before { + content: "\ead5"; +} +.icon-sina-weibo:before { + content: "\ead6"; +} +.icon-rss:before { + content: "\ead7"; +} +.icon-rss2:before { + content: "\ead8"; +} +.icon-youtube:before { + content: "\ead9"; +} +.icon-youtube2:before { + content: "\eada"; +} +.icon-twitch:before { + content: "\eadb"; +} +.icon-vimeo:before { + content: "\eadc"; +} +.icon-vimeo2:before { + content: "\eadd"; +} +.icon-lanyrd:before { + content: "\eade"; +} +.icon-flickr:before { + content: "\eadf"; +} +.icon-flickr2:before { + content: "\eae0"; +} +.icon-flickr3:before { + content: "\eae1"; +} +.icon-flickr4:before { + content: "\eae2"; +} +.icon-dribbble:before { + content: "\eae3"; +} +.icon-behance:before { + content: "\eae4"; +} +.icon-behance2:before { + content: "\eae5"; +} +.icon-deviantart:before { + content: "\eae6"; +} +.icon-500px:before { + content: "\eae7"; +} +.icon-steam:before { + content: "\eae8"; +} +.icon-steam2:before { + content: "\eae9"; +} +.icon-dropbox:before { + content: "\eaea"; +} +.icon-onedrive:before { + content: "\eaeb"; +} +.icon-github:before { + content: "\eaec"; +} +.icon-npm:before { + content: "\eaed"; +} +.icon-basecamp:before { + content: "\eaee"; +} +.icon-trello:before { + content: "\eaef"; +} +.icon-wordpress:before { + content: "\eaf0"; +} +.icon-joomla:before { + content: "\eaf1"; +} +.icon-ello:before { + content: "\eaf2"; +} +.icon-blogger:before { + content: "\eaf3"; +} +.icon-blogger2:before { + content: "\eaf4"; +} +.icon-tumblr:before { + content: "\eaf5"; +} +.icon-tumblr2:before { + content: "\eaf6"; +} +.icon-yahoo:before { + content: "\eaf7"; +} +.icon-yahoo2:before { + content: "\eaf8"; +} +.icon-tux:before { + content: "\eaf9"; +} +.icon-appleinc:before { + content: "\eafa"; +} +.icon-finder:before { + content: "\eafb"; +} +.icon-android:before { + content: "\eafc"; +} +.icon-windows:before { + content: "\eafd"; +} +.icon-windows8:before { + content: "\eafe"; +} +.icon-soundcloud:before { + content: "\eaff"; +} +.icon-soundcloud2:before { + content: "\eb00"; +} +.icon-skype:before { + content: "\eb01"; +} +.icon-reddit:before { + content: "\eb02"; +} +.icon-hackernews:before { + content: "\eb03"; +} +.icon-wikipedia:before { + content: "\eb04"; +} +.icon-linkedin:before { + content: "\eb05"; +} +.icon-linkedin2:before { + content: "\eb06"; +} +.icon-lastfm:before { + content: "\eb07"; +} +.icon-lastfm2:before { + content: "\eb08"; +} +.icon-delicious:before { + content: "\eb09"; +} +.icon-stumbleupon:before { + content: "\eb0a"; +} +.icon-stumbleupon2:before { + content: "\eb0b"; +} +.icon-stackoverflow:before { + content: "\eb0c"; +} +.icon-pinterest:before { + content: "\eb0d"; +} +.icon-pinterest2:before { + content: "\eb0e"; +} +.icon-xing:before { + content: "\eb0f"; +} +.icon-xing2:before { + content: "\eb10"; +} +.icon-flattr:before { + content: "\eb11"; +} +.icon-foursquare:before { + content: "\eb12"; +} +.icon-yelp:before { + content: "\eb13"; +} +.icon-paypal:before { + content: "\eb14"; +} +.icon-chrome:before { + content: "\eb15"; +} +.icon-firefox:before { + content: "\eb16"; +} +.icon-IE:before { + content: "\eb17"; +} +.icon-edge:before { + content: "\eb18"; +} +.icon-safari:before { + content: "\eb19"; +} +.icon-opera:before { + content: "\eb1a"; +} +.icon-file-pdf:before { + content: "\eb1b"; +} +.icon-file-openoffice:before { + content: "\eb1c"; +} +.icon-file-word:before { + content: "\eb1d"; +} +.icon-file-excel:before { + content: "\eb1e"; +} +.icon-libreoffice:before { + content: "\eb1f"; +} +.icon-html-five:before { + content: "\eb20"; +} +.icon-html-five2:before { + content: "\eb21"; +} +.icon-css3:before { + content: "\eb22"; +} +.icon-git:before { + content: "\eb23"; +} +.icon-codepen:before { + content: "\eb24"; +} +.icon-svg:before { + content: "\eb25"; +} +.icon-IcoMoon:before { + content: "\eb26"; +} +.buttonPlugin.flexSkip_Rewind_10 { + background-position: -205% 22%; +} +.buttonPlugin.flexSkip_Forward_30 { + background-position: -200% 22%; +} +.buttonPlugin.arrowSlideNavidator.nextButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.buttonPlugin.arrowSlideNavidator.prevButton { + pointer-events: all !important; + font-size: 30px; + text-shadow: 0px 0px 8px white; +} +.arrow-slide-navigator-container { + position: absolute; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; +} +.buttonPlugin.audioTags { + text-align: center; + background-position: -900% -200%; + font-size: 0.8em; + line-height: 20px; + color: black; + text-transform: uppercase; +} +.videoAudioTrackItem { + padding: 10px; + font-size: 20px; + text-transform: uppercase; + cursor: pointer; +} +.videoAudioTrackItem.selected { + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.videoAudioTrackItem:hover { + background-color: #cc0000; +} +.blackBoardDiv { + position: absolute; + /* 16:9 */ + width: 816px; + height: 459px; + top: 135px; + left: 450px; + background-size: 100%; +} +.lensClass { + background-color: rgba(255, 236, 195, 0.3); + position: absolute; + border: 1px dotted white; +} +.lensContainer img { + width: 100% !important; +} +#overlayContainer div.lensContainer { + pointer-events: all; +} +.textBreak { + background-color: rgba(128, 128, 128, 0.7); + text-align: center; + color: white; + line-height: 17px; + font-size: 18px; + padding-top: 10px; + padding-bottom: 10px; + border-radius: 12px; +} +.buttonPlugin.captionsPluginButton { + background-position: 0% -100%; +} +.captionsPluginContainer { + width: 400px; + overflow: hidden; +} +.captionsBar input { + color: black; + background-color: rgba(242, 242, 242, 0.78); + border-color: #fa8533; + width: 49%; + margin-bottom: 0px; + margin-left: 1px; + float: left; +} +.captionsBar select { + width: 39%; + display: inline; + background-color: #fa8533; + border: 1px solid #ccc; + color: white; + margin-bottom: 0px; + height: 31px; +} +.captionsBar button { + float: right; + width: 7%; + min-height: 30px; + min-width: 30px; + margin-right: 2px; + background: url(../images/paella_icons_dark.png); + background-position: -400% -100%; + background-size: 2000% 1000%; + position: static; +} +.captionsBar button:hover { + background-color: #fa8533; +} +.bodyInnerContainer { + margin-bottom: 5px; + display: block; + margin-left: 3px; + height: auto; +} +.captionsBar input:hover { + border-color: #faa166; +} +.captionsBar input:focus { + border-color: #fa8533; +} +.captionsBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.captionsBar input:hover { + border-color: #faa166; +} +.captionsBar input:focus { + border-color: #faa166; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #fa8533; +} +/* CSS OVERLAY */ +.CaptionsOnScreen { + position: absolute; + width: 100%; + height: 100%; + text-align: center; + top: 0; + left: 0; + z-index: 99; +} +.CaptionsOnScreenInner { + background-color: rgba(0, 0, 0, 0.6); + position: relative; + text-align: center; + color: white; + font-size: 17px; + width: 70%; + min-height: 20px; + margin-left: auto; + margin-right: auto; + padding: 8px; + border-radius: 12px; +} +.Highlight { + color: #faa166; + font-weight: bold; +} +#CommentPlugin_Publish_entry_buttons_area { + margin-top: 5px; +} +.comments_entry { + margin: 5px; + margin-bottom: 20px; + width: 90%; +} +.comments_entry_username { + color: #438bc5; + font-size: 14px; + font-family: arial, sans-serif; + font-weight: bold; +} +.comments_entry_datepublish { + color: #999; + font-size: 11px; + font-family: arial, sans-serif; + margin-left: 20px; +} +.comments_entry_comment { + margin-top: 5px; + margin-bottom: 10px; +} +.comments_entry_silhouette { + float: left; + width: 6%; +} +.comments_entry_container { + vertical-align: top; + margin: 10px; + margin-left: 50px; + width: 100%; +} +.comments_entry_container textarea { + width: 98%; + height: 45px; + /*margin-top:10px;*/ + margin-bottom: 5px; + color: #52575c; +} +.CommentPlugin_Publish { + /*box-shadow: inset 0px 0px 10px 2px rgba(10, 10,10, 0.39); */ + border-radius: 7px; + padding: 10px; + padding-bottom: 1px; +} +textarea { + resize: vertical; +} +.reply_button { + color: #999; + font-size: 12px; + font-family: arial, sans-serif; + margin-bottom: 15px; + font-weight: bold; + cursor: pointer; +} +.reply_button:hover { + color: #438bc5; + text-decoration: underline; +} +.buttonPlugin.extendedTabAdapterPlugin { + background-position: -500% -200%; +} +.buttonPluginPopUp.extendedTabAdapterPlugin { + background-image: none; + background-color: rgba(0, 0, 0, 0); +} +.extendedTabAdapterPlugin > .tabsPluginContainer { + width: 600px; + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel { + display: inline; + background-color: rgba(242, 242, 242, 0.78); + line-height: 26px; + padding-left: 10px; + padding-right: 10px; + padding-top: 7px; + padding-bottom: 7px; + cursor: pointer; + cursor: hand; + font-family: sans-serif; + box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.48); + border-radius: 6px 6px 0px 0px; + font-size: 12px; + margin-left: 1px; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.enabled { + cursor: default; + box-shadow: inset 0px 0px 12px rgba(0, 0, 0, 0.9); +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsLabelContainer > .tabLabel.disabled { + background-color: #e6e6e6; + color: black; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer { + height: 200px; + background-color: rgba(242, 242, 242, 0.78); + padding-left: 5px; + padding-top: 9px; + padding-right: 5px; + overflow-y: scroll; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #faa166; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.enabled { + display: block; +} +.extendedTabAdapterPlugin > .tabsPluginContainer > .tabsContentContainer > .tabContent.disabled { + display: none; +} +.buttonPlugin.footPrints { + background-position: -700% 0%; +} +.footPrintsContainer { + height: 20px; + width: 100%; + overflow: hidden; + display: block; +} +.footPrintsCanvas { + width: 100%; + height: 100%; + overflow: hidden; + display: inline-block; +} +.frameControlContainer { + height: 87px; + width: 90%; + overflow: hidden; + display: inline-block; + margin-left: 5%; +} +.frameControl.navButton { + width: 40px; + height: 40px; + display: block; + cursor: pointer; + background-image: url(../images/paella_icons_dark.png); + background-size: 2000% 1000%; + background-position: 100% 100%; + position: absolute; + top: 28px; +} +.frameControl.navButton.left { + background-position: -1600% -100%; + opacity: 0.5; +} +.frameControl.navButton.right { + right: 0px; + opacity: 0.5; + background-position: -1500% -100%; +} +.frameControl.navButton.left:hover { + opacity: 1; +} +.frameControl.navButton.right:hover { + opacity: 1; +} +.frameControlContent { + height: 100px; + overflow: hidden; + padding-top: 6px; +} +.frameControlItem { + width: 140px; + cursor: pointer; + margin-left: 3px; + margin-right: 3px; + float: left; + opacity: 0.8; +} +/*.frameControlItem:hover { + width:94px; + border: 3px dotted #23ff00; + opacity: 1; +}*/ +.frameControlItem.selected { + width: 134px; + border: 3px dotted #fa8533; + opacity: 1; +} +.frameControlItem.current { + width: 134px; + border: 3px solid #fa8533; + opacity: 1; +} +.frameControlImage { + width: 100%; +} +.frameCaption { + position: absolute; + top: 0px; + left: 0px; + right: 0px; + text-align: center; + padding: 5px; + color: black; + text-shadow: 1px 1px 2px #ffffff; +} +.showFramesButton { + position: absolute; + display: block; + width: 40px; + height: 37px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +/* +.showFramesButton:hover { +} +*/ +.showFramesButton_active { + position: absolute; + display: block; + width: 40px; + height: 37px; + right: 0px; + background-size: 300%; + background-image: url(../../resources/images/frame_button.png); +} +.frameListContainer { + background-image: url(../../resources/images/playback_bkg.png); +} +.frameThumbnail { + /* + margin-top:8px; + margin-right:3px; + margin-bottom:8px; + margin-left:3px; +*/ + margin: 8px 3px 8px 3px; + height: 40px; +} +.frameThumbnail:hover { + margin: 0px; + border: 3px #fa8533 solid; + height: 50px; +} +.enabledFrameThumbnail { + border: 3px #fa8533 solid; + height: 50px; +} +.enabledFrameThumbnail:hover { + border: 3px #fa8533 solid; +} +.buttonPlugin.showFullScreenButton { + background-position: -900% 0%; +} +.buttonPlugin.showFullScreenButton.active { + background-position: -1000% 0%; +} +.buttonPlugin.helpButton { + background-position: -1300% 0%; +} +.buttonPlugin.right.liveIndicator { + width: 100px; + height: 40px; + background-image: url(live_video.png); + background-size: 100% 100%; + margin-top: 5px; + margin-right: 5px; +} +/*.showMultipleQualitiesPlugin { + background-image: url(advanced_button.png); + background-size: 300%; +} + +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image:none; +} + +.selectQuality { + padding: 10px; +}*/ +.buttonPlugin.showMultipleQualitiesPlugin { + text-align: center; + font-size: 0.8em; + line-height: 20px; + min-width: 36px; +} +.buttonPluginPopUp.showMultipleQualitiesPlugin { + background-image: none; +} +.selectQuality { + padding: 10px; +} +.multipleQualityItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.multipleQualityItem:hover { + background-color: #faa166; +} +.multipleQualityItem.selected { + color: #fa8533; +} +.multipleQualityItem.selected:hover { + color: black; +} +.buttonPlugin.playButton { + background-position: -500% -100%; +} +.buttonPlugin.pauseButton { + background-position: -100% 0%; +} +.playButtonOnScreen { + position: absolute; + opacity: 0.7; + top: 0; + left: 0; + bottom: 51px; + right: 0; + z-index: 50; + width: 100%; + height: 100%; +} +.playButtonOnScreenIcon { + display: block; + cursor: pointer; + width: 100%; +} +.playbackRateItem { + font-size: 19px; + padding-top: 3px; + padding-bottom: 3px; + cursor: pointer; +} +.playbackRateItem:hover { + background-color: #faa166; +} +.buttonPlugin.showPlaybackRateButton { + text-align: center; + line-height: 20px; + background-position: -600% -100%; + font-size: 1em; +} +.playbackRateItem.selected { + color: #fa8533; +} +.playbackRateItem.selected:hover { + color: black; +} +.buttonPlugin.showPlaybackRateButton { + min-width: 36px; +} +.buttonPlugin.rateButtonPlugin { + text-align: center; + background-position: -700% -200%; + font-size: 0.8em; + line-height: 20px; +} +.buttonPluginPopUp { + right: 0px; +} +.rateButtons { + /*padding: 10px;*/ + width: 250px; +} +.starButton { + display: inline-block; + width: 26px; + height: 26px; + font-size: 25px; +} +.rateButtonPlugin h4 { + margin-left: 10px; +} +.rateButtonPlugin h5 { + margin-left: 19px; +} +.rateButtons .starButton:first-of-type { + margin-left: 19px; +} +.buttonPlugin.searchButton { + background-size: 2000% 1000%; + background-position: -900% -100%; + display: block; +} +.buttonPluginPopUp.searchButton { + position: absolute; +} +.searchPluginContainer { + width: 400px; + overflow: hidden; +} +.searchBar input { + color: black; + background-color: rgba(242, 242, 242, 0.78); + border-color: #fa8533; + width: 96%; + margin-bottom: 0px; + margin-left: 1px; +} +.searchBar input:hover { + border-color: #faa166; +} +.searchBar input:focus { + border-color: #faa166; +} +.searchBody { + max-height: 280px; + overflow-y: scroll; + border: 1px solid black; +} +.sBodyInnerContainer { + display: block; + margin-left: 3px; + min-height: 70px; + border: 1px solid rgba(242, 242, 242, 0.78); +} +.hover { + background-color: #faa166; +} +.redScore { + background-color: rgba(255, 0, 0, 0.2); +} +.greenScore { + background-color: rgba(0, 255, 0, 0.2); +} +.sBodyText { + width: 100%; + display: block; + text-align: left; +} +.timeSpan { + color: #fa8533; + margin-right: 5px; +} +.TimePicContainer { + float: left; + width: 24%; + text-align: center; + margin-right: 5px; +} +.TimePicContainer img { + width: 100%; +} +::-webkit-scrollbar { + width: 8px; +} +::-webkit-scrollbar-button { + width: 8px; + height: 5px; +} +::-webkit-scrollbar-track { + background: #eee; + border: thin solid lightgray; + box-shadow: 0px 0px 3px #dfdfdf inset; + border-radius: 10px; +} +::-webkit-scrollbar-thumb { + background: #fa8533; + border: thin solid gray; + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { + background: #faa166; +} +svg path, +svg rect { + fill: #FF6700; +} +.loader { + float: left; + display: inline-block; + vertical-align: top; +} +.noResults { + margin: 5px; +} +.buttonPlugin.showSocialPluginButton { + background-position: -800% 0%; +} +.buttonPluginPopUp.showSocialPluginButton { + background-image: none; +} +.socialItemButton { + /*crea el popup*/ + width: 20px; + height: 20px; + cursor: pointer; + background-image: url(../images/paella_icons_dark.png); + background-size: 2000% 1000%; + background-position: 0px 0px; +} +.socialItemButton.selected { + /*background-color: rgba(90,90,90,0.8); + border: 3px solid #23ff00;*/ + background-color: rgba(90, 90, 90, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.socialItemButton:hover { + background-color: #faa166; +} +.socialItemButton.facebook { + background-position: -1600% 0%; +} +.socialItemButton.twitter { + background-position: -1400% 0%; +} +.socialItemButton.embed { + background-position: -1500% 0%; +} +.embedSizeButton { + display: inline-block; + background-color: #fa8533; + border: 1px solid #313135; + border-radius: 10px; + cursor: pointer; + margin-right: 5px; + vertical-align: middle; + font-size: 14px; + text-align: center; + color: white; +} +.embedSizeInput { + background-color: #ffffff; + width: 40px; + height: 20px; + color: #000000; + font-size: 12px; + margin: 0px; + padding: 0px; +} +.buttonPlugin.themeChooserPlugin { + background-position: -800% -100%; +} +.buttonPluginPopUp.themeChooserPlugin { + background-image: none; + min-width: 40px; + width: 120px; + text-align: right; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton { + cursor: pointer; + text-align: left; + text-transform: capitalize; + padding-left: 10px; + padding-right: 10px; + padding-top: 3px; + padding-bottom: 3px; +} +.buttonPluginPopUp.themeChooserPlugin .themebutton:hover { + background-color: #faa166; +} +.translecturesCaptionsMessageBox { + margin-left: auto; + margin-right: auto; + text-align: center; + width: 700px; + height: 200px; + font-size: 14px; +} +.translecturesCaptionsMessageBox .title { + color: #635e5e; + font-size: 20px; + margin-bottom: 20px; +} +.translecturesCaptionsMessageBox .authMethodsContainer { + margin-left: auto; + margin-right: auto; + width: 500px; + height: 200px; + margin-top: 10px; + position: relative; +} +.translecturesCaptionsMessageBox .authMethodsContainer .authMethod { + display: inline-block; + width: 200px; + height: 200px; + /* + position:absolute; + left: 0px; +*/ +} +.buttonPlugin.left.videoData { + height: auto; + width: 100%; + margin-top: 5px; + margin-left: auto; + margin-right: auto; + background-color: rgba(0, 0, 0, 0.6); +} +.buttonPlugin.left.videoData h1 { + color: white; + padding: 0px 0px 0px 20px; + margin: 0px; +} +@media (max-width: 400px) { + .buttonPlugin.left.videoData h1 { + font-size: 16px; + line-height: 24px; + } +} +@media (min-width: 401px) and (max-width: 800px) { + .buttonPlugin.left.videoData h1 { + font-size: 20px; + line-height: 34px; + } +} +@media (min-width: 801px) { + .buttonPlugin.left.videoData h1 { + font-size: 30px; + line-height: 44px; + } +} +.buttonPlugin.right.videoZoom { + width: 200px; + background-image: none; + position: absolute; + right: 0px; + top: 0px; + text-align: right; +} +.buttonPlugin.right.videoZoom:hover { + background-color: transparent !important; +} +.buttonPlugin.right.videoZoom:active { + background-color: transparent !important; +} +.zoom-thumbnail { + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; +} +.zoom-container { + width: 160px; + height: 90px; + margin: 5px; + box-sizing: border-box; + box-shadow: 0px 0px 3px 0px black; + border-radius: 2px; + position: relative; + right: 0px; +} +.zoom-rect { + background-color: rgba(255, 255, 255, 0.5); + position: absolute; + top: 0px; + left: 0px; + border: 1px solid #0e0e0e; +} +/* The canvas "freeze frame" to overlay video element, instead of flex side aligned */ +.freezeFrame { + align-self: center; + position: absolute; +} +.videoZoomButton { + z-index: 1; + margin-left: 2px; + margin-right: 2px; + margin-top: 4px; + opacity: 0.2; + background: white; + font-size: 2em; + padding: 0px 4px 0px 4px; + box-shadow: 2px 2px 5px 0px black; + width: 30px; + height: 30px; + position: relative; + left: 40%; +} +.videoZoomButton:hover { + opacity: 0.999; +} +.videoZoomButton:active { + opacity: 0.999; +} +@media (max-width: 600px) { + .buttonPlugin.right.videoZoom { + width: 89px; + } + .zoom-container { + width: 80px; + height: 45px; + } +} +@media (max-width: 800px) and (min-width: 601px) { + .buttonPlugin.right.videoZoom { + width: 100px; + } + .zoom-container { + width: 120px; + height: 68px; + } +} +.videoZoomToolbarItem { + width: 30px; + height: 30px; + cursor: pointer; + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + font-size: 20px; +} +.buttonPluginPopUp.showViewModeButton { + background-image: none; +} +.buttonPlugin.showViewModeButton { + background-position: -1100% 0%; +} +.viewModeItemButton { + background-image: url(../images/paella_icons_dark.png); + width: 80px; + height: 40px; + cursor: pointer; + background-size: 100% 100% !important; + background-position: 0px 0px ! important; + background-color: white; +} +.viewModeItemButton:hover { + background-color: #faa166; +} +.viewModeItemButton.selected { + /*background-position: 78px 0;*/ + background-color: rgba(211, 211, 211, 0.8); + box-shadow: inset 0px 0px 2px 2px #fa8533; +} +.viewModeItemButton.slide_professor { + background-position: 80px -80px; +} +.viewModeItemButton.professor_slide { + background-position: 80px -120px; +} +.viewModeItemButton.professor { + background-position: 80px -40px; +} +.viewModeItemButton.slide_over_professor { + background-position: 80px -200px; +} +.viewModeItemButton.slide_over_professor_right { + background-position: 80px -160px; +} +.viewModeItemButton.s_p_blackboard2 { + background-position: 80px -240px; +} +.viewModeItemButton.professor_over_slide { + background-position: 80px -320px; +} +.viewModeItemButton.professor_over_slide_right { + background-position: 80px -280px; +} +.viewModeItemButton.slide { + background-position: 80px 0px; +} +.viewModeItemButton.chroma { + background-position: 80px -360px; +} +.buttonPlugin.volumeRangeButton.mute { + background-position: -300% 0%; +} +.buttonPlugin.volumeRangeButton.max { + background-position: -600% 0%; +} +.buttonPlugin.volumeRangeButton.med { + background-position: -500% 0%; +} +.buttonPlugin.volumeRangeButton.min { + background-position: -400% 0%; +} +.buttonPluginPopUp.volumeRangeButton { + position: absolute; + /* right: -220px; */ +} +.videoRangeContainer { + width: 260px; +} +span.videoRangeButton.expandable-content { + padding-top: 10px; +} +/* Range control */ +.volumeRangeButton input[type=range] { + display: inline-block; + width: 80px; + height: 12px; +} +input[type=range] { + -webkit-appearance: none; + width: 100%; + margin: 6.2px 0; + background-color: transparent; +} +input[type=range]:focus { + outline: none; +} +input[type=range]::-webkit-slider-runnable-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-webkit-slider-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + -webkit-appearance: none; + margin-top: -7.4px; +} +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ffffff; +} +input[type=range]::-moz-range-track { + width: 100%; + height: 4.6px; + cursor: pointer; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; + background: #ffffff; + border-radius: 1.9px; + border: 1.2px solid #010101; +} +input[type=range]::-moz-range-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 17px; + width: 16px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; +} +input[type=range]::-ms-track { + width: 100%; + height: 4.6px; + cursor: pointer; + background: transparent; + border-color: transparent; + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #f2f2f2; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-fill-upper { + background: #ffffff; + border: 1.2px solid #010101; + border-radius: 3.8px; + box-shadow: 0px 0px 0.2px #000000, 0px 0px 0px #0d0d0d; +} +input[type=range]::-ms-thumb { + box-shadow: 1.1px 1.1px 2.7px #000000, 0px 0px 1.1px #0d0d0d; + border: 2.8px solid rgba(0, 0, 0, 0.41); + height: 14px; + width: 14px; + border-radius: 13px; + background: #ffffff; + cursor: pointer; + margin-top: -2px; +} +input[type=range]:focus::-ms-fill-lower { + background: #ffffff; +} +input[type=range]:focus::-ms-fill-upper { + background: #ffffff; +} +.cc-window { + opacity: 1; + transition: opacity 1s ease; +} +.cc-window.cc-invisible { + opacity: 0; +} +.cc-animate.cc-revoke { + transition: transform 1s ease; +} +.cc-animate.cc-revoke.cc-top { + transform: translateY(-2em); +} +.cc-animate.cc-revoke.cc-bottom { + transform: translateY(2em); +} +.cc-animate.cc-revoke.cc-active.cc-bottom, +.cc-animate.cc-revoke.cc-active.cc-top, +.cc-revoke:hover { + transform: translateY(0); +} +.cc-grower { + max-height: 0; + overflow: hidden; + transition: max-height 1s; +} +.cc-link, +.cc-revoke:hover { + text-decoration: underline; +} +.cc-revoke, +.cc-window { + position: fixed; + overflow: hidden; + box-sizing: border-box; + font-family: Helvetica, Calibri, Arial, sans-serif; + font-size: 16px; + line-height: 1.5em; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + z-index: 9999; +} +.cc-window.cc-static { + position: static; +} +.cc-window.cc-floating { + padding: 2em; + max-width: 24em; + -ms-flex-direction: column; + flex-direction: column; +} +.cc-window.cc-banner { + padding: 1em 1.8em; + width: 100%; + -ms-flex-direction: row; + flex-direction: row; +} +.cc-revoke { + padding: 0.5em; +} +.cc-header { + font-size: 18px; + font-weight: 700; +} +.cc-btn, +.cc-close, +.cc-link, +.cc-revoke { + cursor: pointer; +} +.cc-link { + opacity: 0.8; + display: inline-block; + padding: 0.2em; +} +.cc-link:hover { + opacity: 1; +} +.cc-link:active, +.cc-link:visited { + color: initial; +} +.cc-btn { + display: block; + padding: 0.4em 0.8em; + font-size: 0.9em; + font-weight: 700; + border-width: 2px; + border-style: solid; + text-align: center; + white-space: nowrap; +} +.cc-highlight .cc-btn:first-child { + background-color: transparent; + border-color: transparent; +} +.cc-highlight .cc-btn:first-child:focus, +.cc-highlight .cc-btn:first-child:hover { + background-color: transparent; + text-decoration: underline; +} +.cc-close { + display: block; + position: absolute; + top: 0.5em; + right: 0.5em; + font-size: 1.6em; + opacity: 0.9; + line-height: 0.75; +} +.cc-close:focus, +.cc-close:hover { + opacity: 1; +} +.cc-revoke.cc-top { + top: 0; + left: 3em; + border-bottom-left-radius: 0.5em; + border-bottom-right-radius: 0.5em; +} +.cc-revoke.cc-bottom { + bottom: 0; + left: 3em; + border-top-left-radius: 0.5em; + border-top-right-radius: 0.5em; +} +.cc-revoke.cc-left { + left: 3em; + right: unset; +} +.cc-revoke.cc-right { + right: 3em; + left: unset; +} +.cc-top { + top: 1em; +} +.cc-left { + left: 1em; +} +.cc-right { + right: 1em; +} +.cc-bottom { + bottom: 1em; +} +.cc-floating > .cc-link { + margin-bottom: 1em; +} +.cc-floating .cc-message { + display: block; + margin-bottom: 1em; +} +.cc-window.cc-floating .cc-compliance { + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.cc-window.cc-banner { + -ms-flex-align: center; + align-items: center; +} +.cc-banner.cc-top { + left: 0; + right: 0; + top: 0; +} +.cc-banner.cc-bottom { + left: 0; + right: 0; + bottom: 0; +} +.cc-banner .cc-message { + display: block; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + max-width: 100%; + margin-right: 1em; +} +.cc-compliance { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-line-pack: justify; + align-content: space-between; +} +.cc-floating .cc-compliance > .cc-btn { + -ms-flex: 1; + flex: 1; +} +.cc-btn + .cc-btn { + margin-left: 0.5em; +} +@media print { + .cc-revoke, + .cc-window { + display: none; + } +} +@media screen and (max-width: 900px) { + .cc-btn { + white-space: normal; + } +} +@media screen and (max-width: 414px) and (orientation: portrait), screen and (max-width: 736px) and (orientation: landscape) { + .cc-window.cc-top { + top: 0; + } + .cc-window.cc-bottom { + bottom: 0; + } + .cc-window.cc-banner, + .cc-window.cc-floating, + .cc-window.cc-left, + .cc-window.cc-right { + left: 0; + right: 0; + } + .cc-window.cc-banner { + -ms-flex-direction: column; + flex-direction: column; + } + .cc-window.cc-banner .cc-compliance { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + } + .cc-window.cc-floating { + max-width: none; + } + .cc-window .cc-message { + margin-bottom: 1em; + } + .cc-window.cc-banner { + -ms-flex-align: unset; + align-items: unset; + } + .cc-window.cc-banner .cc-message { + margin-right: 0; + } +} +.cc-floating.cc-theme-classic { + padding: 1.2em; + border-radius: 5px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-compliance { + text-align: center; + display: inline; + -ms-flex: none; + flex: none; +} +.cc-theme-classic .cc-btn { + border-radius: 5px; +} +.cc-theme-classic .cc-btn:last-child { + min-width: 140px; +} +.cc-floating.cc-type-info.cc-theme-classic .cc-btn { + display: inline-block; +} +.cc-theme-edgeless.cc-window { + padding: 0; +} +.cc-floating.cc-theme-edgeless .cc-message { + margin: 2em 2em 1.5em; +} +.cc-banner.cc-theme-edgeless .cc-btn { + margin: 0; + padding: 0.8em 1.8em; + height: 100%; +} +.cc-banner.cc-theme-edgeless .cc-message { + margin-left: 1em; +} +.cc-floating.cc-theme-edgeless .cc-btn + .cc-btn { + margin-left: 0; +} +.paella-profile-button { + background-color: lightgray; + border: none; + border-radius: 10%; + box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.9); +} +.paella-profile-button:hover { + background-color: #9b9b9b; +} +.paella-profile-button:active { + background-color: #000000; +} +.buttonPlugin.AirPlayButton { + background-position: -1100% -100%; +} +.buttonPlugin.AirPlayButton.not-available { + opacity: 0.4; +} +.buttonPlugin.legal { + pointer-events: all; + padding-right: 5px; + height: 20px; + text-align: right; + padding: 1px; + margin: 1px; + margin-right: 12px; + margin-top: -7px; + margin-bottom: 4px; + width: auto; +} +.buttonPlugin.legal a { + color: lightgrey !important; + text-decoration: underline !important; +} +.buttonPlugin.legal a:hover { + background-color: transparent !important; + font-weight: bold !important; +} +.buttonPlugin.legal:hover { + background-color: transparent !important; +} +.buttonPlugin.PIPModeButton { + background-position: -1000% -100%; +} +.related-video-container { + z-index: 5; + background-color: rgba(255, 255, 255, 0.7); +} +.related-video-container .related-video-link { + width: 30%; + overflow: hidden; + display: block; + background-color: white; + padding: 3px; + box-shadow: 1px 1px 3px 0px black; + position: absolute; + pointer-events: all; +} +.related-video-container .related-video-link.related-video-single { + width: 50%; + left: 25%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-1 { + width: 30%; + left: 10%; + top: 30%; +} +.related-video-container .related-video-link.related-video-dual-2 { + width: 30%; + right: 10%; + top: 30%; +} +.related-video-container .related-video-link img { + width: 100%; +} +.related-video-container .related-video-link p { + width: 100%; + text-align: center; +} +.buttonPlugin.showEditorButton { + pointer-events: all; +} +.buttonPluginPopUp.videoZoomToolbar { + width: 50px; + text-align: center; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-videocamera { + font-size: 27px; + margin-left: -2px; +} +.buttonPlugin.right.videoZoomToolbar i.button-icon.icon-mini-zoom-in { + font-size: 29px; + margin-left: -6px; +} +.autoTrackingActivated { + color: red !important; +} +html { + margin: 0px; +} +body { + font-family: 'Ubuntu', sans-serif; + margin: 0px; +} +pre { + padding: 20px; + border-bottom: 2px solid #cc0000; + border-top: 2px solid #cc0000; +} +iframe { + margin-left: auto; + margin-right: auto; + display: block; +} +h2 { + color: #909090; +} +h1 { + color: #cc0000; +} +.alignCenter { + display: block; + margin-right: auto; + margin-left: auto; + max-width: 90%; +} +.image { + background-size: 100% auto; + background-repeat: no-repeat; +} +#logo { + background-image: url(logo_paella.png); + width: 140px; + height: 140px; + float: left; +} +.pageHeader { + background-color: white; + padding: 20px; + border-bottom: 1px solid #cc0000; + height: 170px; +} +.content { + width: 100%; + background-color: white; + margin-left: auto; + margin-right: auto; + max-width: 1100px; + padding-left: 30px; + padding-right: 30px; +} +.content.page { + margin-top: 0px; + padding-top: 30px; + padding-bottom: 100px; +} +#headerText { + font-family: 'Varela Round', sans-serif; + font-size: 60pt; + display: block; + width: 100%; + line-height: 90px; + margin-left: 157px; +} +#headerSubtitle { + display: block; + width: 100%; + margin-left: 160px; + font-size: 28px; + color: gray; +} +.logoGroup { + width: 660px; + float: left; + margin-top: 20px; +} +a { + color: #fa8528; +} +a:visited { + color: #fa8528; +} +a:hover { + color: #fba352; +} +a:active { + color: #ffb055; +} +.linkButton { + font-size: 20px; + color: white; + background-color: #fa8528; + padding: 20px; + border-radius: 5px; + border: 1.6pt solid #BA631E; + box-shadow: inset -3px -5px 10px 0px #D9711D; + display: inline-block; + text-decoration: none; + text-align: center; +} +.linkButton.small { + padding: 10px; + font-size: 12px; +} +.linkButton:hover { + color: white; + background-color: #FFA863; +} +.linkButton:active { + color: white; + box-shadow: inset 3px 5px 20px 0px #D9711D; +} +.buttonGroup#downloads { + width: 233px; + padding-top: 5px; + margin-bottom: 30px; + margin-left: auto; + margin-right: auto; +} +#githubLink { + display: block; +} +#resourcesLink { + display: block; +} +#downloadPaella3 { + display: block; + width: 189px; + margin-top: 55px; + margin-left: auto; + margin-right: auto; + color: white; +} +.downloadGroup { + width: 250px; + float: right; +} +.footerText { + display: inline-block; + height: 50px; + vertical-align: top; + margin-right: 10px; + font-size: 10px; +} +.sponsorLogo { + width: 100px; + display: inline-block; +} +.content.footer { + border-top: 4px solid #fa8528; + padding-top: 10px; +} +.menu { + margin-top: 165px; +} +.menuItem { + list-style-type: none; + display: inline; + margin-right: 30px; +} +.menuItemLink { + cursor: pointer; +} +.menuItemLink.current { + color: gray; +} +.element { + margin-left: auto; + display: block; + margin-right: auto; + width: 65%; +} +.imgen { + margin-left: auto; + width: 100%; +} +.txtblock { + color: black; + font-size: large; + font-family: 'Istok Web', sans-serif; + font-style: oblique; +} diff --git a/src/main/webapp/static/js/paella/player/resources/style/three_streams_icon.svg b/src/main/webapp/static/js/paella/player/resources/style/three_streams_icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..de8ea17c0ff04f4549c7138d9bf35a39b67eec1c --- /dev/null +++ b/src/main/webapp/static/js/paella/player/resources/style/three_streams_icon.svg @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 57 36" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> + <g transform="matrix(1,0,0,1,-11,-242)"> + <g id="present-mode-1" transform="matrix(0.433529,0,0,0.433529,23.5922,269.247)"> + <g transform="matrix(1,0,0,1,-23,-17)"> + <g transform="matrix(1,0,0,1,5,0)"> + <path d="M41,34L-5,34L-5,0L41,0L41,34ZM20,22L24.998,30.289C25.21,30.807 25.325,31.582 24.923,31.74C24.361,31.961 23.869,31.935 23.639,31.566L18.598,23.508L13.441,31.566C12.869,32.144 12.275,32.057 12.039,31.861C11.805,31.667 11.623,31.16 12.081,30.289L17,22L5,22L5,5L3,5L3,3L33,3L33,5L31,5L31,22L20,22ZM7,5L29,5L29,20L7,20L7,5ZM15.459,10.085L9.145,17.338L8.52,16.818L15.435,8.876L19.923,13.35L26.11,7.301L26.69,7.869L19.921,14.484L15.459,10.085Z"/> + </g> + </g> + </g> + <g id="present-mode-2" transform="matrix(0.598445,0,0,0.598445,39.5,253.173)"> + <g transform="matrix(1,0,0,1,-23,-17)"> + <path d="M46,29.891L30.034,29.891L30.034,34L15.909,34L15.909,29.891L0,29.891L0,0L46,0L46,29.891ZM32.092,17L13.908,17C13.428,17 13.036,17.385 13.036,17.86L13.036,19.14C13.036,19.615 13.428,20 13.908,20L18.945,20L18.945,31L27.055,31L27.055,20L32.092,20C32.572,20 32.964,19.615 32.964,19.14L32.964,17.86C32.964,17.385 32.572,17 32.092,17ZM30.088,16C30.086,15.984 29.642,11.315 29.018,10.039C28.392,8.762 25.281,8.717 25.281,8.717C25.281,8.717 24.564,12.025 24.373,12.654C24.18,13.284 24.141,13.43 24.141,13.43C24.141,13.43 23.655,10.234 23.57,9.91C23.507,9.666 23.089,9.65 23,9.65C22.911,9.65 22.493,9.678 22.429,9.921C22.345,10.246 21.996,13.359 21.996,13.359C21.996,13.359 21.89,13.284 21.698,12.654C21.506,12.025 20.719,8.717 20.719,8.717C20.719,8.717 17.608,8.762 16.982,10.039C16.357,11.317 15.912,16 15.912,16L30.088,16ZM24.141,8.717C24.202,8.978 23.363,9.54 23.363,9.54L22.692,9.524C22.692,9.524 21.798,8.978 21.859,8.717C21.916,8.477 22.682,8.503 23,8.5C23.32,8.503 24.084,8.477 24.141,8.717ZM23,1.133C24.735,1.133 26.143,2.638 26.143,4.491C26.143,6.344 24.735,7.848 23,7.848C21.265,7.848 19.857,6.344 19.857,4.491C19.857,2.638 21.265,1.133 23,1.133Z"/> + </g> + </g> + <g id="present-mode-21" serif:id="present-mode-2" transform="matrix(0.433529,0,0,0.433529,55.4115,269.247)"> + <g transform="matrix(1,0,0,1,-23,-17)"> + <path d="M46,29.891L30.034,29.891L30.034,34L15.909,34L15.909,29.891L0,29.891L0,0L46,0L46,29.891ZM32.092,17L13.908,17C13.428,17 13.036,17.385 13.036,17.86L13.036,19.14C13.036,19.615 13.428,20 13.908,20L18.945,20L18.945,31L27.055,31L27.055,20L32.092,20C32.572,20 32.964,19.615 32.964,19.14L32.964,17.86C32.964,17.385 32.572,17 32.092,17ZM30.088,16C30.086,15.984 29.642,11.315 29.018,10.039C28.392,8.762 25.281,8.717 25.281,8.717C25.281,8.717 24.564,12.025 24.373,12.654C24.18,13.284 24.141,13.43 24.141,13.43C24.141,13.43 23.655,10.234 23.57,9.91C23.507,9.666 23.089,9.65 23,9.65C22.911,9.65 22.493,9.678 22.429,9.921C22.345,10.246 21.996,13.359 21.996,13.359C21.996,13.359 21.89,13.284 21.698,12.654C21.506,12.025 20.719,8.717 20.719,8.717C20.719,8.717 17.608,8.762 16.982,10.039C16.357,11.317 15.912,16 15.912,16L30.088,16ZM24.141,8.717C24.202,8.978 23.363,9.54 23.363,9.54L22.692,9.524C22.692,9.524 21.798,8.978 21.859,8.717C21.916,8.477 22.682,8.503 23,8.5C23.32,8.503 24.084,8.477 24.141,8.717ZM23,1.133C24.735,1.133 26.143,2.638 26.143,4.491C26.143,6.344 24.735,7.848 23,7.848C21.265,7.848 19.857,6.344 19.857,4.491C19.857,2.638 21.265,1.133 23,1.133Z"/> + </g> + </g> + </g> +</svg> diff --git a/src/main/webapp/static/themes/light/modules/_course.scss b/src/main/webapp/static/themes/light/modules/_course.scss index 396f73dd6de2059376eb082ce0b6884654a961c5..953da255d75535d61874aae998e46272b6d80e03 100644 --- a/src/main/webapp/static/themes/light/modules/_course.scss +++ b/src/main/webapp/static/themes/light/modules/_course.scss @@ -340,3 +340,32 @@ div.o_correction_navigation { font-weight: bold; } } + +/** live stream course element */ + +.o_browser_ie10, .o_browser_ie11 { + .o_paella_wrapper { + iframe { + display: none; + } + + .o_paella_error { + display: block; + } + } +} + +.o_paella_wrapper { + iframe { + width: 100%; + height: 400px; + @media (max-width: $screen-sm-min) { + height: 300px; + } + } + + .o_paella_error { + display: none; + } +} + diff --git a/src/main/webapp/static/themes/light/modules/_icons.scss b/src/main/webapp/static/themes/light/modules/_icons.scss index becd778a4e6f7dbe11c64fc3fc9c74c63b8762be..10411d85eb3de89d4deed8dd8e337ccb2d70bd97 100644 --- a/src/main/webapp/static/themes/light/modules/_icons.scss +++ b/src/main/webapp/static/themes/light/modules/_icons.scss @@ -289,6 +289,7 @@ $fa-css-prefix: "o_icon" !default; .o_icon_show_more:before { content: $fa-var-toggle-down; } .o_icon_show_less:before { content: $fa-var-toggle-up; } .o_icon_show_send:before { content: $fa-var-paper-plane-o; } +.o_icon_shuffle:before { content: $fa-var-random;} .o_icon_sign_out:before { content: $fa-var-sign-out; } .o_icon_slide_down:before { content: $fa-var-chevron-down; } .o_icon_slide_up:before { content: $fa-var-chevron-up; } diff --git a/src/main/webapp/static/themes/light/modules/_qti21.scss b/src/main/webapp/static/themes/light/modules/_qti21.scss index 20475ef91a5b1d2b95713bdacc93e6beeec33231..b94972ccf29d11266e8e44101b1b7670ec87d669 100644 --- a/src/main/webapp/static/themes/light/modules/_qti21.scss +++ b/src/main/webapp/static/themes/light/modules/_qti21.scss @@ -213,6 +213,11 @@ img.o_hotspot_responsive[usemap] { padding: 2px 5px; } +span.o_qti_gaptext_score_alternative { + padding-left: 2em; + color: $gray; +} + /* Essay extended text */ .o_qti_item_body .extendedTextInteraction { margin: 15px 0; @@ -1301,6 +1306,7 @@ table.o_qti_item_kprim { .o_assessmentitem .questionTitle { margin-right: 1em; + overflow-wrap: break-word; } } diff --git a/src/main/webapp/static/themes/light/theme.css b/src/main/webapp/static/themes/light/theme.css index 55dbea30e56c8d744c2e148d39ec6143fb61e295..f2aff8e1f05494d9ee23139e1230823071b4f95a 100644 --- a/src/main/webapp/static/themes/light/theme.css +++ b/src/main/webapp/static/themes/light/theme.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fcfcfc;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fcfcfc;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fcfcfc;border-color:#ccc}.btn-default .badge{color:#fcfcfc;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fcfcfc;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#337ab7;background-color:#fcfcfc;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fcfcfc;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fcfcfc;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fcfcfc;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fcfcfc;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body div.popover input{max-width:100%}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@media screen and (max-width: 768px){@supports (-webkit-overflow-scrolling: touch){.form-control,.ui-widget input,.ui-widget select,.ui-widget textarea{font-size:16px}}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.woff") format("woff"),url("../light/fonts/openolat/openolat.ttf") format("truetype"),url("../light/fonts/openolat/openolat.svg") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot");src:url("../../font-awesome/fonts/fontawesome-webfont.woff2") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf") format("truetype");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.2857142857em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.o_icon-li.o_icon-lg{left:-1.8571428571em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_absence:before{content:"ï€"}.o_icon_absence_authorized:before{content:"ï";color:#5cb85c}.o_icon_absence_unauthorized:before{content:"ïª";color:#d9534f}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_align_left:before{content:""}.o_icon_align_middle:before{content:""}.o_icon_align_right:before{content:""}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—";color:#bc2d0c}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_cancelled:before{content:"ïž"}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before,.o_search_result .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_column:before{content:""}.o_icon_columns:before{content:""}.o_icon_container:before{content:""}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_compulsory:before{content:"ï©"}.o_icon_content_popup:before{content:"ï‚Ž"}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correct_response:before{content:"ï";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_curriculum_element:before{content:""}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:"ï„Œ"}.o_icon_dispensation_authorized:before{content:"ï";color:#5cb85c}.o_icon_dispensation_unauthorized:before{content:"ï±";color:#f0ad4e}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:"ï‚Ž"}.o_icon_extra_time:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_fileupload:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_incorrect_response:before{content:"ïœ";color:#d9534f}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inheritance_root:before{content:"ï‚«"}.o_icon_inheritance_inherited:before{content:""}.o_icon_inheritance_none:before{content:"ï„Œ"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_lecture:before{content:"ï€"}.o_icon_left:before{content:""}.o_icon_levels:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:"ï‚Ž"}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_log:before{content:"ï…œ"}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_ms_done:before{content:""}.o_icon_ms_pending:before{content:"ï‹"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_node_up_down:before{content:"ï½"}.o_icon_notes:before{content:""}.o_icon_notice_authorized:before{content:"ï";color:#5cb85c}.o_icon_notice_unauthorized:before{content:"ï±";color:#f0ad4e}.o_icon_notification:before{content:"ï‚ž"}.o_icon_number_of:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before,.o_search_result .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_origin:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_presence:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:"ï‚š"}.o_icon_provider_google:before{content:"ï† "}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_tequila:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_pull:before{content:""}.o_icon_quota:before{content:""}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:"ï„Œ"}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:"ï„Œ"}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_reopen:before{content:"ï„’"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_reset:before{content:"ïˆ"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_reviewer:before{content:""}.o_icon_right:before{content:"ï‚©"}.o_icon_rss:before{content:"ï‚ž"}.o_icon_rss_unsubscribe:before{content:"ï‚ž";color:#996633}.o_icon_rubric:before{content:""}.o_icon_rubric_insufficient:before{content:"ï—";color:#d9534f}.o_icon_rubric_sufficient:before{content:"ï˜";color:#5cb85c}.o_icon_rubric_neutral:before{content:"ïª";color:#f0ad4e}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:""}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:"ï„Œ"}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_time:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_timetable:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tool_pdf:before{content:"ï‡"}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_unlocked:before{content:"ï‚œ"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_update:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_width_expand:before{content:"ï¥"}.o_icon_width_collapse:before{content:"ï¦"}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:"ï‚Ž"}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:"ï„š"}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_icon_repo_status_preparation:before{content:"ï€"}.o_icon_repo_status_review:before{content:""}.o_icon_repo_status_coachpublished:before{content:""}.o_icon_repo_status_published:before{content:""}.o_icon_repo_status_closed:before{content:"ïž"}.o_icon_repo_status_trash:before{content:""}.o_icon_repo_status_deleted:before{content:""}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:"ï‚Ž"}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:"ï‚Ž"}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:"ï„š"}.o_survey_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:"ï„Œ"}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:"\E800";font-family:openolat;font-size:120%}.o_edubase_icon:before{content:"\E885";font-family:openolat}.o_livestream_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:"ï‚ž"}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_icon_qitem_commands:before{content:"ï‚…"}.o_icon_qitem_convert:before{content:""}.o_icon_qitem_copy:before{content:""}.o_icon_qitem_delete:before{content:""}.o_icon_qitem_draft:before{content:"ï€"}.o_icon_qitem_endOfLife:before{content:""}.o_icon_qitem_finalVersion:before{content:""}.o_icon_qitem_export:before{content:""}.o_icon_qitem_hide_metadata:before{content:""}.o_icon_qitem_import:before{content:"ï‚“"}.o_icon_qitem_new:before{content:"ï•"}.o_icon_qitem_review:before{content:""}.o_icon_qitem_revised:before{content:""}.o_icon_qitem_share:before{content:"ï¤"}.o_icon_qitem_show_metadata:before{content:""}.o_icon_qitem_status:before{content:"ï¡"}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_new_entry:before{content:"ï€"}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_icon_pf_trash:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimatch_truefalse:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_as_mode_stop:before{content:"ï"}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_lectures_current:before{content:"ï„‘";color:#f0ad4e}.o_lectures_next:before{content:""}.o_lectures_pending:before{content:"ï„‘";color:#d9534f}.o_lectures_closed:before{content:"ï„‘"}.o_lectures_rollcall_ok:before{content:"ï„‘";color:#5cb85c}.o_lectures_rollcall_warning:before{content:"ï‚";color:#f0ad4e}.o_lectures_rollcall_danger:before{content:"ï„Œ";color:#d9534f}.o_lectures_rollcall_free:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_notice:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_pending:before{content:"";color:#b8b8b8}.o_lectures_attended:before{content:"ï„‘";color:#5cb85c}.o_lectures_authorized:before{content:"ï„‘";color:#f0ad4e}.o_lectures_absent:before{content:"ï„‘";color:#d9534f}.o_absences_col_warning:before{content:"ï±"}.o_absences_col_alert:before{content:"ïª"}.o_icon_taxonomy:before{content:""}.o_icon_taxonomy_level:before{content:""}.o_icon_taxonomy_level_leaf:before{content:"ï„•"}.o_icon_taxonomy_templates:before{content:""}.o_icon_taxonomy_levels:before{content:""}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_icon_identity_permanent:before{content:""}.o_icon_identity_pending:before{content:""}.o_icon_identity_login_denied:before{content:"ïž"}.o_icon_identity_deleted:before{content:""}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_guests_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}.o_icon_eva_disclaimer:before{content:""}.o_icon_eva_end_show:before{content:"ï¾"}.o_icon_eva_end_hide:before{content:"ï…¸"}.o_icon_eva_export:before{content:""}.o_icon_eva_pdf:before{content:"ï‡"}.o_icon_eva_print:before{content:""}.o_icon_eva_session_info:before{content:"ï„©"}.o_icon_eva_mc:before{content:"ï†"}.o_icon_eva_sc:before{content:""}.o_icon_eva_sc:before{content:""}.o_icon_surv_reset:before{content:"ï„"}.o_icon_qual_ana_hide_filter:before{content:""}.o_icon_qual_ana_pres_edit:before{content:"ï‚"}.o_icon_qual_ana_export:before{content:""}.o_icon_qual_ana_pres_delete:before{content:"ïž"}.o_icon_qual_ana_pdf:before{content:"ï‡"}.o_icon_qual_ana_print:before{content:""}.o_icon_qual_ana_show_filter:before{content:""}.o_icon_qual_ana_trend:before{content:"ïˆ"}.o_icon_qual_ana_trend_arrow:before{content:"ï‚©"}.o_icon_qual_dc_create:before{content:"ï•"}.o_icon_qual_dc_delete:before{content:""}.o_icon_qual_dc_finished:before{content:"ï˜"}.o_icon_qual_dc_preparation:before{content:"ï„"}.o_icon_qual_dc_ready:before{content:"ï€"}.o_icon_qual_dc_running:before{content:"ï…„"}.o_icon_qual_exec_future:before{content:"ïœ"}.o_icon_qual_exec_over:before{content:"ï—"}.o_icon_qual_exec_participating:before{content:"ï…„"}.o_icon_qual_exec_participated:before{content:"ï˜"}.o_icon_qual_exec_ready:before{content:"ï€"}.o_icon_qual_gen_ce_add:before{content:"ï•"}.o_icon_qual_gen_create:before{content:"ï•"}.o_icon_qual_gen_delete:before{content:""}.o_icon_qual_gen_disabled:before{content:"ïž"}.o_icon_qual_gen_enabled:before{content:""}.o_icon_qual_gen_re_add:before{content:"ï•"}.o_icon_qual_part_user_add:before{content:""}.o_icon_qual_part_user_add_course:before{content:""}.o_icon_qual_part_user_add_curele:before{content:""}.o_icon_qual_part_execute:before{content:"ï‹"}.o_icon_lic_add:before{content:"ï•"}.o_icon_lic_public_domain:before{content:"\E810";font-family:openolat;font-size:120%}.o_icon_lic_cc0:before{content:"\E811";font-family:openolat;font-size:120%}.o_icon_lic_by:before{content:"\E812";font-family:openolat;font-size:120%}.o_icon_lic_by_sa:before{content:"\E813";font-family:openolat;font-size:120%}.o_icon_lic_by_nd:before{content:"\E814";font-family:openolat;font-size:120%}.o_icon_lic_by_nc:before{content:"\E815";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_sa:before{content:"\E817";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_nd:before{content:"\E819";font-family:openolat;font-size:120%}.o_icon_lic_all_rights_reserved:before{content:""}.o_icon_lic_freetext:before{content:""}.o_icon_lic_general:before{content:""}.o_icon_lic_youtube:before{content:"ï…¦"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_small_bottom,.o_block_small{margin-bottom:0.5em}.o_block_small_top,.o_block_small{margin-top:0.5em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_move_up{margin-top:-1em}.o_block_move_up_small{margin-top:-0.5em}.o_block_move_up_large{margin-top:-2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block;vertical-align:top}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.6666666667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.o_button_textstyle:before{content:'['}.o_button_textstyle:after{content:']'}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#ccc;border-radius:10px;background-color:#fcfcfc}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-top:none;border-left:none;border-right:none;color:#888;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:11px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:20px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_highlight_on_hover:hover{background-color:#f5f5f5}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_copy_code input,.o_copy_code textarea,.b_copy_code input,code input,pre input,.b_copy_code textarea,code textarea,pre textarea{border:0;width:90%;background:transparent}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_figure_caption_bottom{display:inline-block;min-width:50%}.o_figure_caption_bottom figure{display:table}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_page_margins{padding:25px}.o_dragable,.o_page_fragment_edit .o_page_tools_dd:before,.o_page_drop{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.o_dragable:active,.o_page_fragment_edit .o_page_tools_dd:active:before,.o_page_drop:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging,.gu-mirror{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging:active,.gu-mirror:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_hidden{visibility:hidden}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4,.o_cal .fc-header-title h2{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}fieldset legend{color:#333}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{line-height:1.428571429;vertical-align:top}table.b_default td,table.b_default th{padding:8px;vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:8px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:8px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:8px;border:0 !important}table.b_borderless thead td,table.b_borderless th{font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:8px;background:#eee;border:1px solid #fbfbfb}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_gray tbody tr:nth-child(even) td{background:#fbfbfb;border:1px solid #eee}table.b_gray.b_no_stripes tbody tr:nth-child(even) td{background:#eee;border:1px solid #fbfbfb}@media print{table.b_gray td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eee !important}table.b_gray thead td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d5d5d5 !important}table.b_gray tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fbfbfb !important}}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:8px;background:#d9edf7;border:1px solid #eef7fb}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_blue tbody tr:nth-child(even) td{background:#eef7fb;border:1px solid #d9edf7}table.b_blue.b_no_stripes tbody tr:nth-child(even) td{background:#d9edf7;border:1px solid #eef7fb}@media print{table.b_blue td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d9edf7 !important}table.b_blue thead td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#afd9ee !important}table.b_blue tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7fb !important}}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:8px;background:#dff0d8;border:1px solid #eef7ea}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_green tbody tr:nth-child(even) td{background:#eef7ea;border:1px solid #dff0d8}table.b_green.b_no_stripes tbody tr:nth-child(even) td{background:#dff0d8;border:1px solid #eef7ea}@media print{table.b_green td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#dff0d8 !important}table.b_green thead td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#c1e2b3 !important}table.b_green tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7ea !important}}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:8px;background:#fcf8e3;border:1px solid #fefefa}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_yellow tbody tr:nth-child(even) td{background:#fefefa;border:1px solid #fcf8e3}table.b_yellow.b_no_stripes tbody tr:nth-child(even) td{background:#fcf8e3;border:1px solid #fefefa}@media print{table.b_yellow td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fcf8e3 !important}table.b_yellow thead td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f7ecb5 !important}table.b_yellow tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fefefa !important}}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:8px;background:#f2dede;border:1px solid #f9f0f0}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}table.b_red tbody tr:nth-child(even) td{background:#f9f0f0;border:1px solid #f2dede}table.b_red.b_no_stripes tbody tr:nth-child(even) td{background:#f2dede;border:1px solid #f9f0f0}@media print{table.b_red td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f2dede !important}table.b_red thead td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#e4b9b9 !important}table.b_red tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f0f0 !important}}table.a_responsive{width:auto !important}@media (max-width: 768px){.a_responsive td{display:block}}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0}caption,figcaption,.o_caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left;font-style:italic}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}figure.align-left{float:left}figure.align-right{float:right}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}img.align-left{float:left}img.align-right{float:right}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}figure.image.align-center{display:block;text-align:center}figure.image.align-left{float:none;display:block;text-align:left}figure.image.align-left figcaption{text-align:left}figure.image.align-right{float:none;display:block;text-align:right}figure.image.align-right figcaption{text-align:right}figure.image{margin:2em 0 2em 0;border:0;background:none}figure.image img.b_float_left,figure.image img.b_float_left_clear,figure.image img.b_float_right,figure.image img.b_float_right_clear,figure.image img.b_float_left_clear_nomargin,figure.image img.b_centered{float:none;display:inline-block;margin:0}figure.image figcaption{font-size:90%;font-style:italic}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#337ab7}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#337ab7}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#337ab7}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60);width:120px}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar.o_toolbar_with_segments{margin-bottom:30px}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_breadcrumb+.o_tools_container{border-top:1px solid #e7e7e7}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:block;font-size:12px;text-align:center}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:16px;font-size:70% !important;padding:0 18px 0 4px;position:relative;top:-2px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:12px !important;margin:0 0 3px 0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{position:absolute;right:5px;top:2px;margin-right:0}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:14px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:10px !important}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:5px;top:2px;margin-right:0;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{padding:0 18px 0 4px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:20px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:15px;top:2px;margin-right:0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_label,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-toggle.o_with_labeled .o_inner_wrapper.o_labeled+.o_icon_caret{color:#fff !important}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled{padding:0;margin:0}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled .o_labeled{text-align:left}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled>li>a{padding:5px 5px;margin:1px}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto;text-align:center}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px}#o_container_page_width_toggler{position:absolute;top:25px;margin-top:-.75em;right:10px;z-index:5;display:none}@media (min-width: 1364px){#o_container_page_width_toggler{display:block}#o_container_page_width_toggler #o_go_standard_width{display:none}#o_container_page_width_toggler #o_go_full_width{display:block}body.o_width_full .o_container_offcanvas{max-width:100%;margin-left:20px;margin-right:20px}body.o_width_full #o_container_page_width_toggler #o_go_standard_width{display:block}body.o_width_full #o_container_page_width_toggler #o_go_full_width{display:none}}body.o_dmz #o_container_page_width_toggler{display:none !important}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_instruction,.o_form .o_warning,p.o_gta_reopen_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_instruction h2,.o_form .o_warning h2,p.o_gta_reopen_warning h2,.b_warning h3,.o_instruction h3,.o_form .o_warning h3,p.o_gta_reopen_warning h3,.b_warning h4,.o_instruction h4,.o_form .o_warning h4,p.o_gta_reopen_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_instruction .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_instruction h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,p.o_gta_reopen_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title p.o_gta_reopen_warning h2,.b_warning h5,.o_instruction h5,.o_form .o_warning h5,p.o_gta_reopen_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}.o_instruction{margin-top:0px;border-left:none;padding-top:10px;padding-bottom:10px}.o_instruction>.o_button_group{margin-bottom:0px}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#337ab7}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#23527c}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form .o_date.form-inline .form-group.o_second_date,.o_form .o_date.o_navbar-form .form-group.o_second_date,.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group,.o_form .o_date.form-inline .form-group.o_date_separator,.o_form .o_date.o_navbar-form .form-group.o_date_separator{margin-left:25px}.o_form .btn-group .o_date{display:inline-block}.o_form input.o_date_ms{width:3em}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:11em}.o_form .has-feedback .o_date_picker .form-control{padding-right:0}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .o_fileElement.has-error .o_icon_error.form-control-feedback{display:none}.o_form .form-control.textarea.o_fixed_font_with{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_form .form-control.textarea_disabled.o_fixed_font_with{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important;background:#fafafa}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_form_inline_mandatory_compact i{width:20px}.o_form_inline_mandatory_compact select.form-control{width:calc(100% - 25px)}.o_day_chooser .o_day_previous{display:inline-block}.o_day_chooser .o_day_previous a{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.o_day_chooser .o_day_date{display:inline-block;border-radius:0}.o_day_chooser .o_day_date input,.o_day_chooser .o_day_date .input-group-addon{border-radius:0}.o_day_chooser .o_day_next{display:inline-block}.o_day_chooser .o_day_next a{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 1px;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 1px 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_flexi tfoot{border-top:solid #ddd 2px}.o_table_wrapper.o_table_flexi .o_multiselect{width:20px}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_checkall>a{font-weight:normal;margin-right:10px}.o_table_wrapper .o_table_footer .o_table_checkall.input-sm,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.form-control,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.input-group-addon,.o_table_wrapper .o_table_footer .input-group-sm>.input-group-btn>.o_table_checkall.btn{padding:5px 6px}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}.o_breadcrumb.o_table_flexi_breadcrumb ol.breadcrumb{margin:5px 0 0 0}div.o_table_flexi div.o_table_flexi_leaf{margin-left:1.55em}div.o_table_flexi div.o_table_flexi_l0{padding-left:0px}div.o_table_flexi div.o_table_flexi_l1{padding-left:15px}div.o_table_flexi div.o_table_flexi_l2{padding-left:30px}div.o_table_flexi div.o_table_flexi_l3{padding-left:45px}div.o_table_flexi div.o_table_flexi_l4{padding-left:60px}div.o_table_flexi div.o_table_flexi_l5{padding-left:75px}div.o_table_flexi div.o_table_flexi_l6{padding-left:90px}div.o_table_flexi div.o_table_flexi_l7{padding-left:105px}div.o_table_flexi div.o_table_flexi_l8{padding-left:120px}div.o_table_flexi div.o_table_flexi_l9{padding-left:135px}div.o_table_flexi div.o_table_flexi_l10{padding-left:150px}div.o_table_flexi div.o_table_flexi_l11{padding-left:165px}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications,.o_table_tools_indications_filter_only{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a,.o_table_tools_indications_filter_only a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_table_filter .control-label{margin-right:0.5em}.o_table_filter .control-label:after{content:':'}.o_table_filter>div{display:inline-block}.o_table_filter>div label{font-weight:normal}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating.o_rating_personal .o_rating_items .o_icon{color:#337ab7}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„Ž";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:2px solid #337ab7;border-radius:50%;position:absolute !important;box-sizing:border-box}.o_draw_rectangle{border:2px solid #337ab7;position:absolute !important;box-sizing:border-box}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:0;right:37px}.o_content_popup{position:absolute;top:0;right:12px}.o_module_cp_wrapper{position:relative}.o_module_cp_wrapper .o_tools{position:absolute;top:0;right:0;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-group{margin-bottom:0}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-control-static{padding-top:0;padding-bottom:0}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;background:#fcfcfc;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.o_dropdown>li>i.o_icon_check{display:inline-block;padding-left:14px}ul.o_dropdown>li>i.o_icon_check+a{display:inline-block;padding-left:5px}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.428571429}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png") !important}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png") !important}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png") !important}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png") !important}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png") !important}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png") !important}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png") !important}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png") !important}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_feed .o_enclosure{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}div.panel.o_assessment_modes .o_table_body{margin-top:0}div.panel.o_assessment_modes .o_table_wrapper{margin-bottom:5px}div.o_assessment_mode_row{padding:0 15px}div.o_assessment_mode_row.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #3c763d;background-color:#dff0d8}div.o_assessment_mode_row.o_assessment_end_soon.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #a94442;background-color:#f2dede}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_segments.o_segments_linked .btn,.o_segments.o_segments_linked .btn:hover,.o_segments.o_segments_linked .btn:active,.o_segments.o_segments_linked .btn:focus{border:none;border-radius:0;box-shadow:none;background:none}.o_segments.o_segments_linked .btn-primary{color:#000;font-size:24px;background:none}.o_segments.o_segments_linked .btn-default,.o_segments.o_segments_linked .btn-default:hover,.o_segments.o_segments_linked .btn-default:active,.o_segments.o_segments_linked .btn-default:focus{color:#337ab7;background:none}.o_segments.o_segments_linked .o_segment_separator{color:#000}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.progress .progress-bar{text-shadow:1px 1px 2px #000000}.o_progress_label_right{float:left;margin-right:10px}.o_web_content{padding-bottom:15px}.o_labeled_light,a.o_labeled_light,.o_labeled,a.o_labeled{display:inline-block;text-transform:uppercase;text-align:center;text-decoration:none;vertical-align:middle;font-size:75%;line-height:1;white-space:nowrap;border:1px solid;border-radius:3px;padding:2px 5px;background-color:#777;color:#fff;position:relative}.o_labeled_light,a.o_labeled_light{font-weight:bold;background-color:#f8f8f8}.o_ms_button{max-width:100%;width:100%;display:flex}.o_ms_button span:not(.o_ms_carret){text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.o_ms_button .o_ms_carret{margin:auto 0 auto auto}.o_ms_list{width:100%;height:auto;max-height:300px;overflow-x:hidden;top:unset}.o_disclaimer .o_disclaimer_content{max-height:50vh;overflow:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background:#fbfbfb;padding:10px;border:1px solid #c2c2c2}.o_files_size_okay{color:#61E868}.o_files_size_warning{color:#FFB100}.o_files_size_large{color:#E82A0C}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fcfcfc;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.428571429}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_title h4 .o_icon-fw,.o_search_result_title .o_cal .fc-header-title h2 .o_icon-fw,.o_cal .fc-header-title .o_search_result_title h2 .o_icon-fw{text-align:left}.o_search_result_highlight{font-weight:bold;background-color:transparent}.o_search_result_context{display:inline-block;color:#3c763d;margin-right:1em}.o_search_result_license{display:inline-block;color:#777}.o_search_result_excerpt{color:#555}.o_search_result .o_opener{font-size:12px}.o_search_result .o_opener i{width:1em}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}.o_search_result_details .o_togglebox_wrapper .o_search_result_license i{font-size:20px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.o_cal_wv_event_tooltip_content .o_cal_description{background-color:#f8f8f8;padding:10px 7px;margin:10px -7px}.o_cal_wv_event_tooltip_content .o_cal_tooltip_buttons{text-align:center;margin-top:20px}.o_cal_event_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_not_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.o_cal_event_not_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.fc-button{color:#333;background-color:#fcfcfc;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fcfcfc;border-color:#ccc}.fc-button .badge{color:#fcfcfc;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}.fc-listYear-button:before,.fc-listMonth-button:before,.fc-listWeek-button:before,.fc-listDay-button:before{content:"";margin-right:5px;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:80%;webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}table.fc-list-table .fc-list-item{background-color:white;color:#5D5D5D !important}table.fc-list-table .fc-list-item a,table.fc-list-table .fc-list-item span{color:#5D5D5D !important}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_page_content_editor .o_toolbar{border:none}.o_page_content_editor .o_page_part,.gu-mirror{border:2px solid transparent}.o_page_content_editor .o_page_part:hover,.gu-mirror:hover{border:2px dotted #78acd9}.o_page_fragment_edit{position:relative;display:grid}.o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;top:-19px;height:19px;background-color:#78acd9;border-radius:10px 10px 0 0}.o_page_fragment_edit .o_page_tools_above .o_page_add_above .o_icon{color:#fff;background-color:#78acd9}.o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:3px 5px 0 7px}.o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_page_fragment_edit .o_page_tools_dd:before{content:' ';width:25px;height:100%;position:absolute;left:0;top:0;border:3px #78acd9 solid;border-bottom:28px #78acd9 solid;background-image:-webkit-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-moz-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-ms-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);-webkit-background-size:3px 3px;-moz-background-size:3px 3px;background-size:3px 3px}.o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;background:#78acd9;color:#fff}.o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_page_fragment_edit .o_page_part.o_page_edit{padding-right:23px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;position:absolute;z-index:3;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;bottom:-20px;height:22px;background-color:#78acd9;border-radius:0 0 10px 10px}.o_page_fragment_edit .o_page_add_below .o_icon{color:#fff;background-color:#78acd9}.o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px;margin:0px 0px 0px 2px}.o_page_fragment_edit.gu-mirror .o_page_add_below,.o_page_fragment_edit.gu-mirror .o_page_add_above,.o_page_fragment_edit.gu-transit .o_page_add_below,.o_page_fragment_edit.gu-transit .o_page_add_above{display:none}.o_page_container_slot.col-md-3 .o_page_others_above a span,.o_page_container_slot.col-md-4 .o_page_others_above a span{display:none}.o_page_container_slot.col-md-3 .o_page_edit_toolbar ul>li,.o_page_container_slot.col-md-4 .o_page_edit_toolbar ul>li{padding-right:0}div.o_page_content_editor .gu-mirror,.o_page_content_editor .gu-transit{box-shadow:none}.o_page_container{box-sizing:border-box;padding:10px}.o_page_container{background-color:transparent}.o_page_container .o_page_container{background-color:transparent}.o_page_container .o_page_container .o_page_container{background-color:transparent}.o_page_container_slot{box-sizing:border-box;margin:0 -1px -1px 0;padding:10px}.o_page_container .o_page_container_slot{border:2px dotted #eee}.o_page_container:hover .o_page_container_slot{border:2px dotted #ef00ef}.o_page_add_in_container_grp{margin-bottom:0}.gu-transit{border:2px dotted #e80c96;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40)}.gu-mirror{border:2px dotted #78acd9;opacity:0.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.o_page_add_callout a span{display:none}.o_page_add_callout ul.list-inline{margin-bottom:0}.o_page_table_edition .o_table_title,.o_page_table_edition .o_table_caption{padding:5px}.o_page_with_side_options_wrapper{display:flex;align-items:stretch;flex-direction:row}.o_page_side_options_target{background-color:#f9f9f9;flex-grow:4}.o_page_side_options{flex-grow:0;background-color:#78acd9;border-left:1px solid #b9b9b9;border-bottom:1px solid #b9b9b9;padding:5px;z-index:2}@media (max-width: 767px){.o_page_with_side_options_wrapper{flex-direction:column-reverse}}.o_page_content .o_image,.o_page_content .o_video,.o_page_content_editor .o_image,.o_page_content_editor .o_video{width:100%}.o_page_content .o_image img,.o_page_content .o_video img,.o_page_content_editor .o_image img,.o_page_content_editor .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_page_content .o_image .o_artefact_metadata,.o_page_content .o_video .o_artefact_metadata,.o_page_content_editor .o_image .o_artefact_metadata,.o_page_content_editor .o_video .o_artefact_metadata{text-align:left}.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left{float:left}.o_page_content .o_image.o_image_align_left+.o_image_clear,.o_page_content .o_video.o_image_align_left+.o_image_clear,.o_page_content_editor .o_image.o_image_align_left+.o_image_clear,.o_page_content_editor .o_video.o_image_align_left+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right{float:right}.o_page_content .o_image.o_image_align_right+.o_image_clear,.o_page_content .o_video.o_image_align_right+.o_image_clear,.o_page_content_editor .o_image.o_image_align_right+.o_image_clear,.o_page_content_editor .o_video.o_image_align_right+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle{clear:both;margin-left:50%;text-align:center;transform:translate(-50%, 0%)}.o_page_content .o_image.o_image_align_leftfloat,.o_page_content .o_video.o_image_align_leftfloat,.o_page_content_editor .o_image.o_image_align_leftfloat,.o_page_content_editor .o_video.o_image_align_leftfloat{float:left;padding-right:10px;padding-bottom:10px}.o_page_content .o_image.o_image_align_rightfloat,.o_page_content .o_video.o_image_align_rightfloat,.o_page_content_editor .o_image.o_image_align_rightfloat,.o_page_content_editor .o_video.o_image_align_rightfloat{float:right;padding-left:10px;padding-bottom:10px}.o_page_content .o_image.o_image_size_style_small,.o_page_content .o_video.o_image_size_style_small,.o_page_content_editor .o_image.o_image_size_style_small,.o_page_content_editor .o_video.o_image_size_style_small{width:25%}.o_page_content .o_image.o_image_size_style_small img,.o_page_content .o_video.o_image_size_style_small img,.o_page_content_editor .o_image.o_image_size_style_small img,.o_page_content_editor .o_video.o_image_size_style_small img{width:100%}.o_page_content .o_image.o_image_size_style_medium,.o_page_content .o_video.o_image_size_style_medium,.o_page_content_editor .o_image.o_image_size_style_medium,.o_page_content_editor .o_video.o_image_size_style_medium{width:40%}.o_page_content .o_image.o_image_size_style_medium img,.o_page_content .o_video.o_image_size_style_medium img,.o_page_content_editor .o_image.o_image_size_style_medium img,.o_page_content_editor .o_video.o_image_size_style_medium img{width:100%}.o_page_content .o_image.o_image_size_style_large,.o_page_content .o_video.o_image_size_style_large,.o_page_content_editor .o_image.o_image_size_style_large,.o_page_content_editor .o_video.o_image_size_style_large{width:60%}.o_page_content .o_image.o_image_size_style_large img,.o_page_content .o_video.o_image_size_style_large img,.o_page_content_editor .o_image.o_image_size_style_large img,.o_page_content_editor .o_video.o_image_size_style_large img{width:100%}.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill{width:100%;float:none !important;display:block}.o_page_content .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content .o_video.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_figure_caption_bottom{display:block}.o_page_content .o_image.o_image_size_style_fill img,.o_page_content .o_video.o_image_size_style_fill img,.o_page_content_editor .o_image.o_image_size_style_fill img,.o_page_content_editor .o_video.o_image_size_style_fill img{width:100%;display:block}.o_page_content .o_image img.o_image_classic,.o_page_content .o_video img.o_image_classic,.o_page_content_editor .o_image img.o_image_classic,.o_page_content_editor .o_video img.o_image_classic{padding:0;border:0;border-radius:0}.o_page_content .o_image img.o_image_border,.o_page_content .o_video img.o_image_border,.o_page_content_editor .o_image img.o_image_border,.o_page_content_editor .o_video img.o_image_border{padding:3px;border:solid 1px #CCC}.o_page_content .o_image img.o_image_shadow,.o_page_content .o_video img.o_image_shadow,.o_page_content_editor .o_image img.o_image_shadow,.o_page_content_editor .o_video img.o_image_shadow{padding:0;border:0;-moz-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.o_page_content .o_image img.o_image_frame,.o_page_content .o_video img.o_image_frame,.o_page_content_editor .o_image img.o_image_frame,.o_page_content_editor .o_video img.o_image_frame{padding:0;border:0;border-radius:0;-moz-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);margin:15px}.o_page_content .o_image img.o_image_polaroid,.o_page_content .o_video img.o_image_polaroid,.o_page_content_editor .o_image img.o_image_polaroid,.o_page_content_editor .o_video img.o_image_polaroid{padding:0;border-radius:0;border:1px solid #dcdcdc;background:#fff;padding:10px 10px 45px 10px;-webkit-box-shadow:3px 3px 3px rgba(0,0,0,0.2);-moz-box-shadow:3px 3px 3px rgba(0,0,0,0.2);box-shadow:3px 3px 3px rgba(0,0,0,0.2)}.o_page_content .o_image img.o_image_round,.o_page_content .o_video img.o_image_round,.o_page_content_editor .o_image img.o_image_round,.o_page_content_editor .o_video img.o_image_round{padding:3px;border:solid 1px #CCC;border-radius:50%}.o_page_content .o_image .o_image_title_dark,.o_page_content .o_video .o_image_title_dark,.o_page_content_editor .o_image .o_image_title_dark,.o_page_content_editor .o_video .o_image_title_dark{color:#000}.o_page_content .o_image .o_image_title_bright,.o_page_content .o_video .o_image_title_bright,.o_page_content_editor .o_image .o_image_title_bright,.o_page_content_editor .o_video .o_image_title_bright{color:#f9f9f9}.o_page_content .o_image .o_image_title,.o_page_content .o_video .o_image_title,.o_page_content_editor .o_image .o_image_title,.o_page_content_editor .o_video .o_image_title{position:relative}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{position:absolute;left:50%;margin-right:-50%;transform:translate(-50%, -50%)}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_top{top:10%}.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_centered{top:50%}.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{bottom:10%}.o_page_content .o_image.o_image_size_style_none .o_image_title_top,.o_page_content .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_none .o_image_title_top,.o_page_content .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content .o_video.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_bottom{font-size:24px}.o_page_content .o_image.o_image_size_style_small .o_image_title_top,.o_page_content .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_small .o_image_title_top,.o_page_content .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content .o_video.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_bottom{font-size:18px}.o_page_content .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_video.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_bottom{font-size:32px}.o_page_content .o_image.o_image_size_style_large .o_image_title_top,.o_page_content .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_large .o_image_title_top,.o_page_content .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content .o_video.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_bottom{font-size:40px}.o_page_content .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_video.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_bottom{font-size:56px}.o_page_add_contents{clear:both;margin-top:30px}.o_ce_html_raw.o_html_col2,.o_ce_html_paragraph.o_html_col2{column-count:2;column-gap:1em}.o_ce_html_raw.o_html_col3,.o_ce_html_paragraph.o_html_col3{column-count:3;column-gap:1em}.o_ce_html_raw.o_html_col4,.o_ce_html_paragraph.o_html_col4{column-count:4;column-gap:1em}table.o_ce_table caption{caption-side:bottom}.o_ce_add_main_btns{margin-top:2em}.o_ce_add{border:none;margin-bottom:0px}.o_ce_add .o_ce_tools{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.o_ce_add .o_ce_tools .o_ce_tool{padding:0px;margin:0px;width:33%}.o_ce_add .o_ce_tools .o_ce_tool a{padding:6px 3px;margin:0px;display:block;width:100%;height:100%}.o_ce_add .o_ce_tools .o_ce_tool a:hover{padding:5px 2px;border:1px solid #e7e7e7;border-radius:4px}.o_ce_add_list .o_ce_add_list_item{border-style:none;padding:0px;margin:0px -15px}.o_ce_add_list .o_ce_add_list_item a{padding:5px 25px;margin:0px;display:block;width:100%;height:100%}.o_ce_add_list .o_ce_add_list_item a:hover{text-decoration:none;background-color:#f5f5f5}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #ccc;border-radius:4px;background:#fcfcfc;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-top-left-radius:4px;border-bottom-left-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual .o_visual_not_available{background-color:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #ccc;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;background:#fcfcfc;border-left:1px solid #ccc;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;z-index:2px;background:#fcfcfc;padding:0 3px 3px 3px;border-radius:0px 0px 3px 3px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7;border-top-right-radius:4px;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac ul{display:inline-block}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #ccc;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #ccc;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #ccc;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #ccc;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}.o_ac_configuration div.o_ac_method{background-color:#efefef;padding:5px;border-radius:3px}.o_ac_configuration div.o_ac_methods.form-group{padding-bottom:0;margin-bottom:0}.o_repo_with_explanation{padding-bottom:0;margin-bottom:0}.o_repo_explanation{color:#f0ad4e}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}a.o_repo_tools_status{cursor:pointer;margin:0 2px 2px 2px;text-align:left}.o_labeled.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_review{background-color:#FCCA46;border-color:#FCCA46;color:#fff}.o_labeled.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_coachpublished{background-color:#1DC63F;border-color:#1DC63F;color:#fff}.o_labeled.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_published{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_closed{background-color:#99583D;border-color:#99583D;color:#fff}.o_labeled.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_trash{background-color:#5A5958;border-color:#5A5958;color:#fff}.o_labeled.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_deleted{background-color:#888;border-color:#888;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_preparation{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_review{background-color:#fbbc14}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_coachpublished{background-color:#169a31}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_published{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_closed{background-color:#75432e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_trash{background-color:#40403f}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_deleted{background-color:#6f6f6f}.o_labeled_light.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_preparation{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_review{border-color:#FCCA46;color:#FCCA46}.o_labeled_light.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_coachpublished{border-color:#1DC63F;color:#1DC63F}.o_labeled_light.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_published{border-color:#14892c;color:#14892c}.o_labeled_light.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_closed{border-color:#99583D;color:#99583D}.o_labeled_light.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_trash{border-color:#5A5958;color:#5A5958}.o_labeled_light.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_deleted{border-color:#888;color:#888}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0;display:table}.o_cmembers .o_cmember .o_portrait{padding-right:10px;display:table-cell;vertical-align:top;min-width:60px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{display:table-cell;vertical-align:middle;color:#777}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember .o_curriculum_displayname,.o_cmembers .o_cmember .o_curriculum_root_el_identifier,.o_cmembers .o_cmember .o_curriculum_root_el_displayname{font-size:12px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;max-width:100%;max-height:100%;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}div.o_correction_navigation .o_correction_navigation_back{float:left;line-height:32px}div.o_correction_navigation .o_correction_navigation_previous{position:absolute;right:50%;margin-right:102px}div.o_correction_navigation #o_cocurrent_item_SELBOX{width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;left:50%;margin-left:-100px}div.o_correction_navigation .o_correction_navigation_next{position:absolute;left:50%;margin-left:102px}@media (max-width: 767px){div.o_correction_navigation .o_correction_navigation_previous span,div.o_correction_navigation .o_correction_navigation_next span{display:none}}.o_ms_stack_panel .o_toolbar{margin-top:0px}.o_ms_bold{font-weight:bold}.o_ms_legend{padding:5px}.o_ms_legend li{display:block;font-size:90%}.o_ms_legend .ident{font-weight:bold}.o_curriculum_el_listing tr.o_curriculum_element_inactive,.o_curriculum_el_listing tr.o_curriculum_element_inactive td,.o_curriculum_el_listing tr.o_curriculum_element_inactive td span,.o_curriculum_el_listing tr.o_curriculum_element_inactive td a{color:#777}.o_curriculum_el_listing tr.o_curriculum_element_unfiltered,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td span,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td a{color:#aaa}.o_curriculum_el_listing tr.o_curriculum_element_deleted,.o_curriculum_el_listing tr.o_curriculum_element_deleted td,.o_curriculum_el_listing tr.o_curriculum_element_deleted td span,.o_curriculum_el_listing tr.o_curriculum_element_deleted td a{color:#777;text-decoration:line-through}.o_curriculumtable tr.o_curriculum_element_l0 td:nth-thild(first){padding-left:0px}.o_curriculumtable tr.o_curriculum_element_l1 td:nth-thild(first){padding-left:15px}.o_curriculumtable tr.o_curriculum_element_l2 td:nth-thild(first){padding-left:30px}.o_curriculumtable tr.o_curriculum_element_l3 td:nth-thild(first){padding-left:45px}.o_curriculumtable tr.o_curriculum_element_l4 td:nth-thild(first){padding-left:60px}.o_curriculumtable tr.o_curriculum_element_l5 td:nth-thild(first){padding-left:75px}.o_curriculumtable tr.o_curriculum_element_l6 td:nth-thild(first){padding-left:90px}.o_curriculumtable tr.o_curriculum_element_l7 td:nth-thild(first){padding-left:105px}.o_curriculumtable tr.o_curriculum_element_l8 td:nth-thild(first){padding-left:120px}.o_curriculumtable tr.o_curriculum_element_l9 td:nth-thild(first){padding-left:135px}.o_curriculumtable tr.o_curriculum_element_l10 td:nth-thild(first){padding-left:150px}.o_curriculumtable tr.o_curriculum_element_l11 td:nth-thild(first){padding-left:165px}.o_curriculumtable tr.o_curriculum_element_inactive,.o_curriculumtable tr.o_curriculum_element_inactive td,.o_curriculumtable tr.o_curriculum_element_inactive td span{color:#777}.o_curriculumtable tr.o_curriculum_element_deleted,.o_curriculumtable tr.o_curriculum_element_deleted td,.o_curriculumtable tr.o_curriculum_element_deleted td span{color:#777;text-decoration:line-through}.o_curriculumtable.o_rendertype_custom .container-fluid{padding-left:0;padding-right:0}.o_curriculumtable.o_rendertype_custom .o_table_row{position:relative;vertical-align:top;margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row:before,.o_curriculumtable.o_rendertype_custom .o_table_row:after{content:" ";display:table}.o_curriculumtable.o_rendertype_custom .o_table_row:after{clear:both}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{background:none;border:none;position:relative}.o_curriculumtable.o_rendertype_custom .o_table_row .o_ext_id{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_hierarchy_info{display:none;position:absolute;top:0;right:30px;font-size:70%;z-index:5;background:gold}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title{margin-top:0;margin-bottom:0;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title small{white-space:nowrap}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars{padding-left:6px;color:#777}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active:hover{color:#2b542c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc{padding:6px 6px 16px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_empty{font-style:italic;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{position:relative;padding-left:132px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px;padding-left:87px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_visual{left:0;border:none;background-color:#fff;max-height:80px;max-width:120px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_location,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_lifecycle{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:absolute;right:0;bottom:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_failed{font-weight:normal}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_score{display:inline-block}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state+.o_score:before{content:', '}.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark{position:absolute;top:-1px;right:2px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{position:absolute;bottom:0;right:0;overflow:hidden;width:180px;height:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start{right:0;color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark,.o_curriculumtable.o_rendertype_custom .o_table_row .o_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_details{display:none}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:inline-block;width:50%;border-right:12px solid transparent;margin-top:0 !important}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry_title{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:50px}}@media print{.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:relative;bottom:0}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{display:none}}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_item_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_rectangle{background-color:rgba(255,255,255,0.5);border-color:#6E6E6E}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(45,0,255,0.5);border-color:#0000ff}#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_rectangle{background-color:rgba(221,221,221,0);border-color:#7E7E7E}#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(51,122,183,0.05);border-color:#337ab7}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_rectangle{background-color:rgba(110,110,110,0.5);border-color:#3E3E3E}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(222,222,222,0.2);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_rectangle{background-color:rgba(142,142,142,0.25);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(134,195,81,0.5);border-color:#518b33}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_rectangle{background-color:rgba(142,142,142,0.33);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(234,168,255,0.5);border-color:#ab47cb}div.hotspotInteraction{overflow-x:auto}img.o_hotspot_responsive[usemap]{max-width:100%;width:auto;height:auto}.form-inline.o_qti_gaptext_add_first_alternative,.o_qti_gaptext_add_first_alternative.o_navbar-form{padding:9px 0 3px 0}.form-inline.o_qti_gaptext_add_alternative,.o_qti_gaptext_add_alternative.o_navbar-form{margin-bottom:3px}.o_qti_gaptext_alternatives{background-color:#eee;color:#555;border:1px solid #eee;border-radius:4px;padding:2px 5px}.o_qti_item_body .extendedTextInteraction{margin:15px 0}.o_qti_item_body .extendedTextInteraction textarea{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}.extendedTextInteraction div.form-control.textarea_disabled{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer.o_15_seconds{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_panic{background-color:#f2dede}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}#width_range_ui,#opacity_range_ui{width:120px}.o_slider_width_range,.o_slider_opacity_range{margin:3px 10px 0 0}.o_qti_hotspot_label{padding-left:48%}.o_assessmentsection_rubrics_wrapper{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px;padding:5px 10px;margin:0 0 0.5em 0}.o_assessmentsection_rubrics_correction_wrapper{background:#f8f8f8;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding:5px 10px}.o_info.o_assessmentsection_rubrics{margin:5px -10px;position:relative;display:block}.o_info.o_assessmentsection_rubrics.o_hide{display:none}.o_info.o_assessmentsection_rubrics a.o_hide{position:absolute;bottom:0.5em;right:1em}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box.vertical{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_assessmentitem div.orderInteraction div.box.vertical ul{min-height:200px}.o_assessmentitem div.orderInteraction div.box.horizontal ul{min-height:50px;width:100%}.o_assessmentitem div.orderInteraction div.box.source{padding:5px 10px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_assessmentitem div.orderInteraction div.box.source.horizontal{padding:5px 10px 15px 10px}.o_assessmentitem div.orderInteraction div.box.target ul{border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_assessmentitem div.orderInteraction div.box.target ul.oo-accepted{border-color:#1f7e9a}.o_assessmentitem div.orderInteraction div.box.target.vertical{padding:6px 0 0 10px}.o_assessmentitem div.orderInteraction div.box.target.vertical ul{padding:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal{padding-top:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal ul{padding:10px 10px 0 10px}.o_assessmentitem div.orderInteraction div.box.horizontal ul li{float:left;width:auto;margin-right:10px;min-width:50px}.o_assessmentitem div.orderInteraction div.box span.info{color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#333;background:#d9edf7;border:1px solid #bce8f1}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input,.o_assessmentitem .textEntryInteraction span.o_input_value{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:13.72px;line-height:1.5;border:1px solid #999;background:#fff;padding:1px 1px;color:#333;max-width:100%}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled,.o_assessmentitem .textEntryInteraction input.o_input_value_wrapper,.o_assessmentitem .textEntryInteraction span.o_input_value:valid,.o_assessmentitem .textEntryInteraction span.o_input_value:disabled,.o_assessmentitem .textEntryInteraction span.o_input_value.o_input_value_wrapper{color:#333;-webkit-text-fill-color:#333;background:#d9edf7;border:1px solid #bce8f1}li.o_assessmentitem_order_item{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;list-style-type:none}li.o_assessmentitem_order_item:before,li.o_assessmentitem_order_item:after{content:" ";display:table}li.o_assessmentitem_order_item:after{clear:both}body>li.o_assessmentitem_order_item{display:block}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em;position:relative}.o_assessmentitem_wrapper .itemTitle .o_qti_item_max_score{position:absolute;left:49%}.o_assessmentitem_wrapper .o_qti_item_body{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;font-size:14px;line-height:1.8}.o_assessmentitem_wrapper .o_assessment_item_not_final.o_warning{margin:0}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button,.o_assessmentitem_controls a{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_skip_question span:before,.o_assessmentitem_controls .o_sel_back_question span:before,.o_assessmentitem_controls .o_sel_retry_question span:before{padding-right:0.5em;margin-bottom:0}.o_assessmentitem_control_view_solution{background:#f8f8f8;border:1px solid #e7e7e7;margin:0;padding:5px 10px}.o_assessmentitem_scoring{background:#f8f8f8;border:1px solid #e7e7e7;border-bottom:0;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px}.o_assessmentitem_scoring_buttons{background:#f8f8f8;border:1px solid #e7e7e7;border-top:0;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_scoring_override_window{width:300px}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}.o_qti_item_body{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction input+i{background-color:red}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct{background-color:#eaf6ea}table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong{background-color:#fdf7f7}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct,table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong,table.o_qti_item_kprim th.o_qti_item_kprim_input_correct,table.o_qti_item_kprim th.o_qti_item_kprim_input_wrong{width:11%}table.o_qti_item_kprim td.o_qti_item_kprim_text,table.o_qti_item_kprim th.o_qti_item_kprim_text{width:88%}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.table.o_match_true_false_edit th.o_sel_match_target_0,.table.o_match_true_false_edit th.o_sel_match_target_1,.table.o_match_true_false_edit th.o_sel_match_target_2{width:12%}.match_true_false input[type="checkbox"]{-webkit-appearance:radio;-moz-appearance:radio;-ms-appearance:radio;appearance:radio}.match_true_false .table>tbody>tr>td.o_match_true_false_unanswered,.match_true_false .table>tbody>tr>td.o_match_true_false_right,.match_true_false .table>tbody>tr>td.o_match_true_false_wrong{vertical-align:middle;width:11%}.match_true_false th.o_match_true_false_unanswered,.match_true_false th.o_match_true_false_right,.match_true_false th.o_match_true_false_wrong{width:11%}.match_true_false td.o_match_true_false_answer,.match_true_false th.o_match_true_false_answer{width:67%}.match_true_false td.o_match_true_false_unanswered{background-color:#fbfbfb}.match_true_false td.o_match_true_false_right{background-color:#eaf6ea}.match_true_false td.o_match_true_false_wrong{background-color:#fdf7f7}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:0;border-bottom:0}.o_candidatecomment div.o_item_container_help{margin:0;padding:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}ul.o_qti_statistics_answers li span.o_qti_statistics_answer{background:#F5F5F5;padding:1px 3px;width:90%;display:inline-block}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_sel_assessment_item_feedbacks{min-height:250px}.o_alternative_question_types h4 select,.o_alternative_question_types .o_cal .fc-header-title h2 select,.o_cal .fc-header-title .o_alternative_question_types h2 select{display:inline-block;width:auto}@media print{canvas,div.hotspotInteraction>div>div{-webkit-print-color-adjust:exact;color-adjust:exact}.choiceInteraction label{font-weight:normal}.choiceinteraction input[type="radio"][disabled],.choiceinteraction input[type="checkbox"][disabled],.matchInteraction input[type="radio"][disabled],.matchInteraction input[type="checkbox"][disabled]{display:none}.choiceinteraction input+i,.matchInteraction input+i{font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.choiceInteraction input[type="radio"][disabled]+i:before,.matchInteraction input[type="radio"][disabled]+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]+i:before{content:"ï„Œ"}.choiceInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]:checked+i:before{content:""}.choiceInteraction input[type="checkbox"][disabled]+i:before,.matchInteraction input[type="checkbox"][disabled]+i:before{content:"ï‚–"}.choiceInteraction input[type="checkbox"][disabled]:checked+i:before,.matchInteraction input[type="checkbox"][disabled]:checked+i:before{content:"ï†"}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav{margin-right:20px}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_nav .o_portfolio_collector{position:relative;top:-5px}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_portfolio_home .o_portfolio_my li,.o_portfolio_home .o_portfolio_shared li{margin:2em 1em 2em 0;text-align:center;vertical-align:top}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:5px dashed #eee;padding-right:2em}.o_portfolio_home .o_portfolio_my li a,.o_portfolio_home .o_portfolio_shared li a{display:block;width:9em}.o_portfolio_home .o_portfolio_my li a i,.o_portfolio_home .o_portfolio_shared li a i{display:inline-block;font-size:4em}.o_portfolio_home .o_portfolio_my li a span,.o_portfolio_home .o_portfolio_shared li a span{display:block;margin-top:0.8em}@media (max-width: 1199px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:90%}}@media (max-width: 767px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:80%}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:none;padding-right:0}}.o_portfolio_home #o_my_last_binders .o_table_body{margin-top:0;padding-left:0}.o_portfolio_home #o_my_last_pages .o_table_body{margin-top:0}.o_portfolio_home #o_my_last_pages .o_table_toolbar{display:none}.o_portfolio_home #o_my_last_pages .o_portfolio_page{margin-top:0;margin-bottom:1em}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_ended .o_section_lead{border-color:#eba5a3;background-color:#f4cecd}.o_media.o_media_right,.o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_right{max-height:200px;max-width:50%}.o_media.o_media_left img,.o_media.o_media_right img{max-height:200px}.o_media.o_media_right_large,.o_media.o_media_left_large{max-height:300px;max-width:75%}.o_media.o_media_right_large img,.o_media.o_media_left_large img{max-height:300px}.o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff;height:auto;width:auto}@media (max-width: 767px){.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:120px;max-width:30%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:120px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:180px;max-width:50%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:180px}}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_edit_page_meta{padding-right:2em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_portfolio_status_block p.o_section_ended{font-size:120%}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_page_export .o_page_assignment .o_opener,.o_binder_export .o_page_assignment .o_opener{visibility:hidden}.o_page_export .o_page_assignment .o_closer,.o_binder_export .o_page_assignment .o_closer{display:none}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .oo-accepted{box-shadow:10px 10px 10px pink}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .o_binder_tools a{color:#333}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_right{max-height:150px}.o_portfolio_page_summary .o_media.o_media_left img,.o_portfolio_page_summary .o_media.o_media_right img{max-height:150px}.o_portfolio_page_summary .o_media.o_media_right_large,.o_portfolio_page_summary .o_media.o_media_left_large{max-height:230px}.o_portfolio_page_summary .o_media.o_media_right_large img,.o_portfolio_page_summary .o_media.o_media_left_large img{max-height:230px}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_categories div,.o_portfolio_categories form{display:inline-block}.o_portfolio_categories_edit .bootstrap-tagsinput{margin-bottom:0;padding:0px 4px}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_pf_comments{margin-top:3em}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum,.gu-mirror .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_forum,.gu-mirror .o_wiki{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement h3,.o_pf_content .o_efficiencystatement .h3,.o_pf_content .o_feed h3,.o_pf_content .o_feed .h3,.o_pf_content .o_forum h3,.o_pf_content .o_forum .h3,.o_pf_content .o_wiki h3,.o_pf_content .o_wiki .h3,.gu-mirror .o_efficiencystatement h3,.gu-mirror .o_efficiencystatement .h3,.gu-mirror .o_feed h3,.gu-mirror .o_feed .h3,.gu-mirror .o_forum h3,.gu-mirror .o_forum .h3,.gu-mirror .o_wiki h3,.gu-mirror .o_wiki .h3{font-size:14px}.o_pf_content .o_efficiencystatement .row,.o_pf_content .o_feed .row,.o_pf_content .o_forum .row,.o_pf_content .o_wiki .row,.gu-mirror .o_efficiencystatement .row,.gu-mirror .o_feed .row,.gu-mirror .o_forum .row,.gu-mirror .o_wiki .row{margin:0}.o_pf_content .o_efficiencystatement .o_block_with_datecomp,.o_pf_content .o_feed .o_block_with_datecomp,.o_pf_content .o_forum .o_block_with_datecomp,.o_pf_content .o_wiki .o_block_with_datecomp,.gu-mirror .o_efficiencystatement .o_block_with_datecomp,.gu-mirror .o_feed .o_block_with_datecomp,.gu-mirror .o_forum .o_block_with_datecomp,.gu-mirror .o_wiki .o_block_with_datecomp{margin-top:0.5em;margin-bottom:0}.o_pf_video_placeholder{background-color:#f8f8f8;border:1px solid #f8f8f8;border-radius:10px;display:table;min-width:400px;text-align:center;padding:40px 10px}.o_pf_video_placeholder i{display:table-cell;vertical-align:middle}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc .o_portfolio_toc_section{position:relative;padding-right:80px}.o_portfolio_toc .o_portfolio_section_meta{margin-top:-0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:-10px;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down,.o_portfolio_toc .o_section_actions .o_section_dropdown{vertical-align:middle;display:inline-block}.o_portfolio_toc a.o_comment{color:#777;margin-left:1em}.o_portfolio_toc .o_section ul{padding-left:1em;line-height:24px}.o_portfolio div span.badge{padding:3px 7px}.o_portfolio div .o_portfolio_entry_draft{background-color:#f0ad4e}.o_portfolio div .o_portfolio_published{background-color:#337ab7}.o_portfolio div .o_portfolio_entry_revision{background-color:#d9534f}.o_portfolio div .o_portfolio_entry_closed{background-color:#5cb85c}.o_portfolio div .o_portfolio_entry_deleted{background-color:#000}.o_portfolio div .o_portfolio_entry_incoming{background-color:#5cb85c}.o_portfolio div .o_portfolio_entry_inprocess{background-color:#c8c8c8}.o_portfolio div .o_portfolio_entry_done{background-color:#5cb85c}.o_portfolio div .o_popover,.o_portfolio div .popover:hover{color:#333;text-decoration:none}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page{background:#fcfcfc;border:1px solid #eee;border-radius:4px}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_portfolio_status_legend{margin-top:3em}.o_portfolio_status_legend h6{margin-bottom:5px}.o_ed_htitle h1,.o_ed_htitle .h1{font-size:30px}.o_ed_htitle h2,.o_ed_htitle .h2{font-size:24px}.o_ed_htitle h3,.o_ed_htitle .h3{font-size:18px}.o_ed_htitle h4,.o_ed_htitle .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_ed_htitle h2,.o_ed_htitle .h4{font-size:14px}.o_ed_htitle h5,.o_ed_htitle .h5{font-size:12px}.o_ed_htitle h6,.o_ed_htitle .h6{font-size:12px}@media print{.o_binder h1{font-size:43.2px;margin-top:10cm}.o_portfolio_section{margin-bottom:1cm}.o_portfolio_section h3:first-of-type{font-size:36px}.o_page_lead{border:0;border-bottom:1px solid #d9d9d9;border-radius:0;background-color:none;padding:0;margin-bottom:10px}.o_page_lead .o_portfolio_status_block{border-top:0;margin-bottom:0}.o_page_lead .o_media img{border:0}.o_page_lead .o_portfolio_categories{display:block;margin-left:0}.o_page_lead .o_portfolio_status_block{padding-top:0}.o_page_lead .o_page_summary{margin-top:1em;font-style:italic}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki{padding:0;border-radius:0;border:0}.o_pf_content .o_cit .o_desc p,.o_pf_content .o_text .o_desc p,.o_pf_content .o_file .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_image .o_desc p,.o_pf_content .o_video .o_desc p,.o_pf_content .o_efficiencystatement .o_desc p,.o_pf_content .o_feed .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_wiki .o_desc p{margin:0}.o_efficiencystatement table{font-size:90%}.o_artefact_metadata{page-break-inside:avoid;border:0;border-left:5px solid #eee;padding-left:10px;font-size:80%}.o_artefact_metadata table td,.o_artefact_metadata table th{border:0 !important;padding:2px !important}.o_artefact_metadata table th:first-of-type{width:20%}.o_pf_video_placeholder{background-color:#f8f8f8 !important;-webkit-print-color-adjust:exact;color-adjust:exact}.o_pf_video_placeholder.visible-print-block{display:table !important}}.o_evaluation_form .o_evaluation_block{margin-top:2em;margin-bottom:2em}.o_evaluation_form .o_rubric_name{font-weight:bold;margin-bottom:1em}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:1em;font-weight:bold}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center;align-self:flex-end;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_evaluation_form .o_slider_wrapper{height:33px;overflow:hidden}.o_evaluation_form .o_slider{margin-bottom:1em}.o_evaluation_form .o_slider label{padding:0}.o_evaluation_form .o_slider input{padding:0;margin:0;position:relative}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_continous .o_evaluation_no_response div.radio{padding:0;margin:0}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps{display:flex;justify-content:space-between}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio:hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_no_response div.radio{margin-top:2px}.o_evaluation_form .o_evaluation_discrete_radio .o_evaluation_step_labels{display:flex;justify-content:space-between}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em;margin-bottom:10px}.o_evaluation_form .o_evaluation_left_label{text-align:right;font-weight:normal}.o_evaluation_form .o_evaluation_left_label.o_evaluation_left_label_la{text-align:left;padding-left:0px;font-weight:normal}.o_evaluation_form .o_evaluation_right_label{text-align:left;font-weight:normal}.o_evaluation_form .o_evaluation_text_legend{margin-bottom:1em}.o_evaluation_form .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_fileupload{margin-bottom:2em}.o_evaluation_form .o_evaluation_mc_other{margin-top:-10px;margin-left:10px;margin-right:10px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_slider{margin-left:15px;margin-right:15px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_end_label{text-align:right;padding-right:20px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_continous .x .tick{visibility:hidden}.o_evaluation_form .o_ed_rubrictablehandler .table{margin-top:5px}.o_evaluation_form .svg-container{display:inline-block;position:relative;width:100%;padding-bottom:50%;vertical-align:top;overflow:hidden}.o_evaluation_form .svg-content-responsive{display:inline-block;position:absolute;top:10px;left:0}.d3chart .o_eva_bar{fill:#337ab7}.d3chart .o_rubric_sufficient{fill:#5cb85c}.d3chart .o_rubric_neutral{fill:#f0ad4e}.d3chart .o_rubric_insufficient{fill:#d9534f}.d3chart .o_rubric_unrated{fill:#337ab7}.o_qual_hm_legend{padding:5px}.o_qual_hm_legend li{font-size:90%}.o_qual_hm_legend .ident{font-weight:bold}.o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px}@media (max-width: 992px){.o_evaluation_editor_form .o_slider_editor{margin-bottom:20px}}@media (max-width: 992px){.o_evaluation_editor_form .o_evaluation_step_label{text-align:unset;margin-bottom:5px;padding-top:unset}}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_descrete_radio{display:flex;justify-content:space-between}.o_evaluation_editor_form .o_slider_descrete_radio .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_editor_form .o_slider_descrete_radio .radio:hover{background-color:#f5f5f5}@media (max-width: 992px){.o_evaluation_editor_form input[type="text"]{margin-bottom:5px}}.o_evaluation_editor_form .o_slider_continous{padding-top:10px;padding-bottom:-10px}.o_evaluation_editor_form .o_slider_descrete{padding-top:5px;padding-bottom:-5px}.o_evaluation_editor_form .o_evaluation_example{font-size:90%}.o_evaluation_editor_form .o_slider_top{margin-top:23px}.o_evaluation_editor_form .o_slider_buttons .pull-right div:not(:first-child){display:inline-block}.o_evaluation_editor_form .o_slider_buttons .pull-right .btn{margin-top:-3px}.o_evaluation_editor_form .o_slider_weight{max-width:40px}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_right_label{text-align:right}.o_evaluation_form .o_evaluation_no_response{text-align:left}.o_evaluation_form .o_evaluation_no_response .o_evaluation_no_resp_value{font-weight:bold}.o_evaluation_form .o_slider{margin-bottom:2em}.o_evaluation_form .o_slider div{padding-left:0}.o_evaluation_form .o_slider .o_evaluation_no_response{margin-top:0.7em}}@media (min-width: 768px){.o_evaluation_form .o_evaluation_no_resp_value{display:none}}@media print{.o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#f9f9f9 !important}.o_icon_rubric_insufficient::before{color:#d9534f !important}.o_icon_rubric_neutral::before{color:#f0ad4e !important}.o_icon_rubric_sufficient::before{color:#5cb85c !important}}.o_eva_report_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_eva_report_print #o_print_brand img{width:100%}.o_eva_report_print .o_eva_content{margin-top:4em}.o_eva_report_print .o_eva_overview .panel table{margin:0px 0px 1px 0px}.o_eva_report_print .o_evaluation_duration,.o_eva_report_print .o_participated_users{display:none}.o_surv_run.withCmds .o_eva_report{margin-top:-44px}.o_eva_report .o_eva_overview .o_eva_rubric .table{margin-top:5px}.o_eva_report .o_ed_rubrictablehandler .o_table_footer{font-weight:bold}.o_eva_report .o_rubric_avg{font-weight:bold;white-sprace:nowrap}.o_eva_report .o_rubric_table .o_table_wrapper{margin-bottom:10px}.o_eva_report .o_rubric_table_legend{display:block}.o_eva_report .o_rubric_table_legend .ident{font-weight:bold}.o_eva_report .o_rubric_table_legend .list-inline{margin-bottom:0px}.o_eva_report .o_rubric_table_legend.o_last{margin-bottom:15px}.o_evaluation_execution .o_evaluation_anonymous_info{display:inherit}.o_qual_main .o_labeled.o_qual_dc_status_preparation,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_ready,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_ready{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_running,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_running{background-color:#933;border-color:#933;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_finished,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_finished{background-color:#14892c;border-color:#14892c;color:#fff}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_preparation{background-color:#384e64}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_ready{background-color:#ffc61e}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_running{background-color:#732626}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_finished{background-color:#0e5c1e}.o_qual_main .o_qual_dc_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_labeled_light.o_qual_dc_status_preparation_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_preparation_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_labeled_light.o_qual_dc_status_ready_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_labeled_light.o_qual_dc_status_running_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_running_light{border-color:#933;color:#933}.o_qual_main .o_labeled_light.o_qual_dc_status_finished_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_finished_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_qual_exec_status_future_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_qual_exec_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_qual_exec_status_participating_light{border-color:#933;color:#933}.o_qual_main .o_qual_exec_status_participated_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_status_over_light{border-color:#aaa;color:#aaa}.o_qual_execute_header .o_qual_context_table,.o_qual_report_header .o_qual_context_table{margin-bottom:0}.o_qual_execute_header .o_qual_context_table th,.o_qual_report_header .o_qual_context_table th{width:40%;border-top:none;padding:4px 8px}.o_qual_execute_header .o_qual_context_table td,.o_qual_report_header .o_qual_context_table td{width:60%;border-top:none;padding:4px 8px}.o_qual_ana_table .o_table_body{padding:0}.o_qual_ana_filter .o_date_range{margin-bottom:0px}.o_qual_ana_filter .o_date_range .control-label{margin-bottom:5px}.o_qual_ana_filter .o_date_range .o_date{margin-bottom:15px;padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_from{padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_to{padding-right:0px}.o_qual_hm_basecolor{background-color:#337ab7}.o_qual_hm .o_circle_container{display:flex}.o_qual_hm .o_circle_box{display:flex;align-items:center;justify-content:center}.o_qual_hm .o_circle{border-radius:50%}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d9534f !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f0ad4e !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#5cb85c !important}.o_qual_hm .o_avg{display:flex;align-items:center;margin-left:5px}.o_qual_trend_invisible{visibility:hidden}.o_qual_trend .o_qual_ana_trend_up{transform:rotate(315deg);-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg)}.o_qual_trend .o_qual_ana_trend_down{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.o_qual_trend .o_rubric_insufficient{color:#d9534f}.o_qual_trend .o_rubric_neutral{color:#f0ad4e}.o_qual_trend .o_rubric_sufficient{color:#5cb85c}.o_qual_trend .o_qual_ana_unrated{color:#337ab7}.o_qual_filtered_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_qual_filtered_print #o_print_brand img{width:100%}.o_qual_filtered_print .o_qual_content{margin-top:4em}.o_qual_filtered_print .o_groupby_config,.o_qual_filtered_print .o_slider_trend_config,.o_qual_filtered_print .o_qual_hm tr td:last-child,.o_qual_filtered_print .o_qual_hm tr th:last-child{display:none}.o_evaluation_bar_chart_legend{padding:5px}.o_evaluation_bar_chart_legend li{font-size:90%}.o_evaluation_bar_chart_legend .ident{font-weight:bold}@media (max-width: 768px){.o_hm_group_select{padding-bottom:12px}.o_hm_panel_body{margin-bottom:-12px}}@media (min-width: 768px){.o_hm_trend_row{padding-top:12px}}@media print{.o_qual_hm .o_circle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d9534f !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f0ad4e !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#5cb85c !important}.o_qual_hm .o_circle.o_qual_hm_basecolor{background-color:#337ab7 !important}.o_qual_trend{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_trend .o_rubric_insufficient::before{color:#d9534f !important}.o_qual_trend .o_rubric_neutral::before{color:#f0ad4e !important}.o_qual_trend .o_rubric_sufficient::before{color:#5cb85c !important}.o_qual_trend .o_qual_ana_unrated::before{color:#337ab7 !important}}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;margin-bottom:0;padding:0 12px;font-style:italic;padding:5px 5px 0;border:0}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.o_cit blockquote.o_quote{page-break-inside:avoid}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run h1{font-size:1.8rem;font-weight:normal}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.o_video_chapter_editor .o_table_wrapper.o_table_flexi .table,.o_video_marker_editor .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_video_marker_editor .o_video_question.mejs__overlay{overflow:scroll}.o_video_question.mejs__overlay.o_video_large_question{align-items:flex-start;padding:1em 1em 0 1em;z-index:5}.o_video_question.mejs__overlay.o_video_large_question #o_qti_container{border:1px solid #eee}.o_video_marker{position:absolute;background-color:#efefef;opacity:0.85;border-left:3px solid #5bc0de;padding:5px}.o_video_marker.o_video_marker_gray{border-left-color:#333}.o_video_marker.o_video_marker_blue{border-left-color:#bce8f1}.o_video_marker.o_video_marker_green{border-left-color:#5cb85c}.o_video_marker.o_video_marker_yellow{border-left-color:#f0ad4e}.o_video_marker.o_video_marker_red{border-left-color:#d9534f}.o_video_question.mejs__overlay{width:100%;height:100%;background-color:rgba(255,255,255,0.5)}.o_video_question #itemBody,.o_video_question .modalFeedback{background-color:white;opacity:1.0}.o_video_question .o_assessmentitem_wrapper .o_qti_item_body{min-height:50px}.o_video_question #o_qti_assessment_test_timer{border:none;padding:5px;margin:0}.o_video_question #o_qti_progress .progress{height:10px}.o_video_question #o_qti_container{background-color:white;padding:5px;border-radius:3px}.o_video_question .o_sel_additional_feedback{float:left;font-size:26px}.o_video_question .o_sel_additional_feedback .o_icon_passed{color:#5cb85c}.o_video_question .o_sel_additional_feedback .o_icon_failed{color:#d9534f}.mejs__time-rail .o_video_marker_gray{background:#333}.mejs__time-rail .o_video_marker_blue{background:#bce8f1}.mejs__time-rail .o_video_marker_green{background:#5cb85c}.mejs__time-rail .o_video_marker_yellow{background:#f0ad4e}.mejs__time-rail .o_video_marker_red{background:#d9534f}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.mejs__time-marker{background-color:#5bc0de}.o_userbulk_changedcell{font-style:italic;font-weight:bold}.o_qpool_source_status{text-align:center}.o_qitem_author{white-space:nowrap}a.o_qpool_status{margin:0 2px 2px 2px;text-align:left}.o_labeled.o_qpool_status_draft,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_draft{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_qpool_status_review,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_review{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_labeled.o_qpool_status_revised,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_revised{background-color:#933;border-color:#933;color:#fff}.o_labeled.o_qpool_status_finalVersion,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_finalVersion{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_qpool_status_endOfLife,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_endOfLife{background-color:#aaa;border-color:#aaa;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_draft{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_review{background-color:#ffc61e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_revised{background-color:#732626}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_finalVersion{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_endOfLife{background-color:#919191}.o_labeled_light.o_qpool_status_draft_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_draft_light{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_qpool_status_review_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_review_light{border-color:#ffd351;color:#333}.o_labeled_light.o_qpool_status_revised_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_revised_light{border-color:#933;color:#933}.o_labeled_light.o_qpool_status_finalVersion_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_finalVersion_light{border-color:#14892c;color:#14892c}.o_labeled_light.o_qpool_status_endOfLife_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_endOfLife_light{border-color:#aaa;color:#aaa}.btn-arrow-right.o_qpool_qitem_draft{background:#f8f8f8;border-bottom-color:#4a6785;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_review{background:#f8f8f8;border-bottom-color:#ffd351;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_revised{background:#f8f8f8;border-bottom-color:#933;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_final{background:#f8f8f8;border-bottom-color:#14892c;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_end_of_life{background:#f8f8f8;border-bottom-color:#aaa;border-bottom-width:3px}.btn-arrow-right.o_qpool_status_slected{background-color:#e7e7e7;color:#555}.btn-arrow-right,.btn-arrow-left{position:relative;padding-left:18px;padding-right:18px;margin-bottom:5px}.btn-arrow-right{padding-left:36px}.btn-arrow-left{padding-right:36px}.btn-arrow-right:before,.btn-arrow-right:after,.btn-arrow-left:before,.btn-arrow-left:after{content:"";position:absolute;top:5px;width:22.627417px;height:22.627417px;background:inherit;border:inherit;border-left-color:transparent;border-bottom-color:transparent;border-radius:0px 4px 0px 0px;-webkit-border-radius:0px 4px 0px 0px;-moz-border-radius:0px 4px 0px 0px}.btn-arrow-right:before,.btn-arrow-right:after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.btn-arrow-left:before,.btn-arrow-left:after{transform:rotate(225deg);-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-o-transform:rotate(225deg);-ms-transform:rotate(225deg)}.btn-arrow-right:before,.btn-arrow-left:before{left:-11px}.btn-arrow-right:after,.btn-arrow-left:after{right:-11px}.btn-arrow-right:after,.btn-arrow-left:before{z-index:1}.btn-arrow-right:before,.btn-arrow-left:after{background-color:white}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}.o_old_browser{display:none}.o_browser_ie10 .o_old_browser{display:block}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_catalog_title h2,.o_library_catalog_title h3,.o_library_catalog_title h4,.o_library_catalog_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_catalog_title h2{margin-top:0}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}.o_useradmin .o_user_infos .o_user_infos_inner{margin-right:45px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_useradmin div#o_main_toolbar.o_toolbar{margin-top:0px}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.7575757576);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_gta_coach_selection .o_noti{display:inline-block;float:none;margin:0}.o_gta_coach_selection .o_gta_coach_selection_bar{position:relative}.o_gta_coach_selection .o_gta_coach_selection_bar .o_noti{position:absolute;top:3px;right:0}p.o_gta_reopen_warning{margin-top:-20px}.o_lecture_authorized_absence div.form-inline,.o_lecture_authorized_absence div.o_navbar-form{display:inline}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_date,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_startTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_endTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_details,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_tools{width:1%}.o_lectures_teacher_overview .o_lectures_current_wrapper{border:1px solid transparent;background:#f8f8f8;border-radius:4px;margin:10px -10px 20px -10px;padding:10px}.o_lectures_teacher_overview .o_lectures_current_wrapper .o_button_group{margin-bottom:0}.o_lectures_teacher_overview .o_lectures_teacher_search .o_form .o_date{padding-right:10px;position:relative}.o_lectures_teacher_overview .o_lectures_teacher_search div.o_chelp_wrapper_and_buttons{position:absolute;top:0;right:0}.o_header_with_buttons .o_day_chooser{position:relative;float:right}.o_lectures_rollcall legend{margin-bottom:10px}.o_lectures_rollcall .o_desc,.o_lectures_rollcall .o_preparation{margin:0}.o_rollcall_next_previous_group{text-align:center}.o_rollcall_next_previous_group a.o_sel_close{float:left}.o_rollcall_next_previous_group a.o_sel_close span{display:none}.o_rollcall_next_previous_group .form-control{display:inline;width:auto}@media (max-width: 767px){.o_rollcall_next_previous_group a span{display:none}}.o_lecture_free{color:#777}.o_rollcall_portrait>div{margin:0 auto 10px auto;width:100px}.o_edubase_pv{overflow:hidden;padding-top:10px}.o_edubase_pv_fig{display:inline-block;vertical-align:top;width:110px;margin-right:3%}.o_edubase_run_enabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_run_disabled .o_edubase_booksection{margin-right:3%;margin-bottom:3%;width:177px;display:inline-table}.o_edubase_run_disabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_bs_buttons{padding-top:10px}.o_edubase_bs_book_id{margin-top:-2px}.o_edubase_bs_details{margin-left:-20px}.o_edubase_bs_details_label{visibility:hidden}.o_edubase_bs_cover object{margin-left:10px;margin-top:10px;height:120px}.o_edubase_bs_cover img{margin-left:10px;margin-top:10px;height:120px}.o_edubase_edit_books .o_icon_error{visibility:hidden}.o_edubase_edit_books .o_icon_help{margin-bottom:0px}.o_edubase_edit_books .row{margin-bottom:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata_wrapper{margin-top:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata.open{position:unset;margin:0;padding:0}.o_edusharing_container.o_in_iframe .edusharing_metadata.open:before{content:unset;border:unset;top:unset;position:unset;left:unset;width:unset;height:unset}.o_edusharing_container.o_hide_license .license{display:none}.o_edusharing_container.o_hide_infos .edusharing_metadata_wrapper{display:none}.o_edusharing_left{display:block;float:left;margin:5px 5px 5px 0}.o_edusharing_right{display:block;float:right;margin:5px 0 5px 5px}.o_edusharing_inline{display:inline-block;margin:0 5px}.o_edusharing_none{display:block;float:none;margin:5px 0}.eduContainer{width:180px;color:transparent}.edusharing_spinner_inner{width:30px;height:50px;display:inline-block}.edusharing_spinner1{background:url("../light/images/edusharing/hex1.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.1s;-moz-animation-delay:0.1s;animation-delay:0.1s}.edusharing_spinner2{background:url("../light/images/edusharing/hex2.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.25s;-moz-animation-delay:0.25s;animation-delay:0.25s}.edusharing_spinner3{background:url("../light/images/edusharing/hex3.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.5s;-moz-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5) rotate(90deg)}100%{transform:scale(1)}}body.o_doceditor_body{margin-bottom:0px}body.o_doceditor_body .o_container_offcanvas{max-width:100%}body.o_doceditor_body .container-fluid{padding-left:0px;padding-right:0px;margin-left:0px;margin-right:0px}body.o_doceditor_body #o_toplink{display:none}.o_doceditor{margin-top:10px}.o_doceditor .o_doceditor_config .nav button{margin-top:3px}.o_doceditor .navbar-collapse{border-top:0 !important}.o_doceditor .navbar-collapse.collapse{display:block !important}.o_doceditor .navbar-nav{margin:0}.o_doceditor .navbar-nav>li,.o_doceditor .navbar-nav{float:left !important}.o_doceditor .navbar-right{float:right !important}.o_doceditor .navbar-nav>li>.dropdown-menu{background-color:#f8f8f8;border-color:#e7e7e7;position:absolute;right:0;left:auto}.o_doceditor .navbar-nav>li>a{padding-top:10px !important;padding-bottom:10px !important;line-height:20px !important}.o_doceditor .o_collabora iframe,.o_doceditor .o_onlyoffice iframe,.o_doceditor .o_office365 iframe{width:100%;height:calc(100vh - 61px);height:calc(var(--doceditorvh, 1vh) * 100 - 61px);margin-top:10px;border-width:0px}.o_doceditor.o_web_document .o_collabora iframe,.o_doceditor.o_web_document .o_onlyoffice iframe,.o_doceditor.o_web_document .o_office365 iframe{width:100%;height:calc(100vh - 321px);height:calc(var(--doceditorvh, 1vh) * 100 - 321px);margin-top:10px;margin-bottom:10px;border-width:1px}.o_doceditor.o_web_document_edit .o_collabora iframe,.o_doceditor.o_web_document_edit .o_onlyoffice iframe,.o_doceditor.o_web_document_edit .o_office365 iframe{width:100%;height:calc(100vh - 276px);height:calc(var(--doceditorvh, 1vh) * 100 - 276px);margin-top:10px;margin-bottom:25px;border-width:1px}.o_doceditor .o_file_editor,.o_doceditor .o_doceditor_data_transfer{margin-right:15px;margin-left:15px}.o_web_content .o_doceditor{margin-top:0px}.o_taxonomy div#o_main_toolbar.o_toolbar{margin-top:0px}.o_taxonomy_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row{position:relative;display:inline-block;height:225px;width:450px;vertical-align:top;margin-right:10px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row ul{padding-left:2em}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui{max-width:100vw;max-height:100vh}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}@media (max-width: 767px){.ui-dialog.o_modal-ui{height:100vh !important;width:100vw !important}.ui-dialog.o_modal-ui div.ui-dialog-content{height:90vh !important}}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#aaa;background:#f9f9f9}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:3px solid #337ab7;background-image:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}.o_richtext_mce>.o_richtext_mce_modes{text-align:right;padding-right:4px}.o_richtext_mce>.o_richtext_mce_modes a{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}.mce-wordcount:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0);content:"ï™"}.mce-danger .mce-wordcount:after{color:#d9534f;content:"ïª"}.mce-statusbar.mce-danger{background-color:#f2dede}.mce-textbox.mce-danger{border-color:#ce8383;background-color:#f2dede}@media (max-width: 470px){.mce-foot .mce-container-body.mce-abs-layout{left:-337px}}div.o_table_search>span.twitter-typeahead{padding-top:5px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_segments,.o_table_toolbar,.o_breadcrumb,.o_bookmark,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_container_offcanvas{max-width:100%;margin-left:5px;margin-right:5px}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.o_print_break_after{clear:both;page-break-after:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-content{border:0}.modal-header{display:none}.modal-body{padding:0}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.ui-slider.ui-slider-horizontal.ui-widget-content{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f9f9 !important}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{background-color:#337ab7 !important}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:none !important}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}.radial-progress .inset .bgIcon{opacity:0.3;transition:opacity 0.3}.radial-progress .inset .bgIcon:before,.radial-progress .inset .o_icon_progress_danger:before,.radial-progress .inset .o_icon_progress_success:before{opacity:0.3;transition:opacity 0.3;color:#777 !important}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:0.3;transition:opacity 0.3;color:#777 !important}body{margin:0;zoom:0.6}table,figure,figure{page-break-inside:avoid}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6{page-break-after:avoid}.o_disclaimer .o_disclaimer_content{max-height:none}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fcfcfc;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fcfcfc;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fcfcfc;border-color:#ccc}.btn-default .badge{color:#fcfcfc;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fcfcfc;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#337ab7;background-color:#fcfcfc;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fcfcfc;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fcfcfc;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fcfcfc;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fcfcfc;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body div.popover input{max-width:100%}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@media screen and (max-width: 768px){@supports (-webkit-overflow-scrolling: touch){.form-control,.ui-widget input,.ui-widget select,.ui-widget textarea{font-size:16px}}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.woff") format("woff"),url("../light/fonts/openolat/openolat.ttf") format("truetype"),url("../light/fonts/openolat/openolat.svg") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot");src:url("../../font-awesome/fonts/fontawesome-webfont.woff2") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf") format("truetype");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.2857142857em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.o_icon-li.o_icon-lg{left:-1.8571428571em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_absence:before{content:"ï€"}.o_icon_absence_authorized:before{content:"ï";color:#5cb85c}.o_icon_absence_unauthorized:before{content:"ïª";color:#d9534f}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_align_left:before{content:""}.o_icon_align_middle:before{content:""}.o_icon_align_right:before{content:""}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—";color:#bc2d0c}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_cancelled:before{content:"ïž"}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before,.o_search_result .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_column:before{content:""}.o_icon_columns:before{content:""}.o_icon_container:before{content:""}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_compulsory:before{content:"ï©"}.o_icon_content_popup:before{content:"ï‚Ž"}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correct_response:before{content:"ï";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_curriculum_element:before{content:""}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:"ï„Œ"}.o_icon_dispensation_authorized:before{content:"ï";color:#5cb85c}.o_icon_dispensation_unauthorized:before{content:"ï±";color:#f0ad4e}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:"ï‚Ž"}.o_icon_extra_time:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_fileupload:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_incorrect_response:before{content:"ïœ";color:#d9534f}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inheritance_root:before{content:"ï‚«"}.o_icon_inheritance_inherited:before{content:""}.o_icon_inheritance_none:before{content:"ï„Œ"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_lecture:before{content:"ï€"}.o_icon_left:before{content:""}.o_icon_levels:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:"ï‚Ž"}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_log:before{content:"ï…œ"}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_ms_done:before{content:""}.o_icon_ms_pending:before{content:"ï‹"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_node_up_down:before{content:"ï½"}.o_icon_notes:before{content:""}.o_icon_notice_authorized:before{content:"ï";color:#5cb85c}.o_icon_notice_unauthorized:before{content:"ï±";color:#f0ad4e}.o_icon_notification:before{content:"ï‚ž"}.o_icon_number_of:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before,.o_search_result .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_origin:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_presence:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:"ï‚š"}.o_icon_provider_google:before{content:"ï† "}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_tequila:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_pull:before{content:""}.o_icon_quota:before{content:""}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:"ï„Œ"}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:"ï„Œ"}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_reopen:before{content:"ï„’"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_reset:before{content:"ïˆ"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_reviewer:before{content:""}.o_icon_right:before{content:"ï‚©"}.o_icon_rss:before{content:"ï‚ž"}.o_icon_rss_unsubscribe:before{content:"ï‚ž";color:#996633}.o_icon_rubric:before{content:""}.o_icon_rubric_insufficient:before{content:"ï—";color:#d9534f}.o_icon_rubric_sufficient:before{content:"ï˜";color:#5cb85c}.o_icon_rubric_neutral:before{content:"ïª";color:#f0ad4e}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_shuffle:before{content:"ï´"}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:""}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:"ï„Œ"}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_time:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_timetable:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tool_pdf:before{content:"ï‡"}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_unlocked:before{content:"ï‚œ"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_update:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_width_expand:before{content:"ï¥"}.o_icon_width_collapse:before{content:"ï¦"}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:"ï‚Ž"}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:"ï„š"}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_icon_repo_status_preparation:before{content:"ï€"}.o_icon_repo_status_review:before{content:""}.o_icon_repo_status_coachpublished:before{content:""}.o_icon_repo_status_published:before{content:""}.o_icon_repo_status_closed:before{content:"ïž"}.o_icon_repo_status_trash:before{content:""}.o_icon_repo_status_deleted:before{content:""}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:"ï‚Ž"}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:"ï‚Ž"}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:"ï„š"}.o_survey_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:"ï„Œ"}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:"\E800";font-family:openolat;font-size:120%}.o_edubase_icon:before{content:"\E885";font-family:openolat}.o_livestream_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:"ï‚ž"}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_icon_qitem_commands:before{content:"ï‚…"}.o_icon_qitem_convert:before{content:""}.o_icon_qitem_copy:before{content:""}.o_icon_qitem_delete:before{content:""}.o_icon_qitem_draft:before{content:"ï€"}.o_icon_qitem_endOfLife:before{content:""}.o_icon_qitem_finalVersion:before{content:""}.o_icon_qitem_export:before{content:""}.o_icon_qitem_hide_metadata:before{content:""}.o_icon_qitem_import:before{content:"ï‚“"}.o_icon_qitem_new:before{content:"ï•"}.o_icon_qitem_review:before{content:""}.o_icon_qitem_revised:before{content:""}.o_icon_qitem_share:before{content:"ï¤"}.o_icon_qitem_show_metadata:before{content:""}.o_icon_qitem_status:before{content:"ï¡"}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_new_entry:before{content:"ï€"}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_icon_pf_trash:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimatch_truefalse:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_as_mode_stop:before{content:"ï"}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_lectures_current:before{content:"ï„‘";color:#f0ad4e}.o_lectures_next:before{content:""}.o_lectures_pending:before{content:"ï„‘";color:#d9534f}.o_lectures_closed:before{content:"ï„‘"}.o_lectures_rollcall_ok:before{content:"ï„‘";color:#5cb85c}.o_lectures_rollcall_warning:before{content:"ï‚";color:#f0ad4e}.o_lectures_rollcall_danger:before{content:"ï„Œ";color:#d9534f}.o_lectures_rollcall_free:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_notice:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_pending:before{content:"";color:#b8b8b8}.o_lectures_attended:before{content:"ï„‘";color:#5cb85c}.o_lectures_authorized:before{content:"ï„‘";color:#f0ad4e}.o_lectures_absent:before{content:"ï„‘";color:#d9534f}.o_absences_col_warning:before{content:"ï±"}.o_absences_col_alert:before{content:"ïª"}.o_icon_taxonomy:before{content:""}.o_icon_taxonomy_level:before{content:""}.o_icon_taxonomy_level_leaf:before{content:"ï„•"}.o_icon_taxonomy_templates:before{content:""}.o_icon_taxonomy_levels:before{content:""}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_icon_identity_permanent:before{content:""}.o_icon_identity_pending:before{content:""}.o_icon_identity_login_denied:before{content:"ïž"}.o_icon_identity_deleted:before{content:""}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_guests_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}.o_icon_eva_disclaimer:before{content:""}.o_icon_eva_end_show:before{content:"ï¾"}.o_icon_eva_end_hide:before{content:"ï…¸"}.o_icon_eva_export:before{content:""}.o_icon_eva_pdf:before{content:"ï‡"}.o_icon_eva_print:before{content:""}.o_icon_eva_session_info:before{content:"ï„©"}.o_icon_eva_mc:before{content:"ï†"}.o_icon_eva_sc:before{content:""}.o_icon_eva_sc:before{content:""}.o_icon_surv_reset:before{content:"ï„"}.o_icon_qual_ana_hide_filter:before{content:""}.o_icon_qual_ana_pres_edit:before{content:"ï‚"}.o_icon_qual_ana_export:before{content:""}.o_icon_qual_ana_pres_delete:before{content:"ïž"}.o_icon_qual_ana_pdf:before{content:"ï‡"}.o_icon_qual_ana_print:before{content:""}.o_icon_qual_ana_show_filter:before{content:""}.o_icon_qual_ana_trend:before{content:"ïˆ"}.o_icon_qual_ana_trend_arrow:before{content:"ï‚©"}.o_icon_qual_dc_create:before{content:"ï•"}.o_icon_qual_dc_delete:before{content:""}.o_icon_qual_dc_finished:before{content:"ï˜"}.o_icon_qual_dc_preparation:before{content:"ï„"}.o_icon_qual_dc_ready:before{content:"ï€"}.o_icon_qual_dc_running:before{content:"ï…„"}.o_icon_qual_exec_future:before{content:"ïœ"}.o_icon_qual_exec_over:before{content:"ï—"}.o_icon_qual_exec_participating:before{content:"ï…„"}.o_icon_qual_exec_participated:before{content:"ï˜"}.o_icon_qual_exec_ready:before{content:"ï€"}.o_icon_qual_gen_ce_add:before{content:"ï•"}.o_icon_qual_gen_create:before{content:"ï•"}.o_icon_qual_gen_delete:before{content:""}.o_icon_qual_gen_disabled:before{content:"ïž"}.o_icon_qual_gen_enabled:before{content:""}.o_icon_qual_gen_re_add:before{content:"ï•"}.o_icon_qual_part_user_add:before{content:""}.o_icon_qual_part_user_add_course:before{content:""}.o_icon_qual_part_user_add_curele:before{content:""}.o_icon_qual_part_execute:before{content:"ï‹"}.o_icon_lic_add:before{content:"ï•"}.o_icon_lic_public_domain:before{content:"\E810";font-family:openolat;font-size:120%}.o_icon_lic_cc0:before{content:"\E811";font-family:openolat;font-size:120%}.o_icon_lic_by:before{content:"\E812";font-family:openolat;font-size:120%}.o_icon_lic_by_sa:before{content:"\E813";font-family:openolat;font-size:120%}.o_icon_lic_by_nd:before{content:"\E814";font-family:openolat;font-size:120%}.o_icon_lic_by_nc:before{content:"\E815";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_sa:before{content:"\E817";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_nd:before{content:"\E819";font-family:openolat;font-size:120%}.o_icon_lic_all_rights_reserved:before{content:""}.o_icon_lic_freetext:before{content:""}.o_icon_lic_general:before{content:""}.o_icon_lic_youtube:before{content:"ï…¦"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_small_bottom,.o_block_small{margin-bottom:0.5em}.o_block_small_top,.o_block_small{margin-top:0.5em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_move_up{margin-top:-1em}.o_block_move_up_small{margin-top:-0.5em}.o_block_move_up_large{margin-top:-2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block;vertical-align:top}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.6666666667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.o_button_textstyle:before{content:'['}.o_button_textstyle:after{content:']'}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#ccc;border-radius:10px;background-color:#fcfcfc}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-top:none;border-left:none;border-right:none;color:#888;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:11px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:20px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_highlight_on_hover:hover{background-color:#f5f5f5}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_copy_code input,.o_copy_code textarea,.b_copy_code input,code input,pre input,.b_copy_code textarea,code textarea,pre textarea{border:0;width:90%;background:transparent}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_figure_caption_bottom{display:inline-block;min-width:50%}.o_figure_caption_bottom figure{display:table}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_page_margins{padding:25px}.o_dragable,.o_page_fragment_edit .o_page_tools_dd:before,.o_page_drop{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.o_dragable:active,.o_page_fragment_edit .o_page_tools_dd:active:before,.o_page_drop:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging,.gu-mirror{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging:active,.gu-mirror:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_hidden{visibility:hidden}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4,.o_cal .fc-header-title h2{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}fieldset legend{color:#333}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{line-height:1.428571429;vertical-align:top}table.b_default td,table.b_default th{padding:8px;vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:8px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:8px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:8px;border:0 !important}table.b_borderless thead td,table.b_borderless th{font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:8px;background:#eee;border:1px solid #fbfbfb}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_gray tbody tr:nth-child(even) td{background:#fbfbfb;border:1px solid #eee}table.b_gray.b_no_stripes tbody tr:nth-child(even) td{background:#eee;border:1px solid #fbfbfb}@media print{table.b_gray td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eee !important}table.b_gray thead td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d5d5d5 !important}table.b_gray tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fbfbfb !important}}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:8px;background:#d9edf7;border:1px solid #eef7fb}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_blue tbody tr:nth-child(even) td{background:#eef7fb;border:1px solid #d9edf7}table.b_blue.b_no_stripes tbody tr:nth-child(even) td{background:#d9edf7;border:1px solid #eef7fb}@media print{table.b_blue td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d9edf7 !important}table.b_blue thead td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#afd9ee !important}table.b_blue tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7fb !important}}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:8px;background:#dff0d8;border:1px solid #eef7ea}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_green tbody tr:nth-child(even) td{background:#eef7ea;border:1px solid #dff0d8}table.b_green.b_no_stripes tbody tr:nth-child(even) td{background:#dff0d8;border:1px solid #eef7ea}@media print{table.b_green td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#dff0d8 !important}table.b_green thead td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#c1e2b3 !important}table.b_green tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7ea !important}}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:8px;background:#fcf8e3;border:1px solid #fefefa}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_yellow tbody tr:nth-child(even) td{background:#fefefa;border:1px solid #fcf8e3}table.b_yellow.b_no_stripes tbody tr:nth-child(even) td{background:#fcf8e3;border:1px solid #fefefa}@media print{table.b_yellow td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fcf8e3 !important}table.b_yellow thead td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f7ecb5 !important}table.b_yellow tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fefefa !important}}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:8px;background:#f2dede;border:1px solid #f9f0f0}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}table.b_red tbody tr:nth-child(even) td{background:#f9f0f0;border:1px solid #f2dede}table.b_red.b_no_stripes tbody tr:nth-child(even) td{background:#f2dede;border:1px solid #f9f0f0}@media print{table.b_red td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f2dede !important}table.b_red thead td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#e4b9b9 !important}table.b_red tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f0f0 !important}}table.a_responsive{width:auto !important}@media (max-width: 768px){.a_responsive td{display:block}}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0}caption,figcaption,.o_caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left;font-style:italic}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}figure.align-left{float:left}figure.align-right{float:right}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}img.align-left{float:left}img.align-right{float:right}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}figure.image.align-center{display:block;text-align:center}figure.image.align-left{float:none;display:block;text-align:left}figure.image.align-left figcaption{text-align:left}figure.image.align-right{float:none;display:block;text-align:right}figure.image.align-right figcaption{text-align:right}figure.image{margin:2em 0 2em 0;border:0;background:none}figure.image img.b_float_left,figure.image img.b_float_left_clear,figure.image img.b_float_right,figure.image img.b_float_right_clear,figure.image img.b_float_left_clear_nomargin,figure.image img.b_centered{float:none;display:inline-block;margin:0}figure.image figcaption{font-size:90%;font-style:italic}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#337ab7}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#337ab7}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#337ab7}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60);width:120px}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar.o_toolbar_with_segments{margin-bottom:30px}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_breadcrumb+.o_tools_container{border-top:1px solid #e7e7e7}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:block;font-size:12px;text-align:center}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:16px;font-size:70% !important;padding:0 18px 0 4px;position:relative;top:-2px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:12px !important;margin:0 0 3px 0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{position:absolute;right:5px;top:2px;margin-right:0}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:14px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:10px !important}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:5px;top:2px;margin-right:0;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{padding:0 18px 0 4px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:20px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:15px;top:2px;margin-right:0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_label,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-toggle.o_with_labeled .o_inner_wrapper.o_labeled+.o_icon_caret{color:#fff !important}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled{padding:0;margin:0}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled .o_labeled{text-align:left}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled>li>a{padding:5px 5px;margin:1px}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto;text-align:center}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px}#o_container_page_width_toggler{position:absolute;top:25px;margin-top:-.75em;right:10px;z-index:5;display:none}@media (min-width: 1364px){#o_container_page_width_toggler{display:block}#o_container_page_width_toggler #o_go_standard_width{display:none}#o_container_page_width_toggler #o_go_full_width{display:block}body.o_width_full .o_container_offcanvas{max-width:100%;margin-left:20px;margin-right:20px}body.o_width_full #o_container_page_width_toggler #o_go_standard_width{display:block}body.o_width_full #o_container_page_width_toggler #o_go_full_width{display:none}}body.o_dmz #o_container_page_width_toggler{display:none !important}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_instruction,.o_form .o_warning,p.o_gta_reopen_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_instruction h2,.o_form .o_warning h2,p.o_gta_reopen_warning h2,.b_warning h3,.o_instruction h3,.o_form .o_warning h3,p.o_gta_reopen_warning h3,.b_warning h4,.o_instruction h4,.o_form .o_warning h4,p.o_gta_reopen_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_instruction .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_instruction h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,p.o_gta_reopen_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title p.o_gta_reopen_warning h2,.b_warning h5,.o_instruction h5,.o_form .o_warning h5,p.o_gta_reopen_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}.o_instruction{margin-top:0px;border-left:none;padding-top:10px;padding-bottom:10px}.o_instruction>.o_button_group{margin-bottom:0px}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#337ab7}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#23527c}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form .o_date.form-inline .form-group.o_second_date,.o_form .o_date.o_navbar-form .form-group.o_second_date,.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group,.o_form .o_date.form-inline .form-group.o_date_separator,.o_form .o_date.o_navbar-form .form-group.o_date_separator{margin-left:25px}.o_form .btn-group .o_date{display:inline-block}.o_form input.o_date_ms{width:3em}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:11em}.o_form .has-feedback .o_date_picker .form-control{padding-right:0}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .o_fileElement.has-error .o_icon_error.form-control-feedback{display:none}.o_form .form-control.textarea.o_fixed_font_with{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_form .form-control.textarea_disabled.o_fixed_font_with{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important;background:#fafafa}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_form_inline_mandatory_compact i{width:20px}.o_form_inline_mandatory_compact select.form-control{width:calc(100% - 25px)}.o_day_chooser .o_day_previous{display:inline-block}.o_day_chooser .o_day_previous a{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.o_day_chooser .o_day_date{display:inline-block;border-radius:0}.o_day_chooser .o_day_date input,.o_day_chooser .o_day_date .input-group-addon{border-radius:0}.o_day_chooser .o_day_next{display:inline-block}.o_day_chooser .o_day_next a{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 1px;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 1px 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_flexi tfoot{border-top:solid #ddd 2px}.o_table_wrapper.o_table_flexi .o_multiselect{width:20px}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_checkall>a{font-weight:normal;margin-right:10px}.o_table_wrapper .o_table_footer .o_table_checkall.input-sm,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.form-control,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.input-group-addon,.o_table_wrapper .o_table_footer .input-group-sm>.input-group-btn>.o_table_checkall.btn{padding:5px 6px}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}.o_breadcrumb.o_table_flexi_breadcrumb ol.breadcrumb{margin:5px 0 0 0}div.o_table_flexi div.o_table_flexi_leaf{margin-left:1.55em}div.o_table_flexi div.o_table_flexi_l0{padding-left:0px}div.o_table_flexi div.o_table_flexi_l1{padding-left:15px}div.o_table_flexi div.o_table_flexi_l2{padding-left:30px}div.o_table_flexi div.o_table_flexi_l3{padding-left:45px}div.o_table_flexi div.o_table_flexi_l4{padding-left:60px}div.o_table_flexi div.o_table_flexi_l5{padding-left:75px}div.o_table_flexi div.o_table_flexi_l6{padding-left:90px}div.o_table_flexi div.o_table_flexi_l7{padding-left:105px}div.o_table_flexi div.o_table_flexi_l8{padding-left:120px}div.o_table_flexi div.o_table_flexi_l9{padding-left:135px}div.o_table_flexi div.o_table_flexi_l10{padding-left:150px}div.o_table_flexi div.o_table_flexi_l11{padding-left:165px}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications,.o_table_tools_indications_filter_only{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a,.o_table_tools_indications_filter_only a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_table_filter .control-label{margin-right:0.5em}.o_table_filter .control-label:after{content:':'}.o_table_filter>div{display:inline-block}.o_table_filter>div label{font-weight:normal}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating.o_rating_personal .o_rating_items .o_icon{color:#337ab7}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„Ž";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:2px solid #337ab7;border-radius:50%;position:absolute !important;box-sizing:border-box}.o_draw_rectangle{border:2px solid #337ab7;position:absolute !important;box-sizing:border-box}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:0;right:37px}.o_content_popup{position:absolute;top:0;right:12px}.o_module_cp_wrapper{position:relative}.o_module_cp_wrapper .o_tools{position:absolute;top:0;right:0;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-group{margin-bottom:0}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-control-static{padding-top:0;padding-bottom:0}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;background:#fcfcfc;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.o_dropdown>li>i.o_icon_check{display:inline-block;padding-left:14px}ul.o_dropdown>li>i.o_icon_check+a{display:inline-block;padding-left:5px}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.428571429}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png") !important}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png") !important}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png") !important}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png") !important}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png") !important}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png") !important}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png") !important}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png") !important}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_feed .o_enclosure{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}div.panel.o_assessment_modes .o_table_body{margin-top:0}div.panel.o_assessment_modes .o_table_wrapper{margin-bottom:5px}div.o_assessment_mode_row{padding:0 15px}div.o_assessment_mode_row.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #3c763d;background-color:#dff0d8}div.o_assessment_mode_row.o_assessment_end_soon.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #a94442;background-color:#f2dede}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_segments.o_segments_linked .btn,.o_segments.o_segments_linked .btn:hover,.o_segments.o_segments_linked .btn:active,.o_segments.o_segments_linked .btn:focus{border:none;border-radius:0;box-shadow:none;background:none}.o_segments.o_segments_linked .btn-primary{color:#000;font-size:24px;background:none}.o_segments.o_segments_linked .btn-default,.o_segments.o_segments_linked .btn-default:hover,.o_segments.o_segments_linked .btn-default:active,.o_segments.o_segments_linked .btn-default:focus{color:#337ab7;background:none}.o_segments.o_segments_linked .o_segment_separator{color:#000}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.progress .progress-bar{text-shadow:1px 1px 2px #000000}.o_progress_label_right{float:left;margin-right:10px}.o_web_content{padding-bottom:15px}.o_labeled_light,a.o_labeled_light,.o_labeled,a.o_labeled{display:inline-block;text-transform:uppercase;text-align:center;text-decoration:none;vertical-align:middle;font-size:75%;line-height:1;white-space:nowrap;border:1px solid;border-radius:3px;padding:2px 5px;background-color:#777;color:#fff;position:relative}.o_labeled_light,a.o_labeled_light{font-weight:bold;background-color:#f8f8f8}.o_ms_button{max-width:100%;width:100%;display:flex}.o_ms_button span:not(.o_ms_carret){text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.o_ms_button .o_ms_carret{margin:auto 0 auto auto}.o_ms_list{width:100%;height:auto;max-height:300px;overflow-x:hidden;top:unset}.o_disclaimer .o_disclaimer_content{max-height:50vh;overflow:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background:#fbfbfb;padding:10px;border:1px solid #c2c2c2}.o_files_size_okay{color:#61E868}.o_files_size_warning{color:#FFB100}.o_files_size_large{color:#E82A0C}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fcfcfc;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.428571429}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_title h4 .o_icon-fw,.o_search_result_title .o_cal .fc-header-title h2 .o_icon-fw,.o_cal .fc-header-title .o_search_result_title h2 .o_icon-fw{text-align:left}.o_search_result_highlight{font-weight:bold;background-color:transparent}.o_search_result_context{display:inline-block;color:#3c763d;margin-right:1em}.o_search_result_license{display:inline-block;color:#777}.o_search_result_excerpt{color:#555}.o_search_result .o_opener{font-size:12px}.o_search_result .o_opener i{width:1em}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}.o_search_result_details .o_togglebox_wrapper .o_search_result_license i{font-size:20px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.o_cal_wv_event_tooltip_content .o_cal_description{background-color:#f8f8f8;padding:10px 7px;margin:10px -7px}.o_cal_wv_event_tooltip_content .o_cal_tooltip_buttons{text-align:center;margin-top:20px}.o_cal_event_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_not_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.o_cal_event_not_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.fc-button{color:#333;background-color:#fcfcfc;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fcfcfc;border-color:#ccc}.fc-button .badge{color:#fcfcfc;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}.fc-listYear-button:before,.fc-listMonth-button:before,.fc-listWeek-button:before,.fc-listDay-button:before{content:"";margin-right:5px;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:80%;webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}table.fc-list-table .fc-list-item{background-color:white;color:#5D5D5D !important}table.fc-list-table .fc-list-item a,table.fc-list-table .fc-list-item span{color:#5D5D5D !important}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_page_content_editor .o_toolbar{border:none}.o_page_content_editor .o_page_part,.gu-mirror{border:2px solid transparent}.o_page_content_editor .o_page_part:hover,.gu-mirror:hover{border:2px dotted #78acd9}.o_page_fragment_edit{position:relative;display:grid}.o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;top:-19px;height:19px;background-color:#78acd9;border-radius:10px 10px 0 0}.o_page_fragment_edit .o_page_tools_above .o_page_add_above .o_icon{color:#fff;background-color:#78acd9}.o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:3px 5px 0 7px}.o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_page_fragment_edit .o_page_tools_dd:before{content:' ';width:25px;height:100%;position:absolute;left:0;top:0;border:3px #78acd9 solid;border-bottom:28px #78acd9 solid;background-image:-webkit-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-moz-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-ms-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);-webkit-background-size:3px 3px;-moz-background-size:3px 3px;background-size:3px 3px}.o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;background:#78acd9;color:#fff}.o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_page_fragment_edit .o_page_part.o_page_edit{padding-right:23px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;position:absolute;z-index:3;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;bottom:-20px;height:22px;background-color:#78acd9;border-radius:0 0 10px 10px}.o_page_fragment_edit .o_page_add_below .o_icon{color:#fff;background-color:#78acd9}.o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px;margin:0px 0px 0px 2px}.o_page_fragment_edit.gu-mirror .o_page_add_below,.o_page_fragment_edit.gu-mirror .o_page_add_above,.o_page_fragment_edit.gu-transit .o_page_add_below,.o_page_fragment_edit.gu-transit .o_page_add_above{display:none}.o_page_container_slot.col-md-3 .o_page_others_above a span,.o_page_container_slot.col-md-4 .o_page_others_above a span{display:none}.o_page_container_slot.col-md-3 .o_page_edit_toolbar ul>li,.o_page_container_slot.col-md-4 .o_page_edit_toolbar ul>li{padding-right:0}div.o_page_content_editor .gu-mirror,.o_page_content_editor .gu-transit{box-shadow:none}.o_page_container{box-sizing:border-box;padding:10px}.o_page_container{background-color:transparent}.o_page_container .o_page_container{background-color:transparent}.o_page_container .o_page_container .o_page_container{background-color:transparent}.o_page_container_slot{box-sizing:border-box;margin:0 -1px -1px 0;padding:10px}.o_page_container .o_page_container_slot{border:2px dotted #eee}.o_page_container:hover .o_page_container_slot{border:2px dotted #ef00ef}.o_page_add_in_container_grp{margin-bottom:0}.gu-transit{border:2px dotted #e80c96;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40)}.gu-mirror{border:2px dotted #78acd9;opacity:0.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.o_page_add_callout a span{display:none}.o_page_add_callout ul.list-inline{margin-bottom:0}.o_page_table_edition .o_table_title,.o_page_table_edition .o_table_caption{padding:5px}.o_page_with_side_options_wrapper{display:flex;align-items:stretch;flex-direction:row}.o_page_side_options_target{background-color:#f9f9f9;flex-grow:4}.o_page_side_options{flex-grow:0;background-color:#78acd9;border-left:1px solid #b9b9b9;border-bottom:1px solid #b9b9b9;padding:5px;z-index:2}@media (max-width: 767px){.o_page_with_side_options_wrapper{flex-direction:column-reverse}}.o_page_content .o_image,.o_page_content .o_video,.o_page_content_editor .o_image,.o_page_content_editor .o_video{width:100%}.o_page_content .o_image img,.o_page_content .o_video img,.o_page_content_editor .o_image img,.o_page_content_editor .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_page_content .o_image .o_artefact_metadata,.o_page_content .o_video .o_artefact_metadata,.o_page_content_editor .o_image .o_artefact_metadata,.o_page_content_editor .o_video .o_artefact_metadata{text-align:left}.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left{float:left}.o_page_content .o_image.o_image_align_left+.o_image_clear,.o_page_content .o_video.o_image_align_left+.o_image_clear,.o_page_content_editor .o_image.o_image_align_left+.o_image_clear,.o_page_content_editor .o_video.o_image_align_left+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right{float:right}.o_page_content .o_image.o_image_align_right+.o_image_clear,.o_page_content .o_video.o_image_align_right+.o_image_clear,.o_page_content_editor .o_image.o_image_align_right+.o_image_clear,.o_page_content_editor .o_video.o_image_align_right+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle{clear:both;margin-left:50%;text-align:center;transform:translate(-50%, 0%)}.o_page_content .o_image.o_image_align_leftfloat,.o_page_content .o_video.o_image_align_leftfloat,.o_page_content_editor .o_image.o_image_align_leftfloat,.o_page_content_editor .o_video.o_image_align_leftfloat{float:left;padding-right:10px;padding-bottom:10px}.o_page_content .o_image.o_image_align_rightfloat,.o_page_content .o_video.o_image_align_rightfloat,.o_page_content_editor .o_image.o_image_align_rightfloat,.o_page_content_editor .o_video.o_image_align_rightfloat{float:right;padding-left:10px;padding-bottom:10px}.o_page_content .o_image.o_image_size_style_small,.o_page_content .o_video.o_image_size_style_small,.o_page_content_editor .o_image.o_image_size_style_small,.o_page_content_editor .o_video.o_image_size_style_small{width:25%}.o_page_content .o_image.o_image_size_style_small img,.o_page_content .o_video.o_image_size_style_small img,.o_page_content_editor .o_image.o_image_size_style_small img,.o_page_content_editor .o_video.o_image_size_style_small img{width:100%}.o_page_content .o_image.o_image_size_style_medium,.o_page_content .o_video.o_image_size_style_medium,.o_page_content_editor .o_image.o_image_size_style_medium,.o_page_content_editor .o_video.o_image_size_style_medium{width:40%}.o_page_content .o_image.o_image_size_style_medium img,.o_page_content .o_video.o_image_size_style_medium img,.o_page_content_editor .o_image.o_image_size_style_medium img,.o_page_content_editor .o_video.o_image_size_style_medium img{width:100%}.o_page_content .o_image.o_image_size_style_large,.o_page_content .o_video.o_image_size_style_large,.o_page_content_editor .o_image.o_image_size_style_large,.o_page_content_editor .o_video.o_image_size_style_large{width:60%}.o_page_content .o_image.o_image_size_style_large img,.o_page_content .o_video.o_image_size_style_large img,.o_page_content_editor .o_image.o_image_size_style_large img,.o_page_content_editor .o_video.o_image_size_style_large img{width:100%}.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill{width:100%;float:none !important;display:block}.o_page_content .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content .o_video.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_figure_caption_bottom{display:block}.o_page_content .o_image.o_image_size_style_fill img,.o_page_content .o_video.o_image_size_style_fill img,.o_page_content_editor .o_image.o_image_size_style_fill img,.o_page_content_editor .o_video.o_image_size_style_fill img{width:100%;display:block}.o_page_content .o_image img.o_image_classic,.o_page_content .o_video img.o_image_classic,.o_page_content_editor .o_image img.o_image_classic,.o_page_content_editor .o_video img.o_image_classic{padding:0;border:0;border-radius:0}.o_page_content .o_image img.o_image_border,.o_page_content .o_video img.o_image_border,.o_page_content_editor .o_image img.o_image_border,.o_page_content_editor .o_video img.o_image_border{padding:3px;border:solid 1px #CCC}.o_page_content .o_image img.o_image_shadow,.o_page_content .o_video img.o_image_shadow,.o_page_content_editor .o_image img.o_image_shadow,.o_page_content_editor .o_video img.o_image_shadow{padding:0;border:0;-moz-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.o_page_content .o_image img.o_image_frame,.o_page_content .o_video img.o_image_frame,.o_page_content_editor .o_image img.o_image_frame,.o_page_content_editor .o_video img.o_image_frame{padding:0;border:0;border-radius:0;-moz-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);margin:15px}.o_page_content .o_image img.o_image_polaroid,.o_page_content .o_video img.o_image_polaroid,.o_page_content_editor .o_image img.o_image_polaroid,.o_page_content_editor .o_video img.o_image_polaroid{padding:0;border-radius:0;border:1px solid #dcdcdc;background:#fff;padding:10px 10px 45px 10px;-webkit-box-shadow:3px 3px 3px rgba(0,0,0,0.2);-moz-box-shadow:3px 3px 3px rgba(0,0,0,0.2);box-shadow:3px 3px 3px rgba(0,0,0,0.2)}.o_page_content .o_image img.o_image_round,.o_page_content .o_video img.o_image_round,.o_page_content_editor .o_image img.o_image_round,.o_page_content_editor .o_video img.o_image_round{padding:3px;border:solid 1px #CCC;border-radius:50%}.o_page_content .o_image .o_image_title_dark,.o_page_content .o_video .o_image_title_dark,.o_page_content_editor .o_image .o_image_title_dark,.o_page_content_editor .o_video .o_image_title_dark{color:#000}.o_page_content .o_image .o_image_title_bright,.o_page_content .o_video .o_image_title_bright,.o_page_content_editor .o_image .o_image_title_bright,.o_page_content_editor .o_video .o_image_title_bright{color:#f9f9f9}.o_page_content .o_image .o_image_title,.o_page_content .o_video .o_image_title,.o_page_content_editor .o_image .o_image_title,.o_page_content_editor .o_video .o_image_title{position:relative}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{position:absolute;left:50%;margin-right:-50%;transform:translate(-50%, -50%)}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_top{top:10%}.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_centered{top:50%}.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{bottom:10%}.o_page_content .o_image.o_image_size_style_none .o_image_title_top,.o_page_content .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_none .o_image_title_top,.o_page_content .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content .o_video.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_bottom{font-size:24px}.o_page_content .o_image.o_image_size_style_small .o_image_title_top,.o_page_content .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_small .o_image_title_top,.o_page_content .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content .o_video.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_bottom{font-size:18px}.o_page_content .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_video.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_bottom{font-size:32px}.o_page_content .o_image.o_image_size_style_large .o_image_title_top,.o_page_content .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_large .o_image_title_top,.o_page_content .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content .o_video.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_bottom{font-size:40px}.o_page_content .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_video.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_bottom{font-size:56px}.o_page_add_contents{clear:both;margin-top:30px}.o_ce_html_raw.o_html_col2,.o_ce_html_paragraph.o_html_col2{column-count:2;column-gap:1em}.o_ce_html_raw.o_html_col3,.o_ce_html_paragraph.o_html_col3{column-count:3;column-gap:1em}.o_ce_html_raw.o_html_col4,.o_ce_html_paragraph.o_html_col4{column-count:4;column-gap:1em}table.o_ce_table caption{caption-side:bottom}.o_ce_add_main_btns{margin-top:2em}.o_ce_add{border:none;margin-bottom:0px}.o_ce_add .o_ce_tools{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.o_ce_add .o_ce_tools .o_ce_tool{padding:0px;margin:0px;width:33%}.o_ce_add .o_ce_tools .o_ce_tool a{padding:6px 3px;margin:0px;display:block;width:100%;height:100%}.o_ce_add .o_ce_tools .o_ce_tool a:hover{padding:5px 2px;border:1px solid #e7e7e7;border-radius:4px}.o_ce_add_list .o_ce_add_list_item{border-style:none;padding:0px;margin:0px -15px}.o_ce_add_list .o_ce_add_list_item a{padding:5px 25px;margin:0px;display:block;width:100%;height:100%}.o_ce_add_list .o_ce_add_list_item a:hover{text-decoration:none;background-color:#f5f5f5}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #ccc;border-radius:4px;background:#fcfcfc;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-top-left-radius:4px;border-bottom-left-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual .o_visual_not_available{background-color:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #ccc;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;background:#fcfcfc;border-left:1px solid #ccc;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;z-index:2px;background:#fcfcfc;padding:0 3px 3px 3px;border-radius:0px 0px 3px 3px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7;border-top-right-radius:4px;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac ul{display:inline-block}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #ccc;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #ccc;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #ccc;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #ccc;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}.o_ac_configuration div.o_ac_method{background-color:#efefef;padding:5px;border-radius:3px}.o_ac_configuration div.o_ac_methods.form-group{padding-bottom:0;margin-bottom:0}.o_repo_with_explanation{padding-bottom:0;margin-bottom:0}.o_repo_explanation{color:#f0ad4e}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}a.o_repo_tools_status{cursor:pointer;margin:0 2px 2px 2px;text-align:left}.o_labeled.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_review{background-color:#FCCA46;border-color:#FCCA46;color:#fff}.o_labeled.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_coachpublished{background-color:#1DC63F;border-color:#1DC63F;color:#fff}.o_labeled.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_published{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_closed{background-color:#99583D;border-color:#99583D;color:#fff}.o_labeled.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_trash{background-color:#5A5958;border-color:#5A5958;color:#fff}.o_labeled.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_deleted{background-color:#888;border-color:#888;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_preparation{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_review{background-color:#fbbc14}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_coachpublished{background-color:#169a31}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_published{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_closed{background-color:#75432e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_trash{background-color:#40403f}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_deleted{background-color:#6f6f6f}.o_labeled_light.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_preparation{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_review{border-color:#FCCA46;color:#FCCA46}.o_labeled_light.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_coachpublished{border-color:#1DC63F;color:#1DC63F}.o_labeled_light.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_published{border-color:#14892c;color:#14892c}.o_labeled_light.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_closed{border-color:#99583D;color:#99583D}.o_labeled_light.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_trash{border-color:#5A5958;color:#5A5958}.o_labeled_light.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_deleted{border-color:#888;color:#888}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0;display:table}.o_cmembers .o_cmember .o_portrait{padding-right:10px;display:table-cell;vertical-align:top;min-width:60px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{display:table-cell;vertical-align:middle;color:#777}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember .o_curriculum_displayname,.o_cmembers .o_cmember .o_curriculum_root_el_identifier,.o_cmembers .o_cmember .o_curriculum_root_el_displayname{font-size:12px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;max-width:100%;max-height:100%;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}div.o_correction_navigation .o_correction_navigation_back{float:left;line-height:32px}div.o_correction_navigation .o_correction_navigation_previous{position:absolute;right:50%;margin-right:102px}div.o_correction_navigation #o_cocurrent_item_SELBOX{width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;left:50%;margin-left:-100px}div.o_correction_navigation .o_correction_navigation_next{position:absolute;left:50%;margin-left:102px}@media (max-width: 767px){div.o_correction_navigation .o_correction_navigation_previous span,div.o_correction_navigation .o_correction_navigation_next span{display:none}}.o_ms_stack_panel .o_toolbar{margin-top:0px}.o_ms_bold{font-weight:bold}.o_ms_legend{padding:5px}.o_ms_legend li{display:block;font-size:90%}.o_ms_legend .ident{font-weight:bold}.o_browser_ie10 .o_paella_wrapper iframe,.o_browser_ie11 .o_paella_wrapper iframe{display:none}.o_browser_ie10 .o_paella_wrapper .o_paella_error,.o_browser_ie11 .o_paella_wrapper .o_paella_error{display:block}.o_paella_wrapper iframe{width:100%;height:400px}@media (max-width: 768px){.o_paella_wrapper iframe{height:300px}}.o_paella_wrapper .o_paella_error{display:none}.o_curriculum_el_listing tr.o_curriculum_element_inactive,.o_curriculum_el_listing tr.o_curriculum_element_inactive td,.o_curriculum_el_listing tr.o_curriculum_element_inactive td span,.o_curriculum_el_listing tr.o_curriculum_element_inactive td a{color:#777}.o_curriculum_el_listing tr.o_curriculum_element_unfiltered,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td span,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td a{color:#aaa}.o_curriculum_el_listing tr.o_curriculum_element_deleted,.o_curriculum_el_listing tr.o_curriculum_element_deleted td,.o_curriculum_el_listing tr.o_curriculum_element_deleted td span,.o_curriculum_el_listing tr.o_curriculum_element_deleted td a{color:#777;text-decoration:line-through}.o_curriculumtable tr.o_curriculum_element_l0 td:nth-thild(first){padding-left:0px}.o_curriculumtable tr.o_curriculum_element_l1 td:nth-thild(first){padding-left:15px}.o_curriculumtable tr.o_curriculum_element_l2 td:nth-thild(first){padding-left:30px}.o_curriculumtable tr.o_curriculum_element_l3 td:nth-thild(first){padding-left:45px}.o_curriculumtable tr.o_curriculum_element_l4 td:nth-thild(first){padding-left:60px}.o_curriculumtable tr.o_curriculum_element_l5 td:nth-thild(first){padding-left:75px}.o_curriculumtable tr.o_curriculum_element_l6 td:nth-thild(first){padding-left:90px}.o_curriculumtable tr.o_curriculum_element_l7 td:nth-thild(first){padding-left:105px}.o_curriculumtable tr.o_curriculum_element_l8 td:nth-thild(first){padding-left:120px}.o_curriculumtable tr.o_curriculum_element_l9 td:nth-thild(first){padding-left:135px}.o_curriculumtable tr.o_curriculum_element_l10 td:nth-thild(first){padding-left:150px}.o_curriculumtable tr.o_curriculum_element_l11 td:nth-thild(first){padding-left:165px}.o_curriculumtable tr.o_curriculum_element_inactive,.o_curriculumtable tr.o_curriculum_element_inactive td,.o_curriculumtable tr.o_curriculum_element_inactive td span{color:#777}.o_curriculumtable tr.o_curriculum_element_deleted,.o_curriculumtable tr.o_curriculum_element_deleted td,.o_curriculumtable tr.o_curriculum_element_deleted td span{color:#777;text-decoration:line-through}.o_curriculumtable.o_rendertype_custom .container-fluid{padding-left:0;padding-right:0}.o_curriculumtable.o_rendertype_custom .o_table_row{position:relative;vertical-align:top;margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row:before,.o_curriculumtable.o_rendertype_custom .o_table_row:after{content:" ";display:table}.o_curriculumtable.o_rendertype_custom .o_table_row:after{clear:both}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{background:none;border:none;position:relative}.o_curriculumtable.o_rendertype_custom .o_table_row .o_ext_id{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_hierarchy_info{display:none;position:absolute;top:0;right:30px;font-size:70%;z-index:5;background:gold}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title{margin-top:0;margin-bottom:0;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title small{white-space:nowrap}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars{padding-left:6px;color:#777}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active:hover{color:#2b542c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc{padding:6px 6px 16px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_empty{font-style:italic;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{position:relative;padding-left:132px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px;padding-left:87px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_visual{left:0;border:none;background-color:#fff;max-height:80px;max-width:120px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_location,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_lifecycle{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:absolute;right:0;bottom:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_failed{font-weight:normal}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_score{display:inline-block}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state+.o_score:before{content:', '}.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark{position:absolute;top:-1px;right:2px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{position:absolute;bottom:0;right:0;overflow:hidden;width:180px;height:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start{right:0;color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark,.o_curriculumtable.o_rendertype_custom .o_table_row .o_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_details{display:none}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:inline-block;width:50%;border-right:12px solid transparent;margin-top:0 !important}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry_title{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:50px}}@media print{.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:relative;bottom:0}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{display:none}}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_item_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_rectangle{background-color:rgba(255,255,255,0.5);border-color:#6E6E6E}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(45,0,255,0.5);border-color:#0000ff}#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_rectangle{background-color:rgba(221,221,221,0);border-color:#7E7E7E}#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(51,122,183,0.05);border-color:#337ab7}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_rectangle{background-color:rgba(110,110,110,0.5);border-color:#3E3E3E}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(222,222,222,0.2);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_rectangle{background-color:rgba(142,142,142,0.25);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(134,195,81,0.5);border-color:#518b33}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_rectangle{background-color:rgba(142,142,142,0.33);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(234,168,255,0.5);border-color:#ab47cb}div.hotspotInteraction{overflow-x:auto}img.o_hotspot_responsive[usemap]{max-width:100%;width:auto;height:auto}.form-inline.o_qti_gaptext_add_first_alternative,.o_qti_gaptext_add_first_alternative.o_navbar-form{padding:9px 0 3px 0}.form-inline.o_qti_gaptext_add_alternative,.o_qti_gaptext_add_alternative.o_navbar-form{margin-bottom:3px}.o_qti_gaptext_alternatives{background-color:#eee;color:#555;border:1px solid #eee;border-radius:4px;padding:2px 5px}span.o_qti_gaptext_score_alternative{padding-left:2em;color:#555}.o_qti_item_body .extendedTextInteraction{margin:15px 0}.o_qti_item_body .extendedTextInteraction textarea{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}.extendedTextInteraction div.form-control.textarea_disabled{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer.o_15_seconds{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_panic{background-color:#f2dede}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}#width_range_ui,#opacity_range_ui{width:120px}.o_slider_width_range,.o_slider_opacity_range{margin:3px 10px 0 0}.o_qti_hotspot_label{padding-left:48%}.o_assessmentsection_rubrics_wrapper{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px;padding:5px 10px;margin:0 0 0.5em 0}.o_assessmentsection_rubrics_correction_wrapper{background:#f8f8f8;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding:5px 10px}.o_info.o_assessmentsection_rubrics{margin:5px -10px;position:relative;display:block}.o_info.o_assessmentsection_rubrics.o_hide{display:none}.o_info.o_assessmentsection_rubrics a.o_hide{position:absolute;bottom:0.5em;right:1em}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box.vertical{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_assessmentitem div.orderInteraction div.box.vertical ul{min-height:200px}.o_assessmentitem div.orderInteraction div.box.horizontal ul{min-height:50px;width:100%}.o_assessmentitem div.orderInteraction div.box.source{padding:5px 10px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_assessmentitem div.orderInteraction div.box.source.horizontal{padding:5px 10px 15px 10px}.o_assessmentitem div.orderInteraction div.box.target ul{border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_assessmentitem div.orderInteraction div.box.target ul.oo-accepted{border-color:#1f7e9a}.o_assessmentitem div.orderInteraction div.box.target.vertical{padding:6px 0 0 10px}.o_assessmentitem div.orderInteraction div.box.target.vertical ul{padding:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal{padding-top:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal ul{padding:10px 10px 0 10px}.o_assessmentitem div.orderInteraction div.box.horizontal ul li{float:left;width:auto;margin-right:10px;min-width:50px}.o_assessmentitem div.orderInteraction div.box span.info{color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#333;background:#d9edf7;border:1px solid #bce8f1}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input,.o_assessmentitem .textEntryInteraction span.o_input_value{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:13.72px;line-height:1.5;border:1px solid #999;background:#fff;padding:1px 1px;color:#333;max-width:100%}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled,.o_assessmentitem .textEntryInteraction input.o_input_value_wrapper,.o_assessmentitem .textEntryInteraction span.o_input_value:valid,.o_assessmentitem .textEntryInteraction span.o_input_value:disabled,.o_assessmentitem .textEntryInteraction span.o_input_value.o_input_value_wrapper{color:#333;-webkit-text-fill-color:#333;background:#d9edf7;border:1px solid #bce8f1}li.o_assessmentitem_order_item{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;list-style-type:none}li.o_assessmentitem_order_item:before,li.o_assessmentitem_order_item:after{content:" ";display:table}li.o_assessmentitem_order_item:after{clear:both}body>li.o_assessmentitem_order_item{display:block}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em;position:relative}.o_assessmentitem_wrapper .itemTitle .o_qti_item_max_score{position:absolute;left:49%}.o_assessmentitem_wrapper .o_qti_item_body{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;font-size:14px;line-height:1.8}.o_assessmentitem_wrapper .o_assessment_item_not_final.o_warning{margin:0}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button,.o_assessmentitem_controls a{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_skip_question span:before,.o_assessmentitem_controls .o_sel_back_question span:before,.o_assessmentitem_controls .o_sel_retry_question span:before{padding-right:0.5em;margin-bottom:0}.o_assessmentitem_control_view_solution{background:#f8f8f8;border:1px solid #e7e7e7;margin:0;padding:5px 10px}.o_assessmentitem_scoring{background:#f8f8f8;border:1px solid #e7e7e7;border-bottom:0;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px}.o_assessmentitem_scoring_buttons{background:#f8f8f8;border:1px solid #e7e7e7;border-top:0;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_scoring_override_window{width:300px}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}.o_qti_item_body{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction input+i{background-color:red}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct{background-color:#eaf6ea}table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong{background-color:#fdf7f7}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct,table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong,table.o_qti_item_kprim th.o_qti_item_kprim_input_correct,table.o_qti_item_kprim th.o_qti_item_kprim_input_wrong{width:11%}table.o_qti_item_kprim td.o_qti_item_kprim_text,table.o_qti_item_kprim th.o_qti_item_kprim_text{width:88%}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.table.o_match_true_false_edit th.o_sel_match_target_0,.table.o_match_true_false_edit th.o_sel_match_target_1,.table.o_match_true_false_edit th.o_sel_match_target_2{width:12%}.match_true_false input[type="checkbox"]{-webkit-appearance:radio;-moz-appearance:radio;-ms-appearance:radio;appearance:radio}.match_true_false .table>tbody>tr>td.o_match_true_false_unanswered,.match_true_false .table>tbody>tr>td.o_match_true_false_right,.match_true_false .table>tbody>tr>td.o_match_true_false_wrong{vertical-align:middle;width:11%}.match_true_false th.o_match_true_false_unanswered,.match_true_false th.o_match_true_false_right,.match_true_false th.o_match_true_false_wrong{width:11%}.match_true_false td.o_match_true_false_answer,.match_true_false th.o_match_true_false_answer{width:67%}.match_true_false td.o_match_true_false_unanswered{background-color:#fbfbfb}.match_true_false td.o_match_true_false_right{background-color:#eaf6ea}.match_true_false td.o_match_true_false_wrong{background-color:#fdf7f7}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:0;border-bottom:0}.o_candidatecomment div.o_item_container_help{margin:0;padding:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em;overflow-wrap:break-word}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}ul.o_qti_statistics_answers li span.o_qti_statistics_answer{background:#F5F5F5;padding:1px 3px;width:90%;display:inline-block}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_sel_assessment_item_feedbacks{min-height:250px}.o_alternative_question_types h4 select,.o_alternative_question_types .o_cal .fc-header-title h2 select,.o_cal .fc-header-title .o_alternative_question_types h2 select{display:inline-block;width:auto}@media print{canvas,div.hotspotInteraction>div>div{-webkit-print-color-adjust:exact;color-adjust:exact}.choiceInteraction label{font-weight:normal}.choiceinteraction input[type="radio"][disabled],.choiceinteraction input[type="checkbox"][disabled],.matchInteraction input[type="radio"][disabled],.matchInteraction input[type="checkbox"][disabled]{display:none}.choiceinteraction input+i,.matchInteraction input+i{font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.choiceInteraction input[type="radio"][disabled]+i:before,.matchInteraction input[type="radio"][disabled]+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]+i:before{content:"ï„Œ"}.choiceInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]:checked+i:before{content:""}.choiceInteraction input[type="checkbox"][disabled]+i:before,.matchInteraction input[type="checkbox"][disabled]+i:before{content:"ï‚–"}.choiceInteraction input[type="checkbox"][disabled]:checked+i:before,.matchInteraction input[type="checkbox"][disabled]:checked+i:before{content:"ï†"}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav{margin-right:20px}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_nav .o_portfolio_collector{position:relative;top:-5px}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_portfolio_home .o_portfolio_my li,.o_portfolio_home .o_portfolio_shared li{margin:2em 1em 2em 0;text-align:center;vertical-align:top}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:5px dashed #eee;padding-right:2em}.o_portfolio_home .o_portfolio_my li a,.o_portfolio_home .o_portfolio_shared li a{display:block;width:9em}.o_portfolio_home .o_portfolio_my li a i,.o_portfolio_home .o_portfolio_shared li a i{display:inline-block;font-size:4em}.o_portfolio_home .o_portfolio_my li a span,.o_portfolio_home .o_portfolio_shared li a span{display:block;margin-top:0.8em}@media (max-width: 1199px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:90%}}@media (max-width: 767px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:80%}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:none;padding-right:0}}.o_portfolio_home #o_my_last_binders .o_table_body{margin-top:0;padding-left:0}.o_portfolio_home #o_my_last_pages .o_table_body{margin-top:0}.o_portfolio_home #o_my_last_pages .o_table_toolbar{display:none}.o_portfolio_home #o_my_last_pages .o_portfolio_page{margin-top:0;margin-bottom:1em}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_ended .o_section_lead{border-color:#eba5a3;background-color:#f4cecd}.o_media.o_media_right,.o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_right{max-height:200px;max-width:50%}.o_media.o_media_left img,.o_media.o_media_right img{max-height:200px}.o_media.o_media_right_large,.o_media.o_media_left_large{max-height:300px;max-width:75%}.o_media.o_media_right_large img,.o_media.o_media_left_large img{max-height:300px}.o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff;height:auto;width:auto}@media (max-width: 767px){.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:120px;max-width:30%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:120px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:180px;max-width:50%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:180px}}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_edit_page_meta{padding-right:2em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_portfolio_status_block p.o_section_ended{font-size:120%}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_page_export .o_page_assignment .o_opener,.o_binder_export .o_page_assignment .o_opener{visibility:hidden}.o_page_export .o_page_assignment .o_closer,.o_binder_export .o_page_assignment .o_closer{display:none}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .oo-accepted{box-shadow:10px 10px 10px pink}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .o_binder_tools a{color:#333}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_right{max-height:150px}.o_portfolio_page_summary .o_media.o_media_left img,.o_portfolio_page_summary .o_media.o_media_right img{max-height:150px}.o_portfolio_page_summary .o_media.o_media_right_large,.o_portfolio_page_summary .o_media.o_media_left_large{max-height:230px}.o_portfolio_page_summary .o_media.o_media_right_large img,.o_portfolio_page_summary .o_media.o_media_left_large img{max-height:230px}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_categories div,.o_portfolio_categories form{display:inline-block}.o_portfolio_categories_edit .bootstrap-tagsinput{margin-bottom:0;padding:0px 4px}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_pf_comments{margin-top:3em}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum,.gu-mirror .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_forum,.gu-mirror .o_wiki{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement h3,.o_pf_content .o_efficiencystatement .h3,.o_pf_content .o_feed h3,.o_pf_content .o_feed .h3,.o_pf_content .o_forum h3,.o_pf_content .o_forum .h3,.o_pf_content .o_wiki h3,.o_pf_content .o_wiki .h3,.gu-mirror .o_efficiencystatement h3,.gu-mirror .o_efficiencystatement .h3,.gu-mirror .o_feed h3,.gu-mirror .o_feed .h3,.gu-mirror .o_forum h3,.gu-mirror .o_forum .h3,.gu-mirror .o_wiki h3,.gu-mirror .o_wiki .h3{font-size:14px}.o_pf_content .o_efficiencystatement .row,.o_pf_content .o_feed .row,.o_pf_content .o_forum .row,.o_pf_content .o_wiki .row,.gu-mirror .o_efficiencystatement .row,.gu-mirror .o_feed .row,.gu-mirror .o_forum .row,.gu-mirror .o_wiki .row{margin:0}.o_pf_content .o_efficiencystatement .o_block_with_datecomp,.o_pf_content .o_feed .o_block_with_datecomp,.o_pf_content .o_forum .o_block_with_datecomp,.o_pf_content .o_wiki .o_block_with_datecomp,.gu-mirror .o_efficiencystatement .o_block_with_datecomp,.gu-mirror .o_feed .o_block_with_datecomp,.gu-mirror .o_forum .o_block_with_datecomp,.gu-mirror .o_wiki .o_block_with_datecomp{margin-top:0.5em;margin-bottom:0}.o_pf_video_placeholder{background-color:#f8f8f8;border:1px solid #f8f8f8;border-radius:10px;display:table;min-width:400px;text-align:center;padding:40px 10px}.o_pf_video_placeholder i{display:table-cell;vertical-align:middle}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc .o_portfolio_toc_section{position:relative;padding-right:80px}.o_portfolio_toc .o_portfolio_section_meta{margin-top:-0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:-10px;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down,.o_portfolio_toc .o_section_actions .o_section_dropdown{vertical-align:middle;display:inline-block}.o_portfolio_toc a.o_comment{color:#777;margin-left:1em}.o_portfolio_toc .o_section ul{padding-left:1em;line-height:24px}.o_portfolio div span.badge{padding:3px 7px}.o_portfolio div .o_portfolio_entry_draft{background-color:#f0ad4e}.o_portfolio div .o_portfolio_published{background-color:#337ab7}.o_portfolio div .o_portfolio_entry_revision{background-color:#d9534f}.o_portfolio div .o_portfolio_entry_closed{background-color:#5cb85c}.o_portfolio div .o_portfolio_entry_deleted{background-color:#000}.o_portfolio div .o_portfolio_entry_incoming{background-color:#5cb85c}.o_portfolio div .o_portfolio_entry_inprocess{background-color:#c8c8c8}.o_portfolio div .o_portfolio_entry_done{background-color:#5cb85c}.o_portfolio div .o_popover,.o_portfolio div .popover:hover{color:#333;text-decoration:none}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page{background:#fcfcfc;border:1px solid #eee;border-radius:4px}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_portfolio_status_legend{margin-top:3em}.o_portfolio_status_legend h6{margin-bottom:5px}.o_ed_htitle h1,.o_ed_htitle .h1{font-size:30px}.o_ed_htitle h2,.o_ed_htitle .h2{font-size:24px}.o_ed_htitle h3,.o_ed_htitle .h3{font-size:18px}.o_ed_htitle h4,.o_ed_htitle .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_ed_htitle h2,.o_ed_htitle .h4{font-size:14px}.o_ed_htitle h5,.o_ed_htitle .h5{font-size:12px}.o_ed_htitle h6,.o_ed_htitle .h6{font-size:12px}@media print{.o_binder h1{font-size:43.2px;margin-top:10cm}.o_portfolio_section{margin-bottom:1cm}.o_portfolio_section h3:first-of-type{font-size:36px}.o_page_lead{border:0;border-bottom:1px solid #d9d9d9;border-radius:0;background-color:none;padding:0;margin-bottom:10px}.o_page_lead .o_portfolio_status_block{border-top:0;margin-bottom:0}.o_page_lead .o_media img{border:0}.o_page_lead .o_portfolio_categories{display:block;margin-left:0}.o_page_lead .o_portfolio_status_block{padding-top:0}.o_page_lead .o_page_summary{margin-top:1em;font-style:italic}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki{padding:0;border-radius:0;border:0}.o_pf_content .o_cit .o_desc p,.o_pf_content .o_text .o_desc p,.o_pf_content .o_file .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_image .o_desc p,.o_pf_content .o_video .o_desc p,.o_pf_content .o_efficiencystatement .o_desc p,.o_pf_content .o_feed .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_wiki .o_desc p{margin:0}.o_efficiencystatement table{font-size:90%}.o_artefact_metadata{page-break-inside:avoid;border:0;border-left:5px solid #eee;padding-left:10px;font-size:80%}.o_artefact_metadata table td,.o_artefact_metadata table th{border:0 !important;padding:2px !important}.o_artefact_metadata table th:first-of-type{width:20%}.o_pf_video_placeholder{background-color:#f8f8f8 !important;-webkit-print-color-adjust:exact;color-adjust:exact}.o_pf_video_placeholder.visible-print-block{display:table !important}}.o_evaluation_form .o_evaluation_block{margin-top:2em;margin-bottom:2em}.o_evaluation_form .o_rubric_name{font-weight:bold;margin-bottom:1em}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:1em;font-weight:bold}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center;align-self:flex-end;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_evaluation_form .o_slider_wrapper{height:33px;overflow:hidden}.o_evaluation_form .o_slider{margin-bottom:1em}.o_evaluation_form .o_slider label{padding:0}.o_evaluation_form .o_slider input{padding:0;margin:0;position:relative}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_continous .o_evaluation_no_response div.radio{padding:0;margin:0}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps{display:flex;justify-content:space-between}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio:hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_no_response div.radio{margin-top:2px}.o_evaluation_form .o_evaluation_discrete_radio .o_evaluation_step_labels{display:flex;justify-content:space-between}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em;margin-bottom:10px}.o_evaluation_form .o_evaluation_left_label{text-align:right;font-weight:normal}.o_evaluation_form .o_evaluation_left_label.o_evaluation_left_label_la{text-align:left;padding-left:0px;font-weight:normal}.o_evaluation_form .o_evaluation_right_label{text-align:left;font-weight:normal}.o_evaluation_form .o_evaluation_text_legend{margin-bottom:1em}.o_evaluation_form .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_fileupload{margin-bottom:2em}.o_evaluation_form .o_evaluation_mc_other{margin-top:-10px;margin-left:10px;margin-right:10px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_slider{margin-left:15px;margin-right:15px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_end_label{text-align:right;padding-right:20px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_continous .x .tick{visibility:hidden}.o_evaluation_form .o_ed_rubrictablehandler .table{margin-top:5px}.o_evaluation_form .svg-container{display:inline-block;position:relative;width:100%;padding-bottom:50%;vertical-align:top;overflow:hidden}.o_evaluation_form .svg-content-responsive{display:inline-block;position:absolute;top:10px;left:0}.d3chart .o_eva_bar{fill:#337ab7}.d3chart .o_rubric_sufficient{fill:#5cb85c}.d3chart .o_rubric_neutral{fill:#f0ad4e}.d3chart .o_rubric_insufficient{fill:#d9534f}.d3chart .o_rubric_unrated{fill:#337ab7}.o_qual_hm_legend{padding:5px}.o_qual_hm_legend li{font-size:90%}.o_qual_hm_legend .ident{font-weight:bold}.o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px}@media (max-width: 992px){.o_evaluation_editor_form .o_slider_editor{margin-bottom:20px}}@media (max-width: 992px){.o_evaluation_editor_form .o_evaluation_step_label{text-align:unset;margin-bottom:5px;padding-top:unset}}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_descrete_radio{display:flex;justify-content:space-between}.o_evaluation_editor_form .o_slider_descrete_radio .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_editor_form .o_slider_descrete_radio .radio:hover{background-color:#f5f5f5}@media (max-width: 992px){.o_evaluation_editor_form input[type="text"]{margin-bottom:5px}}.o_evaluation_editor_form .o_slider_continous{padding-top:10px;padding-bottom:-10px}.o_evaluation_editor_form .o_slider_descrete{padding-top:5px;padding-bottom:-5px}.o_evaluation_editor_form .o_evaluation_example{font-size:90%}.o_evaluation_editor_form .o_slider_top{margin-top:23px}.o_evaluation_editor_form .o_slider_buttons .pull-right div:not(:first-child){display:inline-block}.o_evaluation_editor_form .o_slider_buttons .pull-right .btn{margin-top:-3px}.o_evaluation_editor_form .o_slider_weight{max-width:40px}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_right_label{text-align:right}.o_evaluation_form .o_evaluation_no_response{text-align:left}.o_evaluation_form .o_evaluation_no_response .o_evaluation_no_resp_value{font-weight:bold}.o_evaluation_form .o_slider{margin-bottom:2em}.o_evaluation_form .o_slider div{padding-left:0}.o_evaluation_form .o_slider .o_evaluation_no_response{margin-top:0.7em}}@media (min-width: 768px){.o_evaluation_form .o_evaluation_no_resp_value{display:none}}@media print{.o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#f9f9f9 !important}.o_icon_rubric_insufficient::before{color:#d9534f !important}.o_icon_rubric_neutral::before{color:#f0ad4e !important}.o_icon_rubric_sufficient::before{color:#5cb85c !important}}.o_eva_report_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_eva_report_print #o_print_brand img{width:100%}.o_eva_report_print .o_eva_content{margin-top:4em}.o_eva_report_print .o_eva_overview .panel table{margin:0px 0px 1px 0px}.o_eva_report_print .o_evaluation_duration,.o_eva_report_print .o_participated_users{display:none}.o_surv_run.withCmds .o_eva_report{margin-top:-44px}.o_eva_report .o_eva_overview .o_eva_rubric .table{margin-top:5px}.o_eva_report .o_ed_rubrictablehandler .o_table_footer{font-weight:bold}.o_eva_report .o_rubric_avg{font-weight:bold;white-sprace:nowrap}.o_eva_report .o_rubric_table .o_table_wrapper{margin-bottom:10px}.o_eva_report .o_rubric_table_legend{display:block}.o_eva_report .o_rubric_table_legend .ident{font-weight:bold}.o_eva_report .o_rubric_table_legend .list-inline{margin-bottom:0px}.o_eva_report .o_rubric_table_legend.o_last{margin-bottom:15px}.o_evaluation_execution .o_evaluation_anonymous_info{display:inherit}.o_qual_main .o_labeled.o_qual_dc_status_preparation,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_ready,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_ready{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_running,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_running{background-color:#933;border-color:#933;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_finished,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_finished{background-color:#14892c;border-color:#14892c;color:#fff}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_preparation{background-color:#384e64}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_ready{background-color:#ffc61e}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_running{background-color:#732626}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_finished{background-color:#0e5c1e}.o_qual_main .o_qual_dc_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_labeled_light.o_qual_dc_status_preparation_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_preparation_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_labeled_light.o_qual_dc_status_ready_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_labeled_light.o_qual_dc_status_running_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_running_light{border-color:#933;color:#933}.o_qual_main .o_labeled_light.o_qual_dc_status_finished_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_finished_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_qual_exec_status_future_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_qual_exec_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_qual_exec_status_participating_light{border-color:#933;color:#933}.o_qual_main .o_qual_exec_status_participated_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_status_over_light{border-color:#aaa;color:#aaa}.o_qual_execute_header .o_qual_context_table,.o_qual_report_header .o_qual_context_table{margin-bottom:0}.o_qual_execute_header .o_qual_context_table th,.o_qual_report_header .o_qual_context_table th{width:40%;border-top:none;padding:4px 8px}.o_qual_execute_header .o_qual_context_table td,.o_qual_report_header .o_qual_context_table td{width:60%;border-top:none;padding:4px 8px}.o_qual_ana_table .o_table_body{padding:0}.o_qual_ana_filter .o_date_range{margin-bottom:0px}.o_qual_ana_filter .o_date_range .control-label{margin-bottom:5px}.o_qual_ana_filter .o_date_range .o_date{margin-bottom:15px;padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_from{padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_to{padding-right:0px}.o_qual_hm_basecolor{background-color:#337ab7}.o_qual_hm .o_circle_container{display:flex}.o_qual_hm .o_circle_box{display:flex;align-items:center;justify-content:center}.o_qual_hm .o_circle{border-radius:50%}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d9534f !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f0ad4e !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#5cb85c !important}.o_qual_hm .o_avg{display:flex;align-items:center;margin-left:5px}.o_qual_trend_invisible{visibility:hidden}.o_qual_trend .o_qual_ana_trend_up{transform:rotate(315deg);-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg)}.o_qual_trend .o_qual_ana_trend_down{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.o_qual_trend .o_rubric_insufficient{color:#d9534f}.o_qual_trend .o_rubric_neutral{color:#f0ad4e}.o_qual_trend .o_rubric_sufficient{color:#5cb85c}.o_qual_trend .o_qual_ana_unrated{color:#337ab7}.o_qual_filtered_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_qual_filtered_print #o_print_brand img{width:100%}.o_qual_filtered_print .o_qual_content{margin-top:4em}.o_qual_filtered_print .o_groupby_config,.o_qual_filtered_print .o_slider_trend_config,.o_qual_filtered_print .o_qual_hm tr td:last-child,.o_qual_filtered_print .o_qual_hm tr th:last-child{display:none}.o_evaluation_bar_chart_legend{padding:5px}.o_evaluation_bar_chart_legend li{font-size:90%}.o_evaluation_bar_chart_legend .ident{font-weight:bold}@media (max-width: 768px){.o_hm_group_select{padding-bottom:12px}.o_hm_panel_body{margin-bottom:-12px}}@media (min-width: 768px){.o_hm_trend_row{padding-top:12px}}@media print{.o_qual_hm .o_circle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d9534f !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f0ad4e !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#5cb85c !important}.o_qual_hm .o_circle.o_qual_hm_basecolor{background-color:#337ab7 !important}.o_qual_trend{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_trend .o_rubric_insufficient::before{color:#d9534f !important}.o_qual_trend .o_rubric_neutral::before{color:#f0ad4e !important}.o_qual_trend .o_rubric_sufficient::before{color:#5cb85c !important}.o_qual_trend .o_qual_ana_unrated::before{color:#337ab7 !important}}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;margin-bottom:0;padding:0 12px;font-style:italic;padding:5px 5px 0;border:0}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.o_cit blockquote.o_quote{page-break-inside:avoid}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run h1{font-size:1.8rem;font-weight:normal}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.o_video_chapter_editor .o_table_wrapper.o_table_flexi .table,.o_video_marker_editor .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_video_marker_editor .o_video_question.mejs__overlay{overflow:scroll}.o_video_question.mejs__overlay.o_video_large_question{align-items:flex-start;padding:1em 1em 0 1em;z-index:5}.o_video_question.mejs__overlay.o_video_large_question #o_qti_container{border:1px solid #eee}.o_video_marker{position:absolute;background-color:#efefef;opacity:0.85;border-left:3px solid #5bc0de;padding:5px}.o_video_marker.o_video_marker_gray{border-left-color:#333}.o_video_marker.o_video_marker_blue{border-left-color:#bce8f1}.o_video_marker.o_video_marker_green{border-left-color:#5cb85c}.o_video_marker.o_video_marker_yellow{border-left-color:#f0ad4e}.o_video_marker.o_video_marker_red{border-left-color:#d9534f}.o_video_question.mejs__overlay{width:100%;height:100%;background-color:rgba(255,255,255,0.5)}.o_video_question #itemBody,.o_video_question .modalFeedback{background-color:white;opacity:1.0}.o_video_question .o_assessmentitem_wrapper .o_qti_item_body{min-height:50px}.o_video_question #o_qti_assessment_test_timer{border:none;padding:5px;margin:0}.o_video_question #o_qti_progress .progress{height:10px}.o_video_question #o_qti_container{background-color:white;padding:5px;border-radius:3px}.o_video_question .o_sel_additional_feedback{float:left;font-size:26px}.o_video_question .o_sel_additional_feedback .o_icon_passed{color:#5cb85c}.o_video_question .o_sel_additional_feedback .o_icon_failed{color:#d9534f}.mejs__time-rail .o_video_marker_gray{background:#333}.mejs__time-rail .o_video_marker_blue{background:#bce8f1}.mejs__time-rail .o_video_marker_green{background:#5cb85c}.mejs__time-rail .o_video_marker_yellow{background:#f0ad4e}.mejs__time-rail .o_video_marker_red{background:#d9534f}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.mejs__time-marker{background-color:#5bc0de}.o_userbulk_changedcell{font-style:italic;font-weight:bold}.o_qpool_source_status{text-align:center}.o_qitem_author{white-space:nowrap}a.o_qpool_status{margin:0 2px 2px 2px;text-align:left}.o_labeled.o_qpool_status_draft,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_draft{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_qpool_status_review,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_review{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_labeled.o_qpool_status_revised,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_revised{background-color:#933;border-color:#933;color:#fff}.o_labeled.o_qpool_status_finalVersion,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_finalVersion{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_qpool_status_endOfLife,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_endOfLife{background-color:#aaa;border-color:#aaa;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_draft{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_review{background-color:#ffc61e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_revised{background-color:#732626}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_finalVersion{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_endOfLife{background-color:#919191}.o_labeled_light.o_qpool_status_draft_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_draft_light{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_qpool_status_review_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_review_light{border-color:#ffd351;color:#333}.o_labeled_light.o_qpool_status_revised_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_revised_light{border-color:#933;color:#933}.o_labeled_light.o_qpool_status_finalVersion_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_finalVersion_light{border-color:#14892c;color:#14892c}.o_labeled_light.o_qpool_status_endOfLife_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_endOfLife_light{border-color:#aaa;color:#aaa}.btn-arrow-right.o_qpool_qitem_draft{background:#f8f8f8;border-bottom-color:#4a6785;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_review{background:#f8f8f8;border-bottom-color:#ffd351;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_revised{background:#f8f8f8;border-bottom-color:#933;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_final{background:#f8f8f8;border-bottom-color:#14892c;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_end_of_life{background:#f8f8f8;border-bottom-color:#aaa;border-bottom-width:3px}.btn-arrow-right.o_qpool_status_slected{background-color:#e7e7e7;color:#555}.btn-arrow-right,.btn-arrow-left{position:relative;padding-left:18px;padding-right:18px;margin-bottom:5px}.btn-arrow-right{padding-left:36px}.btn-arrow-left{padding-right:36px}.btn-arrow-right:before,.btn-arrow-right:after,.btn-arrow-left:before,.btn-arrow-left:after{content:"";position:absolute;top:5px;width:22.627417px;height:22.627417px;background:inherit;border:inherit;border-left-color:transparent;border-bottom-color:transparent;border-radius:0px 4px 0px 0px;-webkit-border-radius:0px 4px 0px 0px;-moz-border-radius:0px 4px 0px 0px}.btn-arrow-right:before,.btn-arrow-right:after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.btn-arrow-left:before,.btn-arrow-left:after{transform:rotate(225deg);-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-o-transform:rotate(225deg);-ms-transform:rotate(225deg)}.btn-arrow-right:before,.btn-arrow-left:before{left:-11px}.btn-arrow-right:after,.btn-arrow-left:after{right:-11px}.btn-arrow-right:after,.btn-arrow-left:before{z-index:1}.btn-arrow-right:before,.btn-arrow-left:after{background-color:white}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}.o_old_browser{display:none}.o_browser_ie10 .o_old_browser{display:block}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_catalog_title h2,.o_library_catalog_title h3,.o_library_catalog_title h4,.o_library_catalog_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_catalog_title h2{margin-top:0}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}.o_useradmin .o_user_infos .o_user_infos_inner{margin-right:45px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_useradmin div#o_main_toolbar.o_toolbar{margin-top:0px}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.7575757576);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_gta_coach_selection .o_noti{display:inline-block;float:none;margin:0}.o_gta_coach_selection .o_gta_coach_selection_bar{position:relative}.o_gta_coach_selection .o_gta_coach_selection_bar .o_noti{position:absolute;top:3px;right:0}p.o_gta_reopen_warning{margin-top:-20px}.o_lecture_authorized_absence div.form-inline,.o_lecture_authorized_absence div.o_navbar-form{display:inline}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_date,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_startTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_endTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_details,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_tools{width:1%}.o_lectures_teacher_overview .o_lectures_current_wrapper{border:1px solid transparent;background:#f8f8f8;border-radius:4px;margin:10px -10px 20px -10px;padding:10px}.o_lectures_teacher_overview .o_lectures_current_wrapper .o_button_group{margin-bottom:0}.o_lectures_teacher_overview .o_lectures_teacher_search .o_form .o_date{padding-right:10px;position:relative}.o_lectures_teacher_overview .o_lectures_teacher_search div.o_chelp_wrapper_and_buttons{position:absolute;top:0;right:0}.o_header_with_buttons .o_day_chooser{position:relative;float:right}.o_lectures_rollcall legend{margin-bottom:10px}.o_lectures_rollcall .o_desc,.o_lectures_rollcall .o_preparation{margin:0}.o_rollcall_next_previous_group{text-align:center}.o_rollcall_next_previous_group a.o_sel_close{float:left}.o_rollcall_next_previous_group a.o_sel_close span{display:none}.o_rollcall_next_previous_group .form-control{display:inline;width:auto}@media (max-width: 767px){.o_rollcall_next_previous_group a span{display:none}}.o_lecture_free{color:#777}.o_rollcall_portrait>div{margin:0 auto 10px auto;width:100px}.o_edubase_pv{overflow:hidden;padding-top:10px}.o_edubase_pv_fig{display:inline-block;vertical-align:top;width:110px;margin-right:3%}.o_edubase_run_enabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_run_disabled .o_edubase_booksection{margin-right:3%;margin-bottom:3%;width:177px;display:inline-table}.o_edubase_run_disabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_bs_buttons{padding-top:10px}.o_edubase_bs_book_id{margin-top:-2px}.o_edubase_bs_details{margin-left:-20px}.o_edubase_bs_details_label{visibility:hidden}.o_edubase_bs_cover object{margin-left:10px;margin-top:10px;height:120px}.o_edubase_bs_cover img{margin-left:10px;margin-top:10px;height:120px}.o_edubase_edit_books .o_icon_error{visibility:hidden}.o_edubase_edit_books .o_icon_help{margin-bottom:0px}.o_edubase_edit_books .row{margin-bottom:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata_wrapper{margin-top:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata.open{position:unset;margin:0;padding:0}.o_edusharing_container.o_in_iframe .edusharing_metadata.open:before{content:unset;border:unset;top:unset;position:unset;left:unset;width:unset;height:unset}.o_edusharing_container.o_hide_license .license{display:none}.o_edusharing_container.o_hide_infos .edusharing_metadata_wrapper{display:none}.o_edusharing_left{display:block;float:left;margin:5px 5px 5px 0}.o_edusharing_right{display:block;float:right;margin:5px 0 5px 5px}.o_edusharing_inline{display:inline-block;margin:0 5px}.o_edusharing_none{display:block;float:none;margin:5px 0}.eduContainer{width:180px;color:transparent}.edusharing_spinner_inner{width:30px;height:50px;display:inline-block}.edusharing_spinner1{background:url("../light/images/edusharing/hex1.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.1s;-moz-animation-delay:0.1s;animation-delay:0.1s}.edusharing_spinner2{background:url("../light/images/edusharing/hex2.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.25s;-moz-animation-delay:0.25s;animation-delay:0.25s}.edusharing_spinner3{background:url("../light/images/edusharing/hex3.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.5s;-moz-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5) rotate(90deg)}100%{transform:scale(1)}}body.o_doceditor_body{margin-bottom:0px}body.o_doceditor_body .o_container_offcanvas{max-width:100%}body.o_doceditor_body .container-fluid{padding-left:0px;padding-right:0px;margin-left:0px;margin-right:0px}body.o_doceditor_body #o_toplink{display:none}.o_doceditor{margin-top:10px}.o_doceditor .o_doceditor_config .nav button{margin-top:3px}.o_doceditor .navbar-collapse{border-top:0 !important}.o_doceditor .navbar-collapse.collapse{display:block !important}.o_doceditor .navbar-nav{margin:0}.o_doceditor .navbar-nav>li,.o_doceditor .navbar-nav{float:left !important}.o_doceditor .navbar-right{float:right !important}.o_doceditor .navbar-nav>li>.dropdown-menu{background-color:#f8f8f8;border-color:#e7e7e7;position:absolute;right:0;left:auto}.o_doceditor .navbar-nav>li>a{padding-top:10px !important;padding-bottom:10px !important;line-height:20px !important}.o_doceditor .o_collabora iframe,.o_doceditor .o_onlyoffice iframe,.o_doceditor .o_office365 iframe{width:100%;height:calc(100vh - 61px);height:calc(var(--doceditorvh, 1vh) * 100 - 61px);margin-top:10px;border-width:0px}.o_doceditor.o_web_document .o_collabora iframe,.o_doceditor.o_web_document .o_onlyoffice iframe,.o_doceditor.o_web_document .o_office365 iframe{width:100%;height:calc(100vh - 321px);height:calc(var(--doceditorvh, 1vh) * 100 - 321px);margin-top:10px;margin-bottom:10px;border-width:1px}.o_doceditor.o_web_document_edit .o_collabora iframe,.o_doceditor.o_web_document_edit .o_onlyoffice iframe,.o_doceditor.o_web_document_edit .o_office365 iframe{width:100%;height:calc(100vh - 276px);height:calc(var(--doceditorvh, 1vh) * 100 - 276px);margin-top:10px;margin-bottom:25px;border-width:1px}.o_doceditor .o_file_editor,.o_doceditor .o_doceditor_data_transfer{margin-right:15px;margin-left:15px}.o_web_content .o_doceditor{margin-top:0px}.o_taxonomy div#o_main_toolbar.o_toolbar{margin-top:0px}.o_taxonomy_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row{position:relative;display:inline-block;height:225px;width:450px;vertical-align:top;margin-right:10px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row ul{padding-left:2em}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui{max-width:100vw;max-height:100vh}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}@media (max-width: 767px){.ui-dialog.o_modal-ui{height:100vh !important;width:100vw !important}.ui-dialog.o_modal-ui div.ui-dialog-content{height:90vh !important}}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#aaa;background:#f9f9f9}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:3px solid #337ab7;background-image:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}.o_richtext_mce>.o_richtext_mce_modes{text-align:right;padding-right:4px}.o_richtext_mce>.o_richtext_mce_modes a{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}.mce-wordcount:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0);content:"ï™"}.mce-danger .mce-wordcount:after{color:#d9534f;content:"ïª"}.mce-statusbar.mce-danger{background-color:#f2dede}.mce-textbox.mce-danger{border-color:#ce8383;background-color:#f2dede}@media (max-width: 470px){.mce-foot .mce-container-body.mce-abs-layout{left:-337px}}div.o_table_search>span.twitter-typeahead{padding-top:5px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_segments,.o_table_toolbar,.o_breadcrumb,.o_bookmark,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_container_offcanvas{max-width:100%;margin-left:5px;margin-right:5px}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.o_print_break_after{clear:both;page-break-after:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-content{border:0}.modal-header{display:none}.modal-body{padding:0}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.ui-slider.ui-slider-horizontal.ui-widget-content{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f9f9 !important}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{background-color:#337ab7 !important}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:none !important}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}.radial-progress .inset .bgIcon{opacity:0.3;transition:opacity 0.3}.radial-progress .inset .bgIcon:before,.radial-progress .inset .o_icon_progress_danger:before,.radial-progress .inset .o_icon_progress_success:before{opacity:0.3;transition:opacity 0.3;color:#777 !important}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:0.3;transition:opacity 0.3;color:#777 !important}body{margin:0;zoom:0.6}table,figure,figure{page-break-inside:avoid}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6{page-break-after:avoid}.o_disclaimer .o_disclaimer_content{max-height:none}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em} /*# sourceMappingURL=theme.css.map */ diff --git a/src/main/webapp/static/themes/light/theme.css.map b/src/main/webapp/static/themes/light/theme.css.map index 33a9d576058cbcd2d07b2d025c0df0915119c884..ebc3f23a8e4aec6b3a14dbe5045f0792d9c3ca92 100644 --- a/src/main/webapp/static/themes/light/theme.css.map +++ b/src/main/webapp/static/themes/light/theme.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","modules/_bootstrap.scss","modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","modules/_icons.scss","modules/_emoticons.scss","modules/_helpers.scss","modules/_type.scss","modules/_content_embedded.scss","modules/_mixins.scss","modules/_tinymce.scss","modules/_radial-progress.scss","modules/_layout.scss","modules/_main.scss","modules/_footer.scss","modules/_navbar.scss","modules/_toolbar.scss","modules/_offcanvas.scss","modules/_dialog.scss","modules/_tree.scss","modules/_breadcrumb.scss","modules/_form.scss","modules/_table.scss","modules/_im.scss","modules/_flags.scss","modules/_rating_and_comments.scss","modules/_chart.scss","modules/_forum.scss","modules/_various_modules.scss","modules/_autocomplete.scss","modules/_search.scss","modules/_wizard.scss","modules/_process.scss","modules/_cal.scss","modules/_pagecontenteditor.scss","modules/_coursesite.scss","modules/_repository.scss","modules/_course.scss","modules/_curriculum.scss","modules/_qti.scss","modules/_qti21.scss","modules/_devel.scss","modules/_wiki.scss","modules/_portfolio.scss","modules/_portfoliomaps/_epmst_default.scss","modules/_portfoliomaps/_mixins.scss","modules/_portfoliomaps/_epmst_comic.scss","modules/_portfoliomaps/_epmst_leather.scss","modules/_portfoliomaps/_epmst_green.scss","modules/_portfoliomaps/_epmst_green2.scss","modules/_portfoliomaps/_epmst_green3.scss","modules/_portfoliomaps/_epmst_green4.scss","modules/_portfoliomaps/_epmst_red.scss","modules/_portfoliomaps/_epmst_red2.scss","modules/_portfoliomaps/_epmst_red3.scss","modules/_portfoliomaps/_epmst_red4.scss","modules/_portfoliomaps/_epmst_blue.scss","modules/_portfoliomaps/_epmst_blue2.scss","modules/_portfoliomaps/_epmst_blue3.scss","modules/_portfoliomaps/_epmst_blue4.scss","modules/_portfolio_v2.scss","modules/_evaluation_form.scss","modules/_quality.scss","modules/_citation.scss","modules/_video.scss","modules/_admin.scss","modules/_qpool.scss","modules/_dmz.scss","modules/_portal.scss","modules/_library.scss","modules/_translationtool.scss","modules/_user.scss","modules/_members.scss","modules/_grouptask.scss","modules/_lecture.scss","modules/_edubase.scss","modules/_edusharing.scss","modules/_doceditor.scss","modules/_taxonomy.scss","modules/_thirdparty.scss","modules/_print.scss","modules/_highscore.scss"], "names": [], "file": "theme.css" diff --git a/src/main/webapp/static/themes/openolat/theme.css b/src/main/webapp/static/themes/openolat/theme.css index 4c9fb551828649f39dc5ef1a3c9fe91fa50c1408..ac95714fca034c92c72632178a8ee4d4d7507755 100644 --- a/src/main/webapp/static/themes/openolat/theme.css +++ b/src/main/webapp/static/themes/openolat/theme.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:14px;line-height:1.428571429;color:#2d2926;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#209d9e;text-decoration:none}a:hover,a:focus{color:#177374;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:#342c24}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#209d9e}a.text-primary:hover{color:#177374}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#209d9e}a.bg-primary:hover{background-color:#177374}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fcfcfc;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#726860}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fcfcfc;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fcfcfc;border-color:#ccc}.btn-default .badge{color:#fcfcfc;background-color:#333}.btn-primary{color:#fff;background-color:#209d9e;border-color:#1c8889}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#209d9e;border-color:#1c8889}.btn-primary .badge{color:#209d9e;background-color:#fff}.btn-success{color:#fff;background-color:#78be20;border-color:#6aa81c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#5c9219;border-color:#497414}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#78be20;border-color:#6aa81c}.btn-success .badge{color:#78be20;background-color:#fff}.btn-info{color:#fff;background-color:#a6a6a6;border-color:#999}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#a6a6a6;border-color:#999}.btn-info .badge{color:#a6a6a6;background-color:#fff}.btn-warning{color:#fff;background-color:#f2af40;border-color:#f0a528}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#cd850e}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f2af40;border-color:#f0a528}.btn-warning .badge{color:#f2af40;background-color:#fff}.btn-danger{color:#fff;background-color:#d6001c;border-color:#bd0019}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#a30015;border-color:#7f0011}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d6001c;border-color:#bd0019}.btn-danger .badge{color:#d6001c;background-color:#fff}.btn-link{color:#209d9e;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#177374;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fcfcfc;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#209d9e}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#209d9e}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#209d9e}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#209d9e;background-color:#fcfcfc;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#177374;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fcfcfc;background-color:#209d9e;border-color:#209d9e;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fcfcfc;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#209d9e}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#177374}.label-success{background-color:#78be20}.label-success[href]:hover,.label-success[href]:focus{background-color:#5c9219}.label-info{background-color:#a6a6a6}.label-info[href]:hover,.label-info[href]:focus{background-color:#8d8d8d}.label-warning{background-color:#f2af40}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef9b10}.label-danger{background-color:#d6001c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#a30015}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#209d9e;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:#342c24}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#2d2926}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#209d9e}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#209d9e;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#78be20}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#a6a6a6}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f2af40}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d6001c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fcfcfc;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#209d9e;border-color:#209d9e}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#9febeb}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fcfcfc;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#209d9e}.panel-primary>.panel-heading{color:#fff;background-color:#209d9e;border-color:#209d9e}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#209d9e}.panel-primary>.panel-heading .badge{color:#209d9e;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#209d9e}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body div.popover input{max-width:100%}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@media screen and (max-width: 768px){@supports (-webkit-overflow-scrolling: touch){.form-control,.ui-widget input,.ui-widget select,.ui-widget textarea{font-size:16px}}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.woff") format("woff"),url("../light/fonts/openolat/openolat.ttf") format("truetype"),url("../light/fonts/openolat/openolat.svg") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot");src:url("../../font-awesome/fonts/fontawesome-webfont.woff2") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf") format("truetype");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.2857142857em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.o_icon-li.o_icon-lg{left:-1.8571428571em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_absence:before{content:"ï€"}.o_icon_absence_authorized:before{content:"ï";color:#78be20}.o_icon_absence_unauthorized:before{content:"ïª";color:#d6001c}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_align_left:before{content:""}.o_icon_align_middle:before{content:""}.o_icon_align_right:before{content:""}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d6001c}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#78be20}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d6001c}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#8f1f40}.o_icon_bookmark_add:before{content:"ï‚—";color:#8f1f40}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_cancelled:before{content:"ïž"}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before,.o_search_result .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_column:before{content:""}.o_icon_columns:before{content:""}.o_icon_container:before{content:""}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_compulsory:before{content:"ï©"}.o_icon_content_popup:before{content:"ï‚Ž"}.o_icon_correct_answer:before{content:"";color:#78be20}.o_icon_correct_response:before{content:"ï";color:#78be20}.o_icon_correction:before{content:"ï€"}.o_icon_curriculum_element:before{content:""}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:"ï„Œ"}.o_icon_dispensation_authorized:before{content:"ï";color:#78be20}.o_icon_dispensation_unauthorized:before{content:"ï±";color:#f2af40}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d6001c}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:"ï‚Ž"}.o_icon_extra_time:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_fileupload:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f2af40}.o_icon_import:before{content:"ï‚“"}.o_icon_incorrect_response:before{content:"ïœ";color:#d6001c}.o_icon_info:before{content:"ïš";color:#a6a6a6}.o_icon_info_msg:before{content:"ïª";color:#d6001c}.o_icon_info_resource:before{content:"ïš"}.o_icon_inheritance_root:before{content:"ï‚«"}.o_icon_inheritance_inherited:before{content:""}.o_icon_inheritance_none:before{content:"ï„Œ"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_lecture:before{content:"ï€"}.o_icon_left:before{content:""}.o_icon_levels:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:"ï‚Ž"}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_log:before{content:"ï…œ"}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_ms_done:before{content:""}.o_icon_ms_pending:before{content:"ï‹"}.o_icon_new:before{content:"ï©";color:#78be20}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_node_up_down:before{content:"ï½"}.o_icon_notes:before{content:""}.o_icon_notice_authorized:before{content:"ï";color:#78be20}.o_icon_notice_unauthorized:before{content:"ï±";color:#f2af40}.o_icon_notification:before{content:"ï‚ž"}.o_icon_number_of:before{content:""}.o_icon_ok:before{content:"";color:#78be20}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before,.o_search_result .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_origin:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_presence:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:"ï‚š"}.o_icon_provider_google:before{content:"ï† "}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_tequila:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_pull:before{content:""}.o_icon_quota:before{content:""}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:"ï„Œ"}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:"ï„Œ"}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d6001c}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_reopen:before{content:"ï„’"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_reset:before{content:"ïˆ"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_reviewer:before{content:""}.o_icon_right:before{content:"ï‚©"}.o_icon_rss:before{content:"ï‚ž"}.o_icon_rss_unsubscribe:before{content:"ï‚ž";color:#996633}.o_icon_rubric:before{content:""}.o_icon_rubric_insufficient:before{content:"ï—";color:#d6001c}.o_icon_rubric_sufficient:before{content:"ï˜";color:#78be20}.o_icon_rubric_neutral:before{content:"ïª";color:#f2af40}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:""}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:"ï„Œ"}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_time:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_timetable:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tool_pdf:before{content:"ï‡"}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_unlocked:before{content:"ï‚œ"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_update:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f2af40}.o_icon_width_expand:before{content:"ï¥"}.o_icon_width_collapse:before{content:"ï¦"}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:"ï‚Ž"}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:"ï„š"}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_icon_repo_status_preparation:before{content:"ï€"}.o_icon_repo_status_review:before{content:""}.o_icon_repo_status_coachpublished:before{content:""}.o_icon_repo_status_published:before{content:""}.o_icon_repo_status_closed:before{content:"ïž"}.o_icon_repo_status_trash:before{content:""}.o_icon_repo_status_deleted:before{content:""}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:"ï‚Ž"}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:"ï‚Ž"}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:"ï„š"}.o_survey_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:"ï„Œ"}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:"\E800";font-family:openolat;font-size:120%}.o_edubase_icon:before{content:"\E885";font-family:openolat}.o_livestream_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:"ï‚ž"}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_icon_qitem_commands:before{content:"ï‚…"}.o_icon_qitem_convert:before{content:""}.o_icon_qitem_copy:before{content:""}.o_icon_qitem_delete:before{content:""}.o_icon_qitem_draft:before{content:"ï€"}.o_icon_qitem_endOfLife:before{content:""}.o_icon_qitem_finalVersion:before{content:""}.o_icon_qitem_export:before{content:""}.o_icon_qitem_hide_metadata:before{content:""}.o_icon_qitem_import:before{content:"ï‚“"}.o_icon_qitem_new:before{content:"ï•"}.o_icon_qitem_review:before{content:""}.o_icon_qitem_revised:before{content:""}.o_icon_qitem_share:before{content:"ï¤"}.o_icon_qitem_show_metadata:before{content:""}.o_icon_qitem_status:before{content:"ï¡"}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f2af40}.o_icon_pf_section_progress:before{content:"";color:#f2af40}.o_icon_pf_section_submitted:before{content:"";color:#209d9e}.o_icon_pf_section_closed:before{content:"";color:#78be20}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f2af40}.o_icon_pf_entry_published:before{content:"ï„‘";color:#209d9e}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d6001c}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#78be20}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_new_entry:before{content:"ï€"}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_icon_pf_trash:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimatch_truefalse:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_as_mode_stop:before{content:"ï"}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f2af40}.o_icon_qti_answered:before{content:"ï˜";color:#78be20}.o_icon_qti_ended:before{content:"ïž";color:#a6a6a6}.o_icon_qti_invalid:before{content:"ïª";color:#d6001c}.o_icon_qti_review:before{content:"ï®";color:#a6a6a6}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#a6a6a6}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f2af40}.o_icon_qti_summary_ended:before{content:"ï—";color:#d6001c}.o_icon_qti_summary_correct:before{content:"ï˜";color:#78be20}.o_lectures_current:before{content:"ï„‘";color:#f2af40}.o_lectures_next:before{content:""}.o_lectures_pending:before{content:"ï„‘";color:#d6001c}.o_lectures_closed:before{content:"ï„‘"}.o_lectures_rollcall_ok:before{content:"ï„‘";color:#78be20}.o_lectures_rollcall_warning:before{content:"ï‚";color:#f2af40}.o_lectures_rollcall_danger:before{content:"ï„Œ";color:#d6001c}.o_lectures_rollcall_free:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_notice:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_pending:before{content:"";color:#b8b8b8}.o_lectures_attended:before{content:"ï„‘";color:#78be20}.o_lectures_authorized:before{content:"ï„‘";color:#f2af40}.o_lectures_absent:before{content:"ï„‘";color:#d6001c}.o_absences_col_warning:before{content:"ï±"}.o_absences_col_alert:before{content:"ïª"}.o_icon_taxonomy:before{content:""}.o_icon_taxonomy_level:before{content:""}.o_icon_taxonomy_level_leaf:before{content:"ï„•"}.o_icon_taxonomy_templates:before{content:""}.o_icon_taxonomy_levels:before{content:""}.o_black_led:before{content:"ï„‘";color:#209d9e}.o_green_led:before{content:"ï„‘";color:#78be20}.o_yellow_led:before{content:"ï„‘";color:#f2af40}.o_red_led:before{content:"ï„‘";color:#d6001c}.o_icon_identity_permanent:before{content:""}.o_icon_identity_pending:before{content:""}.o_icon_identity_login_denied:before{content:"ïž"}.o_icon_identity_deleted:before{content:""}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_guests_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f2af40}.o_ac_status_error_icon:before{content:"ï€";color:#d6001c}.o_ac_status_new_icon:before{content:"ï©";color:#209d9e}.o_ac_status_success_icon:before{content:"";color:#78be20}.o_ac_status_waiting_icon:before{content:"";color:#209d9e}.o_ac_order_status_new_icon:before{content:"ï©";color:#209d9e}.o_ac_order_status_prepayment_icon:before{content:"";color:#a6a6a6}.o_ac_order_status_payed_icon:before{content:"";color:#78be20}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f2af40}.o_ac_order_status_error_icon:before{content:"ï€";color:#d6001c}.o_ac_order_status_warning_icon:before{content:"";color:#f2af40}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}.o_icon_eva_disclaimer:before{content:""}.o_icon_eva_end_show:before{content:"ï¾"}.o_icon_eva_end_hide:before{content:"ï…¸"}.o_icon_eva_export:before{content:""}.o_icon_eva_pdf:before{content:"ï‡"}.o_icon_eva_print:before{content:""}.o_icon_eva_session_info:before{content:"ï„©"}.o_icon_eva_mc:before{content:"ï†"}.o_icon_eva_sc:before{content:""}.o_icon_eva_sc:before{content:""}.o_icon_surv_reset:before{content:"ï„"}.o_icon_qual_ana_hide_filter:before{content:""}.o_icon_qual_ana_pres_edit:before{content:"ï‚"}.o_icon_qual_ana_export:before{content:""}.o_icon_qual_ana_pres_delete:before{content:"ïž"}.o_icon_qual_ana_pdf:before{content:"ï‡"}.o_icon_qual_ana_print:before{content:""}.o_icon_qual_ana_show_filter:before{content:""}.o_icon_qual_ana_trend:before{content:"ïˆ"}.o_icon_qual_ana_trend_arrow:before{content:"ï‚©"}.o_icon_qual_dc_create:before{content:"ï•"}.o_icon_qual_dc_delete:before{content:""}.o_icon_qual_dc_finished:before{content:"ï˜"}.o_icon_qual_dc_preparation:before{content:"ï„"}.o_icon_qual_dc_ready:before{content:"ï€"}.o_icon_qual_dc_running:before{content:"ï…„"}.o_icon_qual_exec_future:before{content:"ïœ"}.o_icon_qual_exec_over:before{content:"ï—"}.o_icon_qual_exec_participating:before{content:"ï…„"}.o_icon_qual_exec_participated:before{content:"ï˜"}.o_icon_qual_exec_ready:before{content:"ï€"}.o_icon_qual_gen_ce_add:before{content:"ï•"}.o_icon_qual_gen_create:before{content:"ï•"}.o_icon_qual_gen_delete:before{content:""}.o_icon_qual_gen_disabled:before{content:"ïž"}.o_icon_qual_gen_enabled:before{content:""}.o_icon_qual_gen_re_add:before{content:"ï•"}.o_icon_qual_part_user_add:before{content:""}.o_icon_qual_part_user_add_course:before{content:""}.o_icon_qual_part_user_add_curele:before{content:""}.o_icon_qual_part_execute:before{content:"ï‹"}.o_icon_lic_add:before{content:"ï•"}.o_icon_lic_public_domain:before{content:"\E810";font-family:openolat;font-size:120%}.o_icon_lic_cc0:before{content:"\E811";font-family:openolat;font-size:120%}.o_icon_lic_by:before{content:"\E812";font-family:openolat;font-size:120%}.o_icon_lic_by_sa:before{content:"\E813";font-family:openolat;font-size:120%}.o_icon_lic_by_nd:before{content:"\E814";font-family:openolat;font-size:120%}.o_icon_lic_by_nc:before{content:"\E815";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_sa:before{content:"\E817";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_nd:before{content:"\E819";font-family:openolat;font-size:120%}.o_icon_lic_all_rights_reserved:before{content:""}.o_icon_lic_freetext:before{content:""}.o_icon_lic_general:before{content:""}.o_icon_lic_youtube:before{content:"ï…¦"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_small_bottom,.o_block_small{margin-bottom:0.5em}.o_block_small_top,.o_block_small{margin-top:0.5em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_move_up{margin-top:-1em}.o_block_move_up_small{margin-top:-0.5em}.o_block_move_up_large{margin-top:-2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block;vertical-align:top}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.6666666667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.o_button_textstyle:before{content:'['}.o_button_textstyle:after{content:']'}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#ccc;border-radius:10px;background-color:#fcfcfc}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-top:none;border-left:none;border-right:none;color:#888;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:11px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:20px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_highlight_on_hover:hover{background-color:#f5f5f5}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_copy_code input,.o_copy_code textarea,.b_copy_code input,code input,pre input,.b_copy_code textarea,code textarea,pre textarea{border:0;width:90%;background:transparent}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_figure_caption_bottom{display:inline-block;min-width:50%}.o_figure_caption_bottom figure{display:table}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_page_margins{padding:25px}.o_dragable,.o_page_fragment_edit .o_page_tools_dd:before,.o_page_drop{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.o_dragable:active,.o_page_fragment_edit .o_page_tools_dd:active:before,.o_page_drop:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging,.gu-mirror{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging:active,.gu-mirror:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_hidden{visibility:hidden}h1{color:#342c24}h2{color:#342c24}h3{color:#342c24}h4,.o_cal .fc-header-title h2{color:#342c24}h5{color:#342c24}h5{color:#342c24}fieldset legend{color:#342c24}.o_user_content_block a{color:#209d9e;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#177374;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{line-height:1.428571429;vertical-align:top}table.b_default td,table.b_default th{padding:8px;vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:8px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:8px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:8px;border:0 !important}table.b_borderless thead td,table.b_borderless th{font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:8px;background:#eee;border:1px solid #fbfbfb}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_gray tbody tr:nth-child(even) td{background:#fbfbfb;border:1px solid #eee}table.b_gray.b_no_stripes tbody tr:nth-child(even) td{background:#eee;border:1px solid #fbfbfb}@media print{table.b_gray td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eee !important}table.b_gray thead td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d5d5d5 !important}table.b_gray tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fbfbfb !important}}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:8px;background:#d9edf7;border:1px solid #eef7fb}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_blue tbody tr:nth-child(even) td{background:#eef7fb;border:1px solid #d9edf7}table.b_blue.b_no_stripes tbody tr:nth-child(even) td{background:#d9edf7;border:1px solid #eef7fb}@media print{table.b_blue td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d9edf7 !important}table.b_blue thead td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#afd9ee !important}table.b_blue tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7fb !important}}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:8px;background:#dff0d8;border:1px solid #eef7ea}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_green tbody tr:nth-child(even) td{background:#eef7ea;border:1px solid #dff0d8}table.b_green.b_no_stripes tbody tr:nth-child(even) td{background:#dff0d8;border:1px solid #eef7ea}@media print{table.b_green td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#dff0d8 !important}table.b_green thead td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#c1e2b3 !important}table.b_green tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7ea !important}}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:8px;background:#fcf8e3;border:1px solid #fefefa}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_yellow tbody tr:nth-child(even) td{background:#fefefa;border:1px solid #fcf8e3}table.b_yellow.b_no_stripes tbody tr:nth-child(even) td{background:#fcf8e3;border:1px solid #fefefa}@media print{table.b_yellow td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fcf8e3 !important}table.b_yellow thead td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f7ecb5 !important}table.b_yellow tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fefefa !important}}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:8px;background:#f2dede;border:1px solid #f9f0f0}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}table.b_red tbody tr:nth-child(even) td{background:#f9f0f0;border:1px solid #f2dede}table.b_red.b_no_stripes tbody tr:nth-child(even) td{background:#f2dede;border:1px solid #f9f0f0}@media print{table.b_red td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f2dede !important}table.b_red thead td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#e4b9b9 !important}table.b_red tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f0f0 !important}}table.a_responsive{width:auto !important}@media (max-width: 768px){.a_responsive td{display:block}}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#209d9e}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}a.b_link_mailto{color:#209d9e}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#209d9e}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0}caption,figcaption,.o_caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left;font-style:italic}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}figure.align-left{float:left}figure.align-right{float:right}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}img.align-left{float:left}img.align-right{float:right}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}figure.image.align-center{display:block;text-align:center}figure.image.align-left{float:none;display:block;text-align:left}figure.image.align-left figcaption{text-align:left}figure.image.align-right{float:none;display:block;text-align:right}figure.image.align-right figcaption{text-align:right}figure.image{margin:2em 0 2em 0;border:0;background:none}figure.image img.b_float_left,figure.image img.b_float_left_clear,figure.image img.b_float_right,figure.image img.b_float_right_clear,figure.image img.b_float_left_clear_nomargin,figure.image img.b_centered{float:none;display:inline-block;margin:0}figure.image figcaption{font-size:90%;font-style:italic}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#209d9e}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#209d9e}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#78be20}.radial-progress.radial-progress-success .inset .percentage .number span{color:#78be20}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#a6a6a6}.radial-progress.radial-progress-info .inset .percentage .number span{color:#a6a6a6}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d6001c}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d6001c}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f2af40}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f2af40}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#209d9e}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60);width:120px}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d6001c}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#a30015}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f2af40}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d6001c}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d6001c}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#a30015}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d6001c;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#a30015;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar.o_toolbar_with_segments{margin-bottom:30px}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d6001c}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#8a0012}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#209d9e;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#209d9e;background-color:transparent}.o_toolbar .o_breadcrumb+.o_tools_container{border-top:1px solid #e7e7e7}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:block;font-size:12px;text-align:center}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:16px;font-size:70% !important;padding:0 18px 0 4px;position:relative;top:-2px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:12px !important;margin:0 0 3px 0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{position:absolute;right:5px;top:2px;margin-right:0}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:14px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:10px !important}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:5px;top:2px;margin-right:0;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{padding:0 18px 0 4px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:20px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:15px;top:2px;margin-right:0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_label,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-toggle.o_with_labeled .o_inner_wrapper.o_labeled+.o_icon_caret{color:#fff !important}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled{padding:0;margin:0}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled .o_labeled{text-align:left}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled>li>a{padding:5px 5px;margin:1px}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto;text-align:center}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px}#o_container_page_width_toggler{position:absolute;top:25px;margin-top:-.75em;right:10px;z-index:5;display:none}@media (min-width: 1364px){#o_container_page_width_toggler{display:block}#o_container_page_width_toggler #o_go_standard_width{display:none}#o_container_page_width_toggler #o_go_full_width{display:block}body.o_width_full .o_container_offcanvas{max-width:100%;margin-left:20px;margin-right:20px}body.o_width_full #o_container_page_width_toggler #o_go_standard_width{display:block}body.o_width_full #o_container_page_width_toggler #o_go_full_width{display:none}}body.o_dmz #o_container_page_width_toggler{display:none !important}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_instruction,.o_form .o_warning,p.o_gta_reopen_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_instruction h2,.o_form .o_warning h2,p.o_gta_reopen_warning h2,.b_warning h3,.o_instruction h3,.o_form .o_warning h3,p.o_gta_reopen_warning h3,.b_warning h4,.o_instruction h4,.o_form .o_warning h4,p.o_gta_reopen_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_instruction .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_instruction h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,p.o_gta_reopen_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title p.o_gta_reopen_warning h2,.b_warning h5,.o_instruction h5,.o_form .o_warning h5,p.o_gta_reopen_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}.o_instruction{margin-top:0px;border-left:none;padding-top:10px;padding-bottom:10px}.o_instruction>.o_button_group{margin-bottom:0px}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#342c24;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#209d9e}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#177374}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f2af40;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d6001c}.o_breadcrumb .o_breadcrumb_close a:hover{color:#8a0012}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form .o_date.form-inline .form-group.o_second_date,.o_form .o_date.o_navbar-form .form-group.o_second_date,.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group,.o_form .o_date.form-inline .form-group.o_date_separator,.o_form .o_date.o_navbar-form .form-group.o_date_separator{margin-left:25px}.o_form .btn-group .o_date{display:inline-block}.o_form input.o_date_ms{width:3em}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:11em}.o_form .has-feedback .o_date_picker .form-control{padding-right:0}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .o_fileElement.has-error .o_icon_error.form-control-feedback{display:none}.o_form .form-control.textarea.o_fixed_font_with{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_form .form-control.textarea_disabled.o_fixed_font_with{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important;background:#fafafa}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_form_inline_mandatory_compact i{width:20px}.o_form_inline_mandatory_compact select.form-control{width:calc(100% - 25px)}.o_day_chooser .o_day_previous{display:inline-block}.o_day_chooser .o_day_previous a{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.o_day_chooser .o_day_date{display:inline-block;border-radius:0}.o_day_chooser .o_day_date input,.o_day_chooser .o_day_date .input-group-addon{border-radius:0}.o_day_chooser .o_day_next{display:inline-block}.o_day_chooser .o_day_next a{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f2af40;border-color:#f0a528}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#cd850e}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f2af40;border-color:#f0a528}.o_button_dirty .badge{color:#f2af40;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 1px;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 1px 0 0.5em}.o_button_toggle.o_on i{color:#209d9e;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_flexi tfoot{border-top:solid #ddd 2px}.o_table_wrapper.o_table_flexi .o_multiselect{width:20px}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_checkall>a{font-weight:normal;margin-right:10px}.o_table_wrapper .o_table_footer .o_table_checkall.input-sm,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.form-control,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.input-group-addon,.o_table_wrapper .o_table_footer .input-group-sm>.input-group-btn>.o_table_checkall.btn{padding:5px 6px}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#2d2926;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}.o_breadcrumb.o_table_flexi_breadcrumb ol.breadcrumb{margin:5px 0 0 0}div.o_table_flexi div.o_table_flexi_leaf{margin-left:1.55em}div.o_table_flexi div.o_table_flexi_l0{padding-left:0px}div.o_table_flexi div.o_table_flexi_l1{padding-left:15px}div.o_table_flexi div.o_table_flexi_l2{padding-left:30px}div.o_table_flexi div.o_table_flexi_l3{padding-left:45px}div.o_table_flexi div.o_table_flexi_l4{padding-left:60px}div.o_table_flexi div.o_table_flexi_l5{padding-left:75px}div.o_table_flexi div.o_table_flexi_l6{padding-left:90px}div.o_table_flexi div.o_table_flexi_l7{padding-left:105px}div.o_table_flexi div.o_table_flexi_l8{padding-left:120px}div.o_table_flexi div.o_table_flexi_l9{padding-left:135px}div.o_table_flexi div.o_table_flexi_l10{padding-left:150px}div.o_table_flexi div.o_table_flexi_l11{padding-left:165px}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#2d2926;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications,.o_table_tools_indications_filter_only{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a,.o_table_tools_indications_filter_only a{color:#d6001c}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_table_filter .control-label{margin-right:0.5em}.o_table_filter .control-label:after{content:':'}.o_table_filter>div{display:inline-block}.o_table_filter>div label{font-weight:normal}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d6001c}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f5c370}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2d2926}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#209d9e}.o_im_buddieslist ul a:hover{color:#177374}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f2af40}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating.o_rating_personal .o_rating_items .o_icon{color:#209d9e}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#35d5d6}.d3chart .bar_default,.d3chart .bubble_default{fill:#209d9e}.d3chart .bar_default_dark{fill:#135e5e}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#78be20;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„Ž";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#209d9e;border:1px solid #1c8889;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#197b7c;border-color:#115556}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#726860}.o_draw_circle{border:2px solid #209d9e;border-radius:50%;position:absolute !important;box-sizing:border-box}.o_draw_rectangle{border:2px solid #209d9e;position:absolute !important;box-sizing:border-box}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:0;right:37px}.o_content_popup{position:absolute;top:0;right:12px}.o_module_cp_wrapper{position:relative}.o_module_cp_wrapper .o_tools{position:absolute;top:0;right:0;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-group{margin-bottom:0}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-control-static{padding-top:0;padding-bottom:0}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;background:#fcfcfc;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.o_dropdown>li>i.o_icon_check{display:inline-block;padding-left:14px}ul.o_dropdown>li>i.o_icon_check+a{display:inline-block;padding-left:5px}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.428571429}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png") !important}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png") !important}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png") !important}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png") !important}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png") !important}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png") !important}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png") !important}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png") !important}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#209d9e;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#2d2926}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_feed .o_enclosure{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}div.panel.o_assessment_modes .o_table_body{margin-top:0}div.panel.o_assessment_modes .o_table_wrapper{margin-bottom:5px}div.o_assessment_mode_row{padding:0 15px}div.o_assessment_mode_row.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #3c763d;background-color:#dff0d8}div.o_assessment_mode_row.o_assessment_end_soon.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #a94442;background-color:#f2dede}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_segments.o_segments_linked .btn,.o_segments.o_segments_linked .btn:hover,.o_segments.o_segments_linked .btn:active,.o_segments.o_segments_linked .btn:focus{border:none;border-radius:0;box-shadow:none;background:none}.o_segments.o_segments_linked .btn-primary{color:#000;font-size:24px;background:none}.o_segments.o_segments_linked .btn-default,.o_segments.o_segments_linked .btn-default:hover,.o_segments.o_segments_linked .btn-default:active,.o_segments.o_segments_linked .btn-default:focus{color:#209d9e;background:none}.o_segments.o_segments_linked .o_segment_separator{color:#000}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d6001c}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.progress .progress-bar{text-shadow:1px 1px 2px #000000}.o_progress_label_right{float:left;margin-right:10px}.o_web_content{padding-bottom:15px}.o_labeled_light,a.o_labeled_light,.o_labeled,a.o_labeled{display:inline-block;text-transform:uppercase;text-align:center;text-decoration:none;vertical-align:middle;font-size:75%;line-height:1;white-space:nowrap;border:1px solid;border-radius:3px;padding:2px 5px;background-color:#777;color:#fff;position:relative}.o_labeled_light,a.o_labeled_light{font-weight:bold;background-color:#f8f8f8}.o_ms_button{max-width:100%;width:100%;display:flex}.o_ms_button span:not(.o_ms_carret){text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.o_ms_button .o_ms_carret{margin:auto 0 auto auto}.o_ms_list{width:100%;height:auto;max-height:300px;overflow-x:hidden;top:unset}.o_disclaimer .o_disclaimer_content{max-height:50vh;overflow:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background:#fbfbfb;padding:10px;border:1px solid #c2c2c2}.o_files_size_okay{color:#61E868}.o_files_size_warning{color:#FFB100}.o_files_size_large{color:#E82A0C}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fcfcfc;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.428571429}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#209d9e}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_title h4 .o_icon-fw,.o_search_result_title .o_cal .fc-header-title h2 .o_icon-fw,.o_cal .fc-header-title .o_search_result_title h2 .o_icon-fw{text-align:left}.o_search_result_highlight{font-weight:bold;background-color:transparent}.o_search_result_context{display:inline-block;color:#3c763d;margin-right:1em}.o_search_result_license{display:inline-block;color:#777}.o_search_result_excerpt{color:#555}.o_search_result .o_opener{font-size:12px}.o_search_result .o_opener i{width:1em}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}.o_search_result_details .o_togglebox_wrapper .o_search_result_license i{font-size:20px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#2d2926;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#2d2926}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#209d9e}.o_process .o_step.o_active .o_title{color:#209d9e !important}.o_process .o_step.o_active .o_title:before{content:"";color:#209d9e}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#29c7c8}.o_process .o_step.o_done .o_title{color:#29c7c8 !important}.o_process .o_step.o_done .o_title:before{content:"";color:#78be20}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #209d9e;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.o_cal_wv_event_tooltip_content .o_cal_description{background-color:#f8f8f8;padding:10px 7px;margin:10px -7px}.o_cal_wv_event_tooltip_content .o_cal_tooltip_buttons{text-align:center;margin-top:20px}.o_cal_event_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_not_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.o_cal_event_not_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.fc-button{color:#333;background-color:#fcfcfc;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fcfcfc;border-color:#ccc}.fc-button .badge{color:#fcfcfc;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#209d9e;border-color:#1c8889}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#209d9e;border-color:#1c8889}.fc-button.fc-state-active .badge{color:#209d9e;background-color:#fff}.fc-listYear-button:before,.fc-listMonth-button:before,.fc-listWeek-button:before,.fc-listDay-button:before{content:"";margin-right:5px;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:80%;webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}table.fc-list-table .fc-list-item{background-color:white;color:#5D5D5D !important}table.fc-list-table .fc-list-item a,table.fc-list-table .fc-list-item span{color:#5D5D5D !important}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_page_content_editor .o_toolbar{border:none}.o_page_content_editor .o_page_part,.gu-mirror{border:2px solid transparent}.o_page_content_editor .o_page_part:hover,.gu-mirror:hover{border:2px dotted #209d9e}.o_page_fragment_edit{position:relative;display:grid}.o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#209d9e;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;top:-19px;height:19px;background-color:#209d9e;border-radius:10px 10px 0 0}.o_page_fragment_edit .o_page_tools_above .o_page_add_above .o_icon{color:#fff;background-color:#209d9e}.o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:3px 5px 0 7px}.o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#209d9e}.o_page_fragment_edit .o_page_tools_dd:before{content:' ';width:25px;height:100%;position:absolute;left:0;top:0;border:3px #209d9e solid;border-bottom:28px #209d9e solid;background-image:-webkit-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-moz-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-ms-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);-webkit-background-size:3px 3px;-moz-background-size:3px 3px;background-size:3px 3px}.o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;background:#209d9e;color:#fff}.o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_page_fragment_edit .o_page_part.o_page_edit{padding-right:23px;border:2px solid #209d9e;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #209d9e}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;position:absolute;z-index:3;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;bottom:-20px;height:22px;background-color:#209d9e;border-radius:0 0 10px 10px}.o_page_fragment_edit .o_page_add_below .o_icon{color:#fff;background-color:#209d9e}.o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px;margin:0px 0px 0px 2px}.o_page_fragment_edit.gu-mirror .o_page_add_below,.o_page_fragment_edit.gu-mirror .o_page_add_above,.o_page_fragment_edit.gu-transit .o_page_add_below,.o_page_fragment_edit.gu-transit .o_page_add_above{display:none}.o_page_container_slot.col-md-3 .o_page_others_above a span,.o_page_container_slot.col-md-4 .o_page_others_above a span{display:none}.o_page_container_slot.col-md-3 .o_page_edit_toolbar ul>li,.o_page_container_slot.col-md-4 .o_page_edit_toolbar ul>li{padding-right:0}div.o_page_content_editor .gu-mirror,.o_page_content_editor .gu-transit{box-shadow:none}.o_page_container{box-sizing:border-box;padding:10px}.o_page_container{background-color:transparent}.o_page_container .o_page_container{background-color:transparent}.o_page_container .o_page_container .o_page_container{background-color:transparent}.o_page_container_slot{box-sizing:border-box;margin:0 -1px -1px 0;padding:10px}.o_page_container .o_page_container_slot{border:2px dotted #eee}.o_page_container:hover .o_page_container_slot{border:2px dotted #ef00ef}.o_page_add_in_container_grp{margin-bottom:0}.gu-transit{border:2px dotted #e80c96;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40)}.gu-mirror{border:2px dotted #209d9e;opacity:0.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.o_page_add_callout a span{display:none}.o_page_add_callout ul.list-inline{margin-bottom:0}.o_page_table_edition .o_table_title,.o_page_table_edition .o_table_caption{padding:5px}.o_page_with_side_options_wrapper{display:flex;align-items:stretch;flex-direction:row}.o_page_side_options_target{background-color:#f9f9f9;flex-grow:4}.o_page_side_options{flex-grow:0;background-color:#209d9e;border-left:1px solid #b9b9b9;border-bottom:1px solid #b9b9b9;padding:5px;z-index:2}@media (max-width: 767px){.o_page_with_side_options_wrapper{flex-direction:column-reverse}}.o_page_content .o_image,.o_page_content .o_video,.o_page_content_editor .o_image,.o_page_content_editor .o_video{width:100%}.o_page_content .o_image img,.o_page_content .o_video img,.o_page_content_editor .o_image img,.o_page_content_editor .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_page_content .o_image .o_artefact_metadata,.o_page_content .o_video .o_artefact_metadata,.o_page_content_editor .o_image .o_artefact_metadata,.o_page_content_editor .o_video .o_artefact_metadata{text-align:left}.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left{float:left}.o_page_content .o_image.o_image_align_left+.o_image_clear,.o_page_content .o_video.o_image_align_left+.o_image_clear,.o_page_content_editor .o_image.o_image_align_left+.o_image_clear,.o_page_content_editor .o_video.o_image_align_left+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right{float:right}.o_page_content .o_image.o_image_align_right+.o_image_clear,.o_page_content .o_video.o_image_align_right+.o_image_clear,.o_page_content_editor .o_image.o_image_align_right+.o_image_clear,.o_page_content_editor .o_video.o_image_align_right+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle{clear:both;margin-left:50%;text-align:center;transform:translate(-50%, 0%)}.o_page_content .o_image.o_image_align_leftfloat,.o_page_content .o_video.o_image_align_leftfloat,.o_page_content_editor .o_image.o_image_align_leftfloat,.o_page_content_editor .o_video.o_image_align_leftfloat{float:left;padding-right:10px;padding-bottom:10px}.o_page_content .o_image.o_image_align_rightfloat,.o_page_content .o_video.o_image_align_rightfloat,.o_page_content_editor .o_image.o_image_align_rightfloat,.o_page_content_editor .o_video.o_image_align_rightfloat{float:right;padding-left:10px;padding-bottom:10px}.o_page_content .o_image.o_image_size_style_small,.o_page_content .o_video.o_image_size_style_small,.o_page_content_editor .o_image.o_image_size_style_small,.o_page_content_editor .o_video.o_image_size_style_small{width:25%}.o_page_content .o_image.o_image_size_style_small img,.o_page_content .o_video.o_image_size_style_small img,.o_page_content_editor .o_image.o_image_size_style_small img,.o_page_content_editor .o_video.o_image_size_style_small img{width:100%}.o_page_content .o_image.o_image_size_style_medium,.o_page_content .o_video.o_image_size_style_medium,.o_page_content_editor .o_image.o_image_size_style_medium,.o_page_content_editor .o_video.o_image_size_style_medium{width:40%}.o_page_content .o_image.o_image_size_style_medium img,.o_page_content .o_video.o_image_size_style_medium img,.o_page_content_editor .o_image.o_image_size_style_medium img,.o_page_content_editor .o_video.o_image_size_style_medium img{width:100%}.o_page_content .o_image.o_image_size_style_large,.o_page_content .o_video.o_image_size_style_large,.o_page_content_editor .o_image.o_image_size_style_large,.o_page_content_editor .o_video.o_image_size_style_large{width:60%}.o_page_content .o_image.o_image_size_style_large img,.o_page_content .o_video.o_image_size_style_large img,.o_page_content_editor .o_image.o_image_size_style_large img,.o_page_content_editor .o_video.o_image_size_style_large img{width:100%}.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill{width:100%;float:none !important;display:block}.o_page_content .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content .o_video.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_figure_caption_bottom{display:block}.o_page_content .o_image.o_image_size_style_fill img,.o_page_content .o_video.o_image_size_style_fill img,.o_page_content_editor .o_image.o_image_size_style_fill img,.o_page_content_editor .o_video.o_image_size_style_fill img{width:100%;display:block}.o_page_content .o_image img.o_image_classic,.o_page_content .o_video img.o_image_classic,.o_page_content_editor .o_image img.o_image_classic,.o_page_content_editor .o_video img.o_image_classic{padding:0;border:0;border-radius:0}.o_page_content .o_image img.o_image_border,.o_page_content .o_video img.o_image_border,.o_page_content_editor .o_image img.o_image_border,.o_page_content_editor .o_video img.o_image_border{padding:3px;border:solid 1px #CCC}.o_page_content .o_image img.o_image_shadow,.o_page_content .o_video img.o_image_shadow,.o_page_content_editor .o_image img.o_image_shadow,.o_page_content_editor .o_video img.o_image_shadow{padding:0;border:0;-moz-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.o_page_content .o_image img.o_image_frame,.o_page_content .o_video img.o_image_frame,.o_page_content_editor .o_image img.o_image_frame,.o_page_content_editor .o_video img.o_image_frame{padding:0;border:0;border-radius:0;-moz-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);margin:15px}.o_page_content .o_image img.o_image_polaroid,.o_page_content .o_video img.o_image_polaroid,.o_page_content_editor .o_image img.o_image_polaroid,.o_page_content_editor .o_video img.o_image_polaroid{padding:0;border-radius:0;border:1px solid #dcdcdc;background:#fff;padding:10px 10px 45px 10px;-webkit-box-shadow:3px 3px 3px rgba(0,0,0,0.2);-moz-box-shadow:3px 3px 3px rgba(0,0,0,0.2);box-shadow:3px 3px 3px rgba(0,0,0,0.2)}.o_page_content .o_image img.o_image_round,.o_page_content .o_video img.o_image_round,.o_page_content_editor .o_image img.o_image_round,.o_page_content_editor .o_video img.o_image_round{padding:3px;border:solid 1px #CCC;border-radius:50%}.o_page_content .o_image .o_image_title_dark,.o_page_content .o_video .o_image_title_dark,.o_page_content_editor .o_image .o_image_title_dark,.o_page_content_editor .o_video .o_image_title_dark{color:#000}.o_page_content .o_image .o_image_title_bright,.o_page_content .o_video .o_image_title_bright,.o_page_content_editor .o_image .o_image_title_bright,.o_page_content_editor .o_video .o_image_title_bright{color:#f9f9f9}.o_page_content .o_image .o_image_title,.o_page_content .o_video .o_image_title,.o_page_content_editor .o_image .o_image_title,.o_page_content_editor .o_video .o_image_title{position:relative}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{position:absolute;left:50%;margin-right:-50%;transform:translate(-50%, -50%)}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_top{top:10%}.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_centered{top:50%}.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{bottom:10%}.o_page_content .o_image.o_image_size_style_none .o_image_title_top,.o_page_content .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_none .o_image_title_top,.o_page_content .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content .o_video.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_bottom{font-size:24px}.o_page_content .o_image.o_image_size_style_small .o_image_title_top,.o_page_content .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_small .o_image_title_top,.o_page_content .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content .o_video.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_bottom{font-size:18px}.o_page_content .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_video.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_bottom{font-size:32px}.o_page_content .o_image.o_image_size_style_large .o_image_title_top,.o_page_content .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_large .o_image_title_top,.o_page_content .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content .o_video.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_bottom{font-size:40px}.o_page_content .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_video.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_bottom{font-size:56px}.o_page_add_contents{clear:both;margin-top:30px}.o_ce_html_raw.o_html_col2,.o_ce_html_paragraph.o_html_col2{column-count:2;column-gap:1em}.o_ce_html_raw.o_html_col3,.o_ce_html_paragraph.o_html_col3{column-count:3;column-gap:1em}.o_ce_html_raw.o_html_col4,.o_ce_html_paragraph.o_html_col4{column-count:4;column-gap:1em}table.o_ce_table caption{caption-side:bottom}.o_ce_add_main_btns{margin-top:2em}.o_ce_add{border:none;margin-bottom:0px}.o_ce_add .o_ce_tools{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.o_ce_add .o_ce_tools .o_ce_tool{padding:0px;margin:0px;width:33%}.o_ce_add .o_ce_tools .o_ce_tool a{padding:6px 3px;margin:0px;display:block;width:100%;height:100%}.o_ce_add .o_ce_tools .o_ce_tool a:hover{padding:5px 2px;border:1px solid #e7e7e7;border-radius:4px}.o_ce_add_list .o_ce_add_list_item{border-style:none;padding:0px;margin:0px -15px}.o_ce_add_list .o_ce_add_list_item a{padding:5px 25px;margin:0px;display:block;width:100%;height:100%}.o_ce_add_list .o_ce_add_list_item a:hover{text-decoration:none;background-color:#f5f5f5}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #ccc;border-radius:4px;background:#fcfcfc;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-top-left-radius:4px;border-bottom-left-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual .o_visual_not_available{background-color:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #ccc;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#a6a6a6}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#209d9e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#209d9e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#a6a6a6;border-color:#999}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#a6a6a6;border-color:#999}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#a6a6a6;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;background:#fcfcfc;border-left:1px solid #ccc;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#342c24}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#16130f}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;z-index:2px;background:#fcfcfc;padding:0 3px 3px 3px;border-radius:0px 0px 3px 3px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#209d9e;border-top-right-radius:4px;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac ul{display:inline-block}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#342c24}.o_catalog .o_level .o_meta .o_title a:hover{color:#16130f}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #ccc;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #ccc;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #ccc;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #ccc;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#342c24;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#16130f}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}.o_ac_configuration div.o_ac_method{background-color:#efefef;padding:5px;border-radius:3px}.o_ac_configuration div.o_ac_methods.form-group{padding-bottom:0;margin-bottom:0}.o_repo_with_explanation{padding-bottom:0;margin-bottom:0}.o_repo_explanation{color:#f2af40}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}a.o_repo_tools_status{cursor:pointer;margin:0 2px 2px 2px;text-align:left}.o_labeled.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_review{background-color:#FCCA46;border-color:#FCCA46;color:#fff}.o_labeled.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_coachpublished{background-color:#1DC63F;border-color:#1DC63F;color:#fff}.o_labeled.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_published{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_closed{background-color:#99583D;border-color:#99583D;color:#fff}.o_labeled.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_trash{background-color:#5A5958;border-color:#5A5958;color:#fff}.o_labeled.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_deleted{background-color:#888;border-color:#888;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_preparation{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_review{background-color:#fbbc14}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_coachpublished{background-color:#169a31}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_published{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_closed{background-color:#75432e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_trash{background-color:#40403f}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_deleted{background-color:#6f6f6f}.o_labeled_light.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_preparation{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_review{border-color:#FCCA46;color:#FCCA46}.o_labeled_light.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_coachpublished{border-color:#1DC63F;color:#1DC63F}.o_labeled_light.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_published{border-color:#14892c;color:#14892c}.o_labeled_light.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_closed{border-color:#99583D;color:#99583D}.o_labeled_light.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_trash{border-color:#5A5958;color:#5A5958}.o_labeled_light.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_deleted{border-color:#888;color:#888}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#2d2926}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#2d2926}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#2d2926}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#342c24}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#16130f;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0;display:table}.o_cmembers .o_cmember .o_portrait{padding-right:10px;display:table-cell;vertical-align:top;min-width:60px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{display:table-cell;vertical-align:middle;color:#777}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember .o_curriculum_displayname,.o_cmembers .o_cmember .o_curriculum_root_el_identifier,.o_cmembers .o_cmember .o_curriculum_root_el_displayname{font-size:12px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;max-width:100%;max-height:100%;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}div.o_correction_navigation .o_correction_navigation_back{float:left;line-height:32px}div.o_correction_navigation .o_correction_navigation_previous{position:absolute;right:50%;margin-right:102px}div.o_correction_navigation #o_cocurrent_item_SELBOX{width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;left:50%;margin-left:-100px}div.o_correction_navigation .o_correction_navigation_next{position:absolute;left:50%;margin-left:102px}@media (max-width: 767px){div.o_correction_navigation .o_correction_navigation_previous span,div.o_correction_navigation .o_correction_navigation_next span{display:none}}.o_ms_stack_panel .o_toolbar{margin-top:0px}.o_ms_bold{font-weight:bold}.o_ms_legend{padding:5px}.o_ms_legend li{display:block;font-size:90%}.o_ms_legend .ident{font-weight:bold}.o_curriculum_el_listing tr.o_curriculum_element_inactive,.o_curriculum_el_listing tr.o_curriculum_element_inactive td,.o_curriculum_el_listing tr.o_curriculum_element_inactive td span,.o_curriculum_el_listing tr.o_curriculum_element_inactive td a{color:#777}.o_curriculum_el_listing tr.o_curriculum_element_unfiltered,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td span,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td a{color:#aaa}.o_curriculum_el_listing tr.o_curriculum_element_deleted,.o_curriculum_el_listing tr.o_curriculum_element_deleted td,.o_curriculum_el_listing tr.o_curriculum_element_deleted td span,.o_curriculum_el_listing tr.o_curriculum_element_deleted td a{color:#777;text-decoration:line-through}.o_curriculumtable tr.o_curriculum_element_l0 td:nth-thild(first){padding-left:0px}.o_curriculumtable tr.o_curriculum_element_l1 td:nth-thild(first){padding-left:15px}.o_curriculumtable tr.o_curriculum_element_l2 td:nth-thild(first){padding-left:30px}.o_curriculumtable tr.o_curriculum_element_l3 td:nth-thild(first){padding-left:45px}.o_curriculumtable tr.o_curriculum_element_l4 td:nth-thild(first){padding-left:60px}.o_curriculumtable tr.o_curriculum_element_l5 td:nth-thild(first){padding-left:75px}.o_curriculumtable tr.o_curriculum_element_l6 td:nth-thild(first){padding-left:90px}.o_curriculumtable tr.o_curriculum_element_l7 td:nth-thild(first){padding-left:105px}.o_curriculumtable tr.o_curriculum_element_l8 td:nth-thild(first){padding-left:120px}.o_curriculumtable tr.o_curriculum_element_l9 td:nth-thild(first){padding-left:135px}.o_curriculumtable tr.o_curriculum_element_l10 td:nth-thild(first){padding-left:150px}.o_curriculumtable tr.o_curriculum_element_l11 td:nth-thild(first){padding-left:165px}.o_curriculumtable tr.o_curriculum_element_inactive,.o_curriculumtable tr.o_curriculum_element_inactive td,.o_curriculumtable tr.o_curriculum_element_inactive td span{color:#777}.o_curriculumtable tr.o_curriculum_element_deleted,.o_curriculumtable tr.o_curriculum_element_deleted td,.o_curriculumtable tr.o_curriculum_element_deleted td span{color:#777;text-decoration:line-through}.o_curriculumtable.o_rendertype_custom .container-fluid{padding-left:0;padding-right:0}.o_curriculumtable.o_rendertype_custom .o_table_row{position:relative;vertical-align:top;margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row:before,.o_curriculumtable.o_rendertype_custom .o_table_row:after{content:" ";display:table}.o_curriculumtable.o_rendertype_custom .o_table_row:after{clear:both}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{background:none;border:none;position:relative}.o_curriculumtable.o_rendertype_custom .o_table_row .o_ext_id{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_hierarchy_info{display:none;position:absolute;top:0;right:30px;font-size:70%;z-index:5;background:gold}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title{margin-top:0;margin-bottom:0;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title small{white-space:nowrap}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars{padding-left:6px;color:#777}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active:hover{color:#2b542c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc{padding:6px 6px 16px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_empty{font-style:italic;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{position:relative;padding-left:132px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px;padding-left:87px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_visual{left:0;border:none;background-color:#fff;max-height:80px;max-width:120px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_location,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_lifecycle{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:absolute;right:0;bottom:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_failed{font-weight:normal}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_score{display:inline-block}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state+.o_score:before{content:', '}.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark{position:absolute;top:-1px;right:2px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{position:absolute;bottom:0;right:0;overflow:hidden;width:180px;height:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start{right:0;color:#fff;background-color:#209d9e;border-color:#1c8889}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#209d9e;border-color:#1c8889}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#209d9e;background-color:#fff}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#a6a6a6;border-color:#999}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#a6a6a6;border-color:#999}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#a6a6a6;background-color:#fff}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark,.o_curriculumtable.o_rendertype_custom .o_table_row .o_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_details{display:none}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:inline-block;width:50%;border-right:12px solid transparent;margin-top:0 !important}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry_title{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:50px}}@media print{.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:relative;bottom:0}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{display:none}}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#78be20}.d3chart .bar_red{fill:#d6001c}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#78be20}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#209d9e}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #209d9e}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #209d9e !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #209d9e}.o_item_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_rectangle{background-color:rgba(255,255,255,0.5);border-color:#6E6E6E}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(45,0,255,0.5);border-color:#0000ff}#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_rectangle{background-color:rgba(221,221,221,0);border-color:#7E7E7E}#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(51,122,183,0.05);border-color:#337ab7}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_rectangle{background-color:rgba(110,110,110,0.5);border-color:#3E3E3E}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(222,222,222,0.2);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_rectangle{background-color:rgba(142,142,142,0.25);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(134,195,81,0.5);border-color:#518b33}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_rectangle{background-color:rgba(142,142,142,0.33);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(234,168,255,0.5);border-color:#ab47cb}div.hotspotInteraction{overflow-x:auto}img.o_hotspot_responsive[usemap]{max-width:100%;width:auto;height:auto}.form-inline.o_qti_gaptext_add_first_alternative,.o_qti_gaptext_add_first_alternative.o_navbar-form{padding:9px 0 3px 0}.form-inline.o_qti_gaptext_add_alternative,.o_qti_gaptext_add_alternative.o_navbar-form{margin-bottom:3px}.o_qti_gaptext_alternatives{background-color:#eee;color:#555;border:1px solid #eee;border-radius:4px;padding:2px 5px}.o_qti_item_body .extendedTextInteraction{margin:15px 0}.o_qti_item_body .extendedTextInteraction textarea{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}.extendedTextInteraction div.form-control.textarea_disabled{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#209d9e}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#209d9e}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer.o_15_seconds{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_panic{background-color:#f2dede}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}#width_range_ui,#opacity_range_ui{width:120px}.o_slider_width_range,.o_slider_opacity_range{margin:3px 10px 0 0}.o_qti_hotspot_label{padding-left:48%}.o_assessmentsection_rubrics_wrapper{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px;padding:5px 10px;margin:0 0 0.5em 0}.o_assessmentsection_rubrics_correction_wrapper{background:#f8f8f8;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding:5px 10px}.o_info.o_assessmentsection_rubrics{margin:5px -10px;position:relative;display:block}.o_info.o_assessmentsection_rubrics.o_hide{display:none}.o_info.o_assessmentsection_rubrics a.o_hide{position:absolute;bottom:0.5em;right:1em}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d6001c;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d6001c}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d6001c}.o_assessmentitem div.orderInteraction div.box.vertical{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_assessmentitem div.orderInteraction div.box.vertical ul{min-height:200px}.o_assessmentitem div.orderInteraction div.box.horizontal ul{min-height:50px;width:100%}.o_assessmentitem div.orderInteraction div.box.source{padding:5px 10px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_assessmentitem div.orderInteraction div.box.source.horizontal{padding:5px 10px 15px 10px}.o_assessmentitem div.orderInteraction div.box.target ul{border:2px solid #a6a6a6;border-radius:4px;background:#d9edf7}.o_assessmentitem div.orderInteraction div.box.target ul.oo-accepted{border-color:#666}.o_assessmentitem div.orderInteraction div.box.target.vertical{padding:6px 0 0 10px}.o_assessmentitem div.orderInteraction div.box.target.vertical ul{padding:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal{padding-top:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal ul{padding:10px 10px 0 10px}.o_assessmentitem div.orderInteraction div.box.horizontal ul li{float:left;width:auto;margin-right:10px;min-width:50px}.o_assessmentitem div.orderInteraction div.box span.info{color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#2d2926;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#2d2926;background:#d9edf7;border:1px solid #bce8f1}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input,.o_assessmentitem .textEntryInteraction span.o_input_value{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:13.72px;line-height:1.5;border:1px solid #999;background:#fff;padding:1px 1px;color:#2d2926;max-width:100%}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled,.o_assessmentitem .textEntryInteraction input.o_input_value_wrapper,.o_assessmentitem .textEntryInteraction span.o_input_value:valid,.o_assessmentitem .textEntryInteraction span.o_input_value:disabled,.o_assessmentitem .textEntryInteraction span.o_input_value.o_input_value_wrapper{color:#2d2926;-webkit-text-fill-color:#2d2926;background:#d9edf7;border:1px solid #bce8f1}li.o_assessmentitem_order_item{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;list-style-type:none}li.o_assessmentitem_order_item:before,li.o_assessmentitem_order_item:after{content:" ";display:table}li.o_assessmentitem_order_item:after{clear:both}body>li.o_assessmentitem_order_item{display:block}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em;position:relative}.o_assessmentitem_wrapper .itemTitle .o_qti_item_max_score{position:absolute;left:49%}.o_assessmentitem_wrapper .o_qti_item_body{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;font-size:14px;line-height:1.8}.o_assessmentitem_wrapper .o_assessment_item_not_final.o_warning{margin:0}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#a6a6a6}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d6001c}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#78be20}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f2af40}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#a6a6a6}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#a6a6a6;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button,.o_assessmentitem_controls a{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_skip_question span:before,.o_assessmentitem_controls .o_sel_back_question span:before,.o_assessmentitem_controls .o_sel_retry_question span:before{padding-right:0.5em;margin-bottom:0}.o_assessmentitem_control_view_solution{background:#f8f8f8;border:1px solid #e7e7e7;margin:0;padding:5px 10px}.o_assessmentitem_scoring{background:#f8f8f8;border:1px solid #e7e7e7;border-bottom:0;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px}.o_assessmentitem_scoring_buttons{background:#f8f8f8;border:1px solid #e7e7e7;border-top:0;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_scoring_override_window{width:300px}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}.o_qti_item_body{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction input+i{background-color:red}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct{background-color:#d8f3b7}table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong{background-color:#ffa3af}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct,table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong,table.o_qti_item_kprim th.o_qti_item_kprim_input_correct,table.o_qti_item_kprim th.o_qti_item_kprim_input_wrong{width:11%}table.o_qti_item_kprim td.o_qti_item_kprim_text,table.o_qti_item_kprim th.o_qti_item_kprim_text{width:88%}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#78be20}.matchInteraction div.bar_red{background-color:#d6001c}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#666}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f2af40;background:#fae1b7}.o_match_dnd_source.oo-drag{border:2px dashed #f2af40 !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #666;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #a6a6a6;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.table.o_match_true_false_edit th.o_sel_match_target_0,.table.o_match_true_false_edit th.o_sel_match_target_1,.table.o_match_true_false_edit th.o_sel_match_target_2{width:12%}.match_true_false input[type="checkbox"]{-webkit-appearance:radio;-moz-appearance:radio;-ms-appearance:radio;appearance:radio}.match_true_false .table>tbody>tr>td.o_match_true_false_unanswered,.match_true_false .table>tbody>tr>td.o_match_true_false_right,.match_true_false .table>tbody>tr>td.o_match_true_false_wrong{vertical-align:middle;width:11%}.match_true_false th.o_match_true_false_unanswered,.match_true_false th.o_match_true_false_right,.match_true_false th.o_match_true_false_wrong{width:11%}.match_true_false td.o_match_true_false_answer,.match_true_false th.o_match_true_false_answer{width:67%}.match_true_false td.o_match_true_false_unanswered{background-color:#fbfbfb}.match_true_false td.o_match_true_false_right{background-color:#d8f3b7}.match_true_false td.o_match_true_false_wrong{background-color:#ffa3af}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#78be20}.o_assessmentitem div.failure{background-color:#f2af40}.o_assessmentitem div.error{background-color:#d6001c}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:0;border-bottom:0}.o_candidatecomment div.o_item_container_help{margin:0;padding:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#209d9e;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#177374;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f2af40}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#a6a6a6}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}ul.o_qti_statistics_answers li span.o_qti_statistics_answer{background:#F5F5F5;padding:1px 3px;width:90%;display:inline-block}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_sel_assessment_item_feedbacks{min-height:250px}.o_alternative_question_types h4 select,.o_alternative_question_types .o_cal .fc-header-title h2 select,.o_cal .fc-header-title .o_alternative_question_types h2 select{display:inline-block;width:auto}@media print{canvas,div.hotspotInteraction>div>div{-webkit-print-color-adjust:exact;color-adjust:exact}.choiceInteraction label{font-weight:normal}.choiceinteraction input[type="radio"][disabled],.choiceinteraction input[type="checkbox"][disabled],.matchInteraction input[type="radio"][disabled],.matchInteraction input[type="checkbox"][disabled]{display:none}.choiceinteraction input+i,.matchInteraction input+i{font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.choiceInteraction input[type="radio"][disabled]+i:before,.matchInteraction input[type="radio"][disabled]+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]+i:before{content:"ï„Œ"}.choiceInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]:checked+i:before{content:""}.choiceInteraction input[type="checkbox"][disabled]+i:before,.matchInteraction input[type="checkbox"][disabled]+i:before{content:"ï‚–"}.choiceInteraction input[type="checkbox"][disabled]:checked+i:before,.matchInteraction input[type="checkbox"][disabled]:checked+i:before{content:"ï†"}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav{margin-right:20px}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_nav .o_portfolio_collector{position:relative;top:-5px}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_portfolio_home .o_portfolio_my li,.o_portfolio_home .o_portfolio_shared li{margin:2em 1em 2em 0;text-align:center;vertical-align:top}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:5px dashed #eee;padding-right:2em}.o_portfolio_home .o_portfolio_my li a,.o_portfolio_home .o_portfolio_shared li a{display:block;width:9em}.o_portfolio_home .o_portfolio_my li a i,.o_portfolio_home .o_portfolio_shared li a i{display:inline-block;font-size:4em}.o_portfolio_home .o_portfolio_my li a span,.o_portfolio_home .o_portfolio_shared li a span{display:block;margin-top:0.8em}@media (max-width: 1199px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:90%}}@media (max-width: 767px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:80%}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:none;padding-right:0}}.o_portfolio_home #o_my_last_binders .o_table_body{margin-top:0;padding-left:0}.o_portfolio_home #o_my_last_pages .o_table_body{margin-top:0}.o_portfolio_home #o_my_last_pages .o_table_toolbar{display:none}.o_portfolio_home #o_my_last_pages .o_portfolio_page{margin-top:0;margin-bottom:1em}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_ended .o_section_lead{border-color:#ff3d56;background-color:#ff7083}.o_media.o_media_right,.o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_right{max-height:200px;max-width:50%}.o_media.o_media_left img,.o_media.o_media_right img{max-height:200px}.o_media.o_media_right_large,.o_media.o_media_left_large{max-height:300px;max-width:75%}.o_media.o_media_right_large img,.o_media.o_media_left_large img{max-height:300px}.o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff;height:auto;width:auto}@media (max-width: 767px){.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:120px;max-width:30%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:120px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:180px;max-width:50%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:180px}}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_edit_page_meta{padding-right:2em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_portfolio_status_block p.o_section_ended{font-size:120%}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d6001c;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_page_export .o_page_assignment .o_opener,.o_binder_export .o_page_assignment .o_opener{visibility:hidden}.o_page_export .o_page_assignment .o_closer,.o_binder_export .o_page_assignment .o_closer{display:none}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .oo-accepted{box-shadow:10px 10px 10px pink}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .o_binder_tools a{color:#2d2926}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d6001c}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d6001c}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d6001c}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_right{max-height:150px}.o_portfolio_page_summary .o_media.o_media_left img,.o_portfolio_page_summary .o_media.o_media_right img{max-height:150px}.o_portfolio_page_summary .o_media.o_media_right_large,.o_portfolio_page_summary .o_media.o_media_left_large{max-height:230px}.o_portfolio_page_summary .o_media.o_media_right_large img,.o_portfolio_page_summary .o_media.o_media_left_large img{max-height:230px}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_categories div,.o_portfolio_categories form{display:inline-block}.o_portfolio_categories_edit .bootstrap-tagsinput{margin-bottom:0;padding:0px 4px}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f2af40}.o_portfolio_timeline .dot.o_pf_status_published{fill:#209d9e}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d6001c}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#78be20}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_pf_comments{margin-top:3em}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum,.gu-mirror .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_forum,.gu-mirror .o_wiki{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement h3,.o_pf_content .o_efficiencystatement .h3,.o_pf_content .o_feed h3,.o_pf_content .o_feed .h3,.o_pf_content .o_forum h3,.o_pf_content .o_forum .h3,.o_pf_content .o_wiki h3,.o_pf_content .o_wiki .h3,.gu-mirror .o_efficiencystatement h3,.gu-mirror .o_efficiencystatement .h3,.gu-mirror .o_feed h3,.gu-mirror .o_feed .h3,.gu-mirror .o_forum h3,.gu-mirror .o_forum .h3,.gu-mirror .o_wiki h3,.gu-mirror .o_wiki .h3{font-size:14px}.o_pf_content .o_efficiencystatement .row,.o_pf_content .o_feed .row,.o_pf_content .o_forum .row,.o_pf_content .o_wiki .row,.gu-mirror .o_efficiencystatement .row,.gu-mirror .o_feed .row,.gu-mirror .o_forum .row,.gu-mirror .o_wiki .row{margin:0}.o_pf_content .o_efficiencystatement .o_block_with_datecomp,.o_pf_content .o_feed .o_block_with_datecomp,.o_pf_content .o_forum .o_block_with_datecomp,.o_pf_content .o_wiki .o_block_with_datecomp,.gu-mirror .o_efficiencystatement .o_block_with_datecomp,.gu-mirror .o_feed .o_block_with_datecomp,.gu-mirror .o_forum .o_block_with_datecomp,.gu-mirror .o_wiki .o_block_with_datecomp{margin-top:0.5em;margin-bottom:0}.o_pf_video_placeholder{background-color:#f8f8f8;border:1px solid #f8f8f8;border-radius:10px;display:table;min-width:400px;text-align:center;padding:40px 10px}.o_pf_video_placeholder i{display:table-cell;vertical-align:middle}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc .o_portfolio_toc_section{position:relative;padding-right:80px}.o_portfolio_toc .o_portfolio_section_meta{margin-top:-0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:-10px;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down,.o_portfolio_toc .o_section_actions .o_section_dropdown{vertical-align:middle;display:inline-block}.o_portfolio_toc a.o_comment{color:#777;margin-left:1em}.o_portfolio_toc .o_section ul{padding-left:1em;line-height:24px}.o_portfolio div span.badge{padding:3px 7px}.o_portfolio div .o_portfolio_entry_draft{background-color:#f2af40}.o_portfolio div .o_portfolio_published{background-color:#209d9e}.o_portfolio div .o_portfolio_entry_revision{background-color:#d6001c}.o_portfolio div .o_portfolio_entry_closed{background-color:#78be20}.o_portfolio div .o_portfolio_entry_deleted{background-color:#000}.o_portfolio div .o_portfolio_entry_incoming{background-color:#78be20}.o_portfolio div .o_portfolio_entry_inprocess{background-color:#c8c8c8}.o_portfolio div .o_portfolio_entry_done{background-color:#78be20}.o_portfolio div .o_popover,.o_portfolio div .popover:hover{color:#2d2926;text-decoration:none}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page{background:#fcfcfc;border:1px solid #eee;border-radius:4px}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #209d9e;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #209d9e;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#209d9e;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#177374}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_portfolio_status_legend{margin-top:3em}.o_portfolio_status_legend h6{margin-bottom:5px}.o_ed_htitle h1,.o_ed_htitle .h1{font-size:30px}.o_ed_htitle h2,.o_ed_htitle .h2{font-size:24px}.o_ed_htitle h3,.o_ed_htitle .h3{font-size:18px}.o_ed_htitle h4,.o_ed_htitle .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_ed_htitle h2,.o_ed_htitle .h4{font-size:14px}.o_ed_htitle h5,.o_ed_htitle .h5{font-size:12px}.o_ed_htitle h6,.o_ed_htitle .h6{font-size:12px}@media print{.o_binder h1{font-size:43.2px;margin-top:10cm}.o_portfolio_section{margin-bottom:1cm}.o_portfolio_section h3:first-of-type{font-size:36px}.o_page_lead{border:0;border-bottom:1px solid #d9d9d9;border-radius:0;background-color:none;padding:0;margin-bottom:10px}.o_page_lead .o_portfolio_status_block{border-top:0;margin-bottom:0}.o_page_lead .o_media img{border:0}.o_page_lead .o_portfolio_categories{display:block;margin-left:0}.o_page_lead .o_portfolio_status_block{padding-top:0}.o_page_lead .o_page_summary{margin-top:1em;font-style:italic}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki{padding:0;border-radius:0;border:0}.o_pf_content .o_cit .o_desc p,.o_pf_content .o_text .o_desc p,.o_pf_content .o_file .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_image .o_desc p,.o_pf_content .o_video .o_desc p,.o_pf_content .o_efficiencystatement .o_desc p,.o_pf_content .o_feed .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_wiki .o_desc p{margin:0}.o_efficiencystatement table{font-size:90%}.o_artefact_metadata{page-break-inside:avoid;border:0;border-left:5px solid #eee;padding-left:10px;font-size:80%}.o_artefact_metadata table td,.o_artefact_metadata table th{border:0 !important;padding:2px !important}.o_artefact_metadata table th:first-of-type{width:20%}.o_pf_video_placeholder{background-color:#f8f8f8 !important;-webkit-print-color-adjust:exact;color-adjust:exact}.o_pf_video_placeholder.visible-print-block{display:table !important}}.o_evaluation_form .o_evaluation_block{margin-top:2em;margin-bottom:2em}.o_evaluation_form .o_rubric_name{font-weight:bold;margin-bottom:1em}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:1em;font-weight:bold}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center;align-self:flex-end;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_evaluation_form .o_slider_wrapper{height:33px;overflow:hidden}.o_evaluation_form .o_slider{margin-bottom:1em}.o_evaluation_form .o_slider label{padding:0}.o_evaluation_form .o_slider input{padding:0;margin:0;position:relative}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_continous .o_evaluation_no_response div.radio{padding:0;margin:0}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps{display:flex;justify-content:space-between}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio:hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_no_response div.radio{margin-top:2px}.o_evaluation_form .o_evaluation_discrete_radio .o_evaluation_step_labels{display:flex;justify-content:space-between}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em;margin-bottom:10px}.o_evaluation_form .o_evaluation_left_label{text-align:right;font-weight:normal}.o_evaluation_form .o_evaluation_left_label.o_evaluation_left_label_la{text-align:left;padding-left:0px;font-weight:normal}.o_evaluation_form .o_evaluation_right_label{text-align:left;font-weight:normal}.o_evaluation_form .o_evaluation_text_legend{margin-bottom:1em}.o_evaluation_form .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_fileupload{margin-bottom:2em}.o_evaluation_form .o_evaluation_mc_other{margin-top:-10px;margin-left:10px;margin-right:10px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_slider{margin-left:15px;margin-right:15px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_end_label{text-align:right;padding-right:20px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_continous .x .tick{visibility:hidden}.o_evaluation_form .o_ed_rubrictablehandler .table{margin-top:5px}.o_evaluation_form .svg-container{display:inline-block;position:relative;width:100%;padding-bottom:50%;vertical-align:top;overflow:hidden}.o_evaluation_form .svg-content-responsive{display:inline-block;position:absolute;top:10px;left:0}.d3chart .o_eva_bar{fill:#209d9e}.d3chart .o_rubric_sufficient{fill:#78be20}.d3chart .o_rubric_neutral{fill:#f2af40}.d3chart .o_rubric_insufficient{fill:#d6001c}.d3chart .o_rubric_unrated{fill:#209d9e}.o_qual_hm_legend{padding:5px}.o_qual_hm_legend li{font-size:90%}.o_qual_hm_legend .ident{font-weight:bold}.o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#209d9e}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px}@media (max-width: 992px){.o_evaluation_editor_form .o_slider_editor{margin-bottom:20px}}@media (max-width: 992px){.o_evaluation_editor_form .o_evaluation_step_label{text-align:unset;margin-bottom:5px;padding-top:unset}}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_descrete_radio{display:flex;justify-content:space-between}.o_evaluation_editor_form .o_slider_descrete_radio .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_editor_form .o_slider_descrete_radio .radio:hover{background-color:#f5f5f5}@media (max-width: 992px){.o_evaluation_editor_form input[type="text"]{margin-bottom:5px}}.o_evaluation_editor_form .o_slider_continous{padding-top:10px;padding-bottom:-10px}.o_evaluation_editor_form .o_slider_descrete{padding-top:5px;padding-bottom:-5px}.o_evaluation_editor_form .o_evaluation_example{font-size:90%}.o_evaluation_editor_form .o_slider_top{margin-top:23px}.o_evaluation_editor_form .o_slider_buttons .pull-right div:not(:first-child){display:inline-block}.o_evaluation_editor_form .o_slider_buttons .pull-right .btn{margin-top:-3px}.o_evaluation_editor_form .o_slider_weight{max-width:40px}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_right_label{text-align:right}.o_evaluation_form .o_evaluation_no_response{text-align:left}.o_evaluation_form .o_evaluation_no_response .o_evaluation_no_resp_value{font-weight:bold}.o_evaluation_form .o_slider{margin-bottom:2em}.o_evaluation_form .o_slider div{padding-left:0}.o_evaluation_form .o_slider .o_evaluation_no_response{margin-top:0.7em}}@media (min-width: 768px){.o_evaluation_form .o_evaluation_no_resp_value{display:none}}@media print{.o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#f9f9f9 !important}.o_icon_rubric_insufficient::before{color:#d6001c !important}.o_icon_rubric_neutral::before{color:#f2af40 !important}.o_icon_rubric_sufficient::before{color:#78be20 !important}}.o_eva_report_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_eva_report_print #o_print_brand img{width:100%}.o_eva_report_print .o_eva_content{margin-top:4em}.o_eva_report_print .o_eva_overview .panel table{margin:0px 0px 1px 0px}.o_eva_report_print .o_evaluation_duration,.o_eva_report_print .o_participated_users{display:none}.o_surv_run.withCmds .o_eva_report{margin-top:-44px}.o_eva_report .o_eva_overview .o_eva_rubric .table{margin-top:5px}.o_eva_report .o_ed_rubrictablehandler .o_table_footer{font-weight:bold}.o_eva_report .o_rubric_avg{font-weight:bold;white-sprace:nowrap}.o_eva_report .o_rubric_table .o_table_wrapper{margin-bottom:10px}.o_eva_report .o_rubric_table_legend{display:block}.o_eva_report .o_rubric_table_legend .ident{font-weight:bold}.o_eva_report .o_rubric_table_legend .list-inline{margin-bottom:0px}.o_eva_report .o_rubric_table_legend.o_last{margin-bottom:15px}.o_evaluation_execution .o_evaluation_anonymous_info{display:inherit}.o_qual_main .o_labeled.o_qual_dc_status_preparation,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_ready,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_ready{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_running,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_running{background-color:#933;border-color:#933;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_finished,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_finished{background-color:#14892c;border-color:#14892c;color:#fff}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_preparation{background-color:#384e64}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_ready{background-color:#ffc61e}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_running{background-color:#732626}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_finished{background-color:#0e5c1e}.o_qual_main .o_qual_dc_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_labeled_light.o_qual_dc_status_preparation_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_preparation_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_labeled_light.o_qual_dc_status_ready_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_labeled_light.o_qual_dc_status_running_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_running_light{border-color:#933;color:#933}.o_qual_main .o_labeled_light.o_qual_dc_status_finished_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_finished_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_qual_exec_status_future_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_qual_exec_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_qual_exec_status_participating_light{border-color:#933;color:#933}.o_qual_main .o_qual_exec_status_participated_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_status_over_light{border-color:#aaa;color:#aaa}.o_qual_execute_header .o_qual_context_table,.o_qual_report_header .o_qual_context_table{margin-bottom:0}.o_qual_execute_header .o_qual_context_table th,.o_qual_report_header .o_qual_context_table th{width:40%;border-top:none;padding:4px 8px}.o_qual_execute_header .o_qual_context_table td,.o_qual_report_header .o_qual_context_table td{width:60%;border-top:none;padding:4px 8px}.o_qual_ana_table .o_table_body{padding:0}.o_qual_ana_filter .o_date_range{margin-bottom:0px}.o_qual_ana_filter .o_date_range .control-label{margin-bottom:5px}.o_qual_ana_filter .o_date_range .o_date{margin-bottom:15px;padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_from{padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_to{padding-right:0px}.o_qual_hm_basecolor{background-color:#337ab7}.o_qual_hm .o_circle_container{display:flex}.o_qual_hm .o_circle_box{display:flex;align-items:center;justify-content:center}.o_qual_hm .o_circle{border-radius:50%}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d6001c !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f2af40 !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#78be20 !important}.o_qual_hm .o_avg{display:flex;align-items:center;margin-left:5px}.o_qual_trend_invisible{visibility:hidden}.o_qual_trend .o_qual_ana_trend_up{transform:rotate(315deg);-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg)}.o_qual_trend .o_qual_ana_trend_down{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.o_qual_trend .o_rubric_insufficient{color:#d6001c}.o_qual_trend .o_rubric_neutral{color:#f2af40}.o_qual_trend .o_rubric_sufficient{color:#78be20}.o_qual_trend .o_qual_ana_unrated{color:#337ab7}.o_qual_filtered_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_qual_filtered_print #o_print_brand img{width:100%}.o_qual_filtered_print .o_qual_content{margin-top:4em}.o_qual_filtered_print .o_groupby_config,.o_qual_filtered_print .o_slider_trend_config,.o_qual_filtered_print .o_qual_hm tr td:last-child,.o_qual_filtered_print .o_qual_hm tr th:last-child{display:none}.o_evaluation_bar_chart_legend{padding:5px}.o_evaluation_bar_chart_legend li{font-size:90%}.o_evaluation_bar_chart_legend .ident{font-weight:bold}@media (max-width: 768px){.o_hm_group_select{padding-bottom:12px}.o_hm_panel_body{margin-bottom:-12px}}@media (min-width: 768px){.o_hm_trend_row{padding-top:12px}}@media print{.o_qual_hm .o_circle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d6001c !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f2af40 !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#78be20 !important}.o_qual_hm .o_circle.o_qual_hm_basecolor{background-color:#337ab7 !important}.o_qual_trend{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_trend .o_rubric_insufficient::before{color:#d6001c !important}.o_qual_trend .o_rubric_neutral::before{color:#f2af40 !important}.o_qual_trend .o_rubric_sufficient::before{color:#78be20 !important}.o_qual_trend .o_qual_ana_unrated::before{color:#337ab7 !important}}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;margin-bottom:0;padding:0 12px;font-style:italic;padding:5px 5px 0;border:0}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.o_cit blockquote.o_quote{page-break-inside:avoid}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run h1{font-size:1.8rem;font-weight:normal}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.o_video_chapter_editor .o_table_wrapper.o_table_flexi .table,.o_video_marker_editor .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_video_marker_editor .o_video_question.mejs__overlay{overflow:scroll}.o_video_question.mejs__overlay.o_video_large_question{align-items:flex-start;padding:1em 1em 0 1em;z-index:5}.o_video_question.mejs__overlay.o_video_large_question #o_qti_container{border:1px solid #eee}.o_video_marker{position:absolute;background-color:#efefef;opacity:0.85;border-left:3px solid #a6a6a6;padding:5px}.o_video_marker.o_video_marker_gray{border-left-color:#333}.o_video_marker.o_video_marker_blue{border-left-color:#bce8f1}.o_video_marker.o_video_marker_green{border-left-color:#78be20}.o_video_marker.o_video_marker_yellow{border-left-color:#f2af40}.o_video_marker.o_video_marker_red{border-left-color:#d6001c}.o_video_question.mejs__overlay{width:100%;height:100%;background-color:rgba(255,255,255,0.5)}.o_video_question #itemBody,.o_video_question .modalFeedback{background-color:white;opacity:1.0}.o_video_question .o_assessmentitem_wrapper .o_qti_item_body{min-height:50px}.o_video_question #o_qti_assessment_test_timer{border:none;padding:5px;margin:0}.o_video_question #o_qti_progress .progress{height:10px}.o_video_question #o_qti_container{background-color:white;padding:5px;border-radius:3px}.o_video_question .o_sel_additional_feedback{float:left;font-size:26px}.o_video_question .o_sel_additional_feedback .o_icon_passed{color:#78be20}.o_video_question .o_sel_additional_feedback .o_icon_failed{color:#d6001c}.mejs__time-rail .o_video_marker_gray{background:#333}.mejs__time-rail .o_video_marker_blue{background:#bce8f1}.mejs__time-rail .o_video_marker_green{background:#78be20}.mejs__time-rail .o_video_marker_yellow{background:#f2af40}.mejs__time-rail .o_video_marker_red{background:#d6001c}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d6001c}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d6001c}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.mejs__time-marker{background-color:#a6a6a6}.o_userbulk_changedcell{font-style:italic;font-weight:bold}.o_qpool_source_status{text-align:center}.o_qitem_author{white-space:nowrap}a.o_qpool_status{margin:0 2px 2px 2px;text-align:left}.o_labeled.o_qpool_status_draft,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_draft{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_qpool_status_review,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_review{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_labeled.o_qpool_status_revised,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_revised{background-color:#933;border-color:#933;color:#fff}.o_labeled.o_qpool_status_finalVersion,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_finalVersion{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_qpool_status_endOfLife,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_endOfLife{background-color:#aaa;border-color:#aaa;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_draft{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_review{background-color:#ffc61e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_revised{background-color:#732626}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_finalVersion{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_endOfLife{background-color:#919191}.o_labeled_light.o_qpool_status_draft_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_draft_light{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_qpool_status_review_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_review_light{border-color:#ffd351;color:#333}.o_labeled_light.o_qpool_status_revised_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_revised_light{border-color:#933;color:#933}.o_labeled_light.o_qpool_status_finalVersion_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_finalVersion_light{border-color:#14892c;color:#14892c}.o_labeled_light.o_qpool_status_endOfLife_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_endOfLife_light{border-color:#aaa;color:#aaa}.btn-arrow-right.o_qpool_qitem_draft{background:#f8f8f8;border-bottom-color:#4a6785;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_review{background:#f8f8f8;border-bottom-color:#ffd351;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_revised{background:#f8f8f8;border-bottom-color:#933;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_final{background:#f8f8f8;border-bottom-color:#14892c;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_end_of_life{background:#f8f8f8;border-bottom-color:#aaa;border-bottom-width:3px}.btn-arrow-right.o_qpool_status_slected{background-color:#e7e7e7;color:#555}.btn-arrow-right,.btn-arrow-left{position:relative;padding-left:18px;padding-right:18px;margin-bottom:5px}.btn-arrow-right{padding-left:36px}.btn-arrow-left{padding-right:36px}.btn-arrow-right:before,.btn-arrow-right:after,.btn-arrow-left:before,.btn-arrow-left:after{content:"";position:absolute;top:5px;width:22.627417px;height:22.627417px;background:inherit;border:inherit;border-left-color:transparent;border-bottom-color:transparent;border-radius:0px 4px 0px 0px;-webkit-border-radius:0px 4px 0px 0px;-moz-border-radius:0px 4px 0px 0px}.btn-arrow-right:before,.btn-arrow-right:after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.btn-arrow-left:before,.btn-arrow-left:after{transform:rotate(225deg);-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-o-transform:rotate(225deg);-ms-transform:rotate(225deg)}.btn-arrow-right:before,.btn-arrow-left:before{left:-11px}.btn-arrow-right:after,.btn-arrow-left:after{right:-11px}.btn-arrow-right:after,.btn-arrow-left:before{z-index:1}.btn-arrow-right:before,.btn-arrow-left:after{background-color:white}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/infinite.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#00ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left, rgba(255,255,255,0) 0.2%, rgba(255,255,255,0.3) 60%, rgba(255,255,255,0.5) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;padding-right:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#342c24}.o_login .o_login_intro .lead{color:#2d2926}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#342c24}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#f2af40;border-color:#f2af40;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#e59510}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#f2af40;border-color:#f2af40}.o_login .o_login_register .badge{color:#f2af40;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#209d9e;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#209d9e;background-color:#fff}.o_old_browser{display:none}.o_browser_ie10 .o_old_browser{display:block}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_catalog_title h2,.o_library_catalog_title h3,.o_library_catalog_title h4,.o_library_catalog_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_catalog_title h2{margin-top:0}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #209d9e !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}.o_useradmin .o_user_infos .o_user_infos_inner{margin-right:45px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_useradmin div#o_main_toolbar.o_toolbar{margin-top:0px}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.7575757576);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_gta_coach_selection .o_noti{display:inline-block;float:none;margin:0}.o_gta_coach_selection .o_gta_coach_selection_bar{position:relative}.o_gta_coach_selection .o_gta_coach_selection_bar .o_noti{position:absolute;top:3px;right:0}p.o_gta_reopen_warning{margin-top:-20px}.o_lecture_authorized_absence div.form-inline,.o_lecture_authorized_absence div.o_navbar-form{display:inline}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_date,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_startTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_endTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_details,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_tools{width:1%}.o_lectures_teacher_overview .o_lectures_current_wrapper{border:1px solid transparent;background:#f8f8f8;border-radius:4px;margin:10px -10px 20px -10px;padding:10px}.o_lectures_teacher_overview .o_lectures_current_wrapper .o_button_group{margin-bottom:0}.o_lectures_teacher_overview .o_lectures_teacher_search .o_form .o_date{padding-right:10px;position:relative}.o_lectures_teacher_overview .o_lectures_teacher_search div.o_chelp_wrapper_and_buttons{position:absolute;top:0;right:0}.o_header_with_buttons .o_day_chooser{position:relative;float:right}.o_lectures_rollcall legend{margin-bottom:10px}.o_lectures_rollcall .o_desc,.o_lectures_rollcall .o_preparation{margin:0}.o_rollcall_next_previous_group{text-align:center}.o_rollcall_next_previous_group a.o_sel_close{float:left}.o_rollcall_next_previous_group a.o_sel_close span{display:none}.o_rollcall_next_previous_group .form-control{display:inline;width:auto}@media (max-width: 767px){.o_rollcall_next_previous_group a span{display:none}}.o_lecture_free{color:#777}.o_rollcall_portrait>div{margin:0 auto 10px auto;width:100px}.o_edubase_pv{overflow:hidden;padding-top:10px}.o_edubase_pv_fig{display:inline-block;vertical-align:top;width:110px;margin-right:3%}.o_edubase_run_enabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_run_disabled .o_edubase_booksection{margin-right:3%;margin-bottom:3%;width:177px;display:inline-table}.o_edubase_run_disabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_bs_buttons{padding-top:10px}.o_edubase_bs_book_id{margin-top:-2px}.o_edubase_bs_details{margin-left:-20px}.o_edubase_bs_details_label{visibility:hidden}.o_edubase_bs_cover object{margin-left:10px;margin-top:10px;height:120px}.o_edubase_bs_cover img{margin-left:10px;margin-top:10px;height:120px}.o_edubase_edit_books .o_icon_error{visibility:hidden}.o_edubase_edit_books .o_icon_help{margin-bottom:0px}.o_edubase_edit_books .row{margin-bottom:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata_wrapper{margin-top:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata.open{position:unset;margin:0;padding:0}.o_edusharing_container.o_in_iframe .edusharing_metadata.open:before{content:unset;border:unset;top:unset;position:unset;left:unset;width:unset;height:unset}.o_edusharing_container.o_hide_license .license{display:none}.o_edusharing_container.o_hide_infos .edusharing_metadata_wrapper{display:none}.o_edusharing_left{display:block;float:left;margin:5px 5px 5px 0}.o_edusharing_right{display:block;float:right;margin:5px 0 5px 5px}.o_edusharing_inline{display:inline-block;margin:0 5px}.o_edusharing_none{display:block;float:none;margin:5px 0}.eduContainer{width:180px;color:transparent}.edusharing_spinner_inner{width:30px;height:50px;display:inline-block}.edusharing_spinner1{background:url("../light/images/edusharing/hex1.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.1s;-moz-animation-delay:0.1s;animation-delay:0.1s}.edusharing_spinner2{background:url("../light/images/edusharing/hex2.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.25s;-moz-animation-delay:0.25s;animation-delay:0.25s}.edusharing_spinner3{background:url("../light/images/edusharing/hex3.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.5s;-moz-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5) rotate(90deg)}100%{transform:scale(1)}}body.o_doceditor_body{margin-bottom:0px}body.o_doceditor_body .o_container_offcanvas{max-width:100%}body.o_doceditor_body .container-fluid{padding-left:0px;padding-right:0px;margin-left:0px;margin-right:0px}body.o_doceditor_body #o_toplink{display:none}.o_doceditor{margin-top:10px}.o_doceditor .o_doceditor_config .nav button{margin-top:3px}.o_doceditor .navbar-collapse{border-top:0 !important}.o_doceditor .navbar-collapse.collapse{display:block !important}.o_doceditor .navbar-nav{margin:0}.o_doceditor .navbar-nav>li,.o_doceditor .navbar-nav{float:left !important}.o_doceditor .navbar-right{float:right !important}.o_doceditor .navbar-nav>li>.dropdown-menu{background-color:#f8f8f8;border-color:#e7e7e7;position:absolute;right:0;left:auto}.o_doceditor .navbar-nav>li>a{padding-top:10px !important;padding-bottom:10px !important;line-height:20px !important}.o_doceditor .o_collabora iframe,.o_doceditor .o_onlyoffice iframe,.o_doceditor .o_office365 iframe{width:100%;height:calc(100vh - 61px);height:calc(var(--doceditorvh, 1vh) * 100 - 61px);margin-top:10px;border-width:0px}.o_doceditor.o_web_document .o_collabora iframe,.o_doceditor.o_web_document .o_onlyoffice iframe,.o_doceditor.o_web_document .o_office365 iframe{width:100%;height:calc(100vh - 321px);height:calc(var(--doceditorvh, 1vh) * 100 - 321px);margin-top:10px;margin-bottom:10px;border-width:1px}.o_doceditor.o_web_document_edit .o_collabora iframe,.o_doceditor.o_web_document_edit .o_onlyoffice iframe,.o_doceditor.o_web_document_edit .o_office365 iframe{width:100%;height:calc(100vh - 276px);height:calc(var(--doceditorvh, 1vh) * 100 - 276px);margin-top:10px;margin-bottom:25px;border-width:1px}.o_doceditor .o_file_editor,.o_doceditor .o_doceditor_data_transfer{margin-right:15px;margin-left:15px}.o_web_content .o_doceditor{margin-top:0px}.o_taxonomy div#o_main_toolbar.o_toolbar{margin-top:0px}.o_taxonomy_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row{position:relative;display:inline-block;height:225px;width:450px;vertical-align:top;margin-right:10px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row ul{padding-left:2em}.ui-widget{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#342c24;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui{max-width:100vw;max-height:100vh}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}@media (max-width: 767px){.ui-dialog.o_modal-ui{height:100vh !important;width:100vw !important}.ui-dialog.o_modal-ui div.ui-dialog-content{height:90vh !important}}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#aaa;background:#f9f9f9}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #209d9e;background-image:none;background-color:#209d9e}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:3px solid #209d9e;background-image:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #1c8889;background:#209d9e;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}.o_richtext_mce>.o_richtext_mce_modes{text-align:right;padding-right:4px}.o_richtext_mce>.o_richtext_mce_modes a{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}.mce-wordcount:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0);content:"ï™"}.mce-danger .mce-wordcount:after{color:#d6001c;content:"ïª"}.mce-statusbar.mce-danger{background-color:#f2dede}.mce-textbox.mce-danger{border-color:#ce8383;background-color:#f2dede}@media (max-width: 470px){.mce-foot .mce-container-body.mce-abs-layout{left:-337px}}div.o_table_search>span.twitter-typeahead{padding-top:5px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_segments,.o_table_toolbar,.o_breadcrumb,.o_bookmark,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_container_offcanvas{max-width:100%;margin-left:5px;margin-right:5px}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.o_print_break_after{clear:both;page-break-after:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-content{border:0}.modal-header{display:none}.modal-body{padding:0}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.ui-slider.ui-slider-horizontal.ui-widget-content{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f9f9 !important}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{background-color:#209d9e !important}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:none !important}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}.radial-progress .inset .bgIcon{opacity:0.3;transition:opacity 0.3}.radial-progress .inset .bgIcon:before,.radial-progress .inset .o_icon_progress_danger:before,.radial-progress .inset .o_icon_progress_success:before{opacity:0.3;transition:opacity 0.3;color:#777 !important}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:0.3;transition:opacity 0.3;color:#777 !important}body{margin:0;zoom:0.6}table,figure,figure{page-break-inside:avoid}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6{page-break-after:avoid}.o_disclaimer .o_disclaimer_content{max-height:none}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#209d9e}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#29c7c8}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}.o_navbar-brand{background-image:url("images/OpenOlat_Logo_RGB.svg");background-position:-35px -62px;background-size:250px;background-repeat:no-repeat;height:50px;width:60px}#o_print_brand .o_navbar-brand{background-image:url("images/OpenOlat_Logo_RGB.svg")}.o_cmembers_print #o_print_brand{width:5cm}#o_body.o_dmz .o_navbar-brand{display:none}#o_body.o_dmz .o_login .o_login_intro{position:relative;text-align:center}#o_body.o_dmz .o_login .o_login_intro:before{content:' ';display:inline-block;background-image:url("images/OpenOlat_Logo_claim_RGB.svg");background-repeat:no-repeat;background-position:0px -110px;background-size:100%;width:400px;max-width:100%;height:90px}#o_body.o_dmz .o_login .o_login_intro h1{display:none}@media (min-width: 767px){#o_body.o_dmz #o_bg{background-position:top left;border-top:0;border-bottom:0}#o_body.o_dmz #o_navbar_wrapper{border:0}#o_body.o_dmz .o_login{background:rgba(255,255,255,0.8);width:480px;left:10%;padding:40px;border-radius:20px;position:relative}#o_body.o_dmz .o_login .o_login_intro{padding-top:120px}#o_body.o_dmz .o_login .o_login_intro:before{position:absolute;top:0;left:-25px;background-position:-40px -150px;background-size:510px;width:460px;height:110px}#o_body.o_dmz .o_infomessage_wrapper{background:rgba(255,255,255,0.8);left:500px;width:400px;top:-30px;width:400xp;position:absolute;border-radius:20px}#o_body.o_dmz #o_navbar_wrapper{background:transparent}#o_body.o_dmz .o_navbar-nav>li>a,#o_body.o_dmz #o_footer_wrapper a{color:#FFF}#o_body.o_dmz .o_navbar-nav>li>a:hover,#o_body.o_dmz #o_footer_wrapper a:hover{background-color:transparent}#o_body.o_dmz #o_footer_wrapper{background:linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.2) 40%, rgba(0,0,0,0.5) 100%);border:0;height:100px;padding-top:30px}#o_body.o_dmz #o_footer_container{background:transparent;color:#FFF}#o_body.o_dmz #o_share_social_container a{color:#209d9e}#o_body.o_dmz #o_share_social_container a:hover{color:#177374}}#o_footer_wrapper{border-top:1px solid #e6e6e6} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:14px;line-height:1.428571429;color:#2d2926;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#209d9e;text-decoration:none}a:hover,a:focus{color:#177374;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:#342c24}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#209d9e}a.text-primary:hover{color:#177374}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#209d9e}a.bg-primary:hover{background-color:#177374}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.3333333333%}.col-xs-2{width:16.6666666667%}.col-xs-3{width:25%}.col-xs-4{width:33.3333333333%}.col-xs-5{width:41.6666666667%}.col-xs-6{width:50%}.col-xs-7{width:58.3333333333%}.col-xs-8{width:66.6666666667%}.col-xs-9{width:75%}.col-xs-10{width:83.3333333333%}.col-xs-11{width:91.6666666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.3333333333%}.col-xs-pull-2{right:16.6666666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.3333333333%}.col-xs-pull-5{right:41.6666666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.3333333333%}.col-xs-pull-8{right:66.6666666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.3333333333%}.col-xs-pull-11{right:91.6666666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.3333333333%}.col-xs-push-2{left:16.6666666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.3333333333%}.col-xs-push-5{left:41.6666666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.3333333333%}.col-xs-push-8{left:66.6666666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.3333333333%}.col-xs-push-11{left:91.6666666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.3333333333%}.col-xs-offset-2{margin-left:16.6666666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.3333333333%}.col-xs-offset-5{margin-left:41.6666666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.3333333333%}.col-xs-offset-8{margin-left:66.6666666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.3333333333%}.col-xs-offset-11{margin-left:91.6666666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.3333333333%}.col-sm-2{width:16.6666666667%}.col-sm-3{width:25%}.col-sm-4{width:33.3333333333%}.col-sm-5{width:41.6666666667%}.col-sm-6{width:50%}.col-sm-7{width:58.3333333333%}.col-sm-8{width:66.6666666667%}.col-sm-9{width:75%}.col-sm-10{width:83.3333333333%}.col-sm-11{width:91.6666666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.3333333333%}.col-sm-pull-2{right:16.6666666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.3333333333%}.col-sm-pull-5{right:41.6666666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.3333333333%}.col-sm-pull-8{right:66.6666666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.3333333333%}.col-sm-pull-11{right:91.6666666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.3333333333%}.col-sm-push-2{left:16.6666666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.3333333333%}.col-sm-push-5{left:41.6666666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.3333333333%}.col-sm-push-8{left:66.6666666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.3333333333%}.col-sm-push-11{left:91.6666666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.3333333333%}.col-sm-offset-2{margin-left:16.6666666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.3333333333%}.col-sm-offset-5{margin-left:41.6666666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.3333333333%}.col-sm-offset-8{margin-left:66.6666666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.3333333333%}.col-sm-offset-11{margin-left:91.6666666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.3333333333%}.col-md-2{width:16.6666666667%}.col-md-3{width:25%}.col-md-4{width:33.3333333333%}.col-md-5{width:41.6666666667%}.col-md-6{width:50%}.col-md-7{width:58.3333333333%}.col-md-8{width:66.6666666667%}.col-md-9{width:75%}.col-md-10{width:83.3333333333%}.col-md-11{width:91.6666666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.3333333333%}.col-md-pull-2{right:16.6666666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.3333333333%}.col-md-pull-5{right:41.6666666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.3333333333%}.col-md-pull-8{right:66.6666666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.3333333333%}.col-md-pull-11{right:91.6666666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.3333333333%}.col-md-push-2{left:16.6666666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.3333333333%}.col-md-push-5{left:41.6666666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.3333333333%}.col-md-push-8{left:66.6666666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.3333333333%}.col-md-push-11{left:91.6666666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.3333333333%}.col-md-offset-2{margin-left:16.6666666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.3333333333%}.col-md-offset-5{margin-left:41.6666666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.3333333333%}.col-md-offset-8{margin-left:66.6666666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.3333333333%}.col-md-offset-11{margin-left:91.6666666667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.3333333333%}.col-lg-2{width:16.6666666667%}.col-lg-3{width:25%}.col-lg-4{width:33.3333333333%}.col-lg-5{width:41.6666666667%}.col-lg-6{width:50%}.col-lg-7{width:58.3333333333%}.col-lg-8{width:66.6666666667%}.col-lg-9{width:75%}.col-lg-10{width:83.3333333333%}.col-lg-11{width:91.6666666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.3333333333%}.col-lg-pull-2{right:16.6666666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.3333333333%}.col-lg-pull-5{right:41.6666666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.3333333333%}.col-lg-pull-8{right:66.6666666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.3333333333%}.col-lg-pull-11{right:91.6666666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.3333333333%}.col-lg-push-2{left:16.6666666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.3333333333%}.col-lg-push-5{left:41.6666666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.3333333333%}.col-lg-push-8{left:66.6666666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.3333333333%}.col-lg-push-11{left:91.6666666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.3333333333%}.col-lg-offset-2{margin-left:16.6666666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.3333333333%}.col-lg-offset-5{margin-left:41.6666666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.3333333333%}.col-lg-offset-8{margin-left:66.6666666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.3333333333%}.col-lg-offset-11{margin-left:91.6666666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fcfcfc;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#726860}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fcfcfc;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fcfcfc;border-color:#ccc}.btn-default .badge{color:#fcfcfc;background-color:#333}.btn-primary{color:#fff;background-color:#209d9e;border-color:#1c8889}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#209d9e;border-color:#1c8889}.btn-primary .badge{color:#209d9e;background-color:#fff}.btn-success{color:#fff;background-color:#78be20;border-color:#6aa81c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#5c9219;border-color:#497414}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#78be20;border-color:#6aa81c}.btn-success .badge{color:#78be20;background-color:#fff}.btn-info{color:#fff;background-color:#a6a6a6;border-color:#999}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#a6a6a6;border-color:#999}.btn-info .badge{color:#a6a6a6;background-color:#fff}.btn-warning{color:#fff;background-color:#f2af40;border-color:#f0a528}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#cd850e}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f2af40;border-color:#f0a528}.btn-warning .badge{color:#f2af40;background-color:#fff}.btn-danger{color:#fff;background-color:#d6001c;border-color:#bd0019}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#a30015;border-color:#7f0011}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d6001c;border-color:#bd0019}.btn-danger .badge{color:#d6001c;background-color:#fff}.btn-link{color:#209d9e;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#177374;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fcfcfc;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#209d9e}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#209d9e}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#209d9e}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#209d9e;background-color:#fcfcfc;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#177374;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fcfcfc;background-color:#209d9e;border-color:#209d9e;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fcfcfc;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#209d9e}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#177374}.label-success{background-color:#78be20}.label-success[href]:hover,.label-success[href]:focus{background-color:#5c9219}.label-info{background-color:#a6a6a6}.label-info[href]:hover,.label-info[href]:focus{background-color:#8d8d8d}.label-warning{background-color:#f2af40}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ef9b10}.label-danger{background-color:#d6001c}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#a30015}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#209d9e;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:#342c24}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#2d2926}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#209d9e}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#209d9e;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#78be20}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#a6a6a6}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f2af40}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d6001c}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fcfcfc;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#209d9e;border-color:#209d9e}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#9febeb}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fcfcfc;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#209d9e}.panel-primary>.panel-heading{color:#fff;background-color:#209d9e;border-color:#209d9e}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#209d9e}.panel-primary>.panel-heading .badge{color:#209d9e;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#209d9e}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body div.popover input{max-width:100%}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@media screen and (max-width: 768px){@supports (-webkit-overflow-scrolling: touch){.form-control,.ui-widget input,.ui-widget select,.ui-widget textarea{font-size:16px}}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.woff") format("woff"),url("../light/fonts/openolat/openolat.ttf") format("truetype"),url("../light/fonts/openolat/openolat.svg") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot");src:url("../../font-awesome/fonts/fontawesome-webfont.woff2") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf") format("truetype");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.2857142857em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.o_icon-li.o_icon-lg{left:-1.8571428571em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_absence:before{content:"ï€"}.o_icon_absence_authorized:before{content:"ï";color:#78be20}.o_icon_absence_unauthorized:before{content:"ïª";color:#d6001c}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_align_left:before{content:""}.o_icon_align_middle:before{content:""}.o_icon_align_right:before{content:""}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d6001c}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#78be20}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d6001c}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#8f1f40}.o_icon_bookmark_add:before{content:"ï‚—";color:#8f1f40}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_cancelled:before{content:"ïž"}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before,.o_search_result .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_column:before{content:""}.o_icon_columns:before{content:""}.o_icon_container:before{content:""}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_compulsory:before{content:"ï©"}.o_icon_content_popup:before{content:"ï‚Ž"}.o_icon_correct_answer:before{content:"";color:#78be20}.o_icon_correct_response:before{content:"ï";color:#78be20}.o_icon_correction:before{content:"ï€"}.o_icon_curriculum_element:before{content:""}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:"ï„Œ"}.o_icon_dispensation_authorized:before{content:"ï";color:#78be20}.o_icon_dispensation_unauthorized:before{content:"ï±";color:#f2af40}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d6001c}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:"ï‚Ž"}.o_icon_extra_time:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_fileupload:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f2af40}.o_icon_import:before{content:"ï‚“"}.o_icon_incorrect_response:before{content:"ïœ";color:#d6001c}.o_icon_info:before{content:"ïš";color:#a6a6a6}.o_icon_info_msg:before{content:"ïª";color:#d6001c}.o_icon_info_resource:before{content:"ïš"}.o_icon_inheritance_root:before{content:"ï‚«"}.o_icon_inheritance_inherited:before{content:""}.o_icon_inheritance_none:before{content:"ï„Œ"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_lecture:before{content:"ï€"}.o_icon_left:before{content:""}.o_icon_levels:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:"ï‚Ž"}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_log:before{content:"ï…œ"}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_ms_done:before{content:""}.o_icon_ms_pending:before{content:"ï‹"}.o_icon_new:before{content:"ï©";color:#78be20}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_node_up_down:before{content:"ï½"}.o_icon_notes:before{content:""}.o_icon_notice_authorized:before{content:"ï";color:#78be20}.o_icon_notice_unauthorized:before{content:"ï±";color:#f2af40}.o_icon_notification:before{content:"ï‚ž"}.o_icon_number_of:before{content:""}.o_icon_ok:before{content:"";color:#78be20}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before,.o_search_result .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_origin:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_presence:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:"ï‚š"}.o_icon_provider_google:before{content:"ï† "}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_tequila:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_pull:before{content:""}.o_icon_quota:before{content:""}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:"ï„Œ"}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:"ï„Œ"}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d6001c}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_reopen:before{content:"ï„’"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_reset:before{content:"ïˆ"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_reviewer:before{content:""}.o_icon_right:before{content:"ï‚©"}.o_icon_rss:before{content:"ï‚ž"}.o_icon_rss_unsubscribe:before{content:"ï‚ž";color:#996633}.o_icon_rubric:before{content:""}.o_icon_rubric_insufficient:before{content:"ï—";color:#d6001c}.o_icon_rubric_sufficient:before{content:"ï˜";color:#78be20}.o_icon_rubric_neutral:before{content:"ïª";color:#f2af40}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_shuffle:before{content:"ï´"}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:""}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:"ï„Œ"}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_time:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_timetable:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tool_pdf:before{content:"ï‡"}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_unlocked:before{content:"ï‚œ"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_update:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f2af40}.o_icon_width_expand:before{content:"ï¥"}.o_icon_width_collapse:before{content:"ï¦"}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:"ï‚Ž"}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:"ï„š"}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_icon_repo_status_preparation:before{content:"ï€"}.o_icon_repo_status_review:before{content:""}.o_icon_repo_status_coachpublished:before{content:""}.o_icon_repo_status_published:before{content:""}.o_icon_repo_status_closed:before{content:"ïž"}.o_icon_repo_status_trash:before{content:""}.o_icon_repo_status_deleted:before{content:""}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:"ï‚Ž"}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:"ï‚Ž"}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:"ï„š"}.o_survey_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:"ï„Œ"}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:"\E800";font-family:openolat;font-size:120%}.o_edubase_icon:before{content:"\E885";font-family:openolat}.o_livestream_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:"ï‚ž"}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_icon_qitem_commands:before{content:"ï‚…"}.o_icon_qitem_convert:before{content:""}.o_icon_qitem_copy:before{content:""}.o_icon_qitem_delete:before{content:""}.o_icon_qitem_draft:before{content:"ï€"}.o_icon_qitem_endOfLife:before{content:""}.o_icon_qitem_finalVersion:before{content:""}.o_icon_qitem_export:before{content:""}.o_icon_qitem_hide_metadata:before{content:""}.o_icon_qitem_import:before{content:"ï‚“"}.o_icon_qitem_new:before{content:"ï•"}.o_icon_qitem_review:before{content:""}.o_icon_qitem_revised:before{content:""}.o_icon_qitem_share:before{content:"ï¤"}.o_icon_qitem_show_metadata:before{content:""}.o_icon_qitem_status:before{content:"ï¡"}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f2af40}.o_icon_pf_section_progress:before{content:"";color:#f2af40}.o_icon_pf_section_submitted:before{content:"";color:#209d9e}.o_icon_pf_section_closed:before{content:"";color:#78be20}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f2af40}.o_icon_pf_entry_published:before{content:"ï„‘";color:#209d9e}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d6001c}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#78be20}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_new_entry:before{content:"ï€"}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_icon_pf_trash:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimatch_truefalse:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_as_mode_stop:before{content:"ï"}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f2af40}.o_icon_qti_answered:before{content:"ï˜";color:#78be20}.o_icon_qti_ended:before{content:"ïž";color:#a6a6a6}.o_icon_qti_invalid:before{content:"ïª";color:#d6001c}.o_icon_qti_review:before{content:"ï®";color:#a6a6a6}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#a6a6a6}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f2af40}.o_icon_qti_summary_ended:before{content:"ï—";color:#d6001c}.o_icon_qti_summary_correct:before{content:"ï˜";color:#78be20}.o_lectures_current:before{content:"ï„‘";color:#f2af40}.o_lectures_next:before{content:""}.o_lectures_pending:before{content:"ï„‘";color:#d6001c}.o_lectures_closed:before{content:"ï„‘"}.o_lectures_rollcall_ok:before{content:"ï„‘";color:#78be20}.o_lectures_rollcall_warning:before{content:"ï‚";color:#f2af40}.o_lectures_rollcall_danger:before{content:"ï„Œ";color:#d6001c}.o_lectures_rollcall_free:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_notice:before{content:"ï„‘";color:#969696}.o_lectures_rollcall_pending:before{content:"";color:#b8b8b8}.o_lectures_attended:before{content:"ï„‘";color:#78be20}.o_lectures_authorized:before{content:"ï„‘";color:#f2af40}.o_lectures_absent:before{content:"ï„‘";color:#d6001c}.o_absences_col_warning:before{content:"ï±"}.o_absences_col_alert:before{content:"ïª"}.o_icon_taxonomy:before{content:""}.o_icon_taxonomy_level:before{content:""}.o_icon_taxonomy_level_leaf:before{content:"ï„•"}.o_icon_taxonomy_templates:before{content:""}.o_icon_taxonomy_levels:before{content:""}.o_black_led:before{content:"ï„‘";color:#209d9e}.o_green_led:before{content:"ï„‘";color:#78be20}.o_yellow_led:before{content:"ï„‘";color:#f2af40}.o_red_led:before{content:"ï„‘";color:#d6001c}.o_icon_identity_permanent:before{content:""}.o_icon_identity_pending:before{content:""}.o_icon_identity_login_denied:before{content:"ïž"}.o_icon_identity_deleted:before{content:""}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_guests_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f2af40}.o_ac_status_error_icon:before{content:"ï€";color:#d6001c}.o_ac_status_new_icon:before{content:"ï©";color:#209d9e}.o_ac_status_success_icon:before{content:"";color:#78be20}.o_ac_status_waiting_icon:before{content:"";color:#209d9e}.o_ac_order_status_new_icon:before{content:"ï©";color:#209d9e}.o_ac_order_status_prepayment_icon:before{content:"";color:#a6a6a6}.o_ac_order_status_payed_icon:before{content:"";color:#78be20}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f2af40}.o_ac_order_status_error_icon:before{content:"ï€";color:#d6001c}.o_ac_order_status_warning_icon:before{content:"";color:#f2af40}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}.o_icon_eva_disclaimer:before{content:""}.o_icon_eva_end_show:before{content:"ï¾"}.o_icon_eva_end_hide:before{content:"ï…¸"}.o_icon_eva_export:before{content:""}.o_icon_eva_pdf:before{content:"ï‡"}.o_icon_eva_print:before{content:""}.o_icon_eva_session_info:before{content:"ï„©"}.o_icon_eva_mc:before{content:"ï†"}.o_icon_eva_sc:before{content:""}.o_icon_eva_sc:before{content:""}.o_icon_surv_reset:before{content:"ï„"}.o_icon_qual_ana_hide_filter:before{content:""}.o_icon_qual_ana_pres_edit:before{content:"ï‚"}.o_icon_qual_ana_export:before{content:""}.o_icon_qual_ana_pres_delete:before{content:"ïž"}.o_icon_qual_ana_pdf:before{content:"ï‡"}.o_icon_qual_ana_print:before{content:""}.o_icon_qual_ana_show_filter:before{content:""}.o_icon_qual_ana_trend:before{content:"ïˆ"}.o_icon_qual_ana_trend_arrow:before{content:"ï‚©"}.o_icon_qual_dc_create:before{content:"ï•"}.o_icon_qual_dc_delete:before{content:""}.o_icon_qual_dc_finished:before{content:"ï˜"}.o_icon_qual_dc_preparation:before{content:"ï„"}.o_icon_qual_dc_ready:before{content:"ï€"}.o_icon_qual_dc_running:before{content:"ï…„"}.o_icon_qual_exec_future:before{content:"ïœ"}.o_icon_qual_exec_over:before{content:"ï—"}.o_icon_qual_exec_participating:before{content:"ï…„"}.o_icon_qual_exec_participated:before{content:"ï˜"}.o_icon_qual_exec_ready:before{content:"ï€"}.o_icon_qual_gen_ce_add:before{content:"ï•"}.o_icon_qual_gen_create:before{content:"ï•"}.o_icon_qual_gen_delete:before{content:""}.o_icon_qual_gen_disabled:before{content:"ïž"}.o_icon_qual_gen_enabled:before{content:""}.o_icon_qual_gen_re_add:before{content:"ï•"}.o_icon_qual_part_user_add:before{content:""}.o_icon_qual_part_user_add_course:before{content:""}.o_icon_qual_part_user_add_curele:before{content:""}.o_icon_qual_part_execute:before{content:"ï‹"}.o_icon_lic_add:before{content:"ï•"}.o_icon_lic_public_domain:before{content:"\E810";font-family:openolat;font-size:120%}.o_icon_lic_cc0:before{content:"\E811";font-family:openolat;font-size:120%}.o_icon_lic_by:before{content:"\E812";font-family:openolat;font-size:120%}.o_icon_lic_by_sa:before{content:"\E813";font-family:openolat;font-size:120%}.o_icon_lic_by_nd:before{content:"\E814";font-family:openolat;font-size:120%}.o_icon_lic_by_nc:before{content:"\E815";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_sa:before{content:"\E817";font-family:openolat;font-size:120%}.o_icon_lic_by_nc_nd:before{content:"\E819";font-family:openolat;font-size:120%}.o_icon_lic_all_rights_reserved:before{content:""}.o_icon_lic_freetext:before{content:""}.o_icon_lic_general:before{content:""}.o_icon_lic_youtube:before{content:"ï…¦"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_small_bottom,.o_block_small{margin-bottom:0.5em}.o_block_small_top,.o_block_small{margin-top:0.5em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left,.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right,.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle,.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill,.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file,.o_pf_content .o_forum,.gu-mirror .o_forum,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_wiki,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_move_up{margin-top:-1em}.o_block_move_up_small{margin-top:-0.5em}.o_block_move_up_large{margin-top:-2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block;vertical-align:top}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.6666666667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.o_button_textstyle:before{content:'['}.o_button_textstyle:after{content:']'}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#ccc;border-radius:10px;background-color:#fcfcfc}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-top:none;border-left:none;border-right:none;color:#888;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#ccc;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:11px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:20px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_highlight_on_hover:hover{background-color:#f5f5f5}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_copy_code input,.o_copy_code textarea,.b_copy_code input,code input,pre input,.b_copy_code textarea,code textarea,pre textarea{border:0;width:90%;background:transparent}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_figure_caption_bottom{display:inline-block;min-width:50%}.o_figure_caption_bottom figure{display:table}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_page_margins{padding:25px}.o_dragable,.o_page_fragment_edit .o_page_tools_dd:before,.o_page_drop{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.o_dragable:active,.o_page_fragment_edit .o_page_tools_dd:active:before,.o_page_drop:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging,.gu-mirror{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_draging:active,.gu-mirror:active{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.o_hidden{visibility:hidden}h1{color:#342c24}h2{color:#342c24}h3{color:#342c24}h4,.o_cal .fc-header-title h2{color:#342c24}h5{color:#342c24}h5{color:#342c24}fieldset legend{color:#342c24}.o_user_content_block a{color:#209d9e;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#177374;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{line-height:1.428571429;vertical-align:top}table.b_default td,table.b_default th{padding:8px;vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:8px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:8px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:8px;border:0 !important}table.b_borderless thead td,table.b_borderless th{font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:8px;background:#eee;border:1px solid #fbfbfb}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_gray tbody tr:nth-child(even) td{background:#fbfbfb;border:1px solid #eee}table.b_gray.b_no_stripes tbody tr:nth-child(even) td{background:#eee;border:1px solid #fbfbfb}@media print{table.b_gray td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eee !important}table.b_gray thead td,table.b_gray th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d5d5d5 !important}table.b_gray tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fbfbfb !important}}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:8px;background:#d9edf7;border:1px solid #eef7fb}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_blue tbody tr:nth-child(even) td{background:#eef7fb;border:1px solid #d9edf7}table.b_blue.b_no_stripes tbody tr:nth-child(even) td{background:#d9edf7;border:1px solid #eef7fb}@media print{table.b_blue td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#d9edf7 !important}table.b_blue thead td,table.b_blue th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#afd9ee !important}table.b_blue tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7fb !important}}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:8px;background:#dff0d8;border:1px solid #eef7ea}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_green tbody tr:nth-child(even) td{background:#eef7ea;border:1px solid #dff0d8}table.b_green.b_no_stripes tbody tr:nth-child(even) td{background:#dff0d8;border:1px solid #eef7ea}@media print{table.b_green td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#dff0d8 !important}table.b_green thead td,table.b_green th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#c1e2b3 !important}table.b_green tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#eef7ea !important}}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:8px;background:#fcf8e3;border:1px solid #fefefa}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_yellow tbody tr:nth-child(even) td{background:#fefefa;border:1px solid #fcf8e3}table.b_yellow.b_no_stripes tbody tr:nth-child(even) td{background:#fcf8e3;border:1px solid #fefefa}@media print{table.b_yellow td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fcf8e3 !important}table.b_yellow thead td,table.b_yellow th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f7ecb5 !important}table.b_yellow tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fefefa !important}}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:8px;background:#f2dede;border:1px solid #f9f0f0}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}table.b_red tbody tr:nth-child(even) td{background:#f9f0f0;border:1px solid #f2dede}table.b_red.b_no_stripes tbody tr:nth-child(even) td{background:#f2dede;border:1px solid #f9f0f0}@media print{table.b_red td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f2dede !important}table.b_red thead td,table.b_red th{-webkit-print-color-adjust:exact;color-adjust:exact;background:#e4b9b9 !important}table.b_red tbody tr:nth-child(even) td{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f0f0 !important}}table.a_responsive{width:auto !important}@media (max-width: 768px){.a_responsive td{display:block}}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#209d9e}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}a.b_link_mailto{color:#209d9e}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#209d9e}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0}caption,figcaption,.o_caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left;font-style:italic}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}figure.align-left{float:left}figure.align-right{float:right}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}img.align-left{float:left}img.align-right{float:right}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}figure.image.align-center{display:block;text-align:center}figure.image.align-left{float:none;display:block;text-align:left}figure.image.align-left figcaption{text-align:left}figure.image.align-right{float:none;display:block;text-align:right}figure.image.align-right figcaption{text-align:right}figure.image{margin:2em 0 2em 0;border:0;background:none}figure.image img.b_float_left,figure.image img.b_float_left_clear,figure.image img.b_float_right,figure.image img.b_float_right_clear,figure.image img.b_float_left_clear_nomargin,figure.image img.b_centered{float:none;display:inline-block;margin:0}figure.image figcaption{font-size:90%;font-style:italic}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#209d9e}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#209d9e}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#78be20}.radial-progress.radial-progress-success .inset .percentage .number span{color:#78be20}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#a6a6a6}.radial-progress.radial-progress-info .inset .percentage .number span{color:#a6a6a6}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d6001c}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d6001c}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f2af40}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f2af40}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#209d9e}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60);width:120px}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d6001c}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#a30015}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f2af40}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d6001c}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d6001c}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#a30015}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d6001c;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#a30015;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar.o_toolbar_with_segments{margin-bottom:30px}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d6001c}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#8a0012}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#209d9e;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#209d9e;background-color:transparent}.o_toolbar .o_breadcrumb+.o_tools_container{border-top:1px solid #e7e7e7}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:block;font-size:12px;text-align:center}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:16px;font-size:70% !important;padding:0 18px 0 4px;position:relative;top:-2px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:12px !important;margin:0 0 3px 0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{position:absolute;right:5px;top:2px;margin-right:0}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{line-height:14px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:10px !important}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:5px;top:2px;margin-right:0;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light{padding:0 18px 0 4px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled i,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light i{font-size:20px}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled+.o_icon_caret,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light+.o_icon_caret{right:15px;top:2px;margin-right:0}.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled span.o_label,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_inner_text,.o_toolbar .o_tool_dropdown .o_inner_wrapper.o_labeled_light span.o_label{display:none}}.o_toolbar .o_tool_dropdown .dropdown-toggle.o_with_labeled .o_inner_wrapper.o_labeled+.o_icon_caret{color:#fff !important}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled{padding:0;margin:0}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled .o_labeled{text-align:left}.o_toolbar .o_tool_dropdown .dropdown-menu.o_with_labeled>li>a{padding:5px 5px;margin:1px}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto;text-align:center}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px}#o_container_page_width_toggler{position:absolute;top:25px;margin-top:-.75em;right:10px;z-index:5;display:none}@media (min-width: 1364px){#o_container_page_width_toggler{display:block}#o_container_page_width_toggler #o_go_standard_width{display:none}#o_container_page_width_toggler #o_go_full_width{display:block}body.o_width_full .o_container_offcanvas{max-width:100%;margin-left:20px;margin-right:20px}body.o_width_full #o_container_page_width_toggler #o_go_standard_width{display:block}body.o_width_full #o_container_page_width_toggler #o_go_full_width{display:none}}body.o_dmz #o_container_page_width_toggler{display:none !important}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_instruction,.o_form .o_warning,p.o_gta_reopen_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_instruction h2,.o_form .o_warning h2,p.o_gta_reopen_warning h2,.b_warning h3,.o_instruction h3,.o_form .o_warning h3,p.o_gta_reopen_warning h3,.b_warning h4,.o_instruction h4,.o_form .o_warning h4,p.o_gta_reopen_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_instruction .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_instruction h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,p.o_gta_reopen_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title p.o_gta_reopen_warning h2,.b_warning h5,.o_instruction h5,.o_form .o_warning h5,p.o_gta_reopen_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}.o_instruction{margin-top:0px;border-left:none;padding-top:10px;padding-bottom:10px}.o_instruction>.o_button_group{margin-bottom:0px}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#342c24;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#209d9e}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#177374}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f2af40;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d6001c}.o_breadcrumb .o_breadcrumb_close a:hover{color:#8a0012}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form .o_date.form-inline .form-group.o_second_date,.o_form .o_date.o_navbar-form .form-group.o_second_date,.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group,.o_form .o_date.form-inline .form-group.o_date_separator,.o_form .o_date.o_navbar-form .form-group.o_date_separator{margin-left:25px}.o_form .btn-group .o_date{display:inline-block}.o_form input.o_date_ms{width:3em}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:11em}.o_form .has-feedback .o_date_picker .form-control{padding-right:0}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .o_fileElement.has-error .o_icon_error.form-control-feedback{display:none}.o_form .form-control.textarea.o_fixed_font_with{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_form .form-control.textarea_disabled.o_fixed_font_with{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important;background:#fafafa}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_form_inline_mandatory_compact i{width:20px}.o_form_inline_mandatory_compact select.form-control{width:calc(100% - 25px)}.o_day_chooser .o_day_previous{display:inline-block}.o_day_chooser .o_day_previous a{border-bottom-right-radius:0;border-top-right-radius:0;border-right:0}.o_day_chooser .o_day_date{display:inline-block;border-radius:0}.o_day_chooser .o_day_date input,.o_day_chooser .o_day_date .input-group-addon{border-radius:0}.o_day_chooser .o_day_next{display:inline-block}.o_day_chooser .o_day_next a{border-bottom-left-radius:0;border-top-left-radius:0;border-left:0}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f2af40;border-color:#f0a528}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#cd850e}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f2af40;border-color:#f0a528}.o_button_dirty .badge{color:#f2af40;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 1px;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 1px 0 0.5em}.o_button_toggle.o_on i{color:#209d9e;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_flexi tfoot{border-top:solid #ddd 2px}.o_table_wrapper.o_table_flexi .o_multiselect{width:20px}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_checkall>a{font-weight:normal;margin-right:10px}.o_table_wrapper .o_table_footer .o_table_checkall.input-sm,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.form-control,.o_table_wrapper .o_table_footer .input-group-sm>.o_table_checkall.input-group-addon,.o_table_wrapper .o_table_footer .input-group-sm>.input-group-btn>.o_table_checkall.btn{padding:5px 6px}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#2d2926;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}.o_breadcrumb.o_table_flexi_breadcrumb ol.breadcrumb{margin:5px 0 0 0}div.o_table_flexi div.o_table_flexi_leaf{margin-left:1.55em}div.o_table_flexi div.o_table_flexi_l0{padding-left:0px}div.o_table_flexi div.o_table_flexi_l1{padding-left:15px}div.o_table_flexi div.o_table_flexi_l2{padding-left:30px}div.o_table_flexi div.o_table_flexi_l3{padding-left:45px}div.o_table_flexi div.o_table_flexi_l4{padding-left:60px}div.o_table_flexi div.o_table_flexi_l5{padding-left:75px}div.o_table_flexi div.o_table_flexi_l6{padding-left:90px}div.o_table_flexi div.o_table_flexi_l7{padding-left:105px}div.o_table_flexi div.o_table_flexi_l8{padding-left:120px}div.o_table_flexi div.o_table_flexi_l9{padding-left:135px}div.o_table_flexi div.o_table_flexi_l10{padding-left:150px}div.o_table_flexi div.o_table_flexi_l11{padding-left:165px}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#2d2926;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications,.o_table_tools_indications_filter_only{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a,.o_table_tools_indications_filter_only a{color:#d6001c}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_table_filter .control-label{margin-right:0.5em}.o_table_filter .control-label:after{content:':'}.o_table_filter>div{display:inline-block}.o_table_filter>div label{font-weight:normal}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d6001c}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f5c370}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2d2926}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#209d9e}.o_im_buddieslist ul a:hover{color:#177374}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f2af40}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating.o_rating_personal .o_rating_items .o_icon{color:#209d9e}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#35d5d6}.d3chart .bar_default,.d3chart .bubble_default{fill:#209d9e}.d3chart .bar_default_dark{fill:#135e5e}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#78be20;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„Ž";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#209d9e;border:1px solid #1c8889;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#197b7c;border-color:#115556}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#726860}.o_draw_circle{border:2px solid #209d9e;border-radius:50%;position:absolute !important;box-sizing:border-box}.o_draw_rectangle{border:2px solid #209d9e;position:absolute !important;box-sizing:border-box}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:0;right:37px}.o_content_popup{position:absolute;top:0;right:12px}.o_module_cp_wrapper{position:relative}.o_module_cp_wrapper .o_tools{position:absolute;top:0;right:0;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-group{margin-bottom:0}.o_module_cp_wrapper .o_tools .o_search_wrapper .form-control-static{padding-top:0;padding-bottom:0}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;background:#fcfcfc;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}ul.o_dropdown>li>i.o_icon_check{display:inline-block;padding-left:14px}ul.o_dropdown>li>i.o_icon_check+a{display:inline-block;padding-left:5px}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.428571429}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png") !important}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png") !important}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png") !important}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png") !important}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png") !important}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png") !important}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png") !important}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png") !important}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#209d9e;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#2d2926}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_feed .o_enclosure{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}div.panel.o_assessment_modes .o_table_body{margin-top:0}div.panel.o_assessment_modes .o_table_wrapper{margin-bottom:5px}div.o_assessment_mode_row{padding:0 15px}div.o_assessment_mode_row.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #3c763d;background-color:#dff0d8}div.o_assessment_mode_row.o_assessment_end_soon.o_assessment_today{padding:0 20px 0 12px;border-left:3px solid #a94442;background-color:#f2dede}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_segments.o_segments_linked .btn,.o_segments.o_segments_linked .btn:hover,.o_segments.o_segments_linked .btn:active,.o_segments.o_segments_linked .btn:focus{border:none;border-radius:0;box-shadow:none;background:none}.o_segments.o_segments_linked .btn-primary{color:#000;font-size:24px;background:none}.o_segments.o_segments_linked .btn-default,.o_segments.o_segments_linked .btn-default:hover,.o_segments.o_segments_linked .btn-default:active,.o_segments.o_segments_linked .btn-default:focus{color:#209d9e;background:none}.o_segments.o_segments_linked .o_segment_separator{color:#000}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d6001c}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.progress .progress-bar{text-shadow:1px 1px 2px #000000}.o_progress_label_right{float:left;margin-right:10px}.o_web_content{padding-bottom:15px}.o_labeled_light,a.o_labeled_light,.o_labeled,a.o_labeled{display:inline-block;text-transform:uppercase;text-align:center;text-decoration:none;vertical-align:middle;font-size:75%;line-height:1;white-space:nowrap;border:1px solid;border-radius:3px;padding:2px 5px;background-color:#777;color:#fff;position:relative}.o_labeled_light,a.o_labeled_light{font-weight:bold;background-color:#f8f8f8}.o_ms_button{max-width:100%;width:100%;display:flex}.o_ms_button span:not(.o_ms_carret){text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.o_ms_button .o_ms_carret{margin:auto 0 auto auto}.o_ms_list{width:100%;height:auto;max-height:300px;overflow-x:hidden;top:unset}.o_disclaimer .o_disclaimer_content{max-height:50vh;overflow:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;background:#fbfbfb;padding:10px;border:1px solid #c2c2c2}.o_files_size_okay{color:#61E868}.o_files_size_warning{color:#FFB100}.o_files_size_large{color:#E82A0C}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fcfcfc;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.428571429}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#209d9e}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_title h4 .o_icon-fw,.o_search_result_title .o_cal .fc-header-title h2 .o_icon-fw,.o_cal .fc-header-title .o_search_result_title h2 .o_icon-fw{text-align:left}.o_search_result_highlight{font-weight:bold;background-color:transparent}.o_search_result_context{display:inline-block;color:#3c763d;margin-right:1em}.o_search_result_license{display:inline-block;color:#777}.o_search_result_excerpt{color:#555}.o_search_result .o_opener{font-size:12px}.o_search_result .o_opener i{width:1em}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}.o_search_result_details .o_togglebox_wrapper .o_search_result_license i{font-size:20px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#2d2926;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#2d2926}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#209d9e}.o_process .o_step.o_active .o_title{color:#209d9e !important}.o_process .o_step.o_active .o_title:before{content:"";color:#209d9e}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#29c7c8}.o_process .o_step.o_done .o_title{color:#29c7c8 !important}.o_process .o_step.o_done .o_title:before{content:"";color:#78be20}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #209d9e;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.o_cal_wv_event_tooltip_content .o_cal_description{background-color:#f8f8f8;padding:10px 7px;margin:10px -7px}.o_cal_wv_event_tooltip_content .o_cal_tooltip_buttons{text-align:center;margin-top:20px}.o_cal_event_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_not_managed .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:""}.o_cal_event_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.o_cal_event_not_managed.o_cal_event_livestream .fc-content:after{margin-right:2px;float:right;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:" "}.fc-button{color:#333;background-color:#fcfcfc;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e3e3e3;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fcfcfc;border-color:#ccc}.fc-button .badge{color:#fcfcfc;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#209d9e;border-color:#1c8889}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#209d9e;border-color:#1c8889}.fc-button.fc-state-active .badge{color:#209d9e;background-color:#fff}.fc-listYear-button:before,.fc-listMonth-button:before,.fc-listWeek-button:before,.fc-listDay-button:before{content:"";margin-right:5px;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:80%;webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}table.fc-list-table .fc-list-item{background-color:white;color:#5D5D5D !important}table.fc-list-table .fc-list-item a,table.fc-list-table .fc-list-item span{color:#5D5D5D !important}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_page_content_editor .o_toolbar{border:none}.o_page_content_editor .o_page_part,.gu-mirror{border:2px solid transparent}.o_page_content_editor .o_page_part:hover,.gu-mirror:hover{border:2px dotted #209d9e}.o_page_fragment_edit{position:relative;display:grid}.o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#209d9e;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;top:-19px;height:19px;background-color:#209d9e;border-radius:10px 10px 0 0}.o_page_fragment_edit .o_page_tools_above .o_page_add_above .o_icon{color:#fff;background-color:#209d9e}.o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:3px 5px 0 7px}.o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#209d9e}.o_page_fragment_edit .o_page_tools_dd:before{content:' ';width:25px;height:100%;position:absolute;left:0;top:0;border:3px #209d9e solid;border-bottom:28px #209d9e solid;background-image:-webkit-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-moz-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:-ms-repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);background-image:repeating-radial-gradient(center center, #fff, #fff 1px, transparent 1px, transparent 100%);-webkit-background-size:3px 3px;-moz-background-size:3px 3px;background-size:3px 3px}.o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;background:#209d9e;color:#fff}.o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_page_fragment_edit .o_page_part.o_page_edit{padding-right:23px;border:2px solid #209d9e;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #209d9e}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;position:absolute;z-index:3;left:0;right:0;margin-left:auto;margin-right:auto;width:26px;bottom:-20px;height:22px;background-color:#209d9e;border-radius:0 0 10px 10px}.o_page_fragment_edit .o_page_add_below .o_icon{color:#fff;background-color:#209d9e}.o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px;margin:0px 0px 0px 2px}.o_page_fragment_edit.gu-mirror .o_page_add_below,.o_page_fragment_edit.gu-mirror .o_page_add_above,.o_page_fragment_edit.gu-transit .o_page_add_below,.o_page_fragment_edit.gu-transit .o_page_add_above{display:none}.o_page_container_slot.col-md-3 .o_page_others_above a span,.o_page_container_slot.col-md-4 .o_page_others_above a span{display:none}.o_page_container_slot.col-md-3 .o_page_edit_toolbar ul>li,.o_page_container_slot.col-md-4 .o_page_edit_toolbar ul>li{padding-right:0}div.o_page_content_editor .gu-mirror,.o_page_content_editor .gu-transit{box-shadow:none}.o_page_container{box-sizing:border-box;padding:10px}.o_page_container{background-color:transparent}.o_page_container .o_page_container{background-color:transparent}.o_page_container .o_page_container .o_page_container{background-color:transparent}.o_page_container_slot{box-sizing:border-box;margin:0 -1px -1px 0;padding:10px}.o_page_container .o_page_container_slot{border:2px dotted #eee}.o_page_container:hover .o_page_container_slot{border:2px dotted #ef00ef}.o_page_add_in_container_grp{margin-bottom:0}.gu-transit{border:2px dotted #e80c96;opacity:0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40)}.gu-mirror{border:2px dotted #209d9e;opacity:0.8;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";filter:alpha(opacity=80)}.o_page_add_callout a span{display:none}.o_page_add_callout ul.list-inline{margin-bottom:0}.o_page_table_edition .o_table_title,.o_page_table_edition .o_table_caption{padding:5px}.o_page_with_side_options_wrapper{display:flex;align-items:stretch;flex-direction:row}.o_page_side_options_target{background-color:#f9f9f9;flex-grow:4}.o_page_side_options{flex-grow:0;background-color:#209d9e;border-left:1px solid #b9b9b9;border-bottom:1px solid #b9b9b9;padding:5px;z-index:2}@media (max-width: 767px){.o_page_with_side_options_wrapper{flex-direction:column-reverse}}.o_page_content .o_image,.o_page_content .o_video,.o_page_content_editor .o_image,.o_page_content_editor .o_video{width:100%}.o_page_content .o_image img,.o_page_content .o_video img,.o_page_content_editor .o_image img,.o_page_content_editor .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_page_content .o_image .o_artefact_metadata,.o_page_content .o_video .o_artefact_metadata,.o_page_content_editor .o_image .o_artefact_metadata,.o_page_content_editor .o_video .o_artefact_metadata{text-align:left}.o_page_content .o_image.o_image_align_left,.o_page_content .o_video.o_image_align_left,.o_page_content_editor .o_image.o_image_align_left,.o_page_content_editor .o_video.o_image_align_left{float:left}.o_page_content .o_image.o_image_align_left+.o_image_clear,.o_page_content .o_video.o_image_align_left+.o_image_clear,.o_page_content_editor .o_image.o_image_align_left+.o_image_clear,.o_page_content_editor .o_video.o_image_align_left+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_right,.o_page_content .o_video.o_image_align_right,.o_page_content_editor .o_image.o_image_align_right,.o_page_content_editor .o_video.o_image_align_right{float:right}.o_page_content .o_image.o_image_align_right+.o_image_clear,.o_page_content .o_video.o_image_align_right+.o_image_clear,.o_page_content_editor .o_image.o_image_align_right+.o_image_clear,.o_page_content_editor .o_video.o_image_align_right+.o_image_clear{clear:both}.o_page_content .o_image.o_image_align_middle,.o_page_content .o_video.o_image_align_middle,.o_page_content_editor .o_image.o_image_align_middle,.o_page_content_editor .o_video.o_image_align_middle{clear:both;margin-left:50%;text-align:center;transform:translate(-50%, 0%)}.o_page_content .o_image.o_image_align_leftfloat,.o_page_content .o_video.o_image_align_leftfloat,.o_page_content_editor .o_image.o_image_align_leftfloat,.o_page_content_editor .o_video.o_image_align_leftfloat{float:left;padding-right:10px;padding-bottom:10px}.o_page_content .o_image.o_image_align_rightfloat,.o_page_content .o_video.o_image_align_rightfloat,.o_page_content_editor .o_image.o_image_align_rightfloat,.o_page_content_editor .o_video.o_image_align_rightfloat{float:right;padding-left:10px;padding-bottom:10px}.o_page_content .o_image.o_image_size_style_small,.o_page_content .o_video.o_image_size_style_small,.o_page_content_editor .o_image.o_image_size_style_small,.o_page_content_editor .o_video.o_image_size_style_small{width:25%}.o_page_content .o_image.o_image_size_style_small img,.o_page_content .o_video.o_image_size_style_small img,.o_page_content_editor .o_image.o_image_size_style_small img,.o_page_content_editor .o_video.o_image_size_style_small img{width:100%}.o_page_content .o_image.o_image_size_style_medium,.o_page_content .o_video.o_image_size_style_medium,.o_page_content_editor .o_image.o_image_size_style_medium,.o_page_content_editor .o_video.o_image_size_style_medium{width:40%}.o_page_content .o_image.o_image_size_style_medium img,.o_page_content .o_video.o_image_size_style_medium img,.o_page_content_editor .o_image.o_image_size_style_medium img,.o_page_content_editor .o_video.o_image_size_style_medium img{width:100%}.o_page_content .o_image.o_image_size_style_large,.o_page_content .o_video.o_image_size_style_large,.o_page_content_editor .o_image.o_image_size_style_large,.o_page_content_editor .o_video.o_image_size_style_large{width:60%}.o_page_content .o_image.o_image_size_style_large img,.o_page_content .o_video.o_image_size_style_large img,.o_page_content_editor .o_image.o_image_size_style_large img,.o_page_content_editor .o_video.o_image_size_style_large img{width:100%}.o_page_content .o_image.o_image_size_style_fill,.o_page_content .o_video.o_image_size_style_fill,.o_page_content_editor .o_image.o_image_size_style_fill,.o_page_content_editor .o_video.o_image_size_style_fill{width:100%;float:none !important;display:block}.o_page_content .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content .o_video.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_figure_caption_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_figure_caption_bottom{display:block}.o_page_content .o_image.o_image_size_style_fill img,.o_page_content .o_video.o_image_size_style_fill img,.o_page_content_editor .o_image.o_image_size_style_fill img,.o_page_content_editor .o_video.o_image_size_style_fill img{width:100%;display:block}.o_page_content .o_image img.o_image_classic,.o_page_content .o_video img.o_image_classic,.o_page_content_editor .o_image img.o_image_classic,.o_page_content_editor .o_video img.o_image_classic{padding:0;border:0;border-radius:0}.o_page_content .o_image img.o_image_border,.o_page_content .o_video img.o_image_border,.o_page_content_editor .o_image img.o_image_border,.o_page_content_editor .o_video img.o_image_border{padding:3px;border:solid 1px #CCC}.o_page_content .o_image img.o_image_shadow,.o_page_content .o_video img.o_image_shadow,.o_page_content_editor .o_image img.o_image_shadow,.o_page_content_editor .o_video img.o_image_shadow{padding:0;border:0;-moz-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 4px 8px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.o_page_content .o_image img.o_image_frame,.o_page_content .o_video img.o_image_frame,.o_page_content_editor .o_image img.o_image_frame,.o_page_content_editor .o_video img.o_image_frame{padding:0;border:0;border-radius:0;-moz-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);-webkit-box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);box-shadow:0px 0px 0px 1px rgba(0,0,0,0.6),0px 0px 0px 10px #f6f3f8,0px 0px 0px 14px rgba(0,0,0,0.2);margin:15px}.o_page_content .o_image img.o_image_polaroid,.o_page_content .o_video img.o_image_polaroid,.o_page_content_editor .o_image img.o_image_polaroid,.o_page_content_editor .o_video img.o_image_polaroid{padding:0;border-radius:0;border:1px solid #dcdcdc;background:#fff;padding:10px 10px 45px 10px;-webkit-box-shadow:3px 3px 3px rgba(0,0,0,0.2);-moz-box-shadow:3px 3px 3px rgba(0,0,0,0.2);box-shadow:3px 3px 3px rgba(0,0,0,0.2)}.o_page_content .o_image img.o_image_round,.o_page_content .o_video img.o_image_round,.o_page_content_editor .o_image img.o_image_round,.o_page_content_editor .o_video img.o_image_round{padding:3px;border:solid 1px #CCC;border-radius:50%}.o_page_content .o_image .o_image_title_dark,.o_page_content .o_video .o_image_title_dark,.o_page_content_editor .o_image .o_image_title_dark,.o_page_content_editor .o_video .o_image_title_dark{color:#000}.o_page_content .o_image .o_image_title_bright,.o_page_content .o_video .o_image_title_bright,.o_page_content_editor .o_image .o_image_title_bright,.o_page_content_editor .o_video .o_image_title_bright{color:#f9f9f9}.o_page_content .o_image .o_image_title,.o_page_content .o_video .o_image_title,.o_page_content_editor .o_image .o_image_title,.o_page_content_editor .o_video .o_image_title{position:relative}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{position:absolute;left:50%;margin-right:-50%;transform:translate(-50%, -50%)}.o_page_content .o_image .o_image_title .o_image_title_top,.o_page_content .o_video .o_image_title .o_image_title_top,.o_page_content_editor .o_image .o_image_title .o_image_title_top,.o_page_content_editor .o_video .o_image_title .o_image_title_top{top:10%}.o_page_content .o_image .o_image_title .o_image_title_centered,.o_page_content .o_video .o_image_title .o_image_title_centered,.o_page_content_editor .o_image .o_image_title .o_image_title_centered,.o_page_content_editor .o_video .o_image_title .o_image_title_centered{top:50%}.o_page_content .o_image .o_image_title .o_image_title_bottom,.o_page_content .o_video .o_image_title .o_image_title_bottom,.o_page_content_editor .o_image .o_image_title .o_image_title_bottom,.o_page_content_editor .o_video .o_image_title .o_image_title_bottom{bottom:10%}.o_page_content .o_image.o_image_size_style_none .o_image_title_top,.o_page_content .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_none .o_image_title_top,.o_page_content .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content .o_video.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_none .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_none .o_image_title_bottom{font-size:24px}.o_page_content .o_image.o_image_size_style_small .o_image_title_top,.o_page_content .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_small .o_image_title_top,.o_page_content .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content .o_video.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_small .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_small .o_image_title_bottom{font-size:18px}.o_page_content .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content .o_video.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_medium .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_medium .o_image_title_bottom{font-size:32px}.o_page_content .o_image.o_image_size_style_large .o_image_title_top,.o_page_content .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_large .o_image_title_top,.o_page_content .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content .o_video.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_large .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_large .o_image_title_bottom{font-size:40px}.o_page_content .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content .o_video.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_image.o_image_size_style_fill .o_image_title_bottom,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_top,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_centered,.o_page_content_editor .o_video.o_image_size_style_fill .o_image_title_bottom{font-size:56px}.o_page_add_contents{clear:both;margin-top:30px}.o_ce_html_raw.o_html_col2,.o_ce_html_paragraph.o_html_col2{column-count:2;column-gap:1em}.o_ce_html_raw.o_html_col3,.o_ce_html_paragraph.o_html_col3{column-count:3;column-gap:1em}.o_ce_html_raw.o_html_col4,.o_ce_html_paragraph.o_html_col4{column-count:4;column-gap:1em}table.o_ce_table caption{caption-side:bottom}.o_ce_add_main_btns{margin-top:2em}.o_ce_add{border:none;margin-bottom:0px}.o_ce_add .o_ce_tools{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.o_ce_add .o_ce_tools .o_ce_tool{padding:0px;margin:0px;width:33%}.o_ce_add .o_ce_tools .o_ce_tool a{padding:6px 3px;margin:0px;display:block;width:100%;height:100%}.o_ce_add .o_ce_tools .o_ce_tool a:hover{padding:5px 2px;border:1px solid #e7e7e7;border-radius:4px}.o_ce_add_list .o_ce_add_list_item{border-style:none;padding:0px;margin:0px -15px}.o_ce_add_list .o_ce_add_list_item a{padding:5px 25px;margin:0px;display:block;width:100%;height:100%}.o_ce_add_list .o_ce_add_list_item a:hover{text-decoration:none;background-color:#f5f5f5}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #ccc;border-radius:4px;background:#fcfcfc;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-top-left-radius:4px;border-bottom-left-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual .o_visual_not_available{background-color:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #ccc;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#a6a6a6}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#209d9e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#209d9e;border-color:#1c8889}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#209d9e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#a6a6a6;border-color:#999}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#a6a6a6;border-color:#999}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#a6a6a6;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;background:#fcfcfc;border-left:1px solid #ccc;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#342c24}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#16130f}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;z-index:2px;background:#fcfcfc;padding:0 3px 3px 3px;border-radius:0px 0px 3px 3px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em;background:#fcfcfc}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#209d9e;border-top-right-radius:4px;border-bottom-right-radius:4px}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac ul{display:inline-block}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#342c24}.o_catalog .o_level .o_meta .o_title a:hover{color:#16130f}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #ccc;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #ccc;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #ccc;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #ccc;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#342c24;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#16130f}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}.o_ac_configuration div.o_ac_method{background-color:#efefef;padding:5px;border-radius:3px}.o_ac_configuration div.o_ac_methods.form-group{padding-bottom:0;margin-bottom:0}.o_repo_with_explanation{padding-bottom:0;margin-bottom:0}.o_repo_explanation{color:#f2af40}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}a.o_repo_tools_status{cursor:pointer;margin:0 2px 2px 2px;text-align:left}.o_labeled.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_review{background-color:#FCCA46;border-color:#FCCA46;color:#fff}.o_labeled.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_coachpublished{background-color:#1DC63F;border-color:#1DC63F;color:#fff}.o_labeled.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_published{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_closed{background-color:#99583D;border-color:#99583D;color:#fff}.o_labeled.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_trash{background-color:#5A5958;border-color:#5A5958;color:#fff}.o_labeled.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled.o_repo_status_deleted{background-color:#888;border-color:#888;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_preparation{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_review{background-color:#fbbc14}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_coachpublished{background-color:#169a31}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_published{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_closed{background-color:#75432e}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_trash{background-color:#40403f}.o_toolbar .o_tools_container a.o_labeled:hover.o_repo_status_deleted{background-color:#6f6f6f}.o_labeled_light.o_repo_status_preparation,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_preparation{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_repo_status_review,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_review{border-color:#FCCA46;color:#FCCA46}.o_labeled_light.o_repo_status_coachpublished,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_coachpublished{border-color:#1DC63F;color:#1DC63F}.o_labeled_light.o_repo_status_published,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_published{border-color:#14892c;color:#14892c}.o_labeled_light.o_repo_status_closed,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_closed{border-color:#99583D;color:#99583D}.o_labeled_light.o_repo_status_trash,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_trash{border-color:#5A5958;color:#5A5958}.o_labeled_light.o_repo_status_deleted,.o_toolbar .o_tools_container a.o_labeled_light.o_repo_status_deleted{border-color:#888;color:#888}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#2d2926}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#2d2926}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#2d2926}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#342c24}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#16130f;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0;display:table}.o_cmembers .o_cmember .o_portrait{padding-right:10px;display:table-cell;vertical-align:top;min-width:60px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{display:table-cell;vertical-align:middle;color:#777}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember .o_curriculum_displayname,.o_cmembers .o_cmember .o_curriculum_root_el_identifier,.o_cmembers .o_cmember .o_curriculum_root_el_displayname{font-size:12px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;max-width:100%;max-height:100%;width:auto;height:auto;position:absolute;top:0;bottom:0;left:0;right:0;margin:auto}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}div.o_correction_navigation .o_correction_navigation_back{float:left;line-height:32px}div.o_correction_navigation .o_correction_navigation_previous{position:absolute;right:50%;margin-right:102px}div.o_correction_navigation #o_cocurrent_item_SELBOX{width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;left:50%;margin-left:-100px}div.o_correction_navigation .o_correction_navigation_next{position:absolute;left:50%;margin-left:102px}@media (max-width: 767px){div.o_correction_navigation .o_correction_navigation_previous span,div.o_correction_navigation .o_correction_navigation_next span{display:none}}.o_ms_stack_panel .o_toolbar{margin-top:0px}.o_ms_bold{font-weight:bold}.o_ms_legend{padding:5px}.o_ms_legend li{display:block;font-size:90%}.o_ms_legend .ident{font-weight:bold}.o_browser_ie10 .o_paella_wrapper iframe,.o_browser_ie11 .o_paella_wrapper iframe{display:none}.o_browser_ie10 .o_paella_wrapper .o_paella_error,.o_browser_ie11 .o_paella_wrapper .o_paella_error{display:block}.o_paella_wrapper iframe{width:100%;height:400px}@media (max-width: 768px){.o_paella_wrapper iframe{height:300px}}.o_paella_wrapper .o_paella_error{display:none}.o_curriculum_el_listing tr.o_curriculum_element_inactive,.o_curriculum_el_listing tr.o_curriculum_element_inactive td,.o_curriculum_el_listing tr.o_curriculum_element_inactive td span,.o_curriculum_el_listing tr.o_curriculum_element_inactive td a{color:#777}.o_curriculum_el_listing tr.o_curriculum_element_unfiltered,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td span,.o_curriculum_el_listing tr.o_curriculum_element_unfiltered td a{color:#aaa}.o_curriculum_el_listing tr.o_curriculum_element_deleted,.o_curriculum_el_listing tr.o_curriculum_element_deleted td,.o_curriculum_el_listing tr.o_curriculum_element_deleted td span,.o_curriculum_el_listing tr.o_curriculum_element_deleted td a{color:#777;text-decoration:line-through}.o_curriculumtable tr.o_curriculum_element_l0 td:nth-thild(first){padding-left:0px}.o_curriculumtable tr.o_curriculum_element_l1 td:nth-thild(first){padding-left:15px}.o_curriculumtable tr.o_curriculum_element_l2 td:nth-thild(first){padding-left:30px}.o_curriculumtable tr.o_curriculum_element_l3 td:nth-thild(first){padding-left:45px}.o_curriculumtable tr.o_curriculum_element_l4 td:nth-thild(first){padding-left:60px}.o_curriculumtable tr.o_curriculum_element_l5 td:nth-thild(first){padding-left:75px}.o_curriculumtable tr.o_curriculum_element_l6 td:nth-thild(first){padding-left:90px}.o_curriculumtable tr.o_curriculum_element_l7 td:nth-thild(first){padding-left:105px}.o_curriculumtable tr.o_curriculum_element_l8 td:nth-thild(first){padding-left:120px}.o_curriculumtable tr.o_curriculum_element_l9 td:nth-thild(first){padding-left:135px}.o_curriculumtable tr.o_curriculum_element_l10 td:nth-thild(first){padding-left:150px}.o_curriculumtable tr.o_curriculum_element_l11 td:nth-thild(first){padding-left:165px}.o_curriculumtable tr.o_curriculum_element_inactive,.o_curriculumtable tr.o_curriculum_element_inactive td,.o_curriculumtable tr.o_curriculum_element_inactive td span{color:#777}.o_curriculumtable tr.o_curriculum_element_deleted,.o_curriculumtable tr.o_curriculum_element_deleted td,.o_curriculumtable tr.o_curriculum_element_deleted td span{color:#777;text-decoration:line-through}.o_curriculumtable.o_rendertype_custom .container-fluid{padding-left:0;padding-right:0}.o_curriculumtable.o_rendertype_custom .o_table_row{position:relative;vertical-align:top;margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row:before,.o_curriculumtable.o_rendertype_custom .o_table_row:after{content:" ";display:table}.o_curriculumtable.o_rendertype_custom .o_table_row:after{clear:both}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{background:none;border:none;position:relative}.o_curriculumtable.o_rendertype_custom .o_table_row .o_ext_id{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_hierarchy_info{display:none;position:absolute;top:0;right:30px;font-size:70%;z-index:5;background:gold}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title{margin-top:0;margin-bottom:0;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_title small{white-space:nowrap}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars{padding-left:6px;color:#777}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_lifecycle.o_active:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_calendars.o_active:hover{color:#2b542c}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc{padding:6px 6px 16px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_empty{font-style:italic;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{position:relative;padding-left:132px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px;padding-left:87px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_visual{left:0;border:none;background-color:#fff;max-height:80px;max-width:120px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_location,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_meta .o_lifecycle{color:#3c763d}.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:absolute;right:0;bottom:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_failed{font-weight:normal}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_score{display:inline-block}.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state .o_state+.o_score:before{content:', '}.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark{position:absolute;top:-1px;right:2px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{position:absolute;bottom:0;right:0;overflow:hidden;width:180px;height:30px}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start{right:0;color:#fff;background-color:#209d9e;border-color:#1c8889}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#209d9e;border-color:#1c8889}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#209d9e;background-color:#fff}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#a6a6a6;border-color:#999}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#8d8d8d;border-color:#7b7b7b}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#a6a6a6;border-color:#999}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#a6a6a6;background-color:#fff}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row .o_author,.o_curriculumtable.o_rendertype_custom .o_table_row .o_bookmark,.o_curriculumtable.o_rendertype_custom .o_table_row .o_lifecycle,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_entry_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_curriculum_element_desc,.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state,.o_curriculumtable.o_rendertype_custom .o_table_row .o_details{display:none}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l0 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l1 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l2 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_element_l3 .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:inline-block;width:50%;border-right:12px solid transparent;margin-top:0 !important}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_repository_entry .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_mixed_element .o_curriculum_entry_title{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_row_inner_wrapper{background:#f6f6f6;border:1px solid #eee}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_element_title{background:transparent;padding:12px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_program .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_title{background:#ebebeb;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_calendars{padding:6px 6px 12px 6px;background:#ebebeb}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_semester .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{background:#f6f6f6;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_module .o_curriculum_entry{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{margin:10px 0 5px 0}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;border:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_title{background:transparent;padding:12px 6px 6px 6px}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_lifecycle{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_calendars{padding:6px 6px 12px 6px;background:transparent}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_element_desc{display:none}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:inline-block;width:50%;border-right:12px solid transparent}@media (max-width: 991px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course{display:block;width:100%;border-right:0 !important}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course.o_with_multi_repository_entries{display:block;width:100%;border-right:0 !important}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{background:none;min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_row_inner_wrapper{min-height:50px}}.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:80px}@media (max-width: 767px){.o_curriculumtable.o_rendertype_custom .o_table_row.o_curriculum_course .o_curriculum_entry{min-height:50px}}@media print{.o_curriculumtable.o_rendertype_custom .o_table_row .o_user_state{position:relative;bottom:0}.o_curriculumtable.o_rendertype_custom .o_table_row .o_access{display:none}}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#78be20}.d3chart .bar_red{fill:#d6001c}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#78be20}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#209d9e}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #209d9e}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #209d9e !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #209d9e}.o_item_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_draw_rectangle{background-color:rgba(255,255,255,0.5);border-color:#6E6E6E}#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-standard .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(45,0,255,0.5);border-color:#0000ff}#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_draw_rectangle{background-color:rgba(221,221,221,0);border-color:#7E7E7E}#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-light .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(51,122,183,0.05);border-color:#337ab7}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_draw_rectangle{background-color:rgba(110,110,110,0.5);border-color:#3E3E3E}#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-inverted .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(222,222,222,0.2);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_draw_rectangle{background-color:rgba(142,142,142,0.25);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-green .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(134,195,81,0.5);border-color:#518b33}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_draw_rectangle{background-color:rgba(142,142,142,0.33);border-color:#CECECE}#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_circle,#o_qti_hotspots_edit.o_qti_hotspot-purple .o_qti_hotspot_correct.o_draw_rectangle{background-color:rgba(234,168,255,0.5);border-color:#ab47cb}div.hotspotInteraction{overflow-x:auto}img.o_hotspot_responsive[usemap]{max-width:100%;width:auto;height:auto}.form-inline.o_qti_gaptext_add_first_alternative,.o_qti_gaptext_add_first_alternative.o_navbar-form{padding:9px 0 3px 0}.form-inline.o_qti_gaptext_add_alternative,.o_qti_gaptext_add_alternative.o_navbar-form{margin-bottom:3px}.o_qti_gaptext_alternatives{background-color:#eee;color:#555;border:1px solid #eee;border-radius:4px;padding:2px 5px}span.o_qti_gaptext_score_alternative{padding-left:2em;color:#555}.o_qti_item_body .extendedTextInteraction{margin:15px 0}.o_qti_item_body .extendedTextInteraction textarea{resize:vertical !important;font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.o_qti_item_body .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}.extendedTextInteraction div.form-control.textarea_disabled{white-space:pre-wrap;height:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;color:#555 !important}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#209d9e}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#209d9e}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer.o_15_seconds{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_panic{background-color:#f2dede}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}#width_range_ui,#opacity_range_ui{width:120px}.o_slider_width_range,.o_slider_opacity_range{margin:3px 10px 0 0}.o_qti_hotspot_label{padding-left:48%}.o_assessmentsection_rubrics_wrapper{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px;padding:5px 10px;margin:0 0 0.5em 0}.o_assessmentsection_rubrics_correction_wrapper{background:#f8f8f8;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding:5px 10px}.o_info.o_assessmentsection_rubrics{margin:5px -10px;position:relative;display:block}.o_info.o_assessmentsection_rubrics.o_hide{display:none}.o_info.o_assessmentsection_rubrics a.o_hide{position:absolute;bottom:0.5em;right:1em}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d6001c;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d6001c}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d6001c}.o_assessmentitem div.orderInteraction div.box.vertical{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_assessmentitem div.orderInteraction div.box.vertical ul{min-height:200px}.o_assessmentitem div.orderInteraction div.box.horizontal ul{min-height:50px;width:100%}.o_assessmentitem div.orderInteraction div.box.source{padding:5px 10px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_assessmentitem div.orderInteraction div.box.source.horizontal{padding:5px 10px 15px 10px}.o_assessmentitem div.orderInteraction div.box.target ul{border:2px solid #a6a6a6;border-radius:4px;background:#d9edf7}.o_assessmentitem div.orderInteraction div.box.target ul.oo-accepted{border-color:#666}.o_assessmentitem div.orderInteraction div.box.target.vertical{padding:6px 0 0 10px}.o_assessmentitem div.orderInteraction div.box.target.vertical ul{padding:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal{padding-top:10px}.o_assessmentitem div.orderInteraction div.box.target.horizontal ul{padding:10px 10px 0 10px}.o_assessmentitem div.orderInteraction div.box.horizontal ul li{float:left;width:auto;margin-right:10px;min-width:50px}.o_assessmentitem div.orderInteraction div.box span.info{color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#2d2926;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#2d2926;background:#d9edf7;border:1px solid #bce8f1}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input,.o_assessmentitem .textEntryInteraction span.o_input_value{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:13.72px;line-height:1.5;border:1px solid #999;background:#fff;padding:1px 1px;color:#2d2926;max-width:100%}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled,.o_assessmentitem .textEntryInteraction input.o_input_value_wrapper,.o_assessmentitem .textEntryInteraction span.o_input_value:valid,.o_assessmentitem .textEntryInteraction span.o_input_value:disabled,.o_assessmentitem .textEntryInteraction span.o_input_value.o_input_value_wrapper{color:#2d2926;-webkit-text-fill-color:#2d2926;background:#d9edf7;border:1px solid #bce8f1}li.o_assessmentitem_order_item{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;list-style-type:none}li.o_assessmentitem_order_item:before,li.o_assessmentitem_order_item:after{content:" ";display:table}li.o_assessmentitem_order_item:after{clear:both}body>li.o_assessmentitem_order_item{display:block}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em;position:relative}.o_assessmentitem_wrapper .itemTitle .o_qti_item_max_score{position:absolute;left:49%}.o_assessmentitem_wrapper .o_qti_item_body{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;font-size:14px;line-height:1.8}.o_assessmentitem_wrapper .o_assessment_item_not_final.o_warning{margin:0}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#a6a6a6}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d6001c}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#78be20}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f2af40}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#a6a6a6}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#a6a6a6;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button,.o_assessmentitem_controls a{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_skip_question span:before,.o_assessmentitem_controls .o_sel_back_question span:before,.o_assessmentitem_controls .o_sel_retry_question span:before{padding-right:0.5em;margin-bottom:0}.o_assessmentitem_control_view_solution{background:#f8f8f8;border:1px solid #e7e7e7;margin:0;padding:5px 10px}.o_assessmentitem_scoring{background:#f8f8f8;border:1px solid #e7e7e7;border-bottom:0;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px}.o_assessmentitem_scoring_buttons{background:#f8f8f8;border:1px solid #e7e7e7;border-top:0;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_scoring_override_window{width:300px}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}.o_qti_item_body{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction input+i{background-color:red}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct{background-color:#d8f3b7}table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong{background-color:#ffa3af}table.o_qti_item_kprim td.o_qti_item_kprim_input_correct,table.o_qti_item_kprim td.o_qti_item_kprim_input_wrong,table.o_qti_item_kprim th.o_qti_item_kprim_input_correct,table.o_qti_item_kprim th.o_qti_item_kprim_input_wrong{width:11%}table.o_qti_item_kprim td.o_qti_item_kprim_text,table.o_qti_item_kprim th.o_qti_item_kprim_text{width:88%}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#78be20}.matchInteraction div.bar_red{background-color:#d6001c}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#666}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f2af40;background:#fae1b7}.o_match_dnd_source.oo-drag{border:2px dashed #f2af40 !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #666;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #a6a6a6;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.table.o_match_true_false_edit th.o_sel_match_target_0,.table.o_match_true_false_edit th.o_sel_match_target_1,.table.o_match_true_false_edit th.o_sel_match_target_2{width:12%}.match_true_false input[type="checkbox"]{-webkit-appearance:radio;-moz-appearance:radio;-ms-appearance:radio;appearance:radio}.match_true_false .table>tbody>tr>td.o_match_true_false_unanswered,.match_true_false .table>tbody>tr>td.o_match_true_false_right,.match_true_false .table>tbody>tr>td.o_match_true_false_wrong{vertical-align:middle;width:11%}.match_true_false th.o_match_true_false_unanswered,.match_true_false th.o_match_true_false_right,.match_true_false th.o_match_true_false_wrong{width:11%}.match_true_false td.o_match_true_false_answer,.match_true_false th.o_match_true_false_answer{width:67%}.match_true_false td.o_match_true_false_unanswered{background-color:#fbfbfb}.match_true_false td.o_match_true_false_right{background-color:#d8f3b7}.match_true_false td.o_match_true_false_wrong{background-color:#ffa3af}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#78be20}.o_assessmentitem div.failure{background-color:#f2af40}.o_assessmentitem div.error{background-color:#d6001c}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:0;border-bottom:0}.o_candidatecomment div.o_item_container_help{margin:0;padding:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#209d9e;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#177374;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f2af40}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#a6a6a6}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em;overflow-wrap:break-word}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}ul.o_qti_statistics_answers li span.o_qti_statistics_answer{background:#F5F5F5;padding:1px 3px;width:90%;display:inline-block}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_sel_assessment_item_feedbacks{min-height:250px}.o_alternative_question_types h4 select,.o_alternative_question_types .o_cal .fc-header-title h2 select,.o_cal .fc-header-title .o_alternative_question_types h2 select{display:inline-block;width:auto}@media print{canvas,div.hotspotInteraction>div>div{-webkit-print-color-adjust:exact;color-adjust:exact}.choiceInteraction label{font-weight:normal}.choiceinteraction input[type="radio"][disabled],.choiceinteraction input[type="checkbox"][disabled],.matchInteraction input[type="radio"][disabled],.matchInteraction input[type="checkbox"][disabled]{display:none}.choiceinteraction input+i,.matchInteraction input+i{font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.choiceInteraction input[type="radio"][disabled]+i:before,.matchInteraction input[type="radio"][disabled]+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]+i:before{content:"ï„Œ"}.choiceInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction input[type="radio"][disabled]:checked+i:before,.matchInteraction.match_true_false input[type="checkbox"][disabled]:checked+i:before{content:""}.choiceInteraction input[type="checkbox"][disabled]+i:before,.matchInteraction input[type="checkbox"][disabled]+i:before{content:"ï‚–"}.choiceInteraction input[type="checkbox"][disabled]:checked+i:before,.matchInteraction input[type="checkbox"][disabled]:checked+i:before{content:"ï†"}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav{margin-right:20px}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_nav .o_portfolio_collector{position:relative;top:-5px}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï‚Ž"}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_portfolio_home .o_portfolio_my li,.o_portfolio_home .o_portfolio_shared li{margin:2em 1em 2em 0;text-align:center;vertical-align:top}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:5px dashed #eee;padding-right:2em}.o_portfolio_home .o_portfolio_my li a,.o_portfolio_home .o_portfolio_shared li a{display:block;width:9em}.o_portfolio_home .o_portfolio_my li a i,.o_portfolio_home .o_portfolio_shared li a i{display:inline-block;font-size:4em}.o_portfolio_home .o_portfolio_my li a span,.o_portfolio_home .o_portfolio_shared li a span{display:block;margin-top:0.8em}@media (max-width: 1199px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:90%}}@media (max-width: 767px){.o_portfolio_home .o_portfolio_my,.o_portfolio_home .o_portfolio_shared{font-size:80%}.o_portfolio_home .o_portfolio_my li.o_pf_trash_entry,.o_portfolio_home .o_portfolio_shared li.o_pf_trash_entry{border-right:none;padding-right:0}}.o_portfolio_home #o_my_last_binders .o_table_body{margin-top:0;padding-left:0}.o_portfolio_home #o_my_last_pages .o_table_body{margin-top:0}.o_portfolio_home #o_my_last_pages .o_table_toolbar{display:none}.o_portfolio_home #o_my_last_pages .o_portfolio_page{margin-top:0;margin-bottom:1em}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_ended .o_section_lead{border-color:#ff3d56;background-color:#ff7083}.o_media.o_media_right,.o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_media.o_media_left,.o_media.o_media_right{max-height:200px;max-width:50%}.o_media.o_media_left img,.o_media.o_media_right img{max-height:200px}.o_media.o_media_right_large,.o_media.o_media_left_large{max-height:300px;max-width:75%}.o_media.o_media_right_large img,.o_media.o_media_left_large img{max-height:300px}.o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff;height:auto;width:auto}@media (max-width: 767px){.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:120px;max-width:30%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:120px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:180px;max-width:50%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:180px}}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_edit_page_meta{padding-right:2em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_portfolio_status_block p.o_section_ended{font-size:120%}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d6001c;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_page_export .o_page_assignment .o_opener,.o_binder_export .o_page_assignment .o_opener{visibility:hidden}.o_page_export .o_page_assignment .o_closer,.o_binder_export .o_page_assignment .o_closer{display:none}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .oo-accepted{box-shadow:10px 10px 10px pink}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry .o_binder_tools a{color:#2d2926}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d6001c}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d6001c}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d6001c}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{margin-left:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{margin-right:1em;margin-bottom:1em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_right{max-height:150px}.o_portfolio_page_summary .o_media.o_media_left img,.o_portfolio_page_summary .o_media.o_media_right img{max-height:150px}.o_portfolio_page_summary .o_media.o_media_right_large,.o_portfolio_page_summary .o_media.o_media_left_large{max-height:230px}.o_portfolio_page_summary .o_media.o_media_right_large img,.o_portfolio_page_summary .o_media.o_media_left_large img{max-height:230px}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_categories div,.o_portfolio_categories form{display:inline-block}.o_portfolio_categories_edit .bootstrap-tagsinput{margin-bottom:0;padding:0px 4px}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f2af40}.o_portfolio_timeline .dot.o_pf_status_published{fill:#209d9e}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d6001c}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#78be20}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_pf_comments{margin-top:3em}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.gu-mirror .o_cit,.gu-mirror .o_text,.gu-mirror .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum,.gu-mirror .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki,.gu-mirror .o_efficiencystatement,.gu-mirror .o_feed,.gu-mirror .o_forum,.gu-mirror .o_wiki{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_efficiencystatement h3,.o_pf_content .o_efficiencystatement .h3,.o_pf_content .o_feed h3,.o_pf_content .o_feed .h3,.o_pf_content .o_forum h3,.o_pf_content .o_forum .h3,.o_pf_content .o_wiki h3,.o_pf_content .o_wiki .h3,.gu-mirror .o_efficiencystatement h3,.gu-mirror .o_efficiencystatement .h3,.gu-mirror .o_feed h3,.gu-mirror .o_feed .h3,.gu-mirror .o_forum h3,.gu-mirror .o_forum .h3,.gu-mirror .o_wiki h3,.gu-mirror .o_wiki .h3{font-size:14px}.o_pf_content .o_efficiencystatement .row,.o_pf_content .o_feed .row,.o_pf_content .o_forum .row,.o_pf_content .o_wiki .row,.gu-mirror .o_efficiencystatement .row,.gu-mirror .o_feed .row,.gu-mirror .o_forum .row,.gu-mirror .o_wiki .row{margin:0}.o_pf_content .o_efficiencystatement .o_block_with_datecomp,.o_pf_content .o_feed .o_block_with_datecomp,.o_pf_content .o_forum .o_block_with_datecomp,.o_pf_content .o_wiki .o_block_with_datecomp,.gu-mirror .o_efficiencystatement .o_block_with_datecomp,.gu-mirror .o_feed .o_block_with_datecomp,.gu-mirror .o_forum .o_block_with_datecomp,.gu-mirror .o_wiki .o_block_with_datecomp{margin-top:0.5em;margin-bottom:0}.o_pf_video_placeholder{background-color:#f8f8f8;border:1px solid #f8f8f8;border-radius:10px;display:table;min-width:400px;text-align:center;padding:40px 10px}.o_pf_video_placeholder i{display:table-cell;vertical-align:middle}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc .o_portfolio_toc_section{position:relative;padding-right:80px}.o_portfolio_toc .o_portfolio_section_meta{margin-top:-0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:-10px;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down,.o_portfolio_toc .o_section_actions .o_section_dropdown{vertical-align:middle;display:inline-block}.o_portfolio_toc a.o_comment{color:#777;margin-left:1em}.o_portfolio_toc .o_section ul{padding-left:1em;line-height:24px}.o_portfolio div span.badge{padding:3px 7px}.o_portfolio div .o_portfolio_entry_draft{background-color:#f2af40}.o_portfolio div .o_portfolio_published{background-color:#209d9e}.o_portfolio div .o_portfolio_entry_revision{background-color:#d6001c}.o_portfolio div .o_portfolio_entry_closed{background-color:#78be20}.o_portfolio div .o_portfolio_entry_deleted{background-color:#000}.o_portfolio div .o_portfolio_entry_incoming{background-color:#78be20}.o_portfolio div .o_portfolio_entry_inprocess{background-color:#c8c8c8}.o_portfolio div .o_portfolio_entry_done{background-color:#78be20}.o_portfolio div .o_popover,.o_portfolio div .popover:hover{color:#2d2926;text-decoration:none}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page{background:#fcfcfc;border:1px solid #eee;border-radius:4px}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #209d9e;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #209d9e;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#209d9e;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#177374}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_portfolio_status_legend{margin-top:3em}.o_portfolio_status_legend h6{margin-bottom:5px}.o_ed_htitle h1,.o_ed_htitle .h1{font-size:30px}.o_ed_htitle h2,.o_ed_htitle .h2{font-size:24px}.o_ed_htitle h3,.o_ed_htitle .h3{font-size:18px}.o_ed_htitle h4,.o_ed_htitle .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_ed_htitle h2,.o_ed_htitle .h4{font-size:14px}.o_ed_htitle h5,.o_ed_htitle .h5{font-size:12px}.o_ed_htitle h6,.o_ed_htitle .h6{font-size:12px}@media print{.o_binder h1{font-size:43.2px;margin-top:10cm}.o_portfolio_section{margin-bottom:1cm}.o_portfolio_section h3:first-of-type{font-size:36px}.o_page_lead{border:0;border-bottom:1px solid #d9d9d9;border-radius:0;background-color:none;padding:0;margin-bottom:10px}.o_page_lead .o_portfolio_status_block{border-top:0;margin-bottom:0}.o_page_lead .o_media img{border:0}.o_page_lead .o_portfolio_categories{display:block;margin-left:0}.o_page_lead .o_portfolio_status_block{padding-top:0}.o_page_lead .o_page_summary{margin-top:1em;font-style:italic}.o_pf_content .o_cit,.o_pf_content .o_text,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_pf_content .o_efficiencystatement,.o_pf_content .o_feed,.o_pf_content .o_forum,.o_pf_content .o_wiki{padding:0;border-radius:0;border:0}.o_pf_content .o_cit .o_desc p,.o_pf_content .o_text .o_desc p,.o_pf_content .o_file .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_image .o_desc p,.o_pf_content .o_video .o_desc p,.o_pf_content .o_efficiencystatement .o_desc p,.o_pf_content .o_feed .o_desc p,.o_pf_content .o_forum .o_desc p,.o_pf_content .o_wiki .o_desc p{margin:0}.o_efficiencystatement table{font-size:90%}.o_artefact_metadata{page-break-inside:avoid;border:0;border-left:5px solid #eee;padding-left:10px;font-size:80%}.o_artefact_metadata table td,.o_artefact_metadata table th{border:0 !important;padding:2px !important}.o_artefact_metadata table th:first-of-type{width:20%}.o_pf_video_placeholder{background-color:#f8f8f8 !important;-webkit-print-color-adjust:exact;color-adjust:exact}.o_pf_video_placeholder.visible-print-block{display:table !important}}.o_evaluation_form .o_evaluation_block{margin-top:2em;margin-bottom:2em}.o_evaluation_form .o_rubric_name{font-weight:bold;margin-bottom:1em}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:1em;font-weight:bold}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center;align-self:flex-end;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_evaluation_form .o_slider_wrapper{height:33px;overflow:hidden}.o_evaluation_form .o_slider{margin-bottom:1em}.o_evaluation_form .o_slider label{padding:0}.o_evaluation_form .o_slider input{padding:0;margin:0;position:relative}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_continous .o_evaluation_no_response div.radio{padding:0;margin:0}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps{display:flex;justify-content:space-between}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps .radio:hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_no_response div.radio{margin-top:2px}.o_evaluation_form .o_evaluation_discrete_radio .o_evaluation_step_labels{display:flex;justify-content:space-between}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em;margin-bottom:10px}.o_evaluation_form .o_evaluation_left_label{text-align:right;font-weight:normal}.o_evaluation_form .o_evaluation_left_label.o_evaluation_left_label_la{text-align:left;padding-left:0px;font-weight:normal}.o_evaluation_form .o_evaluation_right_label{text-align:left;font-weight:normal}.o_evaluation_form .o_evaluation_text_legend{margin-bottom:1em}.o_evaluation_form .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_fileupload{margin-bottom:2em}.o_evaluation_form .o_evaluation_mc_other{margin-top:-10px;margin-left:10px;margin-right:10px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_slider{margin-left:15px;margin-right:15px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_end_label{text-align:right;padding-right:20px}.o_evaluation_form .o_evaluation_rubric_diagrams .o_continous .x .tick{visibility:hidden}.o_evaluation_form .o_ed_rubrictablehandler .table{margin-top:5px}.o_evaluation_form .svg-container{display:inline-block;position:relative;width:100%;padding-bottom:50%;vertical-align:top;overflow:hidden}.o_evaluation_form .svg-content-responsive{display:inline-block;position:absolute;top:10px;left:0}.d3chart .o_eva_bar{fill:#209d9e}.d3chart .o_rubric_sufficient{fill:#78be20}.d3chart .o_rubric_neutral{fill:#f2af40}.d3chart .o_rubric_insufficient{fill:#d6001c}.d3chart .o_rubric_unrated{fill:#209d9e}.o_qual_hm_legend{padding:5px}.o_qual_hm_legend li{font-size:90%}.o_qual_hm_legend .ident{font-weight:bold}.o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#209d9e}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px}@media (max-width: 992px){.o_evaluation_editor_form .o_slider_editor{margin-bottom:20px}}@media (max-width: 992px){.o_evaluation_editor_form .o_evaluation_step_label{text-align:unset;margin-bottom:5px;padding-top:unset}}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_descrete_radio{display:flex;justify-content:space-between}.o_evaluation_editor_form .o_slider_descrete_radio .radio{background-color:#f9f9f9;padding:0px;margin-top:0px;text-align:center}.o_evaluation_editor_form .o_slider_descrete_radio .radio:hover{background-color:#f5f5f5}@media (max-width: 992px){.o_evaluation_editor_form input[type="text"]{margin-bottom:5px}}.o_evaluation_editor_form .o_slider_continous{padding-top:10px;padding-bottom:-10px}.o_evaluation_editor_form .o_slider_descrete{padding-top:5px;padding-bottom:-5px}.o_evaluation_editor_form .o_evaluation_example{font-size:90%}.o_evaluation_editor_form .o_slider_top{margin-top:23px}.o_evaluation_editor_form .o_slider_buttons .pull-right div:not(:first-child){display:inline-block}.o_evaluation_editor_form .o_slider_buttons .pull-right .btn{margin-top:-3px}.o_evaluation_editor_form .o_slider_weight{max-width:40px}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left;margin-bottom:0.5em}.o_evaluation_form .o_evaluation_right_label{text-align:right}.o_evaluation_form .o_evaluation_no_response{text-align:left}.o_evaluation_form .o_evaluation_no_response .o_evaluation_no_resp_value{font-weight:bold}.o_evaluation_form .o_slider{margin-bottom:2em}.o_evaluation_form .o_slider div{padding-left:0}.o_evaluation_form .o_slider .o_evaluation_no_response{margin-top:0.7em}}@media (min-width: 768px){.o_evaluation_form .o_evaluation_no_resp_value{display:none}}@media print{.o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#f9f9f9 !important}.o_icon_rubric_insufficient::before{color:#d6001c !important}.o_icon_rubric_neutral::before{color:#f2af40 !important}.o_icon_rubric_sufficient::before{color:#78be20 !important}}.o_eva_report_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_eva_report_print #o_print_brand img{width:100%}.o_eva_report_print .o_eva_content{margin-top:4em}.o_eva_report_print .o_eva_overview .panel table{margin:0px 0px 1px 0px}.o_eva_report_print .o_evaluation_duration,.o_eva_report_print .o_participated_users{display:none}.o_surv_run.withCmds .o_eva_report{margin-top:-44px}.o_eva_report .o_eva_overview .o_eva_rubric .table{margin-top:5px}.o_eva_report .o_ed_rubrictablehandler .o_table_footer{font-weight:bold}.o_eva_report .o_rubric_avg{font-weight:bold;white-sprace:nowrap}.o_eva_report .o_rubric_table .o_table_wrapper{margin-bottom:10px}.o_eva_report .o_rubric_table_legend{display:block}.o_eva_report .o_rubric_table_legend .ident{font-weight:bold}.o_eva_report .o_rubric_table_legend .list-inline{margin-bottom:0px}.o_eva_report .o_rubric_table_legend.o_last{margin-bottom:15px}.o_evaluation_execution .o_evaluation_anonymous_info{display:inherit}.o_qual_main .o_labeled.o_qual_dc_status_preparation,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_preparation{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_ready,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_ready{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_running,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_running{background-color:#933;border-color:#933;color:#fff}.o_qual_main .o_labeled.o_qual_dc_status_finished,.o_qual_main .o_toolbar .o_tools_container a.o_labeled.o_qual_dc_status_finished{background-color:#14892c;border-color:#14892c;color:#fff}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_preparation{background-color:#384e64}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_ready{background-color:#ffc61e}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_running{background-color:#732626}.o_qual_main .o_toolbar .o_tools_container a.o_labeled:hover.o_qual_dc_status_finished{background-color:#0e5c1e}.o_qual_main .o_qual_dc_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_labeled_light.o_qual_dc_status_preparation_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_preparation_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_labeled_light.o_qual_dc_status_ready_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_labeled_light.o_qual_dc_status_running_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_running_light{border-color:#933;color:#933}.o_qual_main .o_labeled_light.o_qual_dc_status_finished_light,.o_qual_main .o_toolbar .o_tools_container a.o_labeled_light.o_qual_dc_status_finished_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_list tbody tr td:nth-child(1){padding-top:3px}.o_qual_main .o_qual_exec_status_future_light{border-color:#4a6785;color:#4a6785}.o_qual_main .o_qual_exec_status_ready_light{border-color:#ffd351;color:#333}.o_qual_main .o_qual_exec_status_participating_light{border-color:#933;color:#933}.o_qual_main .o_qual_exec_status_participated_light{border-color:#14892c;color:#14892c}.o_qual_main .o_qual_exec_status_over_light{border-color:#aaa;color:#aaa}.o_qual_execute_header .o_qual_context_table,.o_qual_report_header .o_qual_context_table{margin-bottom:0}.o_qual_execute_header .o_qual_context_table th,.o_qual_report_header .o_qual_context_table th{width:40%;border-top:none;padding:4px 8px}.o_qual_execute_header .o_qual_context_table td,.o_qual_report_header .o_qual_context_table td{width:60%;border-top:none;padding:4px 8px}.o_qual_ana_table .o_table_body{padding:0}.o_qual_ana_filter .o_date_range{margin-bottom:0px}.o_qual_ana_filter .o_date_range .control-label{margin-bottom:5px}.o_qual_ana_filter .o_date_range .o_date{margin-bottom:15px;padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_from{padding-right:12px}.o_qual_ana_filter .o_date_range .o_date_range_to{padding-right:0px}.o_qual_hm_basecolor{background-color:#337ab7}.o_qual_hm .o_circle_container{display:flex}.o_qual_hm .o_circle_box{display:flex;align-items:center;justify-content:center}.o_qual_hm .o_circle{border-radius:50%}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d6001c !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f2af40 !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#78be20 !important}.o_qual_hm .o_avg{display:flex;align-items:center;margin-left:5px}.o_qual_trend_invisible{visibility:hidden}.o_qual_trend .o_qual_ana_trend_up{transform:rotate(315deg);-webkit-transform:rotate(315deg);-moz-transform:rotate(315deg);-ms-transform:rotate(315deg);-o-transform:rotate(315deg)}.o_qual_trend .o_qual_ana_trend_down{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.o_qual_trend .o_rubric_insufficient{color:#d6001c}.o_qual_trend .o_rubric_neutral{color:#f2af40}.o_qual_trend .o_rubric_sufficient{color:#78be20}.o_qual_trend .o_qual_ana_unrated{color:#337ab7}.o_qual_filtered_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_qual_filtered_print #o_print_brand img{width:100%}.o_qual_filtered_print .o_qual_content{margin-top:4em}.o_qual_filtered_print .o_groupby_config,.o_qual_filtered_print .o_slider_trend_config,.o_qual_filtered_print .o_qual_hm tr td:last-child,.o_qual_filtered_print .o_qual_hm tr th:last-child{display:none}.o_evaluation_bar_chart_legend{padding:5px}.o_evaluation_bar_chart_legend li{font-size:90%}.o_evaluation_bar_chart_legend .ident{font-weight:bold}@media (max-width: 768px){.o_hm_group_select{padding-bottom:12px}.o_hm_panel_body{margin-bottom:-12px}}@media (min-width: 768px){.o_hm_trend_row{padding-top:12px}}@media print{.o_qual_hm .o_circle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_hm .o_circle.o_rubric_insufficient{background-color:#d6001c !important}.o_qual_hm .o_circle.o_rubric_neutral{background-color:#f2af40 !important}.o_qual_hm .o_circle.o_rubric_sufficient{background-color:#78be20 !important}.o_qual_hm .o_circle.o_qual_hm_basecolor{background-color:#337ab7 !important}.o_qual_trend{-webkit-print-color-adjust:exact;color-adjust:exact}.o_qual_trend .o_rubric_insufficient::before{color:#d6001c !important}.o_qual_trend .o_rubric_neutral::before{color:#f2af40 !important}.o_qual_trend .o_rubric_sufficient::before{color:#78be20 !important}.o_qual_trend .o_qual_ana_unrated::before{color:#337ab7 !important}}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;margin-bottom:0;padding:0 12px;font-style:italic;padding:5px 5px 0;border:0}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.o_cit blockquote.o_quote{page-break-inside:avoid}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run h1{font-size:1.8rem;font-weight:normal}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.o_video_chapter_editor .o_table_wrapper.o_table_flexi .table,.o_video_marker_editor .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_video_marker_editor .o_video_question.mejs__overlay{overflow:scroll}.o_video_question.mejs__overlay.o_video_large_question{align-items:flex-start;padding:1em 1em 0 1em;z-index:5}.o_video_question.mejs__overlay.o_video_large_question #o_qti_container{border:1px solid #eee}.o_video_marker{position:absolute;background-color:#efefef;opacity:0.85;border-left:3px solid #a6a6a6;padding:5px}.o_video_marker.o_video_marker_gray{border-left-color:#333}.o_video_marker.o_video_marker_blue{border-left-color:#bce8f1}.o_video_marker.o_video_marker_green{border-left-color:#78be20}.o_video_marker.o_video_marker_yellow{border-left-color:#f2af40}.o_video_marker.o_video_marker_red{border-left-color:#d6001c}.o_video_question.mejs__overlay{width:100%;height:100%;background-color:rgba(255,255,255,0.5)}.o_video_question #itemBody,.o_video_question .modalFeedback{background-color:white;opacity:1.0}.o_video_question .o_assessmentitem_wrapper .o_qti_item_body{min-height:50px}.o_video_question #o_qti_assessment_test_timer{border:none;padding:5px;margin:0}.o_video_question #o_qti_progress .progress{height:10px}.o_video_question #o_qti_container{background-color:white;padding:5px;border-radius:3px}.o_video_question .o_sel_additional_feedback{float:left;font-size:26px}.o_video_question .o_sel_additional_feedback .o_icon_passed{color:#78be20}.o_video_question .o_sel_additional_feedback .o_icon_failed{color:#d6001c}.mejs__time-rail .o_video_marker_gray{background:#333}.mejs__time-rail .o_video_marker_blue{background:#bce8f1}.mejs__time-rail .o_video_marker_green{background:#78be20}.mejs__time-rail .o_video_marker_yellow{background:#f2af40}.mejs__time-rail .o_video_marker_red{background:#d6001c}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d6001c}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d6001c}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.mejs__time-marker{background-color:#a6a6a6}.o_userbulk_changedcell{font-style:italic;font-weight:bold}.o_qpool_source_status{text-align:center}.o_qitem_author{white-space:nowrap}a.o_qpool_status{margin:0 2px 2px 2px;text-align:left}.o_labeled.o_qpool_status_draft,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_draft{background-color:#4a6785;border-color:#4a6785;color:#fff}.o_labeled.o_qpool_status_review,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_review{background-color:#ffd351;border-color:#ffd351;color:#fff}.o_labeled.o_qpool_status_revised,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_revised{background-color:#933;border-color:#933;color:#fff}.o_labeled.o_qpool_status_finalVersion,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_finalVersion{background-color:#14892c;border-color:#14892c;color:#fff}.o_labeled.o_qpool_status_endOfLife,.o_toolbar .o_tools_container a.o_labeled.o_qpool_status_endOfLife{background-color:#aaa;border-color:#aaa;color:#fff}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_draft{background-color:#384e64}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_review{background-color:#ffc61e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_revised{background-color:#732626}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_finalVersion{background-color:#0e5c1e}.o_toolbar .o_tools_container a.o_labeled:hover.o_qpool_status_endOfLife{background-color:#919191}.o_labeled_light.o_qpool_status_draft_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_draft_light{border-color:#4a6785;color:#4a6785}.o_labeled_light.o_qpool_status_review_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_review_light{border-color:#ffd351;color:#333}.o_labeled_light.o_qpool_status_revised_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_revised_light{border-color:#933;color:#933}.o_labeled_light.o_qpool_status_finalVersion_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_finalVersion_light{border-color:#14892c;color:#14892c}.o_labeled_light.o_qpool_status_endOfLife_light,.o_toolbar .o_tools_container a.o_labeled_light.o_qpool_status_endOfLife_light{border-color:#aaa;color:#aaa}.btn-arrow-right.o_qpool_qitem_draft{background:#f8f8f8;border-bottom-color:#4a6785;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_review{background:#f8f8f8;border-bottom-color:#ffd351;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_revised{background:#f8f8f8;border-bottom-color:#933;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_final{background:#f8f8f8;border-bottom-color:#14892c;border-bottom-width:3px}.btn-arrow-right.o_qpool_qitem_end_of_life{background:#f8f8f8;border-bottom-color:#aaa;border-bottom-width:3px}.btn-arrow-right.o_qpool_status_slected{background-color:#e7e7e7;color:#555}.btn-arrow-right,.btn-arrow-left{position:relative;padding-left:18px;padding-right:18px;margin-bottom:5px}.btn-arrow-right{padding-left:36px}.btn-arrow-left{padding-right:36px}.btn-arrow-right:before,.btn-arrow-right:after,.btn-arrow-left:before,.btn-arrow-left:after{content:"";position:absolute;top:5px;width:22.627417px;height:22.627417px;background:inherit;border:inherit;border-left-color:transparent;border-bottom-color:transparent;border-radius:0px 4px 0px 0px;-webkit-border-radius:0px 4px 0px 0px;-moz-border-radius:0px 4px 0px 0px}.btn-arrow-right:before,.btn-arrow-right:after{transform:rotate(45deg);-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-o-transform:rotate(45deg);-ms-transform:rotate(45deg)}.btn-arrow-left:before,.btn-arrow-left:after{transform:rotate(225deg);-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-o-transform:rotate(225deg);-ms-transform:rotate(225deg)}.btn-arrow-right:before,.btn-arrow-left:before{left:-11px}.btn-arrow-right:after,.btn-arrow-left:after{right:-11px}.btn-arrow-right:after,.btn-arrow-left:before{z-index:1}.btn-arrow-right:before,.btn-arrow-left:after{background-color:white}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/infinite.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#00ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to left, rgba(255,255,255,0) 0.2%, rgba(255,255,255,0.3) 60%, rgba(255,255,255,0.5) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;padding-right:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#342c24}.o_login .o_login_intro .lead{color:#2d2926}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#342c24}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#f2af40;border-color:#f2af40;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#ef9b10;border-color:#e59510}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#f2af40;border-color:#f2af40}.o_login .o_login_register .badge{color:#f2af40;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#209d9e;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#177374;border-color:#115556}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#209d9e;border-color:#1c8889}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#209d9e;background-color:#fff}.o_old_browser{display:none}.o_browser_ie10 .o_old_browser{display:block}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fcfcfc;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_catalog_title h2,.o_library_catalog_title h3,.o_library_catalog_title h4,.o_library_catalog_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_catalog_title h2{margin-top:0}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #209d9e !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}.o_useradmin .o_user_infos .o_user_infos_inner{margin-right:45px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_useradmin div#o_main_toolbar.o_toolbar{margin-top:0px}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.7575757576);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_gta_coach_selection .o_noti{display:inline-block;float:none;margin:0}.o_gta_coach_selection .o_gta_coach_selection_bar{position:relative}.o_gta_coach_selection .o_gta_coach_selection_bar .o_noti{position:absolute;top:3px;right:0}p.o_gta_reopen_warning{margin-top:-20px}.o_lecture_authorized_absence div.form-inline,.o_lecture_authorized_absence div.o_navbar-form{display:inline}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_date,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_startTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_endTime,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_details,.o_lectures_teacher_overview .o_table_wrapper.o_table_flexi .table thead th.o_col_tools{width:1%}.o_lectures_teacher_overview .o_lectures_current_wrapper{border:1px solid transparent;background:#f8f8f8;border-radius:4px;margin:10px -10px 20px -10px;padding:10px}.o_lectures_teacher_overview .o_lectures_current_wrapper .o_button_group{margin-bottom:0}.o_lectures_teacher_overview .o_lectures_teacher_search .o_form .o_date{padding-right:10px;position:relative}.o_lectures_teacher_overview .o_lectures_teacher_search div.o_chelp_wrapper_and_buttons{position:absolute;top:0;right:0}.o_header_with_buttons .o_day_chooser{position:relative;float:right}.o_lectures_rollcall legend{margin-bottom:10px}.o_lectures_rollcall .o_desc,.o_lectures_rollcall .o_preparation{margin:0}.o_rollcall_next_previous_group{text-align:center}.o_rollcall_next_previous_group a.o_sel_close{float:left}.o_rollcall_next_previous_group a.o_sel_close span{display:none}.o_rollcall_next_previous_group .form-control{display:inline;width:auto}@media (max-width: 767px){.o_rollcall_next_previous_group a span{display:none}}.o_lecture_free{color:#777}.o_rollcall_portrait>div{margin:0 auto 10px auto;width:100px}.o_edubase_pv{overflow:hidden;padding-top:10px}.o_edubase_pv_fig{display:inline-block;vertical-align:top;width:110px;margin-right:3%}.o_edubase_run_enabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_run_disabled .o_edubase_booksection{margin-right:3%;margin-bottom:3%;width:177px;display:inline-table}.o_edubase_run_disabled .o_edubase_page{font-size:12px;color:#777}.o_edubase_bs_buttons{padding-top:10px}.o_edubase_bs_book_id{margin-top:-2px}.o_edubase_bs_details{margin-left:-20px}.o_edubase_bs_details_label{visibility:hidden}.o_edubase_bs_cover object{margin-left:10px;margin-top:10px;height:120px}.o_edubase_bs_cover img{margin-left:10px;margin-top:10px;height:120px}.o_edubase_edit_books .o_icon_error{visibility:hidden}.o_edubase_edit_books .o_icon_help{margin-bottom:0px}.o_edubase_edit_books .row{margin-bottom:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata_wrapper{margin-top:5px}.o_edusharing_container.o_in_iframe .edusharing_metadata.open{position:unset;margin:0;padding:0}.o_edusharing_container.o_in_iframe .edusharing_metadata.open:before{content:unset;border:unset;top:unset;position:unset;left:unset;width:unset;height:unset}.o_edusharing_container.o_hide_license .license{display:none}.o_edusharing_container.o_hide_infos .edusharing_metadata_wrapper{display:none}.o_edusharing_left{display:block;float:left;margin:5px 5px 5px 0}.o_edusharing_right{display:block;float:right;margin:5px 0 5px 5px}.o_edusharing_inline{display:inline-block;margin:0 5px}.o_edusharing_none{display:block;float:none;margin:5px 0}.eduContainer{width:180px;color:transparent}.edusharing_spinner_inner{width:30px;height:50px;display:inline-block}.edusharing_spinner1{background:url("../light/images/edusharing/hex1.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.1s;-moz-animation-delay:0.1s;animation-delay:0.1s}.edusharing_spinner2{background:url("../light/images/edusharing/hex2.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.25s;-moz-animation-delay:0.25s;animation-delay:0.25s}.edusharing_spinner3{background:url("../light/images/edusharing/hex3.svg");background-repeat:no-repeat;background-position:center;background-size:50px;width:50px;height:50px;-webkit-animation:spin 2s infinite ease-in;-moz-animation:spin 2s infinite ease-in;-ms-animation:spin 2s infinite ease-in;-o-animation:spin 2s infinite ease-in;animation:spin 2s infinite ease-in;-webkit-animation-delay:0.5s;-moz-animation-delay:0.5s;animation-delay:0.5s}@-webkit-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-moz-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-ms-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@-o-keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5)}100%{transform:scale(1)}}@keyframes spin{0%{transform:scale(1)}50%{transform:scale(0.5) rotate(90deg)}100%{transform:scale(1)}}body.o_doceditor_body{margin-bottom:0px}body.o_doceditor_body .o_container_offcanvas{max-width:100%}body.o_doceditor_body .container-fluid{padding-left:0px;padding-right:0px;margin-left:0px;margin-right:0px}body.o_doceditor_body #o_toplink{display:none}.o_doceditor{margin-top:10px}.o_doceditor .o_doceditor_config .nav button{margin-top:3px}.o_doceditor .navbar-collapse{border-top:0 !important}.o_doceditor .navbar-collapse.collapse{display:block !important}.o_doceditor .navbar-nav{margin:0}.o_doceditor .navbar-nav>li,.o_doceditor .navbar-nav{float:left !important}.o_doceditor .navbar-right{float:right !important}.o_doceditor .navbar-nav>li>.dropdown-menu{background-color:#f8f8f8;border-color:#e7e7e7;position:absolute;right:0;left:auto}.o_doceditor .navbar-nav>li>a{padding-top:10px !important;padding-bottom:10px !important;line-height:20px !important}.o_doceditor .o_collabora iframe,.o_doceditor .o_onlyoffice iframe,.o_doceditor .o_office365 iframe{width:100%;height:calc(100vh - 61px);height:calc(var(--doceditorvh, 1vh) * 100 - 61px);margin-top:10px;border-width:0px}.o_doceditor.o_web_document .o_collabora iframe,.o_doceditor.o_web_document .o_onlyoffice iframe,.o_doceditor.o_web_document .o_office365 iframe{width:100%;height:calc(100vh - 321px);height:calc(var(--doceditorvh, 1vh) * 100 - 321px);margin-top:10px;margin-bottom:10px;border-width:1px}.o_doceditor.o_web_document_edit .o_collabora iframe,.o_doceditor.o_web_document_edit .o_onlyoffice iframe,.o_doceditor.o_web_document_edit .o_office365 iframe{width:100%;height:calc(100vh - 276px);height:calc(var(--doceditorvh, 1vh) * 100 - 276px);margin-top:10px;margin-bottom:25px;border-width:1px}.o_doceditor .o_file_editor,.o_doceditor .o_doceditor_data_transfer{margin-right:15px;margin-left:15px}.o_web_content .o_doceditor{margin-top:0px}.o_taxonomy div#o_main_toolbar.o_toolbar{margin-top:0px}.o_taxonomy_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row{position:relative;display:inline-block;height:225px;width:450px;vertical-align:top;margin-right:10px}.o_taxonomy_listing.o_rendertype_custom .o_taxonomy_row ul{padding-left:2em}.ui-widget{font-family:Roboto,"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#342c24;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui{max-width:100vw;max-height:100vh}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}@media (max-width: 767px){.ui-dialog.o_modal-ui{height:100vh !important;width:100vw !important}.ui-dialog.o_modal-ui div.ui-dialog-content{height:90vh !important}}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#aaa;background:#f9f9f9}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #209d9e;background-image:none;background-color:#209d9e}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:3px solid #209d9e;background-image:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #1c8889;background:#209d9e;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}.o_richtext_mce>.o_richtext_mce_modes{text-align:right;padding-right:4px}.o_richtext_mce>.o_richtext_mce_modes a{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}.mce-wordcount:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0);content:"ï™"}.mce-danger .mce-wordcount:after{color:#d6001c;content:"ïª"}.mce-statusbar.mce-danger{background-color:#f2dede}.mce-textbox.mce-danger{border-color:#ce8383;background-color:#f2dede}@media (max-width: 470px){.mce-foot .mce-container-body.mce-abs-layout{left:-337px}}div.o_table_search>span.twitter-typeahead{padding-top:5px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_segments,.o_table_toolbar,.o_breadcrumb,.o_bookmark,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_container_offcanvas{max-width:100%;margin-left:5px;margin-right:5px}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.o_print_break_after{clear:both;page-break-after:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-content{border:0}.modal-header{display:none}.modal-body{padding:0}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.ui-slider.ui-slider-horizontal.ui-widget-content{-webkit-print-color-adjust:exact;color-adjust:exact;background:#f9f9f9 !important}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{-webkit-print-color-adjust:exact;color-adjust:exact}.o_has_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{background-color:#209d9e !important}.o_no_value.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:none !important}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}.radial-progress .inset .bgIcon{opacity:0.3;transition:opacity 0.3}.radial-progress .inset .bgIcon:before,.radial-progress .inset .o_icon_progress_danger:before,.radial-progress .inset .o_icon_progress_success:before{opacity:0.3;transition:opacity 0.3;color:#777 !important}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:0.3;transition:opacity 0.3;color:#777 !important}body{margin:0;zoom:0.6}table,figure,figure{page-break-inside:avoid}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6{page-break-after:avoid}.o_disclaimer .o_disclaimer_content{max-height:none}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#209d9e}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#29c7c8}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}.o_navbar-brand{background-image:url("images/OpenOlat_Logo_RGB.svg");background-position:-35px -62px;background-size:250px;background-repeat:no-repeat;height:50px;width:60px}#o_print_brand .o_navbar-brand{background-image:url("images/OpenOlat_Logo_RGB.svg")}.o_cmembers_print #o_print_brand{width:5cm}#o_body.o_dmz .o_navbar-brand{display:none}#o_body.o_dmz .o_login .o_login_intro{position:relative;text-align:center}#o_body.o_dmz .o_login .o_login_intro:before{content:' ';display:inline-block;background-image:url("images/OpenOlat_Logo_claim_RGB.svg");background-repeat:no-repeat;background-position:0px -110px;background-size:100%;width:400px;max-width:100%;height:90px}#o_body.o_dmz .o_login .o_login_intro h1{display:none}@media (min-width: 767px){#o_body.o_dmz #o_bg{background-position:top left;border-top:0;border-bottom:0}#o_body.o_dmz #o_navbar_wrapper{border:0}#o_body.o_dmz .o_login{background:rgba(255,255,255,0.8);width:480px;left:10%;padding:40px;border-radius:20px;position:relative}#o_body.o_dmz .o_login .o_login_intro{padding-top:120px}#o_body.o_dmz .o_login .o_login_intro:before{position:absolute;top:0;left:-25px;background-position:-40px -150px;background-size:510px;width:460px;height:110px}#o_body.o_dmz .o_infomessage_wrapper{background:rgba(255,255,255,0.8);left:500px;width:400px;top:-30px;width:400xp;position:absolute;border-radius:20px}#o_body.o_dmz #o_navbar_wrapper{background:transparent}#o_body.o_dmz .o_navbar-nav>li>a,#o_body.o_dmz #o_footer_wrapper a{color:#FFF}#o_body.o_dmz .o_navbar-nav>li>a:hover,#o_body.o_dmz #o_footer_wrapper a:hover{background-color:transparent}#o_body.o_dmz #o_footer_wrapper{background:linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.2) 40%, rgba(0,0,0,0.5) 100%);border:0;height:100px;padding-top:30px}#o_body.o_dmz #o_footer_container{background:transparent;color:#FFF}#o_body.o_dmz #o_share_social_container a{color:#209d9e}#o_body.o_dmz #o_share_social_container a:hover{color:#177374}}#o_footer_wrapper{border-top:1px solid #e6e6e6} /*# sourceMappingURL=theme.css.map */ diff --git a/src/main/webapp/static/themes/openolat/theme.css.map b/src/main/webapp/static/themes/openolat/theme.css.map index d36b8bfd458d247901939d446c578d1ada6ebd81..4eb9247c54db51f27cbdec60603956323afd1218 100644 --- a/src/main/webapp/static/themes/openolat/theme.css.map +++ b/src/main/webapp/static/themes/openolat/theme.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["fonts/_fonts.scss","../light/_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","../light/modules/_bootstrap.scss","../light/modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","../light/modules/_icons.scss","_openolat_config.scss","../light/modules/_emoticons.scss","../light/modules/_helpers.scss","../light/modules/_type.scss","../light/modules/_content_embedded.scss","../light/modules/_mixins.scss","../light/modules/_tinymce.scss","../light/modules/_radial-progress.scss","../light/modules/_layout.scss","../light/modules/_main.scss","../light/modules/_footer.scss","../light/modules/_navbar.scss","../light/modules/_toolbar.scss","../light/modules/_offcanvas.scss","../light/modules/_dialog.scss","../light/modules/_tree.scss","../light/modules/_breadcrumb.scss","../light/modules/_form.scss","../light/modules/_table.scss","../light/modules/_im.scss","../light/modules/_flags.scss","../light/modules/_rating_and_comments.scss","../light/modules/_chart.scss","../light/modules/_forum.scss","../light/modules/_various_modules.scss","../light/modules/_autocomplete.scss","../light/modules/_search.scss","../light/modules/_wizard.scss","../light/modules/_process.scss","../light/modules/_cal.scss","../light/modules/_pagecontenteditor.scss","../light/modules/_coursesite.scss","../light/modules/_repository.scss","../light/modules/_course.scss","../light/modules/_curriculum.scss","../light/modules/_qti.scss","../light/modules/_qti21.scss","../light/modules/_devel.scss","../light/modules/_wiki.scss","../light/modules/_portfolio.scss","../light/modules/_portfoliomaps/_epmst_default.scss","../light/modules/_portfoliomaps/_mixins.scss","../light/modules/_portfoliomaps/_epmst_comic.scss","../light/modules/_portfoliomaps/_epmst_leather.scss","../light/modules/_portfoliomaps/_epmst_green.scss","../light/modules/_portfoliomaps/_epmst_green2.scss","../light/modules/_portfoliomaps/_epmst_green3.scss","../light/modules/_portfoliomaps/_epmst_green4.scss","../light/modules/_portfoliomaps/_epmst_red.scss","../light/modules/_portfoliomaps/_epmst_red2.scss","../light/modules/_portfoliomaps/_epmst_red3.scss","../light/modules/_portfoliomaps/_epmst_red4.scss","../light/modules/_portfoliomaps/_epmst_blue.scss","../light/modules/_portfoliomaps/_epmst_blue2.scss","../light/modules/_portfoliomaps/_epmst_blue3.scss","../light/modules/_portfoliomaps/_epmst_blue4.scss","../light/modules/_portfolio_v2.scss","../light/modules/_evaluation_form.scss","../light/modules/_quality.scss","../light/modules/_citation.scss","../light/modules/_video.scss","../light/modules/_admin.scss","../light/modules/_qpool.scss","../light/modules/_dmz.scss","../light/modules/_portal.scss","../light/modules/_library.scss","../light/modules/_translationtool.scss","../light/modules/_user.scss","../light/modules/_members.scss","../light/modules/_grouptask.scss","../light/modules/_lecture.scss","../light/modules/_edubase.scss","../light/modules/_edusharing.scss","../light/modules/_doceditor.scss","../light/modules/_taxonomy.scss","../light/modules/_thirdparty.scss","../light/modules/_print.scss","../light/modules/_highscore.scss","_openolat_theme.scss"], "names": [], "file": "theme.css" diff --git a/src/test/java/org/olat/course/nodes/gta/manager/GTATaskRevisionDAOTest.java b/src/test/java/org/olat/course/nodes/gta/manager/GTATaskRevisionDAOTest.java index cd4c1db9bf5d887a5ea5e190bd8bd0a984070f08..67485180064c1b5d4b4a99f935f39af06c879c31 100644 --- a/src/test/java/org/olat/course/nodes/gta/manager/GTATaskRevisionDAOTest.java +++ b/src/test/java/org/olat/course/nodes/gta/manager/GTATaskRevisionDAOTest.java @@ -1,3 +1,22 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ package org.olat.course.nodes.gta.manager; import java.io.File; diff --git a/src/test/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAOTest.java b/src/test/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAOTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ce47808ec6d166fdbe8d69be77b26e5096a08640 --- /dev/null +++ b/src/test/java/org/olat/course/nodes/livestream/manager/LiveStreamStatisticDAOTest.java @@ -0,0 +1,89 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.livestream.manager; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.olat.test.JunitTestHelper.random; + +import java.util.Date; +import java.util.GregorianCalendar; + +import org.junit.Test; +import org.olat.core.commons.persistence.DB; +import org.olat.core.logging.activity.LoggingObject; +import org.olat.test.OlatTestCase; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 17 Dec 2019<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class LiveStreamStatisticDAOTest extends OlatTestCase { + + @Autowired + private LiveStreamStatisticDAO sut; + @Autowired + private DB dbInstance; + + @Test + public void shouldGetViewers() { + Long userKey1 = 132L; + Long userKey2 = 1324L; + Long userKeyOther = 13245L; + String courseResId = "courseResId"; + String nodeIdent = "nodeIdent"; + Date before = new GregorianCalendar(2010, 2, 8).getTime(); + Date from = new GregorianCalendar(2010, 2, 9).getTime(); + Date inside = new GregorianCalendar(2010, 2, 10).getTime(); + Date to = new GregorianCalendar(2010, 2, 11).getTime(); + Date after = new GregorianCalendar(2010, 2, 12).getTime(); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKey1, inside); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKey1, inside); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKey1, inside); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKey2, inside); + // These log entries should have all wrong parameters. So userKeyOther should not be a viewer. + createLoggingObject("OTHER", courseResId, "livestream", nodeIdent, userKeyOther, inside); + createLoggingObject("launch", "OTHER", "livestream", nodeIdent, userKeyOther, inside); + createLoggingObject("launch", courseResId, "OTHER", nodeIdent, userKeyOther, inside); + createLoggingObject("launch", courseResId, "livestream", "OTHER", userKeyOther, inside); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKeyOther, before); + createLoggingObject("launch", courseResId, "livestream", nodeIdent, userKeyOther, after); + dbInstance.commitAndCloseSession(); + + Long viewers = sut.getViewers(courseResId, nodeIdent, from, to); + + assertThat(viewers).isEqualTo(2); + } + + private void createLoggingObject(String actionVerb, String parentResId, String targetResType, String targetResId, + Long identityKey, Date creationDate) { + LoggingObject logObj = new LoggingObject(random(), identityKey, "r", actionVerb, "node"); + logObj.setCreationDate(creationDate); + logObj.setParentResId(parentResId); + logObj.setTargetResType(targetResType); + logObj.setTargetResId(targetResId); + logObj.setResourceAdminAction(Boolean.TRUE); + dbInstance.saveObject(logObj); + } + + +} diff --git a/src/test/java/org/olat/ims/qti21/model/xml/AssessmentItemBuilderTest.java b/src/test/java/org/olat/ims/qti21/model/xml/AssessmentItemBuilderTest.java index a1d3b566a1be5374be8e62816880e652254e59d4..b8003a4b0333d6b53d006f0da049d3f5186aee72 100644 --- a/src/test/java/org/olat/ims/qti21/model/xml/AssessmentItemBuilderTest.java +++ b/src/test/java/org/olat/ims/qti21/model/xml/AssessmentItemBuilderTest.java @@ -179,7 +179,7 @@ public class AssessmentItemBuilderTest { } @Test - public void buildAssessmentItem_gap() throws IOException, URISyntaxException { + public void buildAssessmentItem_textEntry() throws IOException, URISyntaxException { QtiSerializer qtiSerializer = new QtiSerializer(new JqtiExtensionManager()); FIBAssessmentItemBuilder itemBuilder = new FIBAssessmentItemBuilder("Gap text", EntryType.text, qtiSerializer); if(build.booleanValue()) { @@ -257,7 +257,7 @@ public class AssessmentItemBuilderTest { * @return * @throws IOException */ - private ItemValidationResult serializeAndReload(AssessmentItem assessmentItem) throws IOException { + protected static ItemValidationResult serializeAndReload(AssessmentItem assessmentItem) throws IOException { QtiSerializer qtiSerializer = new QtiSerializer(new JqtiExtensionManager()); File tmpDir = new File(WebappHelper.getTmpDir(), "itembuilder" + UUID.randomUUID()); tmpDir.mkdirs(); @@ -287,7 +287,7 @@ public class AssessmentItemBuilderTest { return itemResult; } - private AssessmentItem loadAssessmentItem(URL itemUrl) throws URISyntaxException { + protected static AssessmentItem loadAssessmentItem(URL itemUrl) throws URISyntaxException { QtiXmlReader qtiXmlReader = new QtiXmlReader(new JqtiExtensionManager()); ResourceLocator fileResourceLocator = new PathResourceLocator(Paths.get(itemUrl.toURI())); AssessmentObjectXmlLoader assessmentObjectXmlLoader = new AssessmentObjectXmlLoader(qtiXmlReader, fileResourceLocator); diff --git a/src/test/java/org/olat/ims/qti21/model/xml/FIBAssessmentItemBuilderTest.java b/src/test/java/org/olat/ims/qti21/model/xml/FIBAssessmentItemBuilderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5b2af68d3828acaf29455239add81fd8c7494bfd --- /dev/null +++ b/src/test/java/org/olat/ims/qti21/model/xml/FIBAssessmentItemBuilderTest.java @@ -0,0 +1,321 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.model.xml; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.apache.logging.log4j.Logger; +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.logging.Tracing; +import org.olat.core.util.FileUtils; +import org.olat.core.util.WebappHelper; +import org.olat.ims.qti21.QTI21Constants; +import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder; +import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.EntryType; +import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntry; +import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntryAlternative; +import org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation; + +import uk.ac.ed.ph.jqtiplus.JqtiExtensionManager; +import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; +import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; +import uk.ac.ed.ph.jqtiplus.running.ItemSessionController; +import uk.ac.ed.ph.jqtiplus.serialization.QtiSerializer; +import uk.ac.ed.ph.jqtiplus.types.Identifier; +import uk.ac.ed.ph.jqtiplus.types.ResponseData; +import uk.ac.ed.ph.jqtiplus.types.StringResponseData; +import uk.ac.ed.ph.jqtiplus.validation.ItemValidationResult; +import uk.ac.ed.ph.jqtiplus.value.FloatValue; +import uk.ac.ed.ph.jqtiplus.value.Value; + +/** + * + * Initial date: 13 déc. 2019<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class FIBAssessmentItemBuilderTest { + + private static final Logger log = Tracing.createLoggerFor(FIBAssessmentItemBuilderTest.class); + + @Test + public void createTextEntry_text_duplicatesForbidden_scoreAll() throws IOException { + QtiSerializer qtiSerializer = new QtiSerializer(new JqtiExtensionManager()); + FIBAssessmentItemBuilder itemBuilder = new FIBAssessmentItemBuilder("Only texts", EntryType.text, qtiSerializer); + + List<TextEntryAlternative> entryAlternatives = toAlternatives(1.0d, "Berset", "Sommaruga", "Cassis"); + + String responseIdentifier1 = itemBuilder.generateResponseIdentifier(); + TextEntry entry1 = itemBuilder.createTextEntry(responseIdentifier1); + entry1.setAlternatives(entryAlternatives); + entry1.setSolution("Sommaruga"); + entry1.setScore(1.0d); + + String responseIdentifier2 = itemBuilder.generateResponseIdentifier(); + TextEntry entry2 = itemBuilder.createTextEntry(responseIdentifier2); + entry2.setAlternatives(entryAlternatives); + entry2.setSolution("Berset"); + entry2.setScore(1.0d); + + itemBuilder.setQuestion("<p>New text <textEntryInteraction responseIdentifier=\"" + responseIdentifier1 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/> <textEntryInteraction responseIdentifier=\"" + responseIdentifier2 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/></p>"); + itemBuilder.setMinScore(0.0d); + itemBuilder.setMaxScore(2.0d); + itemBuilder.setAllowDuplicatedAnswers(false); + itemBuilder.setScoreEvaluationMode(ScoreEvaluation.allCorrectAnswers); + itemBuilder.build(); + + ItemValidationResult itemResult = AssessmentItemBuilderTest.serializeAndReload(itemBuilder.getAssessmentItem()); + AssessmentItem reloadedItem = itemResult.getResolvedAssessmentItem().getItemLookup().extractIfSuccessful(); + List<Interaction> interactions = reloadedItem.getItemBody().findInteractions(); + Assert.assertEquals(2, interactions.size()); + + + File itemFile = new File(WebappHelper.getTmpDir(), "fibAssessmentItem" + UUID.randomUUID() + ".xml"); + try(FileOutputStream out = new FileOutputStream(itemFile)) { + qtiSerializer.serializeJqtiObject(itemBuilder.getAssessmentItem(), out); + } catch(Exception e) { + log.error("", e); + } + + {// correct answers + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Sommaruga")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Berset")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(2.0d), score); + } + + {// twice same answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Sommaruga")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Sommaruga")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(0.0d), score); + } + + {// wrong answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Werner")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Johnatan")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(0.0d), score); + } + + FileUtils.deleteDirsAndFiles(itemFile.toPath()); + } + + + @Test + public void createTextEntry_text_duplicatesForbidden_scorePerAnswers() throws IOException { + QtiSerializer qtiSerializer = new QtiSerializer(new JqtiExtensionManager()); + FIBAssessmentItemBuilder itemBuilder = new FIBAssessmentItemBuilder("Only texts", EntryType.text, qtiSerializer); + + List<TextEntryAlternative> entryAlternatives = toAlternatives(1.0d, "Jupiter", "Saturne", "Uranus", "Neptune"); + + String responseIdentifier1 = itemBuilder.generateResponseIdentifier(); + TextEntry entry1 = itemBuilder.createTextEntry(responseIdentifier1); + entry1.setAlternatives(entryAlternatives); + entry1.setSolution("Jupiter"); + entry1.setScore(1.0d); + + String responseIdentifier2 = itemBuilder.generateResponseIdentifier(); + TextEntry entry2 = itemBuilder.createTextEntry(responseIdentifier2); + entry2.setAlternatives(entryAlternatives); + entry2.setSolution("Saturne"); + entry2.setScore(1.0d); + + String responseIdentifier3 = itemBuilder.generateResponseIdentifier(); + TextEntry entry3 = itemBuilder.createTextEntry(responseIdentifier3); + entry3.setAlternatives(entryAlternatives); + entry3.setSolution("Uranus"); + entry3.setScore(1.0d); + + itemBuilder.setQuestion("<p>Plan\u00E8te <textEntryInteraction responseIdentifier=\"" + responseIdentifier1 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/> <textEntryInteraction responseIdentifier=\"" + responseIdentifier2 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/> <textEntryInteraction responseIdentifier=\"" + responseIdentifier3 + "\"/></p>"); + itemBuilder.setMinScore(0.0d); + itemBuilder.setMaxScore(3.0d); + itemBuilder.setAllowDuplicatedAnswers(false); + itemBuilder.setScoreEvaluationMode(ScoreEvaluation.perAnswer); + itemBuilder.build(); + + ItemValidationResult itemResult = AssessmentItemBuilderTest.serializeAndReload(itemBuilder.getAssessmentItem()); + AssessmentItem reloadedItem = itemResult.getResolvedAssessmentItem().getItemLookup().extractIfSuccessful(); + List<Interaction> interactions = reloadedItem.getItemBody().findInteractions(); + Assert.assertEquals(3, interactions.size()); + + File itemFile = new File(WebappHelper.getTmpDir(), "fibAssessmentItem" + UUID.randomUUID() + ".xml"); + try(FileOutputStream out = new FileOutputStream(itemFile)) { + qtiSerializer.serializeJqtiObject(itemBuilder.getAssessmentItem(), out); + } catch(Exception e) { + log.error("", e); + } + + {// correct answers + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Saturne")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("uranus")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(3.0d), score); + } + + {// twice the same answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Saturne")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("Jupiter")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(2.0d), score); + } + + {// 3x the same answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("Jupiter")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(1.0d), score); + } + + {// wrong answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Ceres")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Terre")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(0.0d), score); + } + + FileUtils.deleteDirsAndFiles(itemFile.toPath()); + } + + @Test + public void createTextEntry_text_duplicatesForbidden_nothingShared_scorePerAnswers() throws IOException { + QtiSerializer qtiSerializer = new QtiSerializer(new JqtiExtensionManager()); + FIBAssessmentItemBuilder itemBuilder = new FIBAssessmentItemBuilder("Only texts", EntryType.text, qtiSerializer); + + List<TextEntryAlternative> bigAlternatives = toAlternatives(1.0, "Jupiter", "Saturne", "Uranus", "Neptune"); + String responseIdentifier1 = itemBuilder.generateResponseIdentifier(); + TextEntry entry1 = itemBuilder.createTextEntry(responseIdentifier1); + entry1.setAlternatives(bigAlternatives); + entry1.setSolution("Jupiter"); + entry1.setScore(1.0d); + + List<TextEntryAlternative> smallAlternatives = toAlternatives(1.0, "Terre", "Mercure", "Mars", "Venus"); + String responseIdentifier2 = itemBuilder.generateResponseIdentifier(); + TextEntry entry2 = itemBuilder.createTextEntry(responseIdentifier2); + entry2.setAlternatives(smallAlternatives); + entry2.setSolution("Terre"); + entry2.setScore(1.0d); + + List<TextEntryAlternative> verySmallAlternatives = toAlternatives(1.0, "Pluton", "Ceres"); + String responseIdentifier3 = itemBuilder.generateResponseIdentifier(); + TextEntry entry3 = itemBuilder.createTextEntry(responseIdentifier3); + entry3.setAlternatives(verySmallAlternatives); + entry3.setSolution("Pluton"); + entry3.setScore(1.0d); + + itemBuilder.setQuestion("<p>Plan\u00E8te <textEntryInteraction responseIdentifier=\"" + responseIdentifier1 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/> <textEntryInteraction responseIdentifier=\"" + responseIdentifier2 + "\" data-qti-solution=\"gap\" openolatType=\"string\"/> <textEntryInteraction responseIdentifier=\"" + responseIdentifier3 + "\"/></p>"); + itemBuilder.setMinScore(0.0d); + itemBuilder.setMaxScore(3.0d); + itemBuilder.setAllowDuplicatedAnswers(false); + itemBuilder.setScoreEvaluationMode(ScoreEvaluation.perAnswer); + itemBuilder.build(); + + ItemValidationResult itemResult = AssessmentItemBuilderTest.serializeAndReload(itemBuilder.getAssessmentItem()); + AssessmentItem reloadedItem = itemResult.getResolvedAssessmentItem().getItemLookup().extractIfSuccessful(); + List<Interaction> interactions = reloadedItem.getItemBody().findInteractions(); + Assert.assertEquals(3, interactions.size()); + + File itemFile = new File(WebappHelper.getTmpDir(), "fibAssessmentItem" + UUID.randomUUID() + ".xml"); + try(FileOutputStream out = new FileOutputStream(itemFile)) { + qtiSerializer.serializeJqtiObject(itemBuilder.getAssessmentItem(), out); + } catch(Exception e) { + log.error("", e); + } + + {// correct answers + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Mars")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("Ceres")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(3.0d), score); + } + + {// twice the same answer, second is wrong + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("Ceres")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(2.0d), score); + } + + {// 3x the same answer, two are wrong + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Jupiter")); + responseMap.put(Identifier.parseString(responseIdentifier3), new StringResponseData("Jupiter")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(1.0d), score); + } + + {// wrong answer + Map<Identifier, ResponseData> responseMap = new HashMap<>(); + responseMap.put(Identifier.parseString(responseIdentifier1), new StringResponseData("Ceres")); + responseMap.put(Identifier.parseString(responseIdentifier2), new StringResponseData("Jupiter")); + ItemSessionController itemSessionController = RunningItemHelper.run(itemFile, responseMap); + Value score = itemSessionController.getItemSessionState().getOutcomeValue(QTI21Constants.SCORE_IDENTIFIER); + Assert.assertEquals(new FloatValue(0.0d), score); + } + + FileUtils.deleteDirsAndFiles(itemFile.toPath()); + } + + private List<TextEntryAlternative> toAlternatives(double score, String... strings) { + List<TextEntryAlternative> entryAlternatives = new ArrayList<>(); + for(String string:strings) { + TextEntryAlternative alternative = new TextEntryAlternative(); + alternative.setAlternative(string); + alternative.setScore(score); + entryAlternatives.add(alternative); + } + return entryAlternatives; + } + + +} diff --git a/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java b/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java index 007d1181eefc16cd8643f3d3e46e54be730e53f2..fba4312069f2806fdf9bafe6ea3f3dd19e3261e6 100644 --- a/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java +++ b/src/test/java/org/olat/modules/forms/manager/RubricStatisticCalculatorTest.java @@ -201,6 +201,35 @@ public class RubricStatisticCalculatorTest { assertThat(variance).isEqualTo(1.5); } + @Test + public void shouldCalculateSliderVarianceOfTwoResponses() { + ScaleType scaleType = ScaleType.oneToMax; + StepCountsBuilder stepCountsBuilder = StepCountsBuilder.builder(4); + stepCountsBuilder.withCount(1, Long.valueOf(1)); + stepCountsBuilder.withCount(2, Long.valueOf(1)); + stepCountsBuilder.withCount(3, Long.valueOf(0)); + stepCountsBuilder.withCount(4, Long.valueOf(0)); + SumMean sumMean = sut.getSumMean(stepCountsBuilder.build(), scaleType); + + Double variance = sut.getVariance(stepCountsBuilder.build(), scaleType, sumMean.getMean()); + + assertThat(variance).isEqualTo(0.5); + } + @Test + public void shouldCalculateSliderVarianceOfOneResponse() { + ScaleType scaleType = ScaleType.oneToMax; + StepCountsBuilder stepCountsBuilder = StepCountsBuilder.builder(4); + stepCountsBuilder.withCount(1, Long.valueOf(1)); + stepCountsBuilder.withCount(2, Long.valueOf(0)); + stepCountsBuilder.withCount(3, Long.valueOf(0)); + stepCountsBuilder.withCount(4, Long.valueOf(0)); + SumMean sumMean = sut.getSumMean(stepCountsBuilder.build(), scaleType); + + Double variance = sut.getVariance(stepCountsBuilder.build(), scaleType, sumMean.getMean()); + + assertThat(variance).isNull(); + } + @Test public void shouldCalculateSliderVarianceScaled() { ScaleType scaleType = ScaleType.zeroBallanced; diff --git a/src/test/java/org/olat/restapi/UserMgmtTest.java b/src/test/java/org/olat/restapi/UserMgmtTest.java index cc19f101a53fd185224ba9b28a0bfc91737ee6c4..20c3ffa96094b34a55440a96ce4ee4c6b532b236 100644 --- a/src/test/java/org/olat/restapi/UserMgmtTest.java +++ b/src/test/java/org/olat/restapi/UserMgmtTest.java @@ -58,6 +58,7 @@ import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.util.EntityUtils; +import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -75,7 +76,6 @@ import org.olat.core.id.Organisation; import org.olat.core.id.Roles; import org.olat.core.id.User; import org.olat.core.id.UserConstants; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; import org.olat.core.util.CodeHelper; import org.olat.core.util.nodes.INode; @@ -1172,7 +1172,6 @@ public class UserMgmtTest extends OlatRestTestCase { Identity prefsId = JunitTestHelper.createAndPersistIdentityAsAuthor("prefs-1-" + UUID.randomUUID().toString()); dbInstance.commitAndCloseSession(); prefsId.getUser().getPreferences().setLanguage("fr"); - prefsId.getUser().getPreferences().setFontsize("11"); userManager.updateUserFromIdentity(prefsId); dbInstance.commitAndCloseSession(); diff --git a/src/test/java/org/olat/selenium/CourseElementTest.java b/src/test/java/org/olat/selenium/CourseElementTest.java index f902503e84ebdbc48acd78804a45d77380c3dbe6..02f542a55d44d532a1d0b4410f8d355f5a788947 100644 --- a/src/test/java/org/olat/selenium/CourseElementTest.java +++ b/src/test/java/org/olat/selenium/CourseElementTest.java @@ -60,6 +60,8 @@ import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.repository.AuthoringEnvPage; import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType; +import org.olat.selenium.page.survey.SurveyEditorPage; +import org.olat.selenium.page.survey.SurveyPage; import org.olat.selenium.page.repository.FeedPage; import org.olat.selenium.page.repository.RepositoryEditDescriptionPage; import org.olat.selenium.page.repository.ScormPage; @@ -1787,4 +1789,129 @@ public class CourseElementTest extends Deployments { singlePage .assertInFile("handInTopic1.pdf"); } + + + /** + * An author creates a survey with a multiple choice + * and a single choice. He uses it in a course. A + * participant of the course participates to the + * survey. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void survey(@Drone @User WebDriver userBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createRandomAuthor(); + UserVO user = new UserRestClient(deploymentUrl).createRandomUser("Maximilien"); + LoginPage authorLoginPage = LoginPage.load(browser, deploymentUrl); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + //create a survey + String surveyTitle = "Survey-1-" + UUID.randomUUID(); + NavigationPage navBar = NavigationPage.load(browser); + navBar + .openAuthoringEnvironment() + .createSurvey(surveyTitle) + .assertOnInfos() + .clickToolbarBack(); + + SurveyPage survey = SurveyPage + .loadPage(browser); + SurveyEditorPage surveyEditor = survey + .edit(); + surveyEditor + .openElementsChooser() + .addTitle("My survey") + .setTitleSize(1) + .closeEditFragment() + .assertOnTitle("My survey", 1); + + surveyEditor + .openElementsChooser() + .addMultipleChoiceElement() + .addMultipleChoice("Jupiter", 2) + .addMultipleChoice("Saturn", 3) + .closeEditFragment(); + + surveyEditor + .openElementsChooser() + .addSingleChoiceElement() + .addSingleChoice("Mercury", 2) + .addSingleChoice("Venus", 3) + .closeEditFragment(); + + surveyEditor + .close(); + + //create a course + String courseTitle = "Course-With-Survey-" + UUID.randomUUID().toString(); + navBar + .openAuthoringEnvironment() + .createCourse(courseTitle) + .clickToolbarBack(); + + navBar.openCourse(courseTitle); + + String surveyNodeTitle = "SurveyNode-1"; + //create a course element of type CP with the CP that we create above + CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) + .edit(); + courseEditor + .createNode("survey") + .nodeTitle(surveyNodeTitle) + .selectTabLearnContent() + .chooseSurvey(surveyTitle); + + //publish the course + courseEditor + .publish() + .quickPublish(UserAccess.membersOnly); + + MembersPage membersPage = courseEditor + .clickToolbarBack() + .members(); + + membersPage + .importMembers() + .setMembers(user) + .nextUsers() + .nextOverview() + .nextPermissions() + .finish(); + + //open the course and see the survey + CoursePageFragment course = courseEditor + .clickToolbarBack(); + course + .clickTree() + .selectWithTitle(surveyNodeTitle); + + LoginPage userLoginPage = LoginPage.load(userBrowser, deploymentUrl); + userLoginPage + .loginAs(user.getLogin(), user.getPassword()) + .resume(); + + //open the course + NavigationPage userNavBar = NavigationPage.load(userBrowser); + userNavBar + .openMyCourses() + .select(courseTitle); + + //go to the group task + CoursePageFragment userCourse = new CoursePageFragment(userBrowser); + userCourse + .clickTree() + .selectWithTitle(surveyNodeTitle); + + SurveyPage userSurvey = SurveyPage.loadPage(userBrowser) + .assertOnSurvey(); + + userSurvey + .answerMultipleChoice("Saturn") + //.answerSingleChoice("Venus") + .saveAndCloseSurvey() + .assertOnSurveyClosed(); + } } diff --git a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java index 3000d79605502c72dd924aac8ddbdca3d2241c50..92b098797fe2c68592261c55fc50feaa6b591a57 100644 --- a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java @@ -50,6 +50,7 @@ public class CourseEditorPageFragment { public static final By chooseFeedButton = By.className("o_sel_feed_choose_repofile"); public static final By chooseScormButton = By.className("o_sel_scorm_choose_repofile"); public static final By choosePortfolioButton = By.className("o_sel_map_choose_repofile"); + public static final By chooseSurveyButton = By.className("o_sel_survey_choose_repofile"); public static final By changeNodeToolsMenu = By.cssSelector("ul.o_sel_course_editor_change_node"); public static final By changeNodeToolsMenuCaret = By.cssSelector("a.o_sel_course_editor_change_node"); @@ -64,6 +65,7 @@ public class CourseEditorPageFragment { chooseRepoEntriesButtonList.add(chooseFeedButton); chooseRepoEntriesButtonList.add(chooseScormButton); chooseRepoEntriesButtonList.add(choosePortfolioButton); + chooseRepoEntriesButtonList.add(chooseSurveyButton); } private WebDriver browser; @@ -299,7 +301,7 @@ public class CourseEditorPageFragment { /** * Open the tools drop-down - * @return + * @return Itself */ public CourseEditorPageFragment openChangeNodeToolsMenu() { browser.findElement(changeNodeToolsMenuCaret).click(); @@ -311,7 +313,7 @@ public class CourseEditorPageFragment { * Loop the tabs of the course element configuration to find * the one with a button to select a repository entry. * - * @return + * @return Itself */ public CourseEditorPageFragment selectTabLearnContent() { OOGraphene.selectTab("o_node_config", (b) -> { @@ -328,8 +330,8 @@ public class CourseEditorPageFragment { /** * @see chooseResource - * @param resourceTitle - * @return + * @param resourceTitle The title of the CP + * @return Itself */ public CourseEditorPageFragment chooseCP(String resourceTitle) { return chooseResource(chooseCpButton, resourceTitle); @@ -337,8 +339,8 @@ public class CourseEditorPageFragment { /** * @see chooseResource - * @param resourceTitle - * @return + * @param resourceTitle The title of the wiki + * @return Itself */ public CourseEditorPageFragment chooseWiki(String resourceTitle) { return chooseResource(chooseWikiButton, resourceTitle); @@ -346,8 +348,17 @@ public class CourseEditorPageFragment { /** * @see chooseResource - * @param resourceTitle - * @return + * @param resourceTitle The title of the survey + * @return Itself + */ + public CourseEditorPageFragment chooseSurvey(String resourceTitle) { + return chooseResource(chooseSurveyButton, resourceTitle); + } + + /** + * @see chooseResource + * @param resourceTitle The title of the test + * @return Itself */ public CourseEditorPageFragment chooseTest(String resourceTitle) { return chooseResource(chooseTestButton, resourceTitle); @@ -355,8 +366,8 @@ public class CourseEditorPageFragment { /** * @see chooseResource - * @param resourceTitle - * @return + * @param resourceTitle The title of the SCORM + * @return Itself */ public CourseEditorPageFragment chooseScorm(String resourceTitle) { return chooseResource(chooseScormButton, resourceTitle); diff --git a/src/test/java/org/olat/selenium/page/course/SinglePageConfigurationPage.java b/src/test/java/org/olat/selenium/page/course/SinglePageConfigurationPage.java index 59885458b7bab96cac27dc909f920b5820454003..771054695b9ea46103ea046013b2f89eaddaf698 100644 --- a/src/test/java/org/olat/selenium/page/course/SinglePageConfigurationPage.java +++ b/src/test/java/org/olat/selenium/page/course/SinglePageConfigurationPage.java @@ -78,6 +78,7 @@ public class SinglePageConfigurationPage { By inputBy = By.cssSelector(".modal-body .o_fileinput input[type='file']"); OOGraphene.uploadFile(inputBy, file, browser); + OOGraphene.waitBusy(browser); By uploadBy = By.cssSelector(".modal-body .o_sel_upload_buttons button.btn-primary"); OOGraphene.waitElement(uploadBy, browser); diff --git a/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java b/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java index b086df2277d99de350d40c520c362003403ad9f4..540c60900bf140bab40d4257b5e5e28461d41b4d 100644 --- a/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java +++ b/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java @@ -75,6 +75,12 @@ public class AuthoringEnvPage { .fillCreateForm(title); } + public RepositorySettingsPage createSurvey(String title) { + return openCreateDropDown() + .clickCreate(ResourceType.survey) + .fillCreateForm(title); + } + public CourseSettingsPage createCourse(String title) { openCreateDropDown() .clickCreate(ResourceType.course) @@ -239,7 +245,8 @@ public class AuthoringEnvPage { cp("FileResource.IMSCP"), wiki("FileResource.WIKI"), portfolio("BinderTemplate"), - qti21Test("FileResource.IMSQTI21"); + qti21Test("FileResource.IMSQTI21"), + survey("FileResource.FORM"); private final String type; diff --git a/src/test/java/org/olat/selenium/page/survey/SurveyEditorPage.java b/src/test/java/org/olat/selenium/page/survey/SurveyEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..8ca6ab1f599603af647a6bd4b89d652310f123ef --- /dev/null +++ b/src/test/java/org/olat/selenium/page/survey/SurveyEditorPage.java @@ -0,0 +1,161 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.survey; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 27 nov. 2019<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SurveyEditorPage { + + protected final By editFragmentBy = By.cssSelector("div.o_page_fragment_edit"); + + private final WebDriver browser; + + public SurveyEditorPage(WebDriver browser) { + this.browser = browser; + } + + public SurveyEditorPage openElementsChooser() { + By addBy = By.cssSelector("a.btn.o_sel_add_element_main"); + OOGraphene.waitElement(addBy, browser); + browser.findElement(addBy).click(); + OOGraphene.waitBusy(browser); + By addCalloutBy = By.cssSelector("div.popover div.o_sel_add_element_callout"); + OOGraphene.waitElement(addCalloutBy, browser); + return this; + } + + public SurveyPage close() { + OOGraphene.scrollTop(browser); + OOGraphene.clickBreadcrumbBack(browser); + return new SurveyPage(browser); + } + + /** + * Close the fragment editor. + * + * @return Itself + */ + public SurveyEditorPage closeEditFragment() { + OOGraphene.waitingALittleLonger(); + By closeBy = By.cssSelector("div.o_page_others_above>a.o_sel_save_element>span"); + OOGraphene.waitElement(closeBy, browser); + browser.findElement(closeBy).click(); + OOGraphene.waitBusy(browser); + + By pageEditBy = By.cssSelector("div.o_page_part>div.o_page_fragment_edit>div.o_page_edit"); + OOGraphene.waitElementDisappears(pageEditBy, 5, browser); + OOGraphene.waitingALittleLonger(); + return this; + } + + public SurveyEditorPage addTitle(String title) { + By addTitleBy = By.cssSelector("a#o_coadd_el_formhtitle"); + browser.findElement(addTitleBy).click(); + OOGraphene.waitElement(editFragmentBy, browser); + OOGraphene.tinymce(title, ".o_page_part.o_page_edit", browser); + return this; + } + + /** + * Change the size of the title. + * + * @param size A value between 1 and 6 + * @return + */ + public SurveyEditorPage setTitleSize(int size) { + By titleSize = By.xpath("//div[contains(@class,'o_page_edit_toolbar')]//a[span[contains(text(),'h" + size + "')]]"); + browser.findElement(titleSize).click(); + OOGraphene.waitBusy(browser); + return this; + } + + /** + * Check that the title is on the page with the right size. + * + * @param title The title + * @param size Its size (between 1 and 6) + * @return Itself + */ + public SurveyEditorPage assertOnTitle(String title, int size) { + By titleBy = By.xpath("//div[contains(@class,'o_page_content_editor')]//h" + size + "[contains(text(),'" + title + "')]"); + OOGraphene.waitElement(titleBy, browser); + return this; + } + + public SurveyEditorPage addRubricElement() { + By addTitleBy = By.cssSelector("a#o_coadd_el_formrubric"); + browser.findElement(addTitleBy).click(); + OOGraphene.waitElement(editFragmentBy, browser); + return this; + } + + public SurveyEditorPage addSingleChoiceElement() { + By addTitleBy = By.cssSelector("a#o_coadd_el_formsinglechoice"); + browser.findElement(addTitleBy).click(); + OOGraphene.waitElement(editFragmentBy, browser); + return this; + } + + public SurveyEditorPage addSingleChoice(String choice, int pos) { + return addChoice(choice, pos, "o_sel_add_single_choice"); + } + + public SurveyEditorPage addMultipleChoiceElement() { + By addTitleBy = By.cssSelector("a#o_coadd_el_formmultiplechoice"); + browser.findElement(addTitleBy).click(); + OOGraphene.waitElement(editFragmentBy, browser); + return this; + } + + public SurveyEditorPage addMultipleChoice(String choice, int pos) { + return addChoice(choice, pos, "o_sel_add_multiple_choice"); + } + + private SurveyEditorPage addChoice(String choice, int pos, String buttonClass) { + By addButtonBy = By.xpath("//div[contains(@class,'o_evaluation_editor_form')]//a[contains(@class,'btn')][contains(@class,'" + buttonClass + "')]/span"); + OOGraphene.waitElement(addButtonBy, browser); + browser.findElement(addButtonBy).click(); + if(pos > 2) {// why oh why + OOGraphene.waitingALittleBit(); + browser.findElement(addButtonBy).click(); + } + OOGraphene.waitBusy(browser); + + By choiceBy = By.xpath("//div[contains(@class,'o_evaluation_editor_form')]//table[contains(@class,'table-condensed')]/tbody/tr[" + pos + "]/td/input[@type='text']"); + OOGraphene.waitElement(choiceBy, browser); + browser.findElement(choiceBy).clear(); + OOGraphene.waitBusy(browser); + browser.findElement(choiceBy).sendKeys(choice); + OOGraphene.waitBusy(browser); + + return this; + } + + + +} diff --git a/src/test/java/org/olat/selenium/page/survey/SurveyPage.java b/src/test/java/org/olat/selenium/page/survey/SurveyPage.java new file mode 100644 index 0000000000000000000000000000000000000000..08081a43640698986efd573858ba2c6d215b2472 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/survey/SurveyPage.java @@ -0,0 +1,113 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.survey; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 27 nov. 2019<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SurveyPage { + + private final By toolsMenu = By.cssSelector("ul.o_sel_repository_tools"); + + private final WebDriver browser; + + public SurveyPage(WebDriver browser) { + this.browser = browser; + } + + public static SurveyPage loadPage(WebDriver browser) { + return new SurveyPage(browser) + .assertOnSurvey(); + } + + public SurveyPage assertOnSurvey() { + By pageBy = By.cssSelector("div.o_evaluation_execution.o_page_content"); + OOGraphene.waitElement(pageBy, browser); + return this; + } + + public SurveyEditorPage edit() { + if(!browser.findElement(toolsMenu).isDisplayed()) { + openToolsMenu(); + } + + By editBy = By.xpath("//ul[contains(@class,'o_sel_repository_tools')]//a[contains(@onclick,'edit.cmd')]"); + browser.findElement(editBy).click(); + OOGraphene.waitBusy(browser); + + By contentEditorBy = By.cssSelector("div.o_page_content_editor"); + OOGraphene.waitElementPresence(contentEditorBy, 5, browser); + return new SurveyEditorPage(browser); + } + + /** + * Click the editor link in the tools drop-down + * @return Itself + */ + public SurveyPage openToolsMenu() { + By toolsMenuCaret = By.cssSelector("a.o_sel_repository_tools"); + browser.findElement(toolsMenuCaret).click(); + OOGraphene.waitElement(toolsMenu, browser); + return this; + } + + public SurveyPage answerSingleChoice(String choice) { + By choiceBy = By.xpath("//div[contains(@class,'o_ed_formsinglechoice')]//label[text()[contains(.,'" + choice + "')]]/input[@type='radio']"); + OOGraphene.waitElement(choiceBy, browser); + browser.findElement(choiceBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public SurveyPage answerMultipleChoice(String choice) { + By choiceBy = By.xpath("//div[contains(@class,'o_ed_formmultiplechoice')]//label[text()[contains(.,'" + choice + "')]]/input[@type='checkbox']"); + OOGraphene.waitElement(choiceBy, browser); + browser.findElement(choiceBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public SurveyPage saveAndCloseSurvey() { + By saveBy = By.xpath("//div[contains(@class,'o_evaluation_form')]//button[contains(@class,'btn-primary')]"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + + OOGraphene.waitModalDialog(browser); + By yesBy = By.xpath("//div[contains(@class,'modal-dialog')]//a[contains(@onclick,'link_0')]"); + browser.findElement(yesBy).click(); + OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialogDisappears(browser); + return this; + } + + public SurveyPage assertOnSurveyClosed() { + By infoPanelBy = By.cssSelector(".o_surv_run #o_msg_info .panel-body>h4"); + OOGraphene.waitElement(infoPanelBy, browser); + return this; + } + +} diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java index c87e902621731a4a2593b3913f4dbc527aa19d6c..568b8972e06009dcfc13ea1f09b7bae5ddd4f791 100644 --- a/src/test/java/org/olat/test/AllTestsJunit4.java +++ b/src/test/java/org/olat/test/AllTestsJunit4.java @@ -179,6 +179,7 @@ import org.junit.runners.Suite; org.olat.course.nodes.gta.manager.GTATaskRevisionDAOTest.class, org.olat.course.nodes.gta.manager.GTAIdentityMarkDAOTest.class, org.olat.course.nodes.gta.rule.GTAReminderRuleTest.class, + org.olat.course.nodes.livestream.manager.LiveStreamStatisticDAOTest.class, org.olat.course.nodes.pf.manager.PFManagerTest.class, org.olat.course.assessment.AssessmentManagerTest.class, org.olat.course.assessment.manager.UserCourseInformationsManagerTest.class, @@ -330,6 +331,7 @@ import org.junit.runners.Suite; org.olat.ims.qti21.model.xml.SingleChoiceAssessmentItemBuilderTest.class, org.olat.ims.qti21.model.xml.TestFeedbackBuilderTest.class, org.olat.ims.qti21.model.xml.HottextAssessmentItemBuilderTest.class, + org.olat.ims.qti21.model.xml.FIBAssessmentItemBuilderTest.class, org.olat.ims.qti21.model.xml.AssessmentHtmlBuilderTest.class, org.olat.ims.qti21.model.xml.AssessmentItemPackageTest.class, org.olat.ims.qti21.model.xml.ManifestPackageTest.class, diff --git a/src/test/java/org/olat/user/UserTest.java b/src/test/java/org/olat/user/UserTest.java index 75daad9523fe7fc80f598f23aec4ea171186fb90..8c8d9533e4c9f240b49a4d14257e311f6869c8fb 100644 --- a/src/test/java/org/olat/user/UserTest.java +++ b/src/test/java/org/olat/user/UserTest.java @@ -38,6 +38,7 @@ import java.util.Locale; import java.util.Map; import java.util.UUID; +import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -47,7 +48,6 @@ import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; import org.olat.core.id.User; import org.olat.core.id.UserConstants; -import org.apache.logging.log4j.Logger; import org.olat.core.logging.Tracing; import org.olat.core.util.WebappHelper; import org.olat.test.OlatTestCase; @@ -218,7 +218,6 @@ public class UserTest extends OlatTestCase { u5.setLastName("newuser"); u5.setEmail("new@user.com"); u5.setCreationDate(new Date()); - u5.getPreferences().setFontsize("normal"); dbInstance.saveObject(u5); u5.setProperty(UserConstants.EMAIL, "updated@email.com"); userManager.updateUser(u5); diff --git a/src/test/resources/arquillian.xml b/src/test/resources/arquillian.xml index 650be96dfb0516720fe2b588354559b9844fe879..e0a73610f545446d425acf5c025431413d1096c6 100644 --- a/src/test/resources/arquillian.xml +++ b/src/test/resources/arquillian.xml @@ -25,7 +25,7 @@ <property name="dimensions">1024x800</property> <!-- <property name="downloadBinaries">no</property> - <property name="chromeDriverBinary">target/drone/3fc0e4a97cbf2c8c2a9b824d95e25351/chromedriver</property> + <property name="chromeDriverBinary">target/drone/12b3858a57bfe0a3d450cd194e0992aa/chromedriver</property> <property name="firefoxDriverBinary">target/drone/ce03addb1fc8c24900011f90fc80f3c1/geckodriver</property> --> <property name="firefoxUserPreferences">src/test/profile/firefox/prefs.js</property>