diff options
Diffstat (limited to 'pdf-as-web/src')
36 files changed, 11343 insertions, 221 deletions
| diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java new file mode 100644 index 00000000..eb04dde8 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/WebConfiguration.java @@ -0,0 +1,24 @@ +package at.gv.egiz.pdfas.web.config; + +public class WebConfiguration { + +	public static String getPublicURL() { +		return null; +	} + +	public static String getLocalBKUURL() { +		// TODO: Read URL from config +		return "http://127.0.0.1:3495/http-security-layer-request"; +	} + +	public static String getOnlineBKUURL() { +		// TODO: Read URL from config +		return "http://abyss.iaik.tugraz.at/bkuonline/http-security-layer-request"; +	} + +	public static String getHandyBKUURL() { +		// TODO: Read URL from config +		return "http://127.0.0.1:3495/http-security-layer-request"; +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/package-info.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/package-info.java new file mode 100644 index 00000000..6334ff83 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/config/package-info.java @@ -0,0 +1,8 @@ +/** + *  + */ +/** + * @author afitzek + * + */ +package at.gv.egiz.pdfas.web.config;
\ No newline at end of file diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsWebException.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsWebException.java new file mode 100644 index 00000000..3e734265 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/PdfAsWebException.java @@ -0,0 +1,17 @@ +package at.gv.egiz.pdfas.web.exception; + +public class PdfAsWebException extends Exception { +	 +	/** +	 *  +	 */ +	private static final long serialVersionUID = -4632774270754873043L; + +	public PdfAsWebException(String message) { +		super(message); +	} +	 +	public PdfAsWebException(String message, Throwable e) { +		super(message, e); +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/package-info.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/package-info.java new file mode 100644 index 00000000..206f5f40 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/exception/package-info.java @@ -0,0 +1,8 @@ +/** + *  + */ +/** + * @author afitzek + * + */ +package at.gv.egiz.pdfas.web.exception;
\ No newline at end of file diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java new file mode 100644 index 00000000..bcda2263 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/filter/ExceptionCatchFilter.java @@ -0,0 +1,75 @@ +package at.gv.egiz.pdfas.web.filter; + +import java.io.IOException; +import java.util.Enumeration; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +import org.apache.http.HttpRequest; +import org.apache.log4j.BasicConfigurator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +/** + * Servlet Filter implementation class ExceptionCatchFilter + */ +public class ExceptionCatchFilter implements Filter { + +	private static final Logger logger = LoggerFactory +			.getLogger(ExceptionCatchFilter.class); +	 +    /** +     * Default constructor.  +     */ +    public ExceptionCatchFilter() { +    } + +	/** +	 * @see Filter#destroy() +	 */ +	public void destroy() { +	} + +	/** +	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) +	 */ +	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { +		//try { +		 +		if(request instanceof HttpServletRequest) { +			logger.debug("Processing Parameters into Attributes"); +			HttpServletRequest httpRequest = (HttpServletRequest)request; +			Enumeration<String> parameterNames = httpRequest.getParameterNames(); +			while(parameterNames.hasMoreElements()) { +				String name = parameterNames.nextElement(); +				String value = httpRequest.getParameter(name); +				request.setAttribute(name, value); +				logger.info("Setting attribute: " + name + " - " + value); +			} +		} +		 +		 +			chain.doFilter(request, response); +		/*} catch(Throwable e) { +			System.err.println("Unhandled Exception found!"); +			e.printStackTrace(System.err); +			logger.error("Unhandled Exception found!", e); +		}*/ +	} + +	/** +	 * @see Filter#init(FilterConfig) +	 */ +	public void init(FilterConfig fConfig) throws ServletException { +		BasicConfigurator.configure(); +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/HTMLFormater.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/HTMLFormater.java new file mode 100644 index 00000000..fe2c9271 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/HTMLFormater.java @@ -0,0 +1,13 @@ +package at.gv.egiz.pdfas.web.helper; + +public class HTMLFormater { + +	public static String formatStackTrace(StackTraceElement[] elements) { +		StringBuilder sb = new StringBuilder(); +		for(int i = 0; i < elements.length; i++) { +			sb.append(elements[i].toString()); +			sb.append("</br>"); +		} +		return sb.toString(); +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java index 154cfd01..daf18108 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsHelper.java @@ -5,6 +5,9 @@ import java.io.IOException;  import java.util.Iterator;  import java.util.List; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import javax.servlet.http.HttpSession; @@ -12,14 +15,29 @@ import javax.xml.bind.JAXBElement;  import org.apache.commons.io.FileUtils;  import org.apache.commons.lang3.StringEscapeUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.lowagie.text.html.WebColors; + +import at.gv.egiz.pdfas.lib.api.ByteArrayDataSink;  import at.gv.egiz.pdfas.lib.api.ByteArrayDataSource;  import at.gv.egiz.pdfas.lib.api.Configuration; +import at.gv.egiz.pdfas.lib.api.DataSink;  import at.gv.egiz.pdfas.lib.api.PdfAs;  import at.gv.egiz.pdfas.lib.api.PdfAsFactory; +import at.gv.egiz.pdfas.lib.api.SignaturePosition;  import at.gv.egiz.pdfas.lib.api.StatusRequest; +import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner;  import at.gv.egiz.pdfas.lib.api.sign.SignParameter; +import at.gv.egiz.pdfas.lib.api.sign.SignResult; +import at.gv.egiz.pdfas.lib.impl.PdfAsImpl; +import at.gv.egiz.pdfas.lib.impl.SignaturePositionImpl;  import at.gv.egiz.pdfas.sigs.pades.PAdESSigner; +import at.gv.egiz.pdfas.sigs.pades.PAdESSignerKeystore; +import at.gv.egiz.pdfas.sigs.pkcs7detached.PKCS7DetachedSigner; +import at.gv.egiz.pdfas.web.config.WebConfiguration; +import at.gv.egiz.pdfas.web.exception.PdfAsWebException;  import at.gv.egiz.sl.CreateCMSSignatureRequestType;  import at.gv.egiz.sl.CreateCMSSignatureResponseType;  import at.gv.egiz.sl.InfoboxAssocArrayPairType; @@ -27,6 +45,7 @@ import at.gv.egiz.sl.InfoboxReadRequestType;  import at.gv.egiz.sl.InfoboxReadResponseType;  import at.gv.egiz.sl.ObjectFactory;  import at.gv.egiz.sl.util.BKUSLConnector; +import at.gv.egiz.sl.util.MOAConnector;  import at.gv.egiz.sl.util.SLMarschaller;  public class PdfAsHelper { @@ -34,32 +53,240 @@ public class PdfAsHelper {  	private static final String PDF_CONFIG = "PDF_CONFIG";  	private static final String PDF_STATUS = "PDF_STATUS";  	private static final String PDF_SL_CONNECTOR = "PDF_SL_CONNECTOR"; +	private static final String PDF_SIGNER = "PDF_SIGNER"; +	private static final String PDF_SL_INTERACTIVE = "PDF_SL_INTERACTIVE"; +	private static final String PDF_SIGNED_DATA = "PDF_SIGNED_DATA"; +	private static final String PDF_ERR_MESSAGE = "PDF_ERR_MESSAGE"; +	private static final String PDF_ERR_THROWABLE = "PDF_ERR_THROWABLE"; +	private static final String PDF_ERROR_PAGE = "/ErrorPage"; +	private static final String PDF_PROVIDE_PAGE = "/ProvidePDF"; +	private static final String PDF_PDFDATA_PAGE = "/PDFData"; +	private static final String PDF_DATAURL_PAGE = "/DataURL"; +	private static final String PDF_ERR_URL = "PDF_ERR_URL"; +	private static final String PDF_INVOKE_URL = "PDF_INVOKE_URL"; +	private static final String REQUEST_FROM_DU = "REQ_DATA_URL"; + +	// For development only: +	public static final String keyStoreFile = "/home/afitzek/devel/pdfas_neu/test.p12"; +	public static final String keyStoreType = "PKCS12"; +	public static final String keyStorePass = "123456"; +	// public static final String keyAlias = "pdf"; +	public static final String keyAlias = "ecc_test"; +	public static final String keyPass = "123456"; + +	private static final Logger logger = LoggerFactory +			.getLogger(PdfAsHelper.class);  	private static PdfAs pdfAs;  	private static ObjectFactory of = new ObjectFactory();  	static { +		// TODO: read from config file +		logger.debug("Creating PDF-AS");  		pdfAs = PdfAsFactory.createPdfAs(new File("/home/afitzek/.pdfas")); +		logger.debug("Creating PDF-AS done");  	} -	public static void startSignature(HttpServletRequest request, +	private static void validatePdfSize(HttpServletRequest request, +			HttpServletResponse response, byte[] pdfData) +			throws PdfAsWebException { +		// Try to check num-bytes +		String pdfSizeString = PdfAsParameterExtractor.getNumBytes(request); +		if (pdfSizeString != null) { +			long pdfSize = -1; +			try { +				pdfSize = Long.parseLong(pdfSizeString); +			} catch (NumberFormatException e) { +				throw new PdfAsWebException( +						PdfAsParameterExtractor.PARAM_NUM_BYTES +								+ " parameter has to be a positiv number!", e); +			} +			if (pdfSize <= 0) { +				throw new PdfAsWebException( +						"Invalid PDF Size! Has to bigger than zero!"); +			} + +			if (pdfData.length != pdfSize) { +				throw new PdfAsWebException("Signature Data Size and " +						+ PdfAsParameterExtractor.PARAM_NUM_BYTES +						+ " missmatch!"); +			} +		} +	} + +	private static String buildPosString(HttpServletRequest request, +			HttpServletResponse response) throws PdfAsWebException { +		String posP = PdfAsParameterExtractor.getSigPosP(request); +		String posX = PdfAsParameterExtractor.getSigPosX(request); +		String posY = PdfAsParameterExtractor.getSigPosY(request); +		String posW = PdfAsParameterExtractor.getSigPosW(request); + +		if (posP == null && posW == null && posX == null && posY == null) { +			return null; +		} + +		StringBuilder sb = new StringBuilder(); + +		if (posX != null) { +			try { +				Float.parseFloat(posX); +			} catch (NumberFormatException e) { +				throw new PdfAsWebException( +						PdfAsParameterExtractor.PARAM_SIG_POS_X +								+ " has invalid value!", e); +			} +			sb.append("x:" + posX.trim() + ";"); +		} else { +			sb.append("x:auto;"); +		} + +		if (posY != null) { +			try { +				Float.parseFloat(posY); +			} catch (NumberFormatException e) { +				throw new PdfAsWebException( +						PdfAsParameterExtractor.PARAM_SIG_POS_Y +								+ " has invalid value!", e); +			} +			sb.append("y:" + posY.trim() + ";"); +		} else { +			sb.append("y:auto;"); +		} + +		if (posW != null) { +			try { +				Float.parseFloat(posW); +			} catch (NumberFormatException e) { +				throw new PdfAsWebException( +						PdfAsParameterExtractor.PARAM_SIG_POS_W +								+ " has invalid value!", e); +			} +			sb.append("w:" + posW.trim() + ";"); +		} else { +			sb.append("w:auto;"); +		} + +		if (posP != null) { +			if (!(posP.equals("auto") || posP.equals("new"))) { +				throw new PdfAsWebException( +						PdfAsParameterExtractor.PARAM_SIG_POS_P +								+ " has invalid value! (auto | new )"); +			} +			sb.append("p:" + posP.trim() + ";"); +		} else { +			sb.append("P:auto;"); +		} + +		return sb.toString(); +	} + +	public static void doSignature(HttpServletRequest request, +			HttpServletResponse response, byte[] pdfData) throws Exception { + +	} + +	/** +	 * Create synchronous PDF Signature +	 *  +	 * @param request +	 *            The Web request +	 * @param response +	 *            The Web response +	 * @param pdfData +	 *            The pdf data +	 * @return The signed pdf data +	 * @throws Exception +	 */ +	public static byte[] synchornousSignature(HttpServletRequest request,  			HttpServletResponse response, byte[] pdfData) throws Exception { +		validatePdfSize(request, response, pdfData); + +		Configuration config = pdfAs.getConfiguration(); + +		// Generate Sign Parameter +		SignParameter signParameter = PdfAsFactory.createSignParameter(config, +				new ByteArrayDataSource(pdfData)); + +		// Get Connector +		String connector = PdfAsParameterExtractor.getConnector(request); + +		if (!connector.equals("moa") && !connector.equals("jks")) { +			throw new PdfAsWebException("Invalid connector (moa | jks)"); +		} + +		IPlainSigner signer; +		if (connector.equals("moa")) { +			signer = new PAdESSigner(new MOAConnector(config)); +		} else { +			// TODO: +			// signer = new PAdESSignerKeystore(file, alias, kspassword, +			// keypassword, type) +			signer = new PKCS7DetachedSigner(keyStoreFile, keyAlias, +					keyStorePass, keyPass, keyStoreType); +		} + +		signParameter.setPlainSigner(signer); + +		// set Signature Profile (null use default ...) +		signParameter.setSignatureProfileId(PdfAsParameterExtractor +				.getSigType(request)); + +		ByteArrayDataSink output = new ByteArrayDataSink(); +		signParameter.setOutput(output); + +		// set Signature Position +		signParameter.setSignaturePosition(buildPosString(request, response)); + +		pdfAs.sign(signParameter); + +		return output.getData(); +	} + +	public static void startSignature(HttpServletRequest request, +			HttpServletResponse response, ServletContext context, byte[] pdfData) +			throws Exception { + +		validatePdfSize(request, response, pdfData);  		HttpSession session = request.getSession();  		Configuration config = pdfAs.getConfiguration();  		session.setAttribute(PDF_CONFIG, config); -		BKUSLConnector bkuSLConnector = new BKUSLConnector(config); + +		// Generate Sign Parameter  		SignParameter signParameter = PdfAsFactory.createSignParameter(config,  				new ByteArrayDataSource(pdfData)); -		signParameter.setPlainSigner(new PAdESSigner(bkuSLConnector)); -		 -		session.setAttribute(PDF_SL_CONNECTOR, bkuSLConnector); + +		// Get Connector +		String connector = PdfAsParameterExtractor.getConnector(request); + +		IPlainSigner signer; +		if (connector.equals("bku") || connector.equals("onlinebku") || connector.equals("mobilebku")) { +			BKUSLConnector conn = new BKUSLConnector(config); +			signer = new PAdESSigner(conn); +			session.setAttribute(PDF_SL_CONNECTOR, conn); +		} else { +			throw new PdfAsWebException("Invalid connector (bku | onlinebku | mobilebku | moa | jks)"); +		} + +		signParameter.setPlainSigner(signer); +		session.setAttribute(PDF_SIGNER, signer); +		session.setAttribute(PDF_SL_INTERACTIVE, connector); + +		// set Signature Profile (null use default ...) +		signParameter.setSignatureProfileId(PdfAsParameterExtractor +				.getSigType(request)); + +		ByteArrayDataSink dataSink = new ByteArrayDataSink(); +		signParameter.setOutput(dataSink); + +		// set Signature Position +		signParameter.setSignaturePosition(buildPosString(request, response));  		StatusRequest statusRequest = pdfAs.startSign(signParameter);  		session.setAttribute(PDF_STATUS, statusRequest); -		PdfAsHelper.process(request, response); +		PdfAsHelper.process(request, response, context);  	}  	private static byte[] getCertificate( @@ -69,36 +296,40 @@ public class PdfAsHelper {  			List<InfoboxAssocArrayPairType> pairs = infoboxReadResponseType  					.getAssocArrayData().getPair();  			Iterator<InfoboxAssocArrayPairType> pairIterator = pairs.iterator(); -			while(pairIterator.hasNext()) { +			while (pairIterator.hasNext()) {  				InfoboxAssocArrayPairType pair = pairIterator.next(); -				if(pair.getKey().equals("SecureSignatureKeypair")) { +				if (pair.getKey().equals("SecureSignatureKeypair")) {  					return pair.getBase64Content();  				}  			}  		}  		// SecureSignatureKeypair -		 +  		return data;  	}  	public static void injectCertificate(HttpServletRequest request, -			HttpServletResponse response,  -			InfoboxReadResponseType infoboxReadResponseType) throws Exception { -		 +			HttpServletResponse response, +			InfoboxReadResponseType infoboxReadResponseType, +			ServletContext context) throws Exception { +  		HttpSession session = request.getSession(); -		StatusRequest statusRequest = (StatusRequest)session.getAttribute(PDF_STATUS); -		 +		StatusRequest statusRequest = (StatusRequest) session +				.getAttribute(PDF_STATUS); +  		statusRequest.setCertificate(getCertificate(infoboxReadResponseType));  		statusRequest = pdfAs.process(statusRequest);  		session.setAttribute(PDF_STATUS, statusRequest); -		 -		PdfAsHelper.process(request, response); + +		PdfAsHelper.process(request, response, context);  	}  	public static void injectSignature(HttpServletRequest request,  			HttpServletResponse response, -			CreateCMSSignatureResponseType createCMSSignatureResponseType) -			throws Exception { +			CreateCMSSignatureResponseType createCMSSignatureResponseType, +			ServletContext context) throws Exception { + +		logger.info("Got CMS Signature Response");  		HttpSession session = request.getSession();  		StatusRequest statusRequest = (StatusRequest) session @@ -109,58 +340,88 @@ public class PdfAsHelper {  		statusRequest = pdfAs.process(statusRequest);  		session.setAttribute(PDF_STATUS, statusRequest); -		PdfAsHelper.process(request, response); +		PdfAsHelper.process(request, response, context);  	}  	public static void process(HttpServletRequest request, -			HttpServletResponse response) throws Exception { +			HttpServletResponse response, ServletContext context) +			throws Exception {  		HttpSession session = request.getSession();  		StatusRequest statusRequest = (StatusRequest) session  				.getAttribute(PDF_STATUS); -		BKUSLConnector bkuSLConnector = (BKUSLConnector) session -				.getAttribute(PDF_SL_CONNECTOR); -		Configuration config = (Configuration) session.getAttribute(PDF_CONFIG); - -		if (statusRequest.needCertificate()) { -			// build SL Request to read certificate -			InfoboxReadRequestType readCertificateRequest = bkuSLConnector -					.createInfoboxReadRequest(); - -			JAXBElement<InfoboxReadRequestType> readRequest = of -					.createInfoboxReadRequest(readCertificateRequest); - -			String url = request.getContextPath() + "/DataURL;jsessionid=" -					+ session.getId(); -			String fullurl = request.getScheme() + "://" -					+ request.getServerName() + ":" + request.getServerPort() -					+ url; -			String slRequest = SLMarschaller.marshalToString(readRequest); -			String template = getTemplateSL(); -			template = template.replace("##BKU##", -					"http://127.0.0.1:3495/http-security-layer-request"); -			template = template.replace("##XMLRequest##", -					StringEscapeUtils.escapeHtml4(slRequest)); -			template = template.replace("##DataURL##", fullurl); -			response.getWriter().write(template); -			response.getWriter().close(); -		} else if (statusRequest.needSignature()) { -			// build SL Request for cms signature -			CreateCMSSignatureRequestType createCMSSignatureRequestType =  -					bkuSLConnector.createCMSRequest(statusRequest.getSignatureData(),  -							statusRequest.getSignatureDataByteRange()); -			 -			String slRequest = SLMarschaller.marshalToString(of -						.createCreateCMSSignatureRequest(createCMSSignatureRequestType)); -			 -			response.setContentType("text/xml"); -			response.getWriter().write(slRequest); -			response.getWriter().close(); -			 -		} else if (statusRequest.isReady()) { -			// TODO: store pdf document redirect to Finish URL +		IPlainSigner plainSigner = (IPlainSigner) session +				.getAttribute(PDF_SIGNER); + +		String connector = (String) session.getAttribute(PDF_SL_INTERACTIVE); + +		if (connector.equals("bku") || connector.equals("onlinebku") || connector.equals("mobilebku")) { +			BKUSLConnector bkuSLConnector = (BKUSLConnector) session +					.getAttribute(PDF_SL_CONNECTOR); + +			// TODO Handle logic for BKU interaction + +			Configuration config = (Configuration) session +					.getAttribute(PDF_CONFIG); + +			if (statusRequest.needCertificate()) { +				logger.info("Needing Certificate from BKU"); +				// build SL Request to read certificate +				InfoboxReadRequestType readCertificateRequest = bkuSLConnector +						.createInfoboxReadRequest(); + +				JAXBElement<InfoboxReadRequestType> readRequest = of +						.createInfoboxReadRequest(readCertificateRequest); + +				String url = request.getContextPath() + "/DataURL;jsessionid=" +						+ session.getId(); +				String fullurl = request.getScheme() + "://" +						+ request.getServerName() + ":" +						+ request.getServerPort() + url; +				String slRequest = SLMarschaller.marshalToString(readRequest); +				String template = getTemplateSL(); +				template = template.replace("##BKU##", +						generateBKUURL(connector)); +				template = template.replace("##XMLRequest##", +						StringEscapeUtils.escapeHtml4(slRequest)); +				template = template.replace("##DataURL##", fullurl); +				response.getWriter().write(template); +				response.getWriter().close(); +			} else if (statusRequest.needSignature()) { +				logger.info("Needing Signature from BKU"); +				// build SL Request for cms signature +				CreateCMSSignatureRequestType createCMSSignatureRequestType = bkuSLConnector +						.createCMSRequest(statusRequest.getSignatureData(), +								statusRequest.getSignatureDataByteRange()); + +				String slRequest = SLMarschaller +						.marshalToString(of +								.createCreateCMSSignatureRequest(createCMSSignatureRequestType)); + +				response.setContentType("text/xml"); +				response.getWriter().write(slRequest); +				response.getWriter().close(); + +			} else if (statusRequest.isReady()) { +				// TODO: store pdf document redirect to Finish URL +				logger.info("Document ready!"); + +				SignResult result = pdfAs.finishSign(statusRequest); +				DataSink output = result.getOutputDocument(); +				if (output instanceof ByteArrayDataSink) { +					ByteArrayDataSink byteDataSink = (ByteArrayDataSink) output; +					PdfAsHelper.setSignedPdf(request, response, +							byteDataSink.getData()); +					PdfAsHelper.gotoProvidePdf(context, request, response); +				} else { +					// TODO: no signature data available! +				} + +			} else { +				// TODO: invalid state +			}  		} else { -			// TODO: invalid state +			// TODO Handle logic for  		}  	} @@ -169,5 +430,187 @@ public class PdfAsHelper {  				.toFile(PdfAsHelper.class.getResource("/template_sl.html")));  		return xml;  	} +	 +	public static String getErrorRedirectTemplateSL() throws IOException { +		String xml = FileUtils.readFileToString(FileUtils +				.toFile(PdfAsHelper.class.getResource("/template_error_redirect.html"))); +		return xml; +	} +	 +	public static String getInvokeRedirectTemplateSL() throws IOException { +		String xml = FileUtils.readFileToString(FileUtils +				.toFile(PdfAsHelper.class.getResource("/template_invoke_redirect.html"))); +		return xml; +	} + +	public static byte[] getSignedPdf(HttpServletRequest request, +			HttpServletResponse response) { +		HttpSession session = request.getSession(); +		Object signedData = session.getAttribute(PDF_SIGNED_DATA); +		if (signedData == null) { +			return null; +		} + +		if (signedData instanceof byte[]) { +			return (byte[]) signedData; +		} +		logger.warn("PDF_SIGNED_DATA in session is not a byte[] type!"); +		return null; +	} + +	public static void setSignedPdf(HttpServletRequest request, +			HttpServletResponse response, byte[] signedData) { +		HttpSession session = request.getSession(); +		session.setAttribute(PDF_SIGNED_DATA, signedData); +	} + +	public static void setSessionException(HttpServletRequest request, +			HttpServletResponse response, String message, Throwable e) { +		HttpSession session = request.getSession(); +		session.setAttribute(PDF_ERR_MESSAGE, message); +		session.setAttribute(PDF_ERR_THROWABLE, e); +	} + +	public static String getSessionErrMessage(HttpServletRequest request, +			HttpServletResponse response) { +		HttpSession session = request.getSession(); +		Object obj = session.getAttribute(PDF_ERR_MESSAGE); +		return obj == null ? null : obj.toString(); +	} + +	public static Throwable getSessionException(HttpServletRequest request, +			HttpServletResponse response) { +		HttpSession session = request.getSession(); +		Object obj = session.getAttribute(PDF_ERR_THROWABLE); +		if (obj == null) { +			return null; +		} + +		if (obj instanceof Throwable) { +			return (Throwable) obj; +		} +		logger.warn("PDF_ERR_THROWABLE in session is not a throwable type!"); +		return null; +	} + +	public static void gotoError(ServletContext context, +			HttpServletRequest request, HttpServletResponse response) +			throws ServletException, IOException { +		if (PdfAsHelper.getFromDataUrl(request)) { +			response.sendRedirect(generateErrorURL(request, response)); +		} else { +			RequestDispatcher dispatcher = context +					.getRequestDispatcher(PDF_ERROR_PAGE); +			dispatcher.forward(request, response); +		} +	} + +	public static void gotoProvidePdf(ServletContext context, +			HttpServletRequest request, HttpServletResponse response) +			throws ServletException, IOException { +		if (PdfAsHelper.getFromDataUrl(request)) { +			response.sendRedirect(generateProvideURL(request, response)); +		} else { +			RequestDispatcher dispatcher = context +					.getRequestDispatcher(PDF_PROVIDE_PAGE); +			dispatcher.forward(request, response); +		} +	} + +	public static void setErrorURL(HttpServletRequest request, +			HttpServletResponse response, String url) { +		HttpSession session = request.getSession(); +		session.setAttribute(PDF_ERR_URL, url); +	} + +	public static String getErrorURL(HttpServletRequest request, +			HttpServletResponse response) { +		HttpSession session = request.getSession(); +		Object obj = session.getAttribute(PDF_ERR_URL); +		return obj == null ? null : obj.toString(); +	} +	 +	public static void setInvokeURL(HttpServletRequest request, +			HttpServletResponse response, String url) { +		HttpSession session = request.getSession(); +		session.setAttribute(PDF_INVOKE_URL, url); +		logger.info("External Invoke URL: " + url); +	} + +	public static String getInvokeURL(HttpServletRequest request, +			HttpServletResponse response) { +		HttpSession session = request.getSession(); +		Object obj = session.getAttribute(PDF_INVOKE_URL); +		return obj == null ? null : obj.toString(); +	} +	private static String generateURL(HttpServletRequest request, +			HttpServletResponse response, String Servlet) { +		HttpSession session = request.getSession(); +		String publicURL = WebConfiguration.getPublicURL(); +		String dataURL = null; +		if (publicURL != null) { +			dataURL = publicURL + Servlet + ";jsessionid=" + session.getId(); +		} else { +			if ((request.getScheme().equals("http") && request.getServerPort() == 80) +					|| (request.getScheme().equals("https") && request +							.getServerPort() == 443)) { +				dataURL = request.getScheme() + "://" + request.getServerName() +						+ request.getContextPath() + Servlet + ";jsessionid=" +						+ session.getId(); +			} else { +				dataURL = request.getScheme() + "://" + request.getServerName() +						+ ":" + request.getServerPort() +						+ request.getContextPath() + Servlet + ";jsessionid=" +						+ session.getId(); +			} +		} +		logger.info("Generated URL: " + dataURL); +		return dataURL; +	} +	 +	public static String generateDataURL(HttpServletRequest request, +			HttpServletResponse response) { +		return generateURL(request, response, PDF_DATAURL_PAGE); +	} + +	public static String generateProvideURL(HttpServletRequest request, +			HttpServletResponse response) { +		return generateURL(request, response, PDF_PROVIDE_PAGE); +	} +	 +	public static String generateErrorURL(HttpServletRequest request, +			HttpServletResponse response) { +		return generateURL(request, response, PDF_ERROR_PAGE); +	} + +	public static String generatePdfURL(HttpServletRequest request, +			HttpServletResponse response) { +		return generateURL(request, response, PDF_PDFDATA_PAGE); +	} +	 +	public static String generateBKUURL(String connector) { +		if(connector.equals("bku")) { +			return WebConfiguration.getLocalBKUURL(); +		} else if(connector.equals("onlinebku")) { +			return WebConfiguration.getOnlineBKUURL(); +		} else if(connector.equals("mobilebku")) { +			return WebConfiguration.getHandyBKUURL(); +		} +		return WebConfiguration.getLocalBKUURL(); +	} + +	public static void setFromDataUrl(HttpServletRequest request) { +		request.setAttribute(REQUEST_FROM_DU, (Boolean) true); +	} + +	public static boolean getFromDataUrl(HttpServletRequest request) { +		Object obj = request.getAttribute(REQUEST_FROM_DU); +		if (obj != null) { +			if (obj instanceof Boolean) { +				return ((Boolean) obj).booleanValue(); +			} +		} +		return false; +	}  } diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java new file mode 100644 index 00000000..5a79bb4a --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/PdfAsParameterExtractor.java @@ -0,0 +1,85 @@ +package at.gv.egiz.pdfas.web.helper; + +import javax.servlet.http.HttpServletRequest; + +public class PdfAsParameterExtractor { + +	public static final String PARAM_CONNECTOR = "connector"; +	public static final String PARAM_CONNECTOR_DEFAULT = "bku"; +	 +	 +	public static final String PARAM_INVOKE_URL = "invoke-app-url"; +	public static final String PARAM_INVOKE_URL_ERROR = "invoke-app-error-url"; +	public static final String PARAM_LOCALE = "locale"; +	public static final String PARAM_NUM_BYTES = "num-bytes"; +	public static final String PARAM_PDF_URL = "pdf-url"; +	public static final String PARAM_SIG_TYPE = "sig_type"; +	public static final String PARAM_SIG_POS_P = "sig-pos-p"; +	public static final String PARAM_SIG_POS_Y = "sig-pos-y"; +	public static final String PARAM_SIG_POS_X = "sig-pos-x"; +	public static final String PARAM_SIG_POS_W = "sig-pos-w"; +	 +	public static String getConnector(HttpServletRequest request) { +		String connector = (String)request.getAttribute(PARAM_CONNECTOR); +		if(connector != null) { +			return connector; +		}  +		return PARAM_CONNECTOR_DEFAULT; +	} +	 +	public static String getInvokeURL(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_INVOKE_URL); +	} +	 +	public static String getInvokeErrorURL(HttpServletRequest request) { +		String url = (String)request.getAttribute(PARAM_INVOKE_URL_ERROR); +		if(url != null) { +			//TODO validation! +		} +		return url; +	} +	 +	public static String getLocale(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_LOCALE); +	} +	 +	public static String getNumBytes(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_NUM_BYTES); +	} +	 +	public static String getPdfUrl(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_PDF_URL); +	} +	 +	public static String getSigType(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SIG_TYPE); +	} +	 +	public static String getSigPosP(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SIG_POS_P); +	} +	 +	public static String getSigPosY(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SIG_POS_Y); +	} +	 +	public static String getSigPosX(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SIG_POS_X); +	} +	 +	public static String getSigPosW(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SIG_POS_W); +	} +	 +	// legacy Parameter +	public static final String PARAM_PDF_ID = "pdf-id"; +	public static final String PARAM_SESSION_ID = "session-id"; +	 +	public static String getPdfId(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_PDF_ID); +	} +	 +	public static String getSessionId(HttpServletRequest request) { +		return (String)request.getAttribute(PARAM_SESSION_ID); +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/RemotePDFFetcher.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/RemotePDFFetcher.java new file mode 100644 index 00000000..7c90dbc8 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/helper/RemotePDFFetcher.java @@ -0,0 +1,30 @@ +package at.gv.egiz.pdfas.web.helper; + +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; + +import at.gv.egiz.pdfas.common.utils.StreamUtils; +import at.gv.egiz.pdfas.web.exception.PdfAsWebException; + +public class RemotePDFFetcher { + +	public static byte[] fetchPdfFile(String pdfURL) throws PdfAsWebException { +		URL url; +		try { +			url = new URL(pdfURL); +		} catch (MalformedURLException e) { +			throw new PdfAsWebException("Not a valid URL!", e); +		} +		if(url.getProtocol().equals("http") || url.getProtocol().equals("https")) { +			try { +				InputStream is = url.openStream(); +				return StreamUtils.inputStreamToByteArray(is); +			} catch (Exception e) { +				throw new PdfAsWebException("Failed to fetch pdf document!", e); +			} +		} else { +			throw new PdfAsWebException("Failed to fetch pdf document protocol " + url.getProtocol() + " is not supported"); +		} +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java index a8dfb053..a0fe3e80 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/DataURLServlet.java @@ -27,7 +27,6 @@ public class DataURLServlet extends HttpServlet {  	 */  	public DataURLServlet() {  		super(); -		// TODO Auto-generated constructor stub  	}  	/** @@ -51,7 +50,7 @@ public class DataURLServlet extends HttpServlet {  	protected void process(HttpServletRequest request,  			HttpServletResponse response) throws ServletException, IOException {  		try { - +			PdfAsHelper.setFromDataUrl(request);  			String xmlResponse = request.getParameter("XMLResponse");  			System.out.println(xmlResponse); @@ -59,10 +58,10 @@ public class DataURLServlet extends HttpServlet {  			JAXBElement jaxbObject = (JAXBElement) SLMarschaller.unmarshalFromString(xmlResponse);  			if(jaxbObject.getValue() instanceof InfoboxReadResponseType) {  				InfoboxReadResponseType infoboxReadResponseType = (InfoboxReadResponseType)jaxbObject.getValue(); -				PdfAsHelper.injectCertificate(request, response, infoboxReadResponseType); +				PdfAsHelper.injectCertificate(request, response, infoboxReadResponseType, getServletContext());  			} else if(jaxbObject.getValue() instanceof CreateCMSSignatureResponseType) {  				CreateCMSSignatureResponseType createCMSSignatureResponseType = (CreateCMSSignatureResponseType)jaxbObject.getValue(); -				PdfAsHelper.injectSignature(request, response, createCMSSignatureResponseType); +				PdfAsHelper.injectSignature(request, response, createCMSSignatureResponseType, getServletContext());  			} else if(jaxbObject.getValue() instanceof ErrorResponseType) {  				ErrorResponseType errorResponseType = (ErrorResponseType)jaxbObject.getValue();  				// TODO: store error and redirect user diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java new file mode 100644 index 00000000..fceeed85 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ErrorPage.java @@ -0,0 +1,101 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.swing.text.html.HTML; + +import org.apache.commons.lang3.StringEscapeUtils; + +import at.gv.egiz.pdfas.web.helper.HTMLFormater; +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +/** + * Servlet implementation class ErrorPage + */ +public class ErrorPage extends HttpServlet { +	private static final long serialVersionUID = 1L; + +	/** +	 * @see HttpServlet#HttpServlet() +	 */ +	public ErrorPage() { +		super(); +		// TODO Auto-generated constructor stub +	} + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		process(request, response); +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		process(request, response); +	} + +	protected void process(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		if (PdfAsHelper.getFromDataUrl(request)) { +			// redirect to here! +			response.sendRedirect(PdfAsHelper.generateErrorURL(request, +					response)); +			return; +		} else { +			String errorURL = PdfAsHelper.getErrorURL(request, response); +			Throwable e = PdfAsHelper +					.getSessionException(request, response); +			String message = PdfAsHelper.getSessionErrMessage(request, +					response); +			if (errorURL != null) { +				String template = PdfAsHelper.getErrorRedirectTemplateSL(); +				template = template.replace("##ERROR_URL##", +						errorURL); +				if (e != null) { +					template = template.replace("##CAUSE##", +							URLEncoder.encode(e.getMessage(), "UTF-8")); +				} else { +					template = template.replace("##CAUSE##", +							""); +				} +				if (message != null) { +					template = template.replace("##ERROR##", URLEncoder.encode(message, "UTF-8")); +				} else { +					template = template.replace("##ERROR##", "Unbekannter Fehler"); +				} +				response.setContentType("text/html"); +				response.getWriter().write(template); +				response.getWriter().close(); +			} else { +				response.setContentType("text/html"); +				PrintWriter pw = response.getWriter(); +		 +				pw.write("<html><body>Error Page:"); +				if (message != null) { +					pw.write("<p>" + message + "</p>"); +				} + +				if (e != null) { +					pw.write("<p>" +							+ HTMLFormater.formatStackTrace(e.getStackTrace()) +							+ "</p>"); +				} +				pw.write("</body></html>"); +				pw.close(); +			} +		} +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java new file mode 100644 index 00000000..90c77320 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ExternSignServlet.java @@ -0,0 +1,205 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.fileupload.FileItem; +import org.apache.commons.fileupload.disk.DiskFileItemFactory; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.lib.api.sign.IPlainSigner; +import at.gv.egiz.pdfas.sigs.pades.PAdESSigner; +import at.gv.egiz.pdfas.web.exception.PdfAsWebException; +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; +import at.gv.egiz.pdfas.web.helper.PdfAsParameterExtractor; +import at.gv.egiz.pdfas.web.helper.RemotePDFFetcher; +import at.gv.egiz.sl.util.BKUSLConnector; +import at.gv.egiz.sl.util.MOAConnector; + +/** + * Servlet implementation class Sign + */ +public class ExternSignServlet extends HttpServlet { + +	private static final long serialVersionUID = 1L; + +	private static final String UPLOAD_PDF_DATA = "pdfFile"; +	private static final String UPLOAD_DIRECTORY = "upload"; +	private static final int THRESHOLD_SIZE = 1024 * 1024 * 3; // 3MB +	private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB +	private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB + +	private static final Logger logger = LoggerFactory +			.getLogger(ExternSignServlet.class); +	 +	/** +	 * Default constructor. +	 */ +	public ExternSignServlet() { +	} + +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		 +		System.out.println("Get signing request"); +		logger.info("Get signing request"); +		 +		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request); +		PdfAsHelper.setErrorURL(request, response, errorUrl); +		try { +			// Mandatory Parameters on Get Request: +			String invokeUrl = PdfAsParameterExtractor.getInvokeURL(request); +			PdfAsHelper.setInvokeURL(request, response, invokeUrl); + +			String pdfUrl = PdfAsParameterExtractor.getPdfUrl(request); + +			if (pdfUrl == null) { +				throw new PdfAsWebException( +						"No PDF URL given! Use POST request to sign without PDF URL."); +			} + +			byte[] pdfData = RemotePDFFetcher.fetchPdfFile(pdfUrl); +			doSignature(request, response, pdfData); +		} catch (Exception e) { +			PdfAsHelper.setSessionException(request, response, e.getMessage(), +					e); +			PdfAsHelper.gotoError(getServletContext(), request, response); +		} +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		 +		System.out.println("Post signing request"); +		logger.info("Post signing request"); +		 +		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request); +		PdfAsHelper.setErrorURL(request, response, errorUrl); +		 +		try { +			byte[] filecontent = null; + +			// checks if the request actually contains upload file +			if (!ServletFileUpload.isMultipartContent(request)) { +				// No Uploaded data! +				if (PdfAsParameterExtractor.getPdfUrl(request) != null) { +					doGet(request, response); +					return; +				} else { +					throw new PdfAsWebException("No Signature data defined!"); +				} +			} else { +				// configures upload settings +				DiskFileItemFactory factory = new DiskFileItemFactory(); +				factory.setSizeThreshold(THRESHOLD_SIZE); +				factory.setRepository(new File(System +						.getProperty("java.io.tmpdir"))); + +				ServletFileUpload upload = new ServletFileUpload(factory); +				upload.setFileSizeMax(MAX_FILE_SIZE); +				upload.setSizeMax(MAX_REQUEST_SIZE); + +				// constructs the directory path to store upload file +				String uploadPath = getServletContext().getRealPath("") +						+ File.separator + UPLOAD_DIRECTORY; +				// creates the directory if it does not exist +				File uploadDir = new File(uploadPath); +				if (!uploadDir.exists()) { +					uploadDir.mkdir(); +				} + +				List formItems = upload.parseRequest(request); +				logger.debug(formItems.size() + " Items in form data"); +				if (formItems.size() < 1) { +					// No Uploaded data! +					// Try do get +					// No Uploaded data! +					if (PdfAsParameterExtractor.getPdfUrl(request) != null) { +						doGet(request, response); +						return; +					} else { +						throw new PdfAsWebException( +								"No Signature data defined!"); +					} +				} else { +					for(int i = 0; i < formItems.size(); i++) { +						Object obj = formItems.get(i); +						if(obj instanceof FileItem) { +							FileItem item = (FileItem) obj; +							if(item.getFieldName().equals(UPLOAD_PDF_DATA)) { +								filecontent = item.get(); +								logger.debug("Found pdf Data!"); +							} else { +								request.setAttribute(item.getFieldName(), item.getString()); +								logger.debug("Setting " + item.getFieldName() + " = " + item.getString()); +							} +						} else { +							logger.info(obj.getClass().getName() +  " - " + obj.toString()); +						} +					} +				} +			} +			 +			if(filecontent == null) { +				if (PdfAsParameterExtractor.getPdfUrl(request) != null) { +					filecontent = RemotePDFFetcher.fetchPdfFile(PdfAsParameterExtractor.getPdfUrl(request)); +				} +			} + +			if(filecontent == null) { +				throw new PdfAsException("No Signature data available"); +			} +			 +			doSignature(request, response, filecontent); +		} catch (Exception e) { +			PdfAsHelper.setSessionException(request, response, e.getMessage(), +					e); +			PdfAsHelper.gotoError(getServletContext(), request, response); +		} +	} + +	protected void doSignature(HttpServletRequest request, +			HttpServletResponse response, byte[] pdfData) throws Exception { +		// Get Connector +		String connector = PdfAsParameterExtractor.getConnector(request); + +		String invokeUrl = PdfAsParameterExtractor.getInvokeURL(request); +		PdfAsHelper.setInvokeURL(request, response, invokeUrl); +		 +		String errorUrl = PdfAsParameterExtractor.getInvokeErrorURL(request); +		PdfAsHelper.setErrorURL(request, response, errorUrl); +		 +		logger.debug("Starting signature creation with: " + connector); +		 +		IPlainSigner signer; +		if (connector.equals("bku") || connector.equals("onlinebku") || connector.equals("mobilebku")) { +			// start asynchronous signature creation +			PdfAsHelper.startSignature(request, response, getServletContext(), pdfData); +		} else if (connector.equals("jks") || connector.equals("moa")) { +			// start synchronous siganture creation +			byte[] pdfSignedData = PdfAsHelper.synchornousSignature(request, +					response, pdfData); +			PdfAsHelper.setSignedPdf(request, response, pdfSignedData); +			PdfAsHelper.gotoProvidePdf(getServletContext(), request, response); +			return; +		} else { +			throw new PdfAsWebException("Invalid connector (bku | moa | jks)"); +		} + +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java new file mode 100644 index 00000000..6ce0e1c9 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java @@ -0,0 +1,62 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.IOException; +import java.io.OutputStream; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +/** + * Servlet implementation class PDFData + */ +public class PDFData extends HttpServlet { +	private static final long serialVersionUID = 1L; + +	/** +	 * @see HttpServlet#HttpServlet() +	 */ +	public PDFData() { +		super(); +	} + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response) +	 */ +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response); +	} + +	protected void process(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		byte[] signedData = PdfAsHelper.getSignedPdf(request, response); + +		if (signedData != null) { +			response.setContentType("application/pdf"); +			OutputStream os = response.getOutputStream(); +			os.write(signedData); +			os.close(); +			 +			// When data is collected destroy session! +			request.getSession().invalidate(); +		} else { +			PdfAsHelper.setSessionException(request, response, +					"No signed pdf document available.", null); +			PdfAsHelper.gotoError(getServletContext(), request, response); +		} +	} +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java index 26f42840..e1387fce 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/ProvidePDFServlet.java @@ -1,37 +1,84 @@  package at.gv.egiz.pdfas.web.servlets;  import java.io.IOException; +import java.io.PrintWriter; +  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; +import at.gv.egiz.pdfas.common.exceptions.PdfAsException; +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; +  /**   * Servlet implementation class ProvidePDF   */  public class ProvidePDFServlet extends HttpServlet {  	private static final long serialVersionUID = 1L; -        -    /** -     * @see HttpServlet#HttpServlet() -     */ -    public ProvidePDFServlet() { -        super(); -        // TODO Auto-generated constructor stub -    }  	/** -	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) +	 * @see HttpServlet#HttpServlet() +	 */ +	public ProvidePDFServlet() { +		super(); +	} + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse +	 *      response)  	 */ -	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { -		// TODO Auto-generated method stub +	protected void doGet(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response);  	}  	/** -	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse +	 *      response)  	 */ -	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { -		// TODO Auto-generated method stub +	protected void doPost(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		this.process(request, response);  	} +	protected void process(HttpServletRequest request, +			HttpServletResponse response) throws ServletException, IOException { +		try { +			String invokeURL = PdfAsHelper.getInvokeURL(request, response); + +			if (invokeURL == null) { +				// Deliver to Browser directly! +				response.setContentType("text/html"); +				PrintWriter pw = response.getWriter(); +				pw.write("<html><body>PDF ready @: <a href='" +						+ PdfAsHelper.generatePdfURL(request, response) +						+ "' download>here</a></body></html>"); +				pw.close(); + +			} else { +				// Redirect Browser +				String template = PdfAsHelper.getInvokeRedirectTemplateSL(); +				template = template.replace("##INVOKE_URL##", invokeURL); + +				byte[] signedData = PdfAsHelper.getSignedPdf(request, response); +				if (signedData != null) { +					template = template.replace("##PDFLENGTH##", +							String.valueOf(signedData.length)); +				} else { +					throw new PdfAsException("No Signature data available"); +				} + +				template = template.replace("##PDFURL##", +						PdfAsHelper.generatePdfURL(request, response)); +				response.setContentType("text/html"); +				response.getWriter().write(template); +				response.getWriter().close(); +			} +		} catch (Exception e) { +			PdfAsHelper.setSessionException(request, response, e.getMessage(), +					e); +			PdfAsHelper.gotoError(getServletContext(), request, response); +		} +	}  } diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java deleted file mode 100644 index b0c9a56e..00000000 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/SignServlet.java +++ /dev/null @@ -1,102 +0,0 @@ -package at.gv.egiz.pdfas.web.servlets; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.List; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.fileupload.FileItem; -import org.apache.commons.fileupload.disk.DiskFileItemFactory; -import org.apache.commons.fileupload.servlet.ServletFileUpload; - -import at.gv.egiz.pdfas.web.helper.PdfAsHelper; - -/** - * Servlet implementation class Sign - */ -public class SignServlet extends HttpServlet { - -	private static final long serialVersionUID = 1L; - -	private static final String UPLOAD_DIRECTORY = "upload"; -	private static final int THRESHOLD_SIZE = 1024 * 1024 * 3; // 3MB -	private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB -	private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB - -	/** -	 * Default constructor. -	 */ -	public SignServlet() { -		// TODO Auto-generated constructor stub -	} - -	/** -	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse -	 *      response) -	 */ -	protected void doPost(HttpServletRequest request, -			HttpServletResponse response) throws ServletException, IOException { -		try { -			doParameters(request, response); -		} catch (Exception e) { -			e.printStackTrace(); -		} -	} - -	protected void doParameters(HttpServletRequest request, -			HttpServletResponse response) throws Exception { -		// checks if the request actually contains upload file -		if (!ServletFileUpload.isMultipartContent(request)) { -			PrintWriter writer = response.getWriter(); -			writer.println("Request does not contain upload data"); -			writer.flush(); -			return; -		} - -		// configures upload settings -		DiskFileItemFactory factory = new DiskFileItemFactory(); -		factory.setSizeThreshold(THRESHOLD_SIZE); -		factory.setRepository(new File(System.getProperty("java.io.tmpdir"))); -		 -		ServletFileUpload upload = new ServletFileUpload(factory); -		upload.setFileSizeMax(MAX_FILE_SIZE); -		upload.setSizeMax(MAX_REQUEST_SIZE); - -		// constructs the directory path to store upload file -		String uploadPath = getServletContext().getRealPath("") -				+ File.separator + UPLOAD_DIRECTORY; -		// creates the directory if it does not exist -		File uploadDir = new File(uploadPath); -		if (!uploadDir.exists()) { -			uploadDir.mkdir(); -		} - -		List formItems = upload.parseRequest(request); -		byte[] filecontent = null; -		if(formItems.size() != 1) { -			// TODO: no file uploaded! -		} else { -			FileItem item = (FileItem) formItems.get(0); -			filecontent = item.get(); -		} - -		doSignature(request, response, filecontent); -	} - -	protected void doSignature(HttpServletRequest request, -			HttpServletResponse response, byte[] pdfData) { -		try { -			// TODO: read Parameters ... -			PdfAsHelper.startSignature(request, response, pdfData); -		} catch (Exception e) { -			// TODO Auto-generated catch block -			e.printStackTrace(); -		} -	} - -} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/TestServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/TestServlet.java new file mode 100644 index 00000000..7e5ae044 --- /dev/null +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/TestServlet.java @@ -0,0 +1,43 @@ +package at.gv.egiz.pdfas.web.servlets; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import at.gv.egiz.pdfas.web.helper.PdfAsHelper; + +/** + * Servlet implementation class TestServlet + */ +public class TestServlet extends HttpServlet { +	private static final long serialVersionUID = 1L; +        +    /** +     * @see HttpServlet#HttpServlet() +     */ +    public TestServlet() { +        super(); +        // TODO Auto-generated constructor stub +    } + +	/** +	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) +	 */ +	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +		PrintWriter pw = response.getWriter(); +		pw.write(PdfAsHelper.generateDataURL(request, response)); +		pw.close(); +	} + +	/** +	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) +	 */ +	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +		// TODO Auto-generated method stub +	} + +} diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java index 119bd2cb..4418c30b 100644 --- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java +++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/VerifyServlet.java @@ -26,7 +26,6 @@ public class VerifyServlet extends HttpServlet {       */      public VerifyServlet() {          super(); -        // TODO Auto-generated constructor stub      }  	/** diff --git a/pdf-as-web/src/main/resources/template_error_redirect.html b/pdf-as-web/src/main/resources/template_error_redirect.html new file mode 100644 index 00000000..dd3f9d46 --- /dev/null +++ b/pdf-as-web/src/main/resources/template_error_redirect.html @@ -0,0 +1,56 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="de"> +<head> +<title></title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<style type="text/css"> +div.frameT { +	width: 100%; +	padding: 0; +	display: table; +	height: 100%; +	position: absolute; +	top: 0; +	left: 0; +	margin: 0; +} + +div.frameTC { +	padding: 0; +	vertical-align: middle; +	display: table-cell; +	margin: 0; +} + +div.content { +	width: 600px; +	background-color: #fff; +	margin: 0 auto; +	text-align: left; +	padding: 10px; +} +</style> +<script language="javascript" type="text/javascript"> +                        function onAnmeldeSubmit() { +                                document.CustomizedForm.submit(); +                                document.CustomizedForm.Senden.disabled=true; +                                document.CustomizedForm.Senden.hidden = "hidden"; +                        } +                </script> +</head> +<body onload="onAnmeldeSubmit()"> +	<div class="frameT"> +		<div class="frameTC"> +			<div class="content"> +				<form name="CustomizedForm" action="##ERROR_URL##" method="GET"> +					<input type="submit" value="Weiter" +						name="Senden"> <input type="hidden" +						name="cause" value="##CAUSE##"> <input +						type="hidden" name="error" value="##ERROR##"> +				</form> +			</div> +		</div> +	</div> +	 +</body> +</html> diff --git a/pdf-as-web/src/main/resources/template_invoke_redirect.html b/pdf-as-web/src/main/resources/template_invoke_redirect.html new file mode 100644 index 00000000..0f98ffbb --- /dev/null +++ b/pdf-as-web/src/main/resources/template_invoke_redirect.html @@ -0,0 +1,56 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="de"> +<head> +<title></title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<style type="text/css"> +div.frameT { +	width: 100%; +	padding: 0; +	display: table; +	height: 100%; +	position: absolute; +	top: 0; +	left: 0; +	margin: 0; +} + +div.frameTC { +	padding: 0; +	vertical-align: middle; +	display: table-cell; +	margin: 0; +} + +div.content { +	width: 600px; +	background-color: #fff; +	margin: 0 auto; +	text-align: left; +	padding: 10px; +} +</style> +<script language="javascript" type="text/javascript"> +                        function onAnmeldeSubmit() { +                                document.CustomizedForm.submit(); +                                document.CustomizedForm.Senden.disabled=true; +                                document.CustomizedForm.Senden.hidden = "hidden"; +                        } +                </script> +</head> +<body onload="onAnmeldeSubmit()"> +	<div class="frameT"> +		<div class="frameTC"> +			<div class="content"> +				<form name="CustomizedForm" action="##INVOKE_URL##" method="GET"> +					<input type="submit" value="Weiter" +						name="Senden">  +						<input type="hidden" name="pdfurl" value="##PDFURL##">  +						<input type="hidden" name="pdflength" value="##PDFLENGTH##"> +				</form> +			</div> +		</div> +	</div> +	 +</body> +</html> diff --git a/pdf-as-web/src/main/webapp/WEB-INF/decorators.xml b/pdf-as-web/src/main/webapp/WEB-INF/decorators.xml new file mode 100644 index 00000000..6a6ed0a0 --- /dev/null +++ b/pdf-as-web/src/main/webapp/WEB-INF/decorators.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<decorators defaultdir="/WEB-INF/decorators"> +    <excludes> +        <pattern>/assets/*</pattern> +    </excludes> +  +    <decorator name="layout" page="default_layout.jsp"> +        <pattern>/*</pattern> +        <pattern>/Sign</pattern> +        <pattern>/ProvidePDF</pattern> +        <pattern>/ErrorPage</pattern> +    </decorator> +</decorators>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/WEB-INF/decorators/default_layout.jsp b/pdf-as-web/src/main/webapp/WEB-INF/decorators/default_layout.jsp new file mode 100644 index 00000000..1179d48c --- /dev/null +++ b/pdf-as-web/src/main/webapp/WEB-INF/decorators/default_layout.jsp @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" +	prefix="decorator"%> +<%@page contentType="text/html; charset=UTF-8"%> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +	<meta charset="utf-8"/> +	<meta http-equiv="X-UA-Compatible" content="IE=edge"/> +	<meta name="viewport" content="width=device-width, initial-scale=1.0"/> +	<meta name="description" content="PDF-Signatur"/> +	<meta name="author" content="EGIZ"/> +	<link rel="shortcut icon" href="assets/ico/favicon.png"/> + +	<title><decorator:title></decorator:title></title>  +	<link href="assets/css/bootstrap.css" rel="stylesheet"/> + +	<link href="assets/css/pdfas.css" rel="stylesheet"/> +	<decorator:head></decorator:head> +</head> + +<body> +	<div class="container"> +		<div class="header"> +			<h3 class="text-muted">PDF-Signatur</h3> +		</div> + +		<div class="row marketing"> +			<div class="col-lg-12"> +				<decorator:body></decorator:body> +			</div> +		</div> + +		<div class="footer"> +			<p>© EGIZ 2014</p> +		</div> + +	</div> +	<!-- /container --> +</body> +</html>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/WEB-INF/sitemesh.xml b/pdf-as-web/src/main/webapp/WEB-INF/sitemesh.xml new file mode 100644 index 00000000..d8dfb3c9 --- /dev/null +++ b/pdf-as-web/src/main/webapp/WEB-INF/sitemesh.xml @@ -0,0 +1,16 @@ +<sitemesh> +    <property name="decorators-file" value="/WEB-INF/decorators.xml" /> +    <excludes file="${decorators-file}" /> +  +    <page-parsers> +        <parser content-type="text/html" +            class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> +    </page-parsers> +  +    <decorator-mappers> +        <mapper +            class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper"> +            <param name="config" value="${decorators-file}" /> +        </mapper> +    </decorator-mappers> +</sitemesh>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/WEB-INF/web.xml b/pdf-as-web/src/main/webapp/WEB-INF/web.xml index 44298afe..81fa6dad 100644 --- a/pdf-as-web/src/main/webapp/WEB-INF/web.xml +++ b/pdf-as-web/src/main/webapp/WEB-INF/web.xml @@ -9,36 +9,32 @@  	<description>  		PDF-AS-WEB Application  	</description> +	<filter> +		<filter-name>ExceptionCatchFilter</filter-name> +		<display-name>ExceptionCatchFilter</display-name> +		<description></description> +		<filter-class>at.gv.egiz.pdfas.web.filter.ExceptionCatchFilter</filter-class> +	</filter> +	<filter> +		<filter-name>sitemesh</filter-name> +		<filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> +	</filter> - -	<!-- Context initialization parameters that define shared String constants  -		used within your application, which can be customized by the system administrator  -		who is installing your application. The values actually assigned to these  -		parameters can be retrieved in a servlet or JSP page by calling: String value  -		= getServletContext().getInitParameter("name"); where "name" matches the  -		<param-name> element of one of these initialization parameters. You can define  -		any number of context initialization parameters, including zero. <context-param>  -		<param-name>webmaster</param-name> <param-value>myaddress@mycompany.com</param-value>  -		<description> The EMAIL address of the administrator to whom questions and  -		comments about this application should be addressed. </description> </context-param> --> - -	<!-- Servlet definitions for the servlets that make up your web application,  -		including initialization parameters. With Tomcat, you can also send requests  -		to servlets not listed here with a request like this: http://localhost:8080/{context-path}/servlet/{classname}  -		but this usage is not guaranteed to be portable. It also makes relative references  -		to images and other resources required by your servlet more complicated,  -		so defining all of your servlets (and defining a mapping to them with a servlet-mapping  -		element) is recommended. Servlet initialization parameters can be retrieved  -		in a servlet or JSP page by calling: String value = getServletConfig().getInitParameter("name");  -		where "name" matches the <param-name> element of one of these initialization  -		parameters. You can define any number of servlets, including zero. --> +	<filter-mapping> +		<filter-name>sitemesh</filter-name> +		<url-pattern>/*</url-pattern> +	</filter-mapping> +	<filter-mapping> +		<filter-name>ExceptionCatchFilter</filter-name> +		<url-pattern>/*</url-pattern> +	</filter-mapping>  	<servlet>  		<servlet-name>SignServlet</servlet-name>  		<description>  			The Sign Servlet allows Users to Sign PDF Documents ...  		</description> -		<servlet-class>at.gv.egiz.pdfas.web.servlets.SignServlet</servlet-class> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.ExternSignServlet</servlet-class>  		<load-on-startup>5</load-on-startup>  	</servlet>  	<servlet> @@ -59,6 +55,24 @@  		<description></description>  		<servlet-class>at.gv.egiz.pdfas.web.servlets.VerifyServlet</servlet-class>  	</servlet> +	<servlet> +		<servlet-name>PDFData</servlet-name> +		<display-name>PDFData</display-name> +		<description></description> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.PDFData</servlet-class> +	</servlet> +	<servlet> +		<servlet-name>ErrorPage</servlet-name> +		<display-name>ErrorPage</display-name> +		<description></description> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.ErrorPage</servlet-class> +	</servlet> +	<servlet> +		<servlet-name>TestServlet</servlet-name> +		<display-name>TestServlet</display-name> +		<description></description> +		<servlet-class>at.gv.egiz.pdfas.web.servlets.TestServlet</servlet-class> +	</servlet>  	<!-- Define mappings that are used by the servlet container to translate   		a particular request URI (context-relative) to a particular servlet. The  @@ -85,6 +99,18 @@  		<servlet-name>VerifyServlet</servlet-name>  		<url-pattern>/VerifyServlet</url-pattern>  	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>PDFData</servlet-name> +		<url-pattern>/PDFData</url-pattern> +	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>ErrorPage</servlet-name> +		<url-pattern>/ErrorPage</url-pattern> +	</servlet-mapping> +	<servlet-mapping> +		<servlet-name>TestServlet</servlet-name> +		<url-pattern>/TestServlet</url-pattern> +	</servlet-mapping>  	<!-- Define the default session timeout for your application, in minutes.   		From a servlet or JSP page, you can modify the timeout for a particular session  @@ -95,7 +121,7 @@  	</session-config>  	<welcome-file-list> -        <welcome-file>signstart.jsp</welcome-file> +        <welcome-file>index.jsp</welcome-file>      </welcome-file-list>  </web-app>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.css b/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.css new file mode 100644 index 00000000..df2d3d96 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.css @@ -0,0 +1,397 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { +  -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:active, +.btn.active { +  background-image: none; +} + +.btn-default { +  text-shadow: 0 1px 0 #fff; +  background-image: -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); +  background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%); +  background-repeat: repeat-x; +  border-color: #dbdbdb; +  border-color: #ccc; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-default:hover, +.btn-default:focus { +  background-color: #e0e0e0; +  background-position: 0 -15px; +} + +.btn-default:active, +.btn-default.active { +  background-color: #e0e0e0; +  border-color: #dbdbdb; +} + +.btn-primary { +  background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); +  background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); +  background-repeat: repeat-x; +  border-color: #2b669a; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus { +  background-color: #2d6ca2; +  background-position: 0 -15px; +} + +.btn-primary:active, +.btn-primary.active { +  background-color: #2d6ca2; +  border-color: #2b669a; +} + +.btn-success { +  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); +  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); +  background-repeat: repeat-x; +  border-color: #3e8f3e; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus { +  background-color: #419641; +  background-position: 0 -15px; +} + +.btn-success:active, +.btn-success.active { +  background-color: #419641; +  border-color: #3e8f3e; +} + +.btn-warning { +  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); +  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); +  background-repeat: repeat-x; +  border-color: #e38d13; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus { +  background-color: #eb9316; +  background-position: 0 -15px; +} + +.btn-warning:active, +.btn-warning.active { +  background-color: #eb9316; +  border-color: #e38d13; +} + +.btn-danger { +  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); +  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); +  background-repeat: repeat-x; +  border-color: #b92c28; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus { +  background-color: #c12e2a; +  background-position: 0 -15px; +} + +.btn-danger:active, +.btn-danger.active { +  background-color: #c12e2a; +  border-color: #b92c28; +} + +.btn-info { +  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); +  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); +  background-repeat: repeat-x; +  border-color: #28a4c9; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus { +  background-color: #2aabd2; +  background-position: 0 -15px; +} + +.btn-info:active, +.btn-info.active { +  background-color: #2aabd2; +  border-color: #28a4c9; +} + +.thumbnail, +.img-thumbnail { +  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { +  background-color: #e8e8e8; +  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); +  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { +  background-color: #357ebd; +  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); +  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.navbar-default { +  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%); +  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%); +  background-repeat: repeat-x; +  border-radius: 4px; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075); +} + +.navbar-default .navbar-nav > .active > a { +  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%); +  background-image: linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0); +  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); +          box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075); +} + +.navbar-brand, +.navbar-nav > li > a { +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25); +} + +.navbar-inverse { +  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%); +  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); +  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .navbar-nav > .active > a { +  background-image: -webkit-linear-gradient(top, #222222 0%, #282828 100%); +  background-image: linear-gradient(to bottom, #222222 0%, #282828 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0); +  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +          box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { +  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { +  border-radius: 0; +} + +.alert { +  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2); +  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.alert-success { +  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); +  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); +  background-repeat: repeat-x; +  border-color: #b2dba1; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); +} + +.alert-info { +  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); +  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); +  background-repeat: repeat-x; +  border-color: #9acfea; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); +} + +.alert-warning { +  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); +  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); +  background-repeat: repeat-x; +  border-color: #f5e79e; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); +} + +.alert-danger { +  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); +  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); +  background-repeat: repeat-x; +  border-color: #dca7a7; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); +} + +.progress { +  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); +  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); +} + +.progress-bar { +  background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); +  background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); +} + +.progress-bar-success { +  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); +  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); +} + +.progress-bar-info { +  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); +  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); +} + +.progress-bar-warning { +  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); +  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); +} + +.progress-bar-danger { +  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); +  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); +} + +.list-group { +  border-radius: 4px; +  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075); +} + +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { +  text-shadow: 0 -1px 0 #3071a9; +  background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); +  background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); +  background-repeat: repeat-x; +  border-color: #3278b3; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); +} + +.panel { +  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +          box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.panel-default > .panel-heading { +  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); +  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); +} + +.panel-primary > .panel-heading { +  background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); +  background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); +} + +.panel-success > .panel-heading { +  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); +  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); +} + +.panel-info > .panel-heading { +  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); +  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); +} + +.panel-warning > .panel-heading { +  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); +  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); +} + +.panel-danger > .panel-heading { +  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); +  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); +} + +.well { +  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); +  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); +  background-repeat: repeat-x; +  border-color: #dcdcdc; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); +  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +          box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1); +}
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.min.css b/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.min.css new file mode 100644 index 00000000..c7b6d39b --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/css/bootstrap-theme.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-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:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);background-repeat:repeat-x;border-color:#2b669a;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);background-repeat:repeat-x;border-color:#b92c28;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff3f3f3',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff282828',GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border-color:#b2dba1;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0)}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0)}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);background-repeat:repeat-x;border-color:#f5e79e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0)}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);background-repeat:repeat-x;border-color:#dca7a7;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0)}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0)}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0)}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/css/bootstrap.css b/pdf-as-web/src/main/webapp/assets/css/bootstrap.css new file mode 100644 index 00000000..377dff30 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/css/bootstrap.css @@ -0,0 +1,7118 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { +  display: block; +} + +audio, +canvas, +video { +  display: inline-block; +} + +audio:not([controls]) { +  display: none; +  height: 0; +} + +[hidden], +template { +  display: none; +} + +html { +  font-family: sans-serif; +  -webkit-text-size-adjust: 100%; +      -ms-text-size-adjust: 100%; +} + +body { +  margin: 0; +} + +a { +  background: transparent; +} + +a:focus { +  outline: thin dotted; +} + +a:active, +a:hover { +  outline: 0; +} + +h1 { +  margin: 0.67em 0; +  font-size: 2em; +} + +abbr[title] { +  border-bottom: 1px dotted; +} + +b, +strong { +  font-weight: bold; +} + +dfn { +  font-style: italic; +} + +hr { +  height: 0; +  -moz-box-sizing: content-box; +       box-sizing: content-box; +} + +mark { +  color: #000; +  background: #ff0; +} + +code, +kbd, +pre, +samp { +  font-family: monospace, serif; +  font-size: 1em; +} + +pre { +  white-space: pre-wrap; +} + +q { +  quotes: "\201C" "\201D" "\2018" "\2019"; +} + +small { +  font-size: 80%; +} + +sub, +sup { +  position: relative; +  font-size: 75%; +  line-height: 0; +  vertical-align: baseline; +} + +sup { +  top: -0.5em; +} + +sub { +  bottom: -0.25em; +} + +img { +  border: 0; +} + +svg:not(:root) { +  overflow: hidden; +} + +figure { +  margin: 0; +} + +fieldset { +  padding: 0.35em 0.625em 0.75em; +  margin: 0 2px; +  border: 1px solid #c0c0c0; +} + +legend { +  padding: 0; +  border: 0; +} + +button, +input, +select, +textarea { +  margin: 0; +  font-family: inherit; +  font-size: 100%; +} + +button, +input { +  line-height: normal; +} + +button, +select { +  text-transform: none; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { +  cursor: pointer; +  -webkit-appearance: button; +} + +button[disabled], +html input[disabled] { +  cursor: default; +} + +input[type="checkbox"], +input[type="radio"] { +  padding: 0; +  box-sizing: border-box; +} + +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; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { +  padding: 0; +  border: 0; +} + +textarea { +  overflow: auto; +  vertical-align: top; +} + +table { +  border-collapse: collapse; +  border-spacing: 0; +} + +@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) ")"; +  } +  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: 2cm .5cm; +  } +  p, +  h2, +  h3 { +    orphans: 3; +    widows: 3; +  } +  h2, +  h3 { +    page-break-after: avoid; +  } +  select { +    background: #fff !important; +  } +  .navbar { +    display: none; +  } +  .table td, +  .table th { +    background-color: #fff !important; +  } +  .btn > .caret, +  .dropup > .btn > .caret { +    border-top-color: #000 !important; +  } +  .label { +    border: 1px solid #000; +  } +  .table { +    border-collapse: collapse !important; +  } +  .table-bordered th, +  .table-bordered td { +    border: 1px solid #ddd !important; +  } +} + +*, +*:before, +*:after { +  -webkit-box-sizing: border-box; +     -moz-box-sizing: border-box; +          box-sizing: border-box; +} + +html { +  font-size: 62.5%; +  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +body { +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +  font-size: 14px; +  line-height: 1.428571429; +  color: #333333; +  background-color: #ffffff; +} + +input, +button, +select, +textarea { +  font-family: inherit; +  font-size: inherit; +  line-height: inherit; +} + +a { +  color: #428bca; +  text-decoration: none; +} + +a:hover, +a:focus { +  color: #2a6496; +  text-decoration: underline; +} + +a:focus { +  outline: thin dotted; +  outline: 5px auto -webkit-focus-ring-color; +  outline-offset: -2px; +} + +img { +  vertical-align: middle; +} + +.img-responsive { +  display: block; +  height: auto; +  max-width: 100%; +} + +.img-rounded { +  border-radius: 6px; +} + +.img-thumbnail { +  display: inline-block; +  height: auto; +  max-width: 100%; +  padding: 4px; +  line-height: 1.428571429; +  background-color: #ffffff; +  border: 1px solid #dddddd; +  border-radius: 4px; +  -webkit-transition: all 0.2s ease-in-out; +          transition: all 0.2s ease-in-out; +} + +.img-circle { +  border-radius: 50%; +} + +hr { +  margin-top: 20px; +  margin-bottom: 20px; +  border: 0; +  border-top: 1px solid #eeeeee; +} + +.sr-only { +  position: absolute; +  width: 1px; +  height: 1px; +  padding: 0; +  margin: -1px; +  overflow: hidden; +  clip: rect(0, 0, 0, 0); +  border: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { +  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +  font-weight: 500; +  line-height: 1.1; +  color: inherit; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { +  font-weight: normal; +  line-height: 1; +  color: #999999; +} + +h1, +h2, +h3 { +  margin-top: 20px; +  margin-bottom: 10px; +} + +h1 small, +h2 small, +h3 small, +h1 .small, +h2 .small, +h3 .small { +  font-size: 65%; +} + +h4, +h5, +h6 { +  margin-top: 10px; +  margin-bottom: 10px; +} + +h4 small, +h5 small, +h6 small, +h4 .small, +h5 .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: 200; +  line-height: 1.4; +} + +@media (min-width: 768px) { +  .lead { +    font-size: 21px; +  } +} + +small, +.small { +  font-size: 85%; +} + +cite { +  font-style: normal; +} + +.text-muted { +  color: #999999; +} + +.text-primary { +  color: #428bca; +} + +.text-primary:hover { +  color: #3071a9; +} + +.text-warning { +  color: #8a6d3b; +} + +.text-warning:hover { +  color: #66512c; +} + +.text-danger { +  color: #a94442; +} + +.text-danger:hover { +  color: #843534; +} + +.text-success { +  color: #3c763d; +} + +.text-success:hover { +  color: #2b542c; +} + +.text-info { +  color: #31708f; +} + +.text-info:hover { +  color: #245269; +} + +.text-left { +  text-align: left; +} + +.text-right { +  text-align: right; +} + +.text-center { +  text-align: center; +} + +.page-header { +  padding-bottom: 9px; +  margin: 40px 0 20px; +  border-bottom: 1px solid #eeeeee; +} + +ul, +ol { +  margin-top: 0; +  margin-bottom: 10px; +} + +ul ul, +ol ul, +ul ol, +ol ol { +  margin-bottom: 0; +} + +.list-unstyled { +  padding-left: 0; +  list-style: none; +} + +.list-inline { +  padding-left: 0; +  list-style: none; +} + +.list-inline > li { +  display: inline-block; +  padding-right: 5px; +  padding-left: 5px; +} + +.list-inline > li:first-child { +  padding-left: 0; +} + +dl { +  margin-top: 0; +  margin-bottom: 20px; +} + +dt, +dd { +  line-height: 1.428571429; +} + +dt { +  font-weight: bold; +} + +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; +  } +  .dl-horizontal dd:before, +  .dl-horizontal dd:after { +    display: table; +    content: " "; +  } +  .dl-horizontal dd:after { +    clear: both; +  } +  .dl-horizontal dd:before, +  .dl-horizontal dd:after { +    display: table; +    content: " "; +  } +  .dl-horizontal dd:after { +    clear: both; +  } +} + +abbr[title], +abbr[data-original-title] { +  cursor: help; +  border-bottom: 1px dotted #999999; +} + +.initialism { +  font-size: 90%; +  text-transform: uppercase; +} + +blockquote { +  padding: 10px 20px; +  margin: 0 0 20px; +  border-left: 5px solid #eeeeee; +} + +blockquote p { +  font-size: 17.5px; +  font-weight: 300; +  line-height: 1.25; +} + +blockquote p:last-child { +  margin-bottom: 0; +} + +blockquote small, +blockquote .small { +  display: block; +  line-height: 1.428571429; +  color: #999999; +} + +blockquote small:before, +blockquote .small:before { +  content: '\2014 \00A0'; +} + +blockquote.pull-right { +  padding-right: 15px; +  padding-left: 0; +  border-right: 5px solid #eeeeee; +  border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small, +blockquote.pull-right .small { +  text-align: right; +} + +blockquote.pull-right small:before, +blockquote.pull-right .small:before { +  content: ''; +} + +blockquote.pull-right small:after, +blockquote.pull-right .small:after { +  content: '\00A0 \2014'; +} + +blockquote:before, +blockquote:after { +  content: ""; +} + +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; +  white-space: nowrap; +  background-color: #f9f2f4; +  border-radius: 4px; +} + +pre { +  display: block; +  padding: 9.5px; +  margin: 0 0 10px; +  font-size: 13px; +  line-height: 1.428571429; +  color: #333333; +  word-break: break-all; +  word-wrap: break-word; +  background-color: #f5f5f5; +  border: 1px solid #cccccc; +  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; +} + +.container:before, +.container:after { +  display: table; +  content: " "; +} + +.container:after { +  clear: both; +} + +.container:before, +.container:after { +  display: table; +  content: " "; +} + +.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; +  } +} + +.row { +  margin-right: -15px; +  margin-left: -15px; +} + +.row:before, +.row:after { +  display: table; +  content: " "; +} + +.row:after { +  clear: both; +} + +.row:before, +.row:after { +  display: table; +  content: " "; +} + +.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-right: 15px; +  padding-left: 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-12 { +  width: 100%; +} + +.col-xs-11 { +  width: 91.66666666666666%; +} + +.col-xs-10 { +  width: 83.33333333333334%; +} + +.col-xs-9 { +  width: 75%; +} + +.col-xs-8 { +  width: 66.66666666666666%; +} + +.col-xs-7 { +  width: 58.333333333333336%; +} + +.col-xs-6 { +  width: 50%; +} + +.col-xs-5 { +  width: 41.66666666666667%; +} + +.col-xs-4 { +  width: 33.33333333333333%; +} + +.col-xs-3 { +  width: 25%; +} + +.col-xs-2 { +  width: 16.666666666666664%; +} + +.col-xs-1 { +  width: 8.333333333333332%; +} + +.col-xs-pull-12 { +  right: 100%; +} + +.col-xs-pull-11 { +  right: 91.66666666666666%; +} + +.col-xs-pull-10 { +  right: 83.33333333333334%; +} + +.col-xs-pull-9 { +  right: 75%; +} + +.col-xs-pull-8 { +  right: 66.66666666666666%; +} + +.col-xs-pull-7 { +  right: 58.333333333333336%; +} + +.col-xs-pull-6 { +  right: 50%; +} + +.col-xs-pull-5 { +  right: 41.66666666666667%; +} + +.col-xs-pull-4 { +  right: 33.33333333333333%; +} + +.col-xs-pull-3 { +  right: 25%; +} + +.col-xs-pull-2 { +  right: 16.666666666666664%; +} + +.col-xs-pull-1 { +  right: 8.333333333333332%; +} + +.col-xs-pull-0 { +  right: 0; +} + +.col-xs-push-12 { +  left: 100%; +} + +.col-xs-push-11 { +  left: 91.66666666666666%; +} + +.col-xs-push-10 { +  left: 83.33333333333334%; +} + +.col-xs-push-9 { +  left: 75%; +} + +.col-xs-push-8 { +  left: 66.66666666666666%; +} + +.col-xs-push-7 { +  left: 58.333333333333336%; +} + +.col-xs-push-6 { +  left: 50%; +} + +.col-xs-push-5 { +  left: 41.66666666666667%; +} + +.col-xs-push-4 { +  left: 33.33333333333333%; +} + +.col-xs-push-3 { +  left: 25%; +} + +.col-xs-push-2 { +  left: 16.666666666666664%; +} + +.col-xs-push-1 { +  left: 8.333333333333332%; +} + +.col-xs-push-0 { +  left: 0; +} + +.col-xs-offset-12 { +  margin-left: 100%; +} + +.col-xs-offset-11 { +  margin-left: 91.66666666666666%; +} + +.col-xs-offset-10 { +  margin-left: 83.33333333333334%; +} + +.col-xs-offset-9 { +  margin-left: 75%; +} + +.col-xs-offset-8 { +  margin-left: 66.66666666666666%; +} + +.col-xs-offset-7 { +  margin-left: 58.333333333333336%; +} + +.col-xs-offset-6 { +  margin-left: 50%; +} + +.col-xs-offset-5 { +  margin-left: 41.66666666666667%; +} + +.col-xs-offset-4 { +  margin-left: 33.33333333333333%; +} + +.col-xs-offset-3 { +  margin-left: 25%; +} + +.col-xs-offset-2 { +  margin-left: 16.666666666666664%; +} + +.col-xs-offset-1 { +  margin-left: 8.333333333333332%; +} + +.col-xs-offset-0 { +  margin-left: 0; +} + +@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-12 { +    width: 100%; +  } +  .col-sm-11 { +    width: 91.66666666666666%; +  } +  .col-sm-10 { +    width: 83.33333333333334%; +  } +  .col-sm-9 { +    width: 75%; +  } +  .col-sm-8 { +    width: 66.66666666666666%; +  } +  .col-sm-7 { +    width: 58.333333333333336%; +  } +  .col-sm-6 { +    width: 50%; +  } +  .col-sm-5 { +    width: 41.66666666666667%; +  } +  .col-sm-4 { +    width: 33.33333333333333%; +  } +  .col-sm-3 { +    width: 25%; +  } +  .col-sm-2 { +    width: 16.666666666666664%; +  } +  .col-sm-1 { +    width: 8.333333333333332%; +  } +  .col-sm-pull-12 { +    right: 100%; +  } +  .col-sm-pull-11 { +    right: 91.66666666666666%; +  } +  .col-sm-pull-10 { +    right: 83.33333333333334%; +  } +  .col-sm-pull-9 { +    right: 75%; +  } +  .col-sm-pull-8 { +    right: 66.66666666666666%; +  } +  .col-sm-pull-7 { +    right: 58.333333333333336%; +  } +  .col-sm-pull-6 { +    right: 50%; +  } +  .col-sm-pull-5 { +    right: 41.66666666666667%; +  } +  .col-sm-pull-4 { +    right: 33.33333333333333%; +  } +  .col-sm-pull-3 { +    right: 25%; +  } +  .col-sm-pull-2 { +    right: 16.666666666666664%; +  } +  .col-sm-pull-1 { +    right: 8.333333333333332%; +  } +  .col-sm-pull-0 { +    right: 0; +  } +  .col-sm-push-12 { +    left: 100%; +  } +  .col-sm-push-11 { +    left: 91.66666666666666%; +  } +  .col-sm-push-10 { +    left: 83.33333333333334%; +  } +  .col-sm-push-9 { +    left: 75%; +  } +  .col-sm-push-8 { +    left: 66.66666666666666%; +  } +  .col-sm-push-7 { +    left: 58.333333333333336%; +  } +  .col-sm-push-6 { +    left: 50%; +  } +  .col-sm-push-5 { +    left: 41.66666666666667%; +  } +  .col-sm-push-4 { +    left: 33.33333333333333%; +  } +  .col-sm-push-3 { +    left: 25%; +  } +  .col-sm-push-2 { +    left: 16.666666666666664%; +  } +  .col-sm-push-1 { +    left: 8.333333333333332%; +  } +  .col-sm-push-0 { +    left: 0; +  } +  .col-sm-offset-12 { +    margin-left: 100%; +  } +  .col-sm-offset-11 { +    margin-left: 91.66666666666666%; +  } +  .col-sm-offset-10 { +    margin-left: 83.33333333333334%; +  } +  .col-sm-offset-9 { +    margin-left: 75%; +  } +  .col-sm-offset-8 { +    margin-left: 66.66666666666666%; +  } +  .col-sm-offset-7 { +    margin-left: 58.333333333333336%; +  } +  .col-sm-offset-6 { +    margin-left: 50%; +  } +  .col-sm-offset-5 { +    margin-left: 41.66666666666667%; +  } +  .col-sm-offset-4 { +    margin-left: 33.33333333333333%; +  } +  .col-sm-offset-3 { +    margin-left: 25%; +  } +  .col-sm-offset-2 { +    margin-left: 16.666666666666664%; +  } +  .col-sm-offset-1 { +    margin-left: 8.333333333333332%; +  } +  .col-sm-offset-0 { +    margin-left: 0; +  } +} + +@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-12 { +    width: 100%; +  } +  .col-md-11 { +    width: 91.66666666666666%; +  } +  .col-md-10 { +    width: 83.33333333333334%; +  } +  .col-md-9 { +    width: 75%; +  } +  .col-md-8 { +    width: 66.66666666666666%; +  } +  .col-md-7 { +    width: 58.333333333333336%; +  } +  .col-md-6 { +    width: 50%; +  } +  .col-md-5 { +    width: 41.66666666666667%; +  } +  .col-md-4 { +    width: 33.33333333333333%; +  } +  .col-md-3 { +    width: 25%; +  } +  .col-md-2 { +    width: 16.666666666666664%; +  } +  .col-md-1 { +    width: 8.333333333333332%; +  } +  .col-md-pull-12 { +    right: 100%; +  } +  .col-md-pull-11 { +    right: 91.66666666666666%; +  } +  .col-md-pull-10 { +    right: 83.33333333333334%; +  } +  .col-md-pull-9 { +    right: 75%; +  } +  .col-md-pull-8 { +    right: 66.66666666666666%; +  } +  .col-md-pull-7 { +    right: 58.333333333333336%; +  } +  .col-md-pull-6 { +    right: 50%; +  } +  .col-md-pull-5 { +    right: 41.66666666666667%; +  } +  .col-md-pull-4 { +    right: 33.33333333333333%; +  } +  .col-md-pull-3 { +    right: 25%; +  } +  .col-md-pull-2 { +    right: 16.666666666666664%; +  } +  .col-md-pull-1 { +    right: 8.333333333333332%; +  } +  .col-md-pull-0 { +    right: 0; +  } +  .col-md-push-12 { +    left: 100%; +  } +  .col-md-push-11 { +    left: 91.66666666666666%; +  } +  .col-md-push-10 { +    left: 83.33333333333334%; +  } +  .col-md-push-9 { +    left: 75%; +  } +  .col-md-push-8 { +    left: 66.66666666666666%; +  } +  .col-md-push-7 { +    left: 58.333333333333336%; +  } +  .col-md-push-6 { +    left: 50%; +  } +  .col-md-push-5 { +    left: 41.66666666666667%; +  } +  .col-md-push-4 { +    left: 33.33333333333333%; +  } +  .col-md-push-3 { +    left: 25%; +  } +  .col-md-push-2 { +    left: 16.666666666666664%; +  } +  .col-md-push-1 { +    left: 8.333333333333332%; +  } +  .col-md-push-0 { +    left: 0; +  } +  .col-md-offset-12 { +    margin-left: 100%; +  } +  .col-md-offset-11 { +    margin-left: 91.66666666666666%; +  } +  .col-md-offset-10 { +    margin-left: 83.33333333333334%; +  } +  .col-md-offset-9 { +    margin-left: 75%; +  } +  .col-md-offset-8 { +    margin-left: 66.66666666666666%; +  } +  .col-md-offset-7 { +    margin-left: 58.333333333333336%; +  } +  .col-md-offset-6 { +    margin-left: 50%; +  } +  .col-md-offset-5 { +    margin-left: 41.66666666666667%; +  } +  .col-md-offset-4 { +    margin-left: 33.33333333333333%; +  } +  .col-md-offset-3 { +    margin-left: 25%; +  } +  .col-md-offset-2 { +    margin-left: 16.666666666666664%; +  } +  .col-md-offset-1 { +    margin-left: 8.333333333333332%; +  } +  .col-md-offset-0 { +    margin-left: 0; +  } +} + +@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-12 { +    width: 100%; +  } +  .col-lg-11 { +    width: 91.66666666666666%; +  } +  .col-lg-10 { +    width: 83.33333333333334%; +  } +  .col-lg-9 { +    width: 75%; +  } +  .col-lg-8 { +    width: 66.66666666666666%; +  } +  .col-lg-7 { +    width: 58.333333333333336%; +  } +  .col-lg-6 { +    width: 50%; +  } +  .col-lg-5 { +    width: 41.66666666666667%; +  } +  .col-lg-4 { +    width: 33.33333333333333%; +  } +  .col-lg-3 { +    width: 25%; +  } +  .col-lg-2 { +    width: 16.666666666666664%; +  } +  .col-lg-1 { +    width: 8.333333333333332%; +  } +  .col-lg-pull-12 { +    right: 100%; +  } +  .col-lg-pull-11 { +    right: 91.66666666666666%; +  } +  .col-lg-pull-10 { +    right: 83.33333333333334%; +  } +  .col-lg-pull-9 { +    right: 75%; +  } +  .col-lg-pull-8 { +    right: 66.66666666666666%; +  } +  .col-lg-pull-7 { +    right: 58.333333333333336%; +  } +  .col-lg-pull-6 { +    right: 50%; +  } +  .col-lg-pull-5 { +    right: 41.66666666666667%; +  } +  .col-lg-pull-4 { +    right: 33.33333333333333%; +  } +  .col-lg-pull-3 { +    right: 25%; +  } +  .col-lg-pull-2 { +    right: 16.666666666666664%; +  } +  .col-lg-pull-1 { +    right: 8.333333333333332%; +  } +  .col-lg-pull-0 { +    right: 0; +  } +  .col-lg-push-12 { +    left: 100%; +  } +  .col-lg-push-11 { +    left: 91.66666666666666%; +  } +  .col-lg-push-10 { +    left: 83.33333333333334%; +  } +  .col-lg-push-9 { +    left: 75%; +  } +  .col-lg-push-8 { +    left: 66.66666666666666%; +  } +  .col-lg-push-7 { +    left: 58.333333333333336%; +  } +  .col-lg-push-6 { +    left: 50%; +  } +  .col-lg-push-5 { +    left: 41.66666666666667%; +  } +  .col-lg-push-4 { +    left: 33.33333333333333%; +  } +  .col-lg-push-3 { +    left: 25%; +  } +  .col-lg-push-2 { +    left: 16.666666666666664%; +  } +  .col-lg-push-1 { +    left: 8.333333333333332%; +  } +  .col-lg-push-0 { +    left: 0; +  } +  .col-lg-offset-12 { +    margin-left: 100%; +  } +  .col-lg-offset-11 { +    margin-left: 91.66666666666666%; +  } +  .col-lg-offset-10 { +    margin-left: 83.33333333333334%; +  } +  .col-lg-offset-9 { +    margin-left: 75%; +  } +  .col-lg-offset-8 { +    margin-left: 66.66666666666666%; +  } +  .col-lg-offset-7 { +    margin-left: 58.333333333333336%; +  } +  .col-lg-offset-6 { +    margin-left: 50%; +  } +  .col-lg-offset-5 { +    margin-left: 41.66666666666667%; +  } +  .col-lg-offset-4 { +    margin-left: 33.33333333333333%; +  } +  .col-lg-offset-3 { +    margin-left: 25%; +  } +  .col-lg-offset-2 { +    margin-left: 16.666666666666664%; +  } +  .col-lg-offset-1 { +    margin-left: 8.333333333333332%; +  } +  .col-lg-offset-0 { +    margin-left: 0; +  } +} + +table { +  max-width: 100%; +  background-color: transparent; +} + +th { +  text-align: left; +} + +.table { +  width: 100%; +  margin-bottom: 20px; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { +  padding: 8px; +  line-height: 1.428571429; +  vertical-align: top; +  border-top: 1px solid #dddddd; +} + +.table > thead > tr > th { +  vertical-align: bottom; +  border-bottom: 2px solid #dddddd; +} + +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { +  border-top: 0; +} + +.table > tbody + tbody { +  border-top: 2px solid #dddddd; +} + +.table .table { +  background-color: #ffffff; +} + +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { +  padding: 5px; +} + +.table-bordered { +  border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { +  border: 1px solid #dddddd; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { +  border-bottom-width: 2px; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { +  background-color: #f9f9f9; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { +  background-color: #f5f5f5; +} + +table col[class*="col-"] { +  position: static; +  display: table-column; +  float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { +  display: table-cell; +  float: none; +} + +.table > thead > tr > .active, +.table > tbody > tr > .active, +.table > tfoot > tr > .active, +.table > thead > .active > td, +.table > tbody > .active > td, +.table > tfoot > .active > td, +.table > thead > .active > th, +.table > tbody > .active > th, +.table > tfoot > .active > th { +  background-color: #f5f5f5; +} + +.table-hover > tbody > tr > .active:hover, +.table-hover > tbody > .active:hover > td, +.table-hover > tbody > .active:hover > th { +  background-color: #e8e8e8; +} + +.table > thead > tr > .success, +.table > tbody > tr > .success, +.table > tfoot > tr > .success, +.table > thead > .success > td, +.table > tbody > .success > td, +.table > tfoot > .success > td, +.table > thead > .success > th, +.table > tbody > .success > th, +.table > tfoot > .success > th { +  background-color: #dff0d8; +} + +.table-hover > tbody > tr > .success:hover, +.table-hover > tbody > .success:hover > td, +.table-hover > tbody > .success:hover > th { +  background-color: #d0e9c6; +} + +.table > thead > tr > .danger, +.table > tbody > tr > .danger, +.table > tfoot > tr > .danger, +.table > thead > .danger > td, +.table > tbody > .danger > td, +.table > tfoot > .danger > td, +.table > thead > .danger > th, +.table > tbody > .danger > th, +.table > tfoot > .danger > th { +  background-color: #f2dede; +} + +.table-hover > tbody > tr > .danger:hover, +.table-hover > tbody > .danger:hover > td, +.table-hover > tbody > .danger:hover > th { +  background-color: #ebcccc; +} + +.table > thead > tr > .warning, +.table > tbody > tr > .warning, +.table > tfoot > tr > .warning, +.table > thead > .warning > td, +.table > tbody > .warning > td, +.table > tfoot > .warning > td, +.table > thead > .warning > th, +.table > tbody > .warning > th, +.table > tfoot > .warning > th { +  background-color: #fcf8e3; +} + +.table-hover > tbody > tr > .warning:hover, +.table-hover > tbody > .warning:hover > td, +.table-hover > tbody > .warning:hover > th { +  background-color: #faf2cc; +} + +@media (max-width: 767px) { +  .table-responsive { +    width: 100%; +    margin-bottom: 15px; +    overflow-x: scroll; +    overflow-y: hidden; +    border: 1px solid #dddddd; +    -ms-overflow-style: -ms-autohiding-scrollbar; +    -webkit-overflow-scrolling: touch; +  } +  .table-responsive > .table { +    margin-bottom: 0; +  } +  .table-responsive > .table > thead > tr > th, +  .table-responsive > .table > tbody > tr > th, +  .table-responsive > .table > tfoot > tr > th, +  .table-responsive > .table > thead > tr > td, +  .table-responsive > .table > tbody > tr > td, +  .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 > tbody > tr > th:first-child, +  .table-responsive > .table-bordered > tfoot > tr > th:first-child, +  .table-responsive > .table-bordered > thead > tr > td:first-child, +  .table-responsive > .table-bordered > tbody > tr > td: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 > tbody > tr > th:last-child, +  .table-responsive > .table-bordered > tfoot > tr > th:last-child, +  .table-responsive > .table-bordered > thead > tr > td:last-child, +  .table-responsive > .table-bordered > tbody > tr > td: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 > tfoot > tr:last-child > th, +  .table-responsive > .table-bordered > tbody > tr:last-child > td, +  .table-responsive > .table-bordered > tfoot > tr:last-child > td { +    border-bottom: 0; +  } +} + +fieldset { +  padding: 0; +  margin: 0; +  border: 0; +} + +legend { +  display: block; +  width: 100%; +  padding: 0; +  margin-bottom: 20px; +  font-size: 21px; +  line-height: inherit; +  color: #333333; +  border: 0; +  border-bottom: 1px solid #e5e5e5; +} + +label { +  display: inline-block; +  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; +  /* IE8-9 */ + +  line-height: normal; +} + +input[type="file"] { +  display: block; +} + +select[multiple], +select[size] { +  height: auto; +} + +select optgroup { +  font-family: inherit; +  font-size: inherit; +  font-style: inherit; +} + +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; +} + +input[type="number"]::-webkit-outer-spin-button, +input[type="number"]::-webkit-inner-spin-button { +  height: auto; +} + +output { +  display: block; +  padding-top: 7px; +  font-size: 14px; +  line-height: 1.428571429; +  color: #555555; +  vertical-align: middle; +} + +.form-control { +  display: block; +  width: 100%; +  height: 34px; +  padding: 6px 12px; +  font-size: 14px; +  line-height: 1.428571429; +  color: #555555; +  vertical-align: middle; +  background-color: #ffffff; +  background-image: none; +  border: 1px solid #cccccc; +  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; +          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: #999999; +} + +.form-control::-moz-placeholder { +  color: #999999; +  opacity: 1; +} + +.form-control:-ms-input-placeholder { +  color: #999999; +} + +.form-control::-webkit-input-placeholder { +  color: #999999; +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { +  cursor: not-allowed; +  background-color: #eeeeee; +} + +textarea.form-control { +  height: auto; +} + +.form-group { +  margin-bottom: 15px; +} + +.radio, +.checkbox { +  display: block; +  min-height: 20px; +  padding-left: 20px; +  margin-top: 10px; +  margin-bottom: 10px; +  vertical-align: middle; +} + +.radio label, +.checkbox label { +  display: inline; +  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"] { +  float: left; +  margin-left: -20px; +} + +.radio + .radio, +.checkbox + .checkbox { +  margin-top: -5px; +} + +.radio-inline, +.checkbox-inline { +  display: inline-block; +  padding-left: 20px; +  margin-bottom: 0; +  font-weight: normal; +  vertical-align: middle; +  cursor: pointer; +} + +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { +  margin-top: 0; +  margin-left: 10px; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +.radio[disabled], +.radio-inline[disabled], +.checkbox[disabled], +.checkbox-inline[disabled], +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"], +fieldset[disabled] .radio, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox, +fieldset[disabled] .checkbox-inline { +  cursor: not-allowed; +} + +.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; +} + +textarea.input-sm { +  height: auto; +} + +.input-lg { +  height: 46px; +  padding: 10px 16px; +  font-size: 18px; +  line-height: 1.33; +  border-radius: 6px; +} + +select.input-lg { +  height: 46px; +  line-height: 46px; +} + +textarea.input-lg { +  height: auto; +} + +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline { +  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; +  background-color: #fcf8e3; +  border-color: #8a6d3b; +} + +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline { +  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; +  background-color: #f2dede; +  border-color: #a94442; +} + +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline { +  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; +  background-color: #dff0d8; +  border-color: #3c763d; +} + +.form-control-static { +  margin-bottom: 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; +  } +  .form-inline select.form-control { +    width: auto; +  } +  .form-inline .radio, +  .form-inline .checkbox { +    display: inline-block; +    padding-left: 0; +    margin-top: 0; +    margin-bottom: 0; +  } +  .form-inline .radio input[type="radio"], +  .form-inline .checkbox input[type="checkbox"] { +    float: none; +    margin-left: 0; +  } +} + +.form-horizontal .control-label, +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { +  padding-top: 7px; +  margin-top: 0; +  margin-bottom: 0; +} + +.form-horizontal .radio, +.form-horizontal .checkbox { +  min-height: 27px; +} + +.form-horizontal .form-group { +  margin-right: -15px; +  margin-left: -15px; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { +  display: table; +  content: " "; +} + +.form-horizontal .form-group:after { +  clear: both; +} + +.form-horizontal .form-group:before, +.form-horizontal .form-group:after { +  display: table; +  content: " "; +} + +.form-horizontal .form-group:after { +  clear: both; +} + +.form-horizontal .form-control-static { +  padding-top: 7px; +} + +@media (min-width: 768px) { +  .form-horizontal .control-label { +    text-align: right; +  } +} + +.btn { +  display: inline-block; +  padding: 6px 12px; +  margin-bottom: 0; +  font-size: 14px; +  font-weight: normal; +  line-height: 1.428571429; +  text-align: center; +  white-space: nowrap; +  vertical-align: middle; +  cursor: pointer; +  background-image: none; +  border: 1px solid transparent; +  border-radius: 4px; +  -webkit-user-select: none; +     -moz-user-select: none; +      -ms-user-select: none; +       -o-user-select: none; +          user-select: none; +} + +.btn:focus { +  outline: thin dotted; +  outline: 5px auto -webkit-focus-ring-color; +  outline-offset: -2px; +} + +.btn:hover, +.btn:focus { +  color: #333333; +  text-decoration: none; +} + +.btn:active, +.btn.active { +  background-image: none; +  outline: 0; +  -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 { +  pointer-events: none; +  cursor: not-allowed; +  opacity: 0.65; +  filter: alpha(opacity=65); +  -webkit-box-shadow: none; +          box-shadow: none; +} + +.btn-default { +  color: #333333; +  background-color: #ffffff; +  border-color: #cccccc; +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { +  color: #333333; +  background-color: #ebebeb; +  border-color: #adadad; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { +  background-image: none; +} + +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { +  background-color: #ffffff; +  border-color: #cccccc; +} + +.btn-default .badge { +  color: #ffffff; +  background-color: #fff; +} + +.btn-primary { +  color: #ffffff; +  background-color: #428bca; +  border-color: #357ebd; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { +  color: #ffffff; +  background-color: #3276b1; +  border-color: #285e8e; +} + +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { +  background-image: none; +} + +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { +  background-color: #428bca; +  border-color: #357ebd; +} + +.btn-primary .badge { +  color: #428bca; +  background-color: #fff; +} + +.btn-warning { +  color: #ffffff; +  background-color: #f0ad4e; +  border-color: #eea236; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { +  color: #ffffff; +  background-color: #ed9c28; +  border-color: #d58512; +} + +.btn-warning:active, +.btn-warning.active, +.open .dropdown-toggle.btn-warning { +  background-image: none; +} + +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { +  background-color: #f0ad4e; +  border-color: #eea236; +} + +.btn-warning .badge { +  color: #f0ad4e; +  background-color: #fff; +} + +.btn-danger { +  color: #ffffff; +  background-color: #d9534f; +  border-color: #d43f3a; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { +  color: #ffffff; +  background-color: #d2322d; +  border-color: #ac2925; +} + +.btn-danger:active, +.btn-danger.active, +.open .dropdown-toggle.btn-danger { +  background-image: none; +} + +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { +  background-color: #d9534f; +  border-color: #d43f3a; +} + +.btn-danger .badge { +  color: #d9534f; +  background-color: #fff; +} + +.btn-success { +  color: #ffffff; +  background-color: #5cb85c; +  border-color: #4cae4c; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { +  color: #ffffff; +  background-color: #47a447; +  border-color: #398439; +} + +.btn-success:active, +.btn-success.active, +.open .dropdown-toggle.btn-success { +  background-image: none; +} + +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { +  background-color: #5cb85c; +  border-color: #4cae4c; +} + +.btn-success .badge { +  color: #5cb85c; +  background-color: #fff; +} + +.btn-info { +  color: #ffffff; +  background-color: #5bc0de; +  border-color: #46b8da; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { +  color: #ffffff; +  background-color: #39b3d7; +  border-color: #269abc; +} + +.btn-info:active, +.btn-info.active, +.open .dropdown-toggle.btn-info { +  background-image: none; +} + +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { +  background-color: #5bc0de; +  border-color: #46b8da; +} + +.btn-info .badge { +  color: #5bc0de; +  background-color: #fff; +} + +.btn-link { +  font-weight: normal; +  color: #428bca; +  cursor: pointer; +  border-radius: 0; +} + +.btn-link, +.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: #2a6496; +  text-decoration: underline; +  background-color: transparent; +} + +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { +  color: #999999; +  text-decoration: none; +} + +.btn-lg { +  padding: 10px 16px; +  font-size: 18px; +  line-height: 1.33; +  border-radius: 6px; +} + +.btn-sm { +  padding: 5px 10px; +  font-size: 12px; +  line-height: 1.5; +  border-radius: 3px; +} + +.btn-xs { +  padding: 1px 5px; +  font-size: 12px; +  line-height: 1.5; +  border-radius: 3px; +} + +.btn-block { +  display: block; +  width: 100%; +  padding-right: 0; +  padding-left: 0; +} + +.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; +          transition: opacity 0.15s linear; +} + +.fade.in { +  opacity: 1; +} + +.collapse { +  display: none; +} + +.collapse.in { +  display: block; +} + +.collapsing { +  position: relative; +  height: 0; +  overflow: hidden; +  -webkit-transition: height 0.35s ease; +          transition: height 0.35s ease; +} + +@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.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'; +  -webkit-font-smoothing: antialiased; +  font-style: normal; +  font-weight: normal; +  line-height: 1; +  -moz-osx-font-smoothing: grayscale; +} + +.glyphicon:empty { +  width: 1em; +} + +.glyphicon-asterisk:before { +  content: "\2a"; +} + +.glyphicon-plus:before { +  content: "\2b"; +} + +.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"; +} + +.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; +  font-size: 14px; +  list-style: none; +  background-color: #ffffff; +  border: 1px solid #cccccc; +  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: #333333; +  white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { +  color: #262626; +  text-decoration: none; +  background-color: #f5f5f5; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { +  color: #ffffff; +  text-decoration: none; +  background-color: #428bca; +  outline: 0; +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { +  color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { +  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-header { +  display: block; +  padding: 3px 20px; +  font-size: 12px; +  line-height: 1.428571429; +  color: #999999; +} + +.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 { +  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; +  } +} + +.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-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { +  z-index: 2; +} + +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { +  outline: none; +} + +.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:before, +.btn-toolbar:after { +  display: table; +  content: " "; +} + +.btn-toolbar:after { +  clear: both; +} + +.btn-toolbar:before, +.btn-toolbar:after { +  display: table; +  content: " "; +} + +.btn-toolbar:after { +  clear: both; +} + +.btn-toolbar .btn-group { +  float: left; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group, +.btn-toolbar > .btn-group + .btn-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-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-top-right-radius: 0; +  border-bottom-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-xs > .btn { +  padding: 1px 5px; +  font-size: 12px; +  line-height: 1.5; +  border-radius: 3px; +} + +.btn-group-sm > .btn { +  padding: 5px 10px; +  font-size: 12px; +  line-height: 1.5; +  border-radius: 3px; +} + +.btn-group-lg > .btn { +  padding: 10px 16px; +  font-size: 18px; +  line-height: 1.33; +  border-radius: 6px; +} + +.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, 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 { +  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:before, +.btn-group-vertical > .btn-group:after { +  display: table; +  content: " "; +} + +.btn-group-vertical > .btn-group:after { +  clear: both; +} + +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after { +  display: table; +  content: " "; +} + +.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-top-right-radius: 0; +  border-bottom-left-radius: 4px; +  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 > .btn:last-child, +.btn-group-vertical > .btn-group:first-child > .dropdown-toggle { +  border-bottom-right-radius: 0; +  border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn-group:last-child > .btn:first-child { +  border-top-right-radius: 0; +  border-top-left-radius: 0; +} + +.btn-group-justified { +  display: table; +  width: 100%; +  border-collapse: separate; +  table-layout: fixed; +} + +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { +  display: table-cell; +  float: none; +  width: 1%; +} + +.btn-group-justified > .btn-group .btn { +  width: 100%; +} + +[data-toggle="buttons"] > .btn > input[type="radio"], +[data-toggle="buttons"] > .btn > input[type="checkbox"] { +  display: 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 { +  width: 100%; +  margin-bottom: 0; +} + +.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.33; +  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; +} + +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; +} + +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-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: #555555; +  text-align: center; +  background-color: #eeeeee; +  border: 1px solid #cccccc; +  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="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 > .dropdown-toggle, +.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:last-child > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child) { +  border-bottom-left-radius: 0; +  border-top-left-radius: 0; +} + +.input-group-addon:last-child { +  border-left: 0; +} + +.input-group-btn { +  position: relative; +  white-space: nowrap; +} + +.input-group-btn:first-child > .btn { +  margin-right: -1px; +} + +.input-group-btn:last-child > .btn { +  margin-left: -1px; +} + +.input-group-btn > .btn { +  position: relative; +} + +.input-group-btn > .btn + .btn { +  margin-left: -4px; +} + +.input-group-btn > .btn:hover, +.input-group-btn > .btn:active { +  z-index: 2; +} + +.nav { +  padding-left: 0; +  margin-bottom: 0; +  list-style: none; +} + +.nav:before, +.nav:after { +  display: table; +  content: " "; +} + +.nav:after { +  clear: both; +} + +.nav:before, +.nav:after { +  display: table; +  content: " "; +} + +.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: #eeeeee; +} + +.nav > li.disabled > a { +  color: #999999; +} + +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { +  color: #999999; +  text-decoration: none; +  cursor: not-allowed; +  background-color: transparent; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { +  background-color: #eeeeee; +  border-color: #428bca; +} + +.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 #dddddd; +} + +.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: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { +  color: #555555; +  cursor: default; +  background-color: #ffffff; +  border: 1px solid #dddddd; +  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:hover, +.nav-tabs.nav-justified > .active > a:focus { +  border: 1px solid #dddddd; +} + +@media (min-width: 768px) { +  .nav-tabs.nav-justified > li > a { +    border-bottom: 1px solid #dddddd; +    border-radius: 4px 4px 0 0; +  } +  .nav-tabs.nav-justified > .active > a, +  .nav-tabs.nav-justified > .active > a:hover, +  .nav-tabs.nav-justified > .active > a:focus { +    border-bottom-color: #ffffff; +  } +} + +.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: #ffffff; +  background-color: #428bca; +} + +.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:hover, +.nav-tabs-justified > .active > a:focus { +  border: 1px solid #dddddd; +} + +@media (min-width: 768px) { +  .nav-tabs-justified > li > a { +    border-bottom: 1px solid #dddddd; +    border-radius: 4px 4px 0 0; +  } +  .nav-tabs-justified > .active > a, +  .nav-tabs-justified > .active > a:hover, +  .nav-tabs-justified > .active > a:focus { +    border-bottom-color: #ffffff; +  } +} + +.tab-content > .tab-pane { +  display: none; +} + +.tab-content > .active { +  display: block; +} + +.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 { +  display: table; +  content: " "; +} + +.navbar:after { +  clear: both; +} + +.navbar:before, +.navbar:after { +  display: table; +  content: " "; +} + +.navbar:after { +  clear: both; +} + +@media (min-width: 768px) { +  .navbar { +    border-radius: 4px; +  } +} + +.navbar-header:before, +.navbar-header:after { +  display: table; +  content: " "; +} + +.navbar-header:after { +  clear: both; +} + +.navbar-header:before, +.navbar-header:after { +  display: table; +  content: " "; +} + +.navbar-header:after { +  clear: both; +} + +@media (min-width: 768px) { +  .navbar-header { +    float: left; +  } +} + +.navbar-collapse { +  max-height: 340px; +  padding-right: 15px; +  padding-left: 15px; +  overflow-x: visible; +  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 { +  display: table; +  content: " "; +} + +.navbar-collapse:after { +  clear: both; +} + +.navbar-collapse:before, +.navbar-collapse:after { +  display: table; +  content: " "; +} + +.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; +    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-right: 0; +    padding-left: 0; +  } +} + +.container > .navbar-header, +.container > .navbar-collapse { +  margin-right: -15px; +  margin-left: -15px; +} + +@media (min-width: 768px) { +  .container > .navbar-header, +  .container > .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; +} + +.navbar-brand:hover, +.navbar-brand:focus { +  text-decoration: none; +} + +@media (min-width: 768px) { +  .navbar > .container .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 .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-nav.navbar-right:last-child { +    margin-right: -15px; +  } +} + +@media (min-width: 768px) { +  .navbar-left { +    float: left !important; +  } +  .navbar-right { +    float: right !important; +  } +} + +.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, 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); +} + +@media (min-width: 768px) { +  .navbar-form .form-group { +    display: inline-block; +    margin-bottom: 0; +    vertical-align: middle; +  } +  .navbar-form .form-control { +    display: inline-block; +  } +  .navbar-form select.form-control { +    width: auto; +  } +  .navbar-form .radio, +  .navbar-form .checkbox { +    display: inline-block; +    padding-left: 0; +    margin-top: 0; +    margin-bottom: 0; +  } +  .navbar-form .radio input[type="radio"], +  .navbar-form .checkbox input[type="checkbox"] { +    float: none; +    margin-left: 0; +  } +} + +@media (max-width: 767px) { +  .navbar-form .form-group { +    margin-bottom: 5px; +  } +} + +@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-form.navbar-right:last-child { +    margin-right: -15px; +  } +} + +.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-bottom-right-radius: 0; +  border-bottom-left-radius: 0; +} + +.navbar-nav.pull-right > li > .dropdown-menu, +.navbar-nav > li > .dropdown-menu.pull-right { +  right: 0; +  left: auto; +} + +.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; +  } +  .navbar-text.navbar-right:last-child { +    margin-right: 0; +  } +} + +.navbar-default { +  background-color: #f8f8f8; +  border-color: #e7e7e7; +} + +.navbar-default .navbar-brand { +  color: #777777; +} + +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { +  color: #5e5e5e; +  background-color: transparent; +} + +.navbar-default .navbar-text { +  color: #777777; +} + +.navbar-default .navbar-nav > li > a { +  color: #777777; +} + +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { +  color: #333333; +  background-color: transparent; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { +  color: #555555; +  background-color: #e7e7e7; +} + +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { +  color: #cccccc; +  background-color: transparent; +} + +.navbar-default .navbar-toggle { +  border-color: #dddddd; +} + +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { +  background-color: #dddddd; +} + +.navbar-default .navbar-toggle .icon-bar { +  background-color: #cccccc; +} + +.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 { +  color: #555555; +  background-color: #e7e7e7; +} + +@media (max-width: 767px) { +  .navbar-default .navbar-nav .open .dropdown-menu > li > a { +    color: #777777; +  } +  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, +  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { +    color: #333333; +    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: #555555; +    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: #cccccc; +    background-color: transparent; +  } +} + +.navbar-default .navbar-link { +  color: #777777; +} + +.navbar-default .navbar-link:hover { +  color: #333333; +} + +.navbar-inverse { +  background-color: #222222; +  border-color: #080808; +} + +.navbar-inverse .navbar-brand { +  color: #999999; +} + +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { +  color: #ffffff; +  background-color: transparent; +} + +.navbar-inverse .navbar-text { +  color: #999999; +} + +.navbar-inverse .navbar-nav > li > a { +  color: #999999; +} + +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { +  color: #ffffff; +  background-color: transparent; +} + +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { +  color: #ffffff; +  background-color: #080808; +} + +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { +  color: #444444; +  background-color: transparent; +} + +.navbar-inverse .navbar-toggle { +  border-color: #333333; +} + +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { +  background-color: #333333; +} + +.navbar-inverse .navbar-toggle .icon-bar { +  background-color: #ffffff; +} + +.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 { +  color: #ffffff; +  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: #999999; +  } +  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, +  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { +    color: #ffffff; +    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: #ffffff; +    background-color: #080808; +  } +  .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: #444444; +    background-color: transparent; +  } +} + +.navbar-inverse .navbar-link { +  color: #999999; +} + +.navbar-inverse .navbar-link:hover { +  color: #ffffff; +} + +.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: #cccccc; +  content: "/\00a0"; +} + +.breadcrumb > .active { +  color: #999999; +} + +.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.428571429; +  text-decoration: none; +  background-color: #ffffff; +  border: 1px solid #dddddd; +} + +.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-top-right-radius: 4px; +  border-bottom-right-radius: 4px; +} + +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { +  background-color: #eeeeee; +} + +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { +  z-index: 2; +  color: #ffffff; +  cursor: default; +  background-color: #428bca; +  border-color: #428bca; +} + +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { +  color: #999999; +  cursor: not-allowed; +  background-color: #ffffff; +  border-color: #dddddd; +} + +.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-top-right-radius: 6px; +  border-bottom-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-top-right-radius: 3px; +  border-bottom-right-radius: 3px; +} + +.pager { +  padding-left: 0; +  margin: 20px 0; +  text-align: center; +  list-style: none; +} + +.pager:before, +.pager:after { +  display: table; +  content: " "; +} + +.pager:after { +  clear: both; +} + +.pager:before, +.pager:after { +  display: table; +  content: " "; +} + +.pager:after { +  clear: both; +} + +.pager li { +  display: inline; +} + +.pager li > a, +.pager li > span { +  display: inline-block; +  padding: 5px 14px; +  background-color: #ffffff; +  border: 1px solid #dddddd; +  border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { +  text-decoration: none; +  background-color: #eeeeee; +} + +.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: #999999; +  cursor: not-allowed; +  background-color: #ffffff; +} + +.label { +  display: inline; +  padding: .2em .6em .3em; +  font-size: 75%; +  font-weight: bold; +  line-height: 1; +  color: #ffffff; +  text-align: center; +  white-space: nowrap; +  vertical-align: baseline; +  border-radius: .25em; +} + +.label[href]:hover, +.label[href]:focus { +  color: #ffffff; +  text-decoration: none; +  cursor: pointer; +} + +.label:empty { +  display: none; +} + +.btn .label { +  position: relative; +  top: -1px; +} + +.label-default { +  background-color: #999999; +} + +.label-default[href]:hover, +.label-default[href]:focus { +  background-color: #808080; +} + +.label-primary { +  background-color: #428bca; +} + +.label-primary[href]:hover, +.label-primary[href]:focus { +  background-color: #3071a9; +} + +.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; +  line-height: 1; +  color: #ffffff; +  text-align: center; +  white-space: nowrap; +  vertical-align: baseline; +  background-color: #999999; +  border-radius: 10px; +} + +.badge:empty { +  display: none; +} + +.btn .badge { +  position: relative; +  top: -1px; +} + +a.badge:hover, +a.badge:focus { +  color: #ffffff; +  text-decoration: none; +  cursor: pointer; +} + +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { +  color: #428bca; +  background-color: #ffffff; +} + +.nav-pills > li > a > .badge { +  margin-left: 3px; +} + +.jumbotron { +  padding: 30px; +  margin-bottom: 30px; +  font-size: 21px; +  font-weight: 200; +  line-height: 2.1428571435; +  color: inherit; +  background-color: #eeeeee; +} + +.jumbotron h1, +.jumbotron .h1 { +  line-height: 1; +  color: inherit; +} + +.jumbotron p { +  line-height: 1.4; +} + +.container .jumbotron { +  border-radius: 6px; +} + +.jumbotron .container { +  max-width: 100%; +} + +@media screen and (min-width: 768px) { +  .jumbotron { +    padding-top: 48px; +    padding-bottom: 48px; +  } +  .container .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.428571429; +  background-color: #ffffff; +  border: 1px solid #dddddd; +  border-radius: 4px; +  -webkit-transition: all 0.2s ease-in-out; +          transition: all 0.2s ease-in-out; +} + +.thumbnail > img, +.thumbnail a > img { +  display: block; +  height: auto; +  max-width: 100%; +  margin-right: auto; +  margin-left: auto; +} + +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { +  border-color: #428bca; +} + +.thumbnail .caption { +  padding: 9px; +  color: #333333; +} + +.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: bold; +} + +.alert > p, +.alert > ul { +  margin-bottom: 0; +} + +.alert > p + p { +  margin-top: 5px; +} + +.alert-dismissable { +  padding-right: 35px; +} + +.alert-dismissable .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; +  } +} + +@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, 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: #ffffff; +  text-align: center; +  background-color: #428bca; +  -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; +          transition: width 0.6s ease; +} + +.progress-striped .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: 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 { +  -webkit-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: 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: 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: 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: 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, +.media-body { +  overflow: hidden; +  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 { +  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: #ffffff; +  border: 1px solid #dddddd; +} + +.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; +} + +.list-group-item > .badge { +  float: right; +} + +.list-group-item > .badge + .badge { +  margin-right: 5px; +} + +a.list-group-item { +  color: #555555; +} + +a.list-group-item .list-group-item-heading { +  color: #333333; +} + +a.list-group-item:hover, +a.list-group-item:focus { +  text-decoration: none; +  background-color: #f5f5f5; +} + +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { +  z-index: 2; +  color: #ffffff; +  background-color: #428bca; +  border-color: #428bca; +} + +a.list-group-item.active .list-group-item-heading, +a.list-group-item.active:hover .list-group-item-heading, +a.list-group-item.active:focus .list-group-item-heading { +  color: inherit; +} + +a.list-group-item.active .list-group-item-text, +a.list-group-item.active:hover .list-group-item-text, +a.list-group-item.active:focus .list-group-item-text { +  color: #e1edf7; +} + +.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: #ffffff; +  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 { +  display: table; +  content: " "; +} + +.panel-body:after { +  clear: both; +} + +.panel-body:before, +.panel-body:after { +  display: table; +  content: " "; +} + +.panel-body:after { +  clear: both; +} + +.panel > .list-group { +  margin-bottom: 0; +} + +.panel > .list-group .list-group-item { +  border-width: 1px 0; +} + +.panel > .list-group .list-group-item:first-child { +  border-top-right-radius: 0; +  border-top-left-radius: 0; +} + +.panel > .list-group .list-group-item:last-child { +  border-bottom: 0; +} + +.panel-heading + .list-group .list-group-item:first-child { +  border-top-width: 0; +} + +.panel > .table, +.panel > .table-responsive > .table { +  margin-bottom: 0; +} + +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive { +  border-top: 1px solid #dddddd; +} + +.panel > .table > tbody:first-child th, +.panel > .table > tbody:first-child td { +  border-top: 0; +} + +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { +  border: 0; +} + +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { +  border-left: 0; +} + +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { +  border-right: 0; +} + +.panel > .table-bordered > thead > tr:last-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > th, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-bordered > thead > tr:last-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td { +  border-bottom: 0; +} + +.panel > .table-responsive { +  margin-bottom: 0; +  border: 0; +} + +.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 #dddddd; +  border-bottom-right-radius: 3px; +  border-bottom-left-radius: 3px; +} + +.panel-group .panel { +  margin-bottom: 0; +  overflow: hidden; +  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 { +  border-top: 1px solid #dddddd; +} + +.panel-group .panel-footer { +  border-top: 0; +} + +.panel-group .panel-footer + .panel-collapse .panel-body { +  border-bottom: 1px solid #dddddd; +} + +.panel-default { +  border-color: #dddddd; +} + +.panel-default > .panel-heading { +  color: #333333; +  background-color: #f5f5f5; +  border-color: #dddddd; +} + +.panel-default > .panel-heading + .panel-collapse .panel-body { +  border-top-color: #dddddd; +} + +.panel-default > .panel-footer + .panel-collapse .panel-body { +  border-bottom-color: #dddddd; +} + +.panel-primary { +  border-color: #428bca; +} + +.panel-primary > .panel-heading { +  color: #ffffff; +  background-color: #428bca; +  border-color: #428bca; +} + +.panel-primary > .panel-heading + .panel-collapse .panel-body { +  border-top-color: #428bca; +} + +.panel-primary > .panel-footer + .panel-collapse .panel-body { +  border-bottom-color: #428bca; +} + +.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-footer + .panel-collapse .panel-body { +  border-bottom-color: #d6e9c6; +} + +.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-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-footer + .panel-collapse .panel-body { +  border-bottom-color: #ebccd1; +} + +.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-footer + .panel-collapse .panel-body { +  border-bottom-color: #bce8f1; +} + +.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: #000000; +  text-shadow: 0 1px 0 #ffffff; +  opacity: 0.2; +  filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { +  color: #000000; +  text-decoration: none; +  cursor: pointer; +  opacity: 0.5; +  filter: alpha(opacity=50); +} + +button.close { +  padding: 0; +  cursor: pointer; +  background: transparent; +  border: 0; +  -webkit-appearance: none; +} + +.modal-open { +  overflow: hidden; +} + +.modal { +  position: fixed; +  top: 0; +  right: 0; +  bottom: 0; +  left: 0; +  z-index: 1040; +  display: none; +  overflow: auto; +  overflow-y: scroll; +} + +.modal.fade .modal-dialog { +  -webkit-transform: translate(0, -25%); +      -ms-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); +          transform: translate(0, 0); +} + +.modal-dialog { +  position: relative; +  z-index: 1050; +  width: auto; +  margin: 10px; +} + +.modal-content { +  position: relative; +  background-color: #ffffff; +  border: 1px solid #999999; +  border: 1px solid rgba(0, 0, 0, 0.2); +  border-radius: 6px; +  outline: none; +  -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; +} + +.modal-backdrop { +  position: fixed; +  top: 0; +  right: 0; +  bottom: 0; +  left: 0; +  z-index: 1030; +  background-color: #000000; +} + +.modal-backdrop.fade { +  opacity: 0; +  filter: alpha(opacity=0); +} + +.modal-backdrop.in { +  opacity: 0.5; +  filter: alpha(opacity=50); +} + +.modal-header { +  min-height: 16.428571429px; +  padding: 15px; +  border-bottom: 1px solid #e5e5e5; +} + +.modal-header .close { +  margin-top: -2px; +} + +.modal-title { +  margin: 0; +  line-height: 1.428571429; +} + +.modal-body { +  position: relative; +  padding: 20px; +} + +.modal-footer { +  padding: 19px 20px 20px; +  margin-top: 15px; +  text-align: right; +  border-top: 1px solid #e5e5e5; +} + +.modal-footer:before, +.modal-footer:after { +  display: table; +  content: " "; +} + +.modal-footer:after { +  clear: both; +} + +.modal-footer:before, +.modal-footer:after { +  display: table; +  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; +} + +@media screen and (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); +  } +} + +.tooltip { +  position: absolute; +  z-index: 1030; +  display: block; +  font-size: 12px; +  line-height: 1.4; +  opacity: 0; +  filter: alpha(opacity=0); +  visibility: visible; +} + +.tooltip.in { +  opacity: 0.9; +  filter: alpha(opacity=90); +} + +.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: #ffffff; +  text-align: center; +  text-decoration: none; +  background-color: #000000; +  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: #000000; +  border-width: 5px 5px 0; +} + +.tooltip.top-left .tooltip-arrow { +  bottom: 0; +  left: 5px; +  border-top-color: #000000; +  border-width: 5px 5px 0; +} + +.tooltip.top-right .tooltip-arrow { +  right: 5px; +  bottom: 0; +  border-top-color: #000000; +  border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { +  top: 50%; +  left: 0; +  margin-top: -5px; +  border-right-color: #000000; +  border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { +  top: 50%; +  right: 0; +  margin-top: -5px; +  border-left-color: #000000; +  border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { +  top: 0; +  left: 50%; +  margin-left: -5px; +  border-bottom-color: #000000; +  border-width: 0 5px 5px; +} + +.tooltip.bottom-left .tooltip-arrow { +  top: 0; +  left: 5px; +  border-bottom-color: #000000; +  border-width: 0 5px 5px; +} + +.tooltip.bottom-right .tooltip-arrow { +  top: 0; +  right: 5px; +  border-bottom-color: #000000; +  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: #ffffff; +  border: 1px solid #cccccc; +  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); +  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: #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 { +  bottom: -11px; +  left: 50%; +  margin-left: -11px; +  border-top-color: #999999; +  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: #ffffff; +  border-bottom-width: 0; +  content: " "; +} + +.popover.right .arrow { +  top: 50%; +  left: -11px; +  margin-top: -11px; +  border-right-color: #999999; +  border-right-color: rgba(0, 0, 0, 0.25); +  border-left-width: 0; +} + +.popover.right .arrow:after { +  bottom: -10px; +  left: 1px; +  border-right-color: #ffffff; +  border-left-width: 0; +  content: " "; +} + +.popover.bottom .arrow { +  top: -11px; +  left: 50%; +  margin-left: -11px; +  border-bottom-color: #999999; +  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: #ffffff; +  border-top-width: 0; +  content: " "; +} + +.popover.left .arrow { +  top: 50%; +  right: -11px; +  margin-top: -11px; +  border-left-color: #999999; +  border-left-color: rgba(0, 0, 0, 0.25); +  border-right-width: 0; +} + +.popover.left .arrow:after { +  right: 1px; +  bottom: -10px; +  border-left-color: #ffffff; +  border-right-width: 0; +  content: " "; +} + +.carousel { +  position: relative; +} + +.carousel-inner { +  position: relative; +  width: 100%; +  overflow: hidden; +} + +.carousel-inner > .item { +  position: relative; +  display: none; +  -webkit-transition: 0.6s ease-in-out left; +          transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { +  display: block; +  height: auto; +  max-width: 100%; +  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: 0; +  bottom: 0; +  left: 0; +  width: 15%; +  font-size: 20px; +  color: #ffffff; +  text-align: center; +  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +  opacity: 0.5; +  filter: alpha(opacity=50); +} + +.carousel-control.left { +  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%)); +  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); +} + +.carousel-control.right { +  right: 0; +  left: auto; +  background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%)); +  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%); +  background-repeat: repeat-x; +  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); +} + +.carousel-control:hover, +.carousel-control:focus { +  color: #ffffff; +  text-decoration: none; +  outline: none; +  opacity: 0.9; +  filter: alpha(opacity=90); +} + +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { +  position: absolute; +  top: 50%; +  z-index: 5; +  display: inline-block; +} + +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { +  left: 50%; +} + +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { +  right: 50%; +} + +.carousel-control .icon-prev, +.carousel-control .icon-next { +  width: 20px; +  height: 20px; +  margin-top: -10px; +  margin-left: -10px; +  font-family: serif; +} + +.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 #ffffff; +  border-radius: 10px; +} + +.carousel-indicators .active { +  width: 12px; +  height: 12px; +  margin: 0; +  background-color: #ffffff; +} + +.carousel-caption { +  position: absolute; +  right: 15%; +  bottom: 20px; +  left: 15%; +  z-index: 10; +  padding-top: 20px; +  padding-bottom: 20px; +  color: #ffffff; +  text-align: center; +  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); +} + +.carousel-caption .btn { +  text-shadow: none; +} + +@media screen and (min-width: 768px) { +  .carousel-control .glyphicons-chevron-left, +  .carousel-control .glyphicons-chevron-right, +  .carousel-control .icon-prev, +  .carousel-control .icon-next { +    width: 30px; +    height: 30px; +    margin-top: -15px; +    margin-left: -15px; +    font-size: 30px; +  } +  .carousel-caption { +    right: 20%; +    left: 20%; +    padding-bottom: 30px; +  } +  .carousel-indicators { +    bottom: 20px; +  } +} + +.clearfix:before, +.clearfix:after { +  display: table; +  content: " "; +} + +.clearfix: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; +  visibility: hidden !important; +} + +.affix { +  position: fixed; +} + +@-ms-viewport { +  width: device-width; +} + +.visible-xs, +tr.visible-xs, +th.visible-xs, +td.visible-xs { +  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 (min-width: 768px) and (max-width: 991px) { +  .visible-xs.visible-sm { +    display: block !important; +  } +  table.visible-xs.visible-sm { +    display: table; +  } +  tr.visible-xs.visible-sm { +    display: table-row !important; +  } +  th.visible-xs.visible-sm, +  td.visible-xs.visible-sm { +    display: table-cell !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .visible-xs.visible-md { +    display: block !important; +  } +  table.visible-xs.visible-md { +    display: table; +  } +  tr.visible-xs.visible-md { +    display: table-row !important; +  } +  th.visible-xs.visible-md, +  td.visible-xs.visible-md { +    display: table-cell !important; +  } +} + +@media (min-width: 1200px) { +  .visible-xs.visible-lg { +    display: block !important; +  } +  table.visible-xs.visible-lg { +    display: table; +  } +  tr.visible-xs.visible-lg { +    display: table-row !important; +  } +  th.visible-xs.visible-lg, +  td.visible-xs.visible-lg { +    display: table-cell !important; +  } +} + +.visible-sm, +tr.visible-sm, +th.visible-sm, +td.visible-sm { +  display: none !important; +} + +@media (max-width: 767px) { +  .visible-sm.visible-xs { +    display: block !important; +  } +  table.visible-sm.visible-xs { +    display: table; +  } +  tr.visible-sm.visible-xs { +    display: table-row !important; +  } +  th.visible-sm.visible-xs, +  td.visible-sm.visible-xs { +    display: table-cell !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: 992px) and (max-width: 1199px) { +  .visible-sm.visible-md { +    display: block !important; +  } +  table.visible-sm.visible-md { +    display: table; +  } +  tr.visible-sm.visible-md { +    display: table-row !important; +  } +  th.visible-sm.visible-md, +  td.visible-sm.visible-md { +    display: table-cell !important; +  } +} + +@media (min-width: 1200px) { +  .visible-sm.visible-lg { +    display: block !important; +  } +  table.visible-sm.visible-lg { +    display: table; +  } +  tr.visible-sm.visible-lg { +    display: table-row !important; +  } +  th.visible-sm.visible-lg, +  td.visible-sm.visible-lg { +    display: table-cell !important; +  } +} + +.visible-md, +tr.visible-md, +th.visible-md, +td.visible-md { +  display: none !important; +} + +@media (max-width: 767px) { +  .visible-md.visible-xs { +    display: block !important; +  } +  table.visible-md.visible-xs { +    display: table; +  } +  tr.visible-md.visible-xs { +    display: table-row !important; +  } +  th.visible-md.visible-xs, +  td.visible-md.visible-xs { +    display: table-cell !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .visible-md.visible-sm { +    display: block !important; +  } +  table.visible-md.visible-sm { +    display: table; +  } +  tr.visible-md.visible-sm { +    display: table-row !important; +  } +  th.visible-md.visible-sm, +  td.visible-md.visible-sm { +    display: table-cell !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: 1200px) { +  .visible-md.visible-lg { +    display: block !important; +  } +  table.visible-md.visible-lg { +    display: table; +  } +  tr.visible-md.visible-lg { +    display: table-row !important; +  } +  th.visible-md.visible-lg, +  td.visible-md.visible-lg { +    display: table-cell !important; +  } +} + +.visible-lg, +tr.visible-lg, +th.visible-lg, +td.visible-lg { +  display: none !important; +} + +@media (max-width: 767px) { +  .visible-lg.visible-xs { +    display: block !important; +  } +  table.visible-lg.visible-xs { +    display: table; +  } +  tr.visible-lg.visible-xs { +    display: table-row !important; +  } +  th.visible-lg.visible-xs, +  td.visible-lg.visible-xs { +    display: table-cell !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .visible-lg.visible-sm { +    display: block !important; +  } +  table.visible-lg.visible-sm { +    display: table; +  } +  tr.visible-lg.visible-sm { +    display: table-row !important; +  } +  th.visible-lg.visible-sm, +  td.visible-lg.visible-sm { +    display: table-cell !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .visible-lg.visible-md { +    display: block !important; +  } +  table.visible-lg.visible-md { +    display: table; +  } +  tr.visible-lg.visible-md { +    display: table-row !important; +  } +  th.visible-lg.visible-md, +  td.visible-lg.visible-md { +    display: table-cell !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; +  } +} + +.hidden-xs { +  display: block !important; +} + +table.hidden-xs { +  display: table; +} + +tr.hidden-xs { +  display: table-row !important; +} + +th.hidden-xs, +td.hidden-xs { +  display: table-cell !important; +} + +@media (max-width: 767px) { +  .hidden-xs, +  tr.hidden-xs, +  th.hidden-xs, +  td.hidden-xs { +    display: none !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .hidden-xs.hidden-sm, +  tr.hidden-xs.hidden-sm, +  th.hidden-xs.hidden-sm, +  td.hidden-xs.hidden-sm { +    display: none !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .hidden-xs.hidden-md, +  tr.hidden-xs.hidden-md, +  th.hidden-xs.hidden-md, +  td.hidden-xs.hidden-md { +    display: none !important; +  } +} + +@media (min-width: 1200px) { +  .hidden-xs.hidden-lg, +  tr.hidden-xs.hidden-lg, +  th.hidden-xs.hidden-lg, +  td.hidden-xs.hidden-lg { +    display: none !important; +  } +} + +.hidden-sm { +  display: block !important; +} + +table.hidden-sm { +  display: table; +} + +tr.hidden-sm { +  display: table-row !important; +} + +th.hidden-sm, +td.hidden-sm { +  display: table-cell !important; +} + +@media (max-width: 767px) { +  .hidden-sm.hidden-xs, +  tr.hidden-sm.hidden-xs, +  th.hidden-sm.hidden-xs, +  td.hidden-sm.hidden-xs { +    display: none !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .hidden-sm, +  tr.hidden-sm, +  th.hidden-sm, +  td.hidden-sm { +    display: none !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .hidden-sm.hidden-md, +  tr.hidden-sm.hidden-md, +  th.hidden-sm.hidden-md, +  td.hidden-sm.hidden-md { +    display: none !important; +  } +} + +@media (min-width: 1200px) { +  .hidden-sm.hidden-lg, +  tr.hidden-sm.hidden-lg, +  th.hidden-sm.hidden-lg, +  td.hidden-sm.hidden-lg { +    display: none !important; +  } +} + +.hidden-md { +  display: block !important; +} + +table.hidden-md { +  display: table; +} + +tr.hidden-md { +  display: table-row !important; +} + +th.hidden-md, +td.hidden-md { +  display: table-cell !important; +} + +@media (max-width: 767px) { +  .hidden-md.hidden-xs, +  tr.hidden-md.hidden-xs, +  th.hidden-md.hidden-xs, +  td.hidden-md.hidden-xs { +    display: none !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .hidden-md.hidden-sm, +  tr.hidden-md.hidden-sm, +  th.hidden-md.hidden-sm, +  td.hidden-md.hidden-sm { +    display: none !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .hidden-md, +  tr.hidden-md, +  th.hidden-md, +  td.hidden-md { +    display: none !important; +  } +} + +@media (min-width: 1200px) { +  .hidden-md.hidden-lg, +  tr.hidden-md.hidden-lg, +  th.hidden-md.hidden-lg, +  td.hidden-md.hidden-lg { +    display: none !important; +  } +} + +.hidden-lg { +  display: block !important; +} + +table.hidden-lg { +  display: table; +} + +tr.hidden-lg { +  display: table-row !important; +} + +th.hidden-lg, +td.hidden-lg { +  display: table-cell !important; +} + +@media (max-width: 767px) { +  .hidden-lg.hidden-xs, +  tr.hidden-lg.hidden-xs, +  th.hidden-lg.hidden-xs, +  td.hidden-lg.hidden-xs { +    display: none !important; +  } +} + +@media (min-width: 768px) and (max-width: 991px) { +  .hidden-lg.hidden-sm, +  tr.hidden-lg.hidden-sm, +  th.hidden-lg.hidden-sm, +  td.hidden-lg.hidden-sm { +    display: none !important; +  } +} + +@media (min-width: 992px) and (max-width: 1199px) { +  .hidden-lg.hidden-md, +  tr.hidden-lg.hidden-md, +  th.hidden-lg.hidden-md, +  td.hidden-lg.hidden-md { +    display: none !important; +  } +} + +@media (min-width: 1200px) { +  .hidden-lg, +  tr.hidden-lg, +  th.hidden-lg, +  td.hidden-lg { +    display: none !important; +  } +} + +.visible-print, +tr.visible-print, +th.visible-print, +td.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; +  } +  .hidden-print, +  tr.hidden-print, +  th.hidden-print, +  td.hidden-print { +    display: none !important; +  } +}
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/css/bootstrap.min.css b/pdf-as-web/src/main/webapp/assets/css/bootstrap.min.css new file mode 100644 index 00000000..c547283b --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a{background:transparent}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid #c0c0c0}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{padding:0;box-sizing:border-box}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}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}@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) ")"}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:2cm .5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}*,*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}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:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}img{vertical-align:middle}.img-responsive{display:block;height:auto;max-width:100%}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-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}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small,h1 .small,h2 .small,h3 .small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small,h4 .small,h5 .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:200;line-height:1.4}@media(min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}.text-muted{color:#999}.text-primary{color:#428bca}.text-primary:hover{color:#3071a9}.text-warning{color:#8a6d3b}.text-warning:hover{color:#66512c}.text-danger{color:#a94442}.text-danger:hover{color:#843534}.text-success{color:#3c763d}.text-success:hover{color:#2b542c}.text-info{color:#31708f}.text-info:hover{color:#245269}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.428571429}dt{font-weight:bold}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}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}.dl-horizontal dd:before,.dl-horizontal dd:after{display:table;content:" "}.dl-horizontal dd:after{clear:both}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small,blockquote .small{display:block;line-height:1.428571429;color:#999}blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small,blockquote.pull-right .small{text-align:right}blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}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;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;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}.container:before,.container:after{display:table;content:" "}.container:after{clear:both}.container:before,.container:after{display:table;content:" "}.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}}.row{margin-right:-15px;margin-left:-15px}.row:before,.row:after{display:table;content:" "}.row:after{clear:both}.row:before,.row:after{display:table;content:" "}.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-right:15px;padding-left: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-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@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-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@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-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@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-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.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>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.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>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.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)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*="col-"]{position:static;display:table-column;float:none}table td[class*="col-"],table th[class*="col-"]{display:table-cell;float:none}.table>thead>tr>.active,.table>tbody>tr>.active,.table>tfoot>tr>.active,.table>thead>.active>td,.table>tbody>.active>td,.table>tfoot>.active>td,.table>thead>.active>th,.table>tbody>.active>th,.table>tfoot>.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>.active:hover,.table-hover>tbody>.active:hover>td,.table-hover>tbody>.active:hover>th{background-color:#e8e8e8}.table>thead>tr>.success,.table>tbody>tr>.success,.table>tfoot>tr>.success,.table>thead>.success>td,.table>tbody>.success>td,.table>tfoot>.success>td,.table>thead>.success>th,.table>tbody>.success>th,.table>tfoot>.success>th{background-color:#dff0d8}.table-hover>tbody>tr>.success:hover,.table-hover>tbody>.success:hover>td,.table-hover>tbody>.success:hover>th{background-color:#d0e9c6}.table>thead>tr>.danger,.table>tbody>tr>.danger,.table>tfoot>tr>.danger,.table>thead>.danger>td,.table>tbody>.danger>td,.table>tfoot>.danger>td,.table>thead>.danger>th,.table>tbody>.danger>th,.table>tfoot>.danger>th{background-color:#f2dede}.table-hover>tbody>tr>.danger:hover,.table-hover>tbody>.danger:hover>td,.table-hover>tbody>.danger:hover>th{background-color:#ebcccc}.table>thead>tr>.warning,.table>tbody>tr>.warning,.table>tfoot>tr>.warning,.table>thead>.warning>td,.table>tbody>.warning>td,.table>tfoot>.warning>td,.table>thead>.warning>th,.table>tbody>.warning>th,.table>tfoot>.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>.warning:hover,.table-hover>tbody>.warning:hover>td,.table-hover>tbody>.warning:hover>th{background-color:#faf2cc}@media(max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.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>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td: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>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td: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>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{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;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}select[multiple],select[size]{height:auto}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}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}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{height:auto}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;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 .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,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}.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:#eee}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.radio,.checkbox{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.radio label,.checkbox label{display:inline;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"]{float:left;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:normal;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.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}textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{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;background-color:#fcf8e3;border-color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{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;background-color:#f2dede;border-color:#a94442}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{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;background-color:#dff0d8;border-color:#3c763d}.form-control-static{margin-bottom: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}.form-inline select.form-control{width:auto}.form-inline .radio,.form-inline .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0}}.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-group:before,.form-horizontal .form-group:after{display:table;content:" "}.form-horizontal .form-group:after{clear:both}.form-horizontal .form-control-static{padding-top:7px}@media(min-width:768px){.form-horizontal .control-label{text-align:right}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:normal;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{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,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#fff}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].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:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].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:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-link{font-weight:normal;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.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:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0}.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 .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@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.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';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;line-height:1;-moz-osx-font-smoothing:grayscale}.glyphicon:empty{width:1em}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.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"}.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;font-size:14px;list-style:none;background-color:#fff;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{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{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-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.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{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}}.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-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.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:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar:before,.btn-toolbar:after{display:table;content:" "}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group{float:left}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn-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-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-top-right-radius:0;border-bottom-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-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.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,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{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:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{display:table;content:" "}.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-top-right-radius:0;border-bottom-left-radius:4px;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>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display: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{width:100%;margin-bottom:0}.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.33;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}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}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-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{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="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>.dropdown-toggle,.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:last-child>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;white-space:nowrap}.input-group-btn:first-child>.btn{margin-right:-1px}.input-group-btn:last-child>.btn{margin-left:-1px}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-4px}.input-group-btn>.btn:hover,.input-group-btn>.btn:active{z-index:2}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav:before,.nav:after{display:table;content:" "}.nav:after{clear:both}.nav:before,.nav:after{display:table;content:" "}.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:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.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;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:hover,.nav-tabs.nav-justified>.active>a:focus{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:hover,.nav-tabs.nav-justified>.active>a:focus{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:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.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:hover,.nav-tabs-justified>.active>a:focus{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:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.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{display:table;content:" "}.navbar:after{clear:both}.navbar:before,.navbar:after{display:table;content:" "}.navbar:after{clear:both}@media(min-width:768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}.navbar-header:before,.navbar-header:after{display:table;content:" "}.navbar-header:after{clear:both}@media(min-width:768px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;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{display:table;content:" "}.navbar-collapse:after{clear:both}.navbar-collapse:before,.navbar-collapse:after{display:table;content:" "}.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;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-right:0;padding-left:0}}.container>.navbar-header,.container>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media(min-width:768px){.container>.navbar-header,.container>.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}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media(min-width:768px){.navbar>.container .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 .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-nav.navbar-right:last-child{margin-right:-15px}}@media(min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.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,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)}@media(min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0}}@media(max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@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-form.navbar-right:last-child{margin-right:-15px}}.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-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.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}.navbar-text.navbar-right:last-child{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:#ccc}.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{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: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-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a{color:#999}.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:#080808}.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{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:#999}.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:#080808}.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:#999}.navbar-inverse .navbar-link:hover{color:#fff}.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:#999}.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.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.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-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{background-color:#eee}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.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-top-right-radius:6px;border-bottom-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-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager:before,.pager:after{display:table;content:" "}.pager:after{clear:both}.pager:before,.pager:after{display:table;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;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:#999;cursor:not-allowed;background-color:#fff}.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[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.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;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{line-height:1;color:inherit}.jumbotron p{line-height:1.4}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .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.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.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:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .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}}@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,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:#428bca;-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 .6s ease;transition:width .6s ease}.progress-striped .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: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{-webkit-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: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: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: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: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,.media-body{overflow:hidden;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{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-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}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}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;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.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,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel-body:before,.panel-body:after{display:table;content:" "}.panel-body:after{clear:both}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0}.panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child th,.panel>.table>tbody:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.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-group .panel{margin-bottom:0;overflow:hidden;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{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-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.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-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.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-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-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.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-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.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{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;z-index:1050;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;outline:0;-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}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{display:table;content:" "}.modal-footer:after{clear:both}.modal-footer:before,.modal-footer:after{display:table;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}@media screen and (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)}}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.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;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-top-color:#000;border-width:5px 5px 0}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#000;border-width:0 5px 5px}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#000;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:#fff;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);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:#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{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:#fff;border-bottom-width:0;content:" "}.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:#fff;border-left-width:0;content:" "}.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:#fff;border-top-width:0;content:" "}.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:#fff;border-right-width:0;content:" "}.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;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;height:auto;max-width:100%;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:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);opacity:.5;filter:alpha(opacity=50)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.5) 0),color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,0.0001) 0),color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.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,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{display:table;content:" "}.clearfix: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;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,tr.visible-xs,th.visible-xs,td.visible-xs{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(min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}th.visible-xs.visible-sm,td.visible-xs.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}th.visible-xs.visible-md,td.visible-xs.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}th.visible-xs.visible-lg,td.visible-xs.visible-lg{display:table-cell!important}}.visible-sm,tr.visible-sm,th.visible-sm,td.visible-sm{display:none!important}@media(max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}th.visible-sm.visible-xs,td.visible-sm.visible-xs{display:table-cell!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:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}th.visible-sm.visible-md,td.visible-sm.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}th.visible-sm.visible-lg,td.visible-sm.visible-lg{display:table-cell!important}}.visible-md,tr.visible-md,th.visible-md,td.visible-md{display:none!important}@media(max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}th.visible-md.visible-xs,td.visible-md.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}th.visible-md.visible-sm,td.visible-md.visible-sm{display:table-cell!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:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}th.visible-md.visible-lg,td.visible-md.visible-lg{display:table-cell!important}}.visible-lg,tr.visible-lg,th.visible-lg,td.visible-lg{display:none!important}@media(max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}th.visible-lg.visible-xs,td.visible-lg.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}th.visible-lg.visible-sm,td.visible-lg.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}th.visible-lg.visible-md,td.visible-lg.visible-md{display:table-cell!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}}.hidden-xs{display:block!important}table.hidden-xs{display:table}tr.hidden-xs{display:table-row!important}th.hidden-xs,td.hidden-xs{display:table-cell!important}@media(max-width:767px){.hidden-xs,tr.hidden-xs,th.hidden-xs,td.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,tr.hidden-xs.hidden-md,th.hidden-xs.hidden-md,td.hidden-xs.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}table.hidden-sm{display:table}tr.hidden-sm{display:table-row!important}th.hidden-sm,td.hidden-sm{display:table-cell!important}@media(max-width:767px){.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm,tr.hidden-sm,th.hidden-sm,td.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,tr.hidden-sm.hidden-md,th.hidden-sm.hidden-md,td.hidden-sm.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}table.hidden-md{display:table}tr.hidden-md{display:table-row!important}th.hidden-md,td.hidden-md{display:table-cell!important}@media(max-width:767px){.hidden-md.hidden-xs,tr.hidden-md.hidden-xs,th.hidden-md.hidden-xs,td.hidden-md.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,tr.hidden-md.hidden-sm,th.hidden-md.hidden-sm,td.hidden-md.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md,tr.hidden-md,th.hidden-md,td.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-md.hidden-lg,tr.hidden-md.hidden-lg,th.hidden-md.hidden-lg,td.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}table.hidden-lg{display:table}tr.hidden-lg{display:table-row!important}th.hidden-lg,td.hidden-lg{display:table-cell!important}@media(max-width:767px){.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,tr.hidden-lg.hidden-md,th.hidden-lg.hidden-md,td.hidden-lg.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg,tr.hidden-lg,th.hidden-lg,td.hidden-lg{display:none!important}}.visible-print,tr.visible-print,th.visible-print,td.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}.hidden-print,tr.hidden-print,th.hidden-print,td.hidden-print{display:none!important}}
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/css/pdfas.css b/pdf-as-web/src/main/webapp/assets/css/pdfas.css new file mode 100644 index 00000000..ae7a83f3 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/css/pdfas.css @@ -0,0 +1,79 @@ +/* Space out content a bit */ +body { +  padding-top: 20px; +  padding-bottom: 20px; +} + +/* Everything but the jumbotron gets side spacing for mobile first views */ +.header, +.marketing, +.footer { +  padding-left: 15px; +  padding-right: 15px; +} + +/* Custom page header */ +.header { +  border-bottom: 1px solid #e5e5e5; +} +/* Make the masthead heading the same height as the navigation */ +.header h3 { +  margin-top: 0; +  margin-bottom: 0; +  line-height: 40px; +  padding-bottom: 19px; +} + +/* Custom page footer */ +.footer { +  padding-top: 19px; +  color: #777; +  border-top: 1px solid #e5e5e5; +} + +/* Customize container */ +@media (min-width: 768px) { +  .container { +    max-width: 730px; +  } +} +.container-narrow > hr { +  margin: 30px 0; +} + +/* Main marketing message and sign up button */ +.jumbotron { +  text-align: center; +  border-bottom: 1px solid #e5e5e5; +} +.jumbotron .btn { +  font-size: 21px; +  padding: 14px 24px; +} + +/* Supporting marketing content */ +.marketing { +  margin: 40px 0; +} +.marketing p + h4 { +  margin-top: 28px; +} + +/* Responsive: Portrait tablets and up */ +@media screen and (min-width: 768px) { +  /* Remove the padding we set earlier */ +  .header, +  .marketing, +  .footer { +    padding-left: 0; +    padding-right: 0; +  } +  /* Space out the masthead */ +  .header { +    margin-bottom: 30px; +  } +  /* Remove the bottom border on the jumbotron for visual effect */ +  .jumbotron { +    border-bottom: 0; +  } +} diff --git a/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.eot b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.eotBinary files differ new file mode 100644 index 00000000..423bd5d3 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.eot diff --git a/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.svg b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..44694887 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ +<?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 /> +<glyph /> +<glyph unicode="
" /> +<glyph unicode=" " /> +<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" /> +<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" /> +<glyph unicode=" " /> +<glyph unicode=" " horiz-adv-x="652" /> +<glyph unicode=" " horiz-adv-x="1304" /> +<glyph unicode=" " horiz-adv-x="652" /> +<glyph unicode=" " horiz-adv-x="1304" /> +<glyph unicode=" " horiz-adv-x="434" /> +<glyph unicode=" " horiz-adv-x="326" /> +<glyph unicode=" " horiz-adv-x="217" /> +<glyph unicode=" " horiz-adv-x="217" /> +<glyph unicode=" " horiz-adv-x="163" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="72" /> +<glyph unicode=" " horiz-adv-x="260" /> +<glyph unicode=" " horiz-adv-x="326" /> +<glyph unicode="€" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" /> +<glyph unicode="−" d="M200 400h900v300h-900v-300z" /> +<glyph unicode="☁" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" /> +<glyph unicode="✉" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" /> +<glyph unicode="✏" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" /> +<glyph unicode="" horiz-adv-x="500" d="M0 0z" /> +<glyph unicode="" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" /> +<glyph unicode="" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" /> +<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" /> +<glyph unicode="" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.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-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" /> +<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" /> +<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" /> +<glyph unicode="" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" /> +<glyph unicode="" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" /> +<glyph unicode="" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 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.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 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.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 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.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 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.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5z" /> +<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 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.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 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.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" /> +<glyph unicode="" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" /> +<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" /> +<glyph unicode="" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" /> +<glyph unicode="" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" /> +<glyph unicode="" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" /> +<glyph unicode="" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" /> +<glyph unicode="" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" /> +<glyph unicode="" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" /> +<glyph unicode="" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" /> +<glyph unicode="" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" /> +<glyph unicode="" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" /> +<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" /> +<glyph unicode="" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" /> +<glyph unicode="" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" /> +<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" /> +<glyph unicode="" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" /> +<glyph unicode="" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" /> +<glyph unicode="" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" /> +<glyph unicode="" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" /> +<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" /> +<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" /> +<glyph unicode="" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" /> +<glyph unicode="" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" /> +<glyph unicode="" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" /> +<glyph unicode="" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" /> +<glyph unicode="" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" /> +<glyph unicode="" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" /> +<glyph unicode="" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" /> +<glyph unicode="" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" /> +<glyph unicode="" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" /> +<glyph unicode="" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" /> +<glyph unicode="" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" /> +<glyph unicode="" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" /> +<glyph unicode="" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " /> +<glyph unicode="" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" /> +<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" /> +<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" /> +<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" /> +<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" /> +<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" /> +<glyph unicode="" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" /> +<glyph unicode="" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" /> +<glyph unicode="" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" /> +<glyph unicode="" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " /> +<glyph unicode="" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" /> +<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" /> +<glyph unicode="" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" /> +<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-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.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" /> +<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-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-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" /> +<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 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-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 137l-430 -431l-147 147z" /> +<glyph unicode="" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" /> +<glyph unicode="" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" /> +<glyph unicode="" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" /> +<glyph unicode="" d="M200 0l900 550l-900 550v-1100z" /> +<glyph unicode="" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" /> +<glyph unicode="" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" /> +<glyph unicode="" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" /> +<glyph unicode="" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 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-500 -488v488z" /> +<glyph unicode="" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 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.5v438z" /> +<glyph unicode="" d="M100 250v100q0 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-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" /> +<glyph unicode="" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" /> +<glyph unicode="" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h600v200h-600v-200z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 -56t-67 -183zM500 300h200v100h-200v-100z" /> +<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" /> +<glyph unicode="" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" /> +<glyph unicode="" d="M0 547l600 453v-300h600v-300h-600v-301z" /> +<glyph unicode="" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" /> +<glyph unicode="" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" /> +<glyph unicode="" d="M104 600h296v600h300v-600h298l-449 -600z" /> +<glyph unicode="" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" /> +<glyph unicode="" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" /> +<glyph unicode="" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" /> +<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" /> +<glyph unicode="" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" /> +<glyph unicode="" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" /> +<glyph unicode="" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" /> +<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" /> +<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" /> +<glyph unicode="" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" /> +<glyph unicode="" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" /> +<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" /> +<glyph unicode="" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" /> +<glyph unicode="" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 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.5z" /> +<glyph unicode="" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" /> +<glyph unicode="" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" /> +<glyph unicode="" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" /> +<glyph unicode="" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" /> +<glyph unicode="" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" /> +<glyph unicode="" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" /> +<glyph unicode="" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" /> +<glyph unicode="" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" /> +<glyph unicode="" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" /> +<glyph unicode="" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 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.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" /> +<glyph unicode="" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" /> +<glyph unicode="" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" /> +<glyph unicode="" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" /> +<glyph unicode="" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" /> +<glyph unicode="" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" /> +<glyph unicode="" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" /> +<glyph unicode="" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" /> +<glyph unicode="" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" /> +<glyph unicode="" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" /> +<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 294l-402 298v-197h-298v-201z" /> +<glyph unicode="" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 -294v194h302v201h-300v197z" /> +<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" /> +<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" /> +<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 -34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 47 48t34 49t21 62q-14 9 -37.5 9.5t-35.5 7.5q-14 7 -49 15t-52 19 q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q8 16 22 22q6 -1 26 -1.5t33.5 -4.5t19.5 -13q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5 t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23 q-19 -3 -37 0q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -46 0t-45 -3q-20 -6 -51.5 -25.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79zM518 915q3 12 16 30.5t16 25.5q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -18 8 -42.5t16.5 -44 t9.5 -23.5q-6 1 -39 5t-53.5 10t-36.5 16z" /> +<glyph unicode="" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" /> +<glyph unicode="" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 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.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 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.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 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.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" /> +<glyph unicode="" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" /> +<glyph unicode="" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" /> +<glyph unicode="" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" /> +<glyph unicode="" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 56.5t52 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-16 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5q-37 0 -62.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" /> +<glyph unicode="" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60l517 511 q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" /> +<glyph unicode="" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 -129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 80 -124 80q-59 0 -108.5 -49.5t-49.5 -118.5z" /> +<glyph unicode="" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" /> +<glyph unicode="" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" /> +<glyph unicode="" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" /> +<glyph unicode="" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5zM700 237 q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" /> +<glyph unicode="" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10 t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221z" /> +<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" /> +<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" /> +<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" /> +<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" /> +<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" /> +<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" /> +<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" /> +<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" /> +<glyph unicode="" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" /> +<glyph unicode="" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" /> +<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" /> +<glyph unicode="" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" /> +<glyph unicode="" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40z" /> +<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " /> +<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" /> +<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" /> +<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" /> +<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" /> +<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" /> +<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" /> +<glyph unicode="" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" /> +<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" /> +<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" /> +<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" /> +<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" /> +<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" /> +<glyph unicode="" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" /> +<glyph unicode="" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" /> +<glyph unicode="" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359z" /> +<glyph unicode="" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" /> +<glyph unicode="" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" /> +<glyph unicode="" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" /> +<glyph unicode="" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" /> +<glyph unicode="" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" /> +<glyph unicode="" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" /> +<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" /> +<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" /> +<glyph unicode="" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" /> +<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 -300z" /> +<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" /> +<glyph unicode="" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" /> +<glyph unicode="" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" /> +</font> +</defs></svg> 
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.ttf b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.ttfBinary files differ new file mode 100644 index 00000000..a498ef4e --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.ttf diff --git a/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.woff b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.woffBinary files differ new file mode 100644 index 00000000..d83c539b --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/fonts/glyphicons-halflings-regular.woff diff --git a/pdf-as-web/src/main/webapp/assets/js/bootstrap.js b/pdf-as-web/src/main/webapp/assets/js/bootstrap.js new file mode 100644 index 00000000..850e6e53 --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/js/bootstrap.js @@ -0,0 +1,2006 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery") } + +/* ======================================================================== + * Bootstrap: transition.js v3.0.3 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2013 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"; + +  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) +  // ============================================================ + +  function transitionEnd() { +    var el = document.createElement('bootstrap') + +    var transEndEventNames = { +      'WebkitTransition' : 'webkitTransitionEnd' +    , 'MozTransition'    : 'transitionend' +    , 'OTransition'      : 'oTransitionEnd otransitionend' +    , 'transition'       : 'transitionend' +    } + +    for (var name in transEndEventNames) { +      if (el.style[name] !== undefined) { +        return { end: transEndEventNames[name] } +      } +    } +  } + +  // http://blog.alexmaccaw.com/css-transitions +  $.fn.emulateTransitionEnd = function (duration) { +    var called = false, $el = this +    $(this).one($.support.transition.end, function () { called = true }) +    var callback = function () { if (!called) $($el).trigger($.support.transition.end) } +    setTimeout(callback, duration) +    return this +  } + +  $(function () { +    $.support.transition = transitionEnd() +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.0.3 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2013 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"; + +  // ALERT CLASS DEFINITION +  // ====================== + +  var dismiss = '[data-dismiss="alert"]' +  var Alert   = function (el) { +    $(el).on('click', dismiss, this.close) +  } + +  Alert.prototype.close = function (e) { +    var $this    = $(this) +    var selector = $this.attr('data-target') + +    if (!selector) { +      selector = $this.attr('href') +      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 +    } + +    var $parent = $(selector) + +    if (e) e.preventDefault() + +    if (!$parent.length) { +      $parent = $this.hasClass('alert') ? $this : $this.parent() +    } + +    $parent.trigger(e = $.Event('close.bs.alert')) + +    if (e.isDefaultPrevented()) return + +    $parent.removeClass('in') + +    function removeElement() { +      $parent.trigger('closed.bs.alert').remove() +    } + +    $.support.transition && $parent.hasClass('fade') ? +      $parent +        .one($.support.transition.end, removeElement) +        .emulateTransitionEnd(150) : +      removeElement() +  } + + +  // ALERT PLUGIN DEFINITION +  // ======================= + +  var old = $.fn.alert + +  $.fn.alert = function (option) { +    return this.each(function () { +      var $this = $(this) +      var data  = $this.data('bs.alert') + +      if (!data) $this.data('bs.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.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.0.3 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2013 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"; + +  // BUTTON PUBLIC CLASS DEFINITION +  // ============================== + +  var Button = function (element, options) { +    this.$element = $(element) +    this.options  = $.extend({}, Button.DEFAULTS, options) +  } + +  Button.DEFAULTS = { +    loadingText: 'loading...' +  } + +  Button.prototype.setState = function (state) { +    var d    = 'disabled' +    var $el  = this.$element +    var val  = $el.is('input') ? 'val' : 'html' +    var data = $el.data() + +    state = state + 'Text' + +    if (!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"]') +    var changed = true + +    if ($parent.length) { +      var $input = this.$element.find('input') +      if ($input.prop('type') === 'radio') { +        // see if clicking on current one +        if ($input.prop('checked') && this.$element.hasClass('active')) +          changed = false +        else +          $parent.find('.active').removeClass('active') +      } +      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') +    } + +    if (changed) this.$element.toggleClass('active') +  } + + +  // BUTTON PLUGIN DEFINITION +  // ======================== + +  var old = $.fn.button + +  $.fn.button = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.button') +      var options = typeof option == 'object' && option + +      if (!data) $this.data('bs.button', (data = new Button(this, options))) + +      if (option == 'toggle') data.toggle() +      else if (option) data.setState(option) +    }) +  } + +  $.fn.button.Constructor = Button + + +  // BUTTON NO CONFLICT +  // ================== + +  $.fn.button.noConflict = function () { +    $.fn.button = old +    return this +  } + + +  // BUTTON DATA-API +  // =============== + +  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) { +    var $btn = $(e.target) +    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') +    $btn.button('toggle') +    e.preventDefault() +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.0.3 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2013 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"; + +  // CAROUSEL CLASS DEFINITION +  // ========================= + +  var Carousel = function (element, options) { +    this.$element    = $(element) +    this.$indicators = this.$element.find('.carousel-indicators') +    this.options     = options +    this.paused      = +    this.sliding     = +    this.interval    = +    this.$active     = +    this.$items      = null + +    this.options.pause == 'hover' && this.$element +      .on('mouseenter', $.proxy(this.pause, this)) +      .on('mouseleave', $.proxy(this.cycle, this)) +  } + +  Carousel.DEFAULTS = { +    interval: 5000 +  , pause: 'hover' +  , wrap: true +  } + +  Carousel.prototype.cycle =  function (e) { +    e || (this.paused = false) + +    this.interval && clearInterval(this.interval) + +    this.options.interval +      && !this.paused +      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + +    return this +  } + +  Carousel.prototype.getActiveIndex = function () { +    this.$active = this.$element.find('.item.active') +    this.$items  = this.$active.parent().children() + +    return this.$items.index(this.$active) +  } + +  Carousel.prototype.to = function (pos) { +    var that        = this +    var activeIndex = this.getActiveIndex() + +    if (pos > (this.$items.length - 1) || pos < 0) return + +    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) +    if (activeIndex == pos) return this.pause().cycle() + +    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) +  } + +  Carousel.prototype.pause = function (e) { +    e || (this.paused = true) + +    if (this.$element.find('.next, .prev').length && $.support.transition.end) { +      this.$element.trigger($.support.transition.end) +      this.cycle(true) +    } + +    this.interval = clearInterval(this.interval) + +    return this +  } + +  Carousel.prototype.next = function () { +    if (this.sliding) return +    return this.slide('next') +  } + +  Carousel.prototype.prev = function () { +    if (this.sliding) return +    return this.slide('prev') +  } + +  Carousel.prototype.slide = function (type, next) { +    var $active   = this.$element.find('.item.active') +    var $next     = next || $active[type]() +    var isCycling = this.interval +    var direction = type == 'next' ? 'left' : 'right' +    var fallback  = type == 'next' ? 'first' : 'last' +    var that      = this + +    if (!$next.length) { +      if (!this.options.wrap) return +      $next = this.$element.find('.item')[fallback]() +    } + +    this.sliding = true + +    isCycling && this.pause() + +    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction }) + +    if ($next.hasClass('active')) return + +    if (this.$indicators.length) { +      this.$indicators.find('.active').removeClass('active') +      this.$element.one('slid.bs.carousel', 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) +      $active +        .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.bs.carousel') }, 0) +        }) +        .emulateTransitionEnd(600) +    } else { +      this.$element.trigger(e) +      if (e.isDefaultPrevented()) return +      $active.removeClass('active') +      $next.addClass('active') +      this.sliding = false +      this.$element.trigger('slid.bs.carousel') +    } + +    isCycling && this.cycle() + +    return this +  } + + +  // CAROUSEL PLUGIN DEFINITION +  // ========================== + +  var old = $.fn.carousel + +  $.fn.carousel = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.carousel') +      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) +      var action  = typeof option == 'string' ? option : options.slide + +      if (!data) $this.data('bs.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.Constructor = Carousel + + +  // CAROUSEL NO CONFLICT +  // ==================== + +  $.fn.carousel.noConflict = function () { +    $.fn.carousel = old +    return this +  } + + +  // CAROUSEL DATA-API +  // ================= + +  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { +    var $this   = $(this), href +    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 +    var options = $.extend({}, $target.data(), $this.data()) +    var slideIndex = $this.attr('data-slide-to') +    if (slideIndex) options.interval = false + +    $target.carousel(options) + +    if (slideIndex = $this.attr('data-slide-to')) { +      $target.data('bs.carousel').to(slideIndex) +    } + +    e.preventDefault() +  }) + +  $(window).on('load', function () { +    $('[data-ride="carousel"]').each(function () { +      var $carousel = $(this) +      $carousel.carousel($carousel.data()) +    }) +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.0.3 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2013 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"; + +  // COLLAPSE PUBLIC CLASS DEFINITION +  // ================================ + +  var Collapse = function (element, options) { +    this.$element      = $(element) +    this.options       = $.extend({}, Collapse.DEFAULTS, options) +    this.transitioning = null + +    if (this.options.parent) this.$parent = $(this.options.parent) +    if (this.options.toggle) this.toggle() +  } + +  Collapse.DEFAULTS = { +    toggle: true +  } + +  Collapse.prototype.dimension = function () { +    var hasWidth = this.$element.hasClass('width') +    return hasWidth ? 'width' : 'height' +  } + +  Collapse.prototype.show = function () { +    if (this.transitioning || this.$element.hasClass('in')) return + +    var startEvent = $.Event('show.bs.collapse') +    this.$element.trigger(startEvent) +    if (startEvent.isDefaultPrevented()) return + +    var actives = this.$parent && this.$parent.find('> .panel > .in') + +    if (actives && actives.length) { +      var hasData = actives.data('bs.collapse') +      if (hasData && hasData.transitioning) return +      actives.collapse('hide') +      hasData || actives.data('bs.collapse', null) +    } + +    var dimension = this.dimension() + +    this.$element +      .removeClass('collapse') +      .addClass('collapsing') +      [dimension](0) + +    this.transitioning = 1 + +    var complete = function () { +      this.$element +        .removeClass('collapsing') +        .addClass('in') +        [dimension]('auto') +      this.transitioning = 0 +      this.$element.trigger('shown.bs.collapse') +    } + +    if (!$.support.transition) return complete.call(this) + +    var scrollSize = $.camelCase(['scroll', dimension].join('-')) + +    this.$element +      .one($.support.transition.end, $.proxy(complete, this)) +      .emulateTransitionEnd(350) +      [dimension](this.$element[0][scrollSize]) +  } + +  Collapse.prototype.hide = function () { +    if (this.transitioning || !this.$element.hasClass('in')) return + +    var startEvent = $.Event('hide.bs.collapse') +    this.$element.trigger(startEvent) +    if (startEvent.isDefaultPrevented()) return + +    var dimension = this.dimension() + +    this.$element +      [dimension](this.$element[dimension]()) +      [0].offsetHeight + +    this.$element +      .addClass('collapsing') +      .removeClass('collapse') +      .removeClass('in') + +    this.transitioning = 1 + +    var complete = function () { +      this.transitioning = 0 +      this.$element +        .trigger('hidden.bs.collapse') +        .removeClass('collapsing') +        .addClass('collapse') +    } + +    if (!$.support.transition) return complete.call(this) + +    this.$element +      [dimension](0) +      .one($.support.transition.end, $.proxy(complete, this)) +      .emulateTransitionEnd(350) +  } + +  Collapse.prototype.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) +      var data    = $this.data('bs.collapse') +      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + +      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.collapse.Constructor = Collapse + + +  // COLLAPSE NO CONFLICT +  // ==================== + +  $.fn.collapse.noConflict = function () { +    $.fn.collapse = old +    return this +  } + + +  // COLLAPSE DATA-API +  // ================= + +  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) { +    var $this   = $(this), href +    var target  = $this.attr('data-target') +        || e.preventDefault() +        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 +    var $target = $(target) +    var data    = $target.data('bs.collapse') +    var option  = data ? 'toggle' : $this.data() +    var parent  = $this.attr('data-parent') +    var $parent = parent && $(parent) + +    if (!data || !data.transitioning) { +      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed') +      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') +    } + +    $target.collapse(option) +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.0.3 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2013 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"; + +  // DROPDOWN CLASS DEFINITION +  // ========================= + +  var backdrop = '.dropdown-backdrop' +  var toggle   = '[data-toggle=dropdown]' +  var Dropdown = function (element) { +    $(element).on('click.bs.dropdown', this.toggle) +  } + +  Dropdown.prototype.toggle = function (e) { +    var $this = $(this) + +    if ($this.is('.disabled, :disabled')) return + +    var $parent  = getParent($this) +    var isActive = $parent.hasClass('open') + +    clearMenus() + +    if (!isActive) { +      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { +        // if mobile we use a backdrop because click events don't delegate +        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) +      } + +      $parent.trigger(e = $.Event('show.bs.dropdown')) + +      if (e.isDefaultPrevented()) return + +      $parent +        .toggleClass('open') +        .trigger('shown.bs.dropdown') + +      $this.focus() +    } + +    return false +  } + +  Dropdown.prototype.keydown = function (e) { +    if (!/(38|40|27)/.test(e.keyCode)) return + +    var $this = $(this) + +    e.preventDefault() +    e.stopPropagation() + +    if ($this.is('.disabled, :disabled')) return + +    var $parent  = getParent($this) +    var isActive = $parent.hasClass('open') + +    if (!isActive || (isActive && e.keyCode == 27)) { +      if (e.which == 27) $parent.find(toggle).focus() +      return $this.click() +    } + +    var $items = $('[role=menu] li:not(.divider):visible a', $parent) + +    if (!$items.length) return + +    var 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() { +    $(backdrop).remove() +    $(toggle).each(function (e) { +      var $parent = getParent($(this)) +      if (!$parent.hasClass('open')) return +      $parent.trigger(e = $.Event('hide.bs.dropdown')) +      if (e.isDefaultPrevented()) return +      $parent.removeClass('open').trigger('hidden.bs.dropdown') +    }) +  } + +  function getParent($this) { +    var selector = $this.attr('data-target') + +    if (!selector) { +      selector = $this.attr('href') +      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 +    } + +    var $parent = selector && $(selector) + +    return $parent && $parent.length ? $parent : $this.parent() +  } + + +  // DROPDOWN PLUGIN DEFINITION +  // ========================== + +  var old = $.fn.dropdown + +  $.fn.dropdown = function (option) { +    return this.each(function () { +      var $this = $(this) +      var data  = $this.data('bs.dropdown') + +      if (!data) $this.data('bs.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.bs.dropdown.data-api', clearMenus) +    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) +    .on('click.bs.dropdown.data-api'  , toggle, Dropdown.prototype.toggle) +    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.0.3 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2013 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"; + +  // MODAL CLASS DEFINITION +  // ====================== + +  var Modal = function (element, options) { +    this.options   = options +    this.$element  = $(element) +    this.$backdrop = +    this.isShown   = null + +    if (this.options.remote) this.$element.load(this.options.remote) +  } + +  Modal.DEFAULTS = { +      backdrop: true +    , keyboard: true +    , show: true +  } + +  Modal.prototype.toggle = function (_relatedTarget) { +    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget) +  } + +  Modal.prototype.show = function (_relatedTarget) { +    var that = this +    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + +    this.$element.trigger(e) + +    if (this.isShown || e.isDefaultPrevented()) return + +    this.isShown = true + +    this.escape() + +    this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + +    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() + +      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + +      transition ? +        that.$element.find('.modal-dialog') // wait for modal to slide in +          .one($.support.transition.end, function () { +            that.$element.focus().trigger(e) +          }) +          .emulateTransitionEnd(300) : +        that.$element.focus().trigger(e) +    }) +  } + +  Modal.prototype.hide = function (e) { +    if (e) e.preventDefault() + +    e = $.Event('hide.bs.modal') + +    this.$element.trigger(e) + +    if (!this.isShown || e.isDefaultPrevented()) return + +    this.isShown = false + +    this.escape() + +    $(document).off('focusin.bs.modal') + +    this.$element +      .removeClass('in') +      .attr('aria-hidden', true) +      .off('click.dismiss.modal') + +    $.support.transition && this.$element.hasClass('fade') ? +      this.$element +        .one($.support.transition.end, $.proxy(this.hideModal, this)) +        .emulateTransitionEnd(300) : +      this.hideModal() +  } + +  Modal.prototype.enforceFocus = function () { +    $(document) +      .off('focusin.bs.modal') // guard against infinite focus loop +      .on('focusin.bs.modal', $.proxy(function (e) { +        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { +          this.$element.focus() +        } +      }, this)) +  } + +  Modal.prototype.escape = function () { +    if (this.isShown && this.options.keyboard) { +      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) { +        e.which == 27 && this.hide() +      }, this)) +    } else if (!this.isShown) { +      this.$element.off('keyup.dismiss.bs.modal') +    } +  } + +  Modal.prototype.hideModal = function () { +    var that = this +    this.$element.hide() +    this.backdrop(function () { +      that.removeBackdrop() +      that.$element.trigger('hidden.bs.modal') +    }) +  } + +  Modal.prototype.removeBackdrop = function () { +    this.$backdrop && this.$backdrop.remove() +    this.$backdrop = null +  } + +  Modal.prototype.backdrop = function (callback) { +    var that    = this +    var 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.$element.on('click.dismiss.modal', $.proxy(function (e) { +        if (e.target !== e.currentTarget) return +        this.options.backdrop == 'static' +          ? this.$element[0].focus.call(this.$element[0]) +          : this.hide.call(this) +      }, this)) + +      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + +      this.$backdrop.addClass('in') + +      if (!callback) return + +      doAnimate ? +        this.$backdrop +          .one($.support.transition.end, callback) +          .emulateTransitionEnd(150) : +        callback() + +    } else if (!this.isShown && this.$backdrop) { +      this.$backdrop.removeClass('in') + +      $.support.transition && this.$element.hasClass('fade')? +        this.$backdrop +          .one($.support.transition.end, callback) +          .emulateTransitionEnd(150) : +        callback() + +    } else if (callback) { +      callback() +    } +  } + + +  // MODAL PLUGIN DEFINITION +  // ======================= + +  var old = $.fn.modal + +  $.fn.modal = function (option, _relatedTarget) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.modal') +      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + +      if (!data) $this.data('bs.modal', (data = new Modal(this, options))) +      if (typeof option == 'string') data[option](_relatedTarget) +      else if (options.show) data.show(_relatedTarget) +    }) +  } + +  $.fn.modal.Constructor = Modal + + +  // MODAL NO CONFLICT +  // ================= + +  $.fn.modal.noConflict = function () { +    $.fn.modal = old +    return this +  } + + +  // MODAL DATA-API +  // ============== + +  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { +    var $this   = $(this) +    var href    = $this.attr('href') +    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 +    var option  = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + +    e.preventDefault() + +    $target +      .modal(option, this) +      .one('hide', function () { +        $this.is(':visible') && $this.focus() +      }) +  }) + +  $(document) +    .on('show.bs.modal',  '.modal', function () { $(document.body).addClass('modal-open') }) +    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.0.3 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2013 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"; + +  // TOOLTIP PUBLIC CLASS DEFINITION +  // =============================== + +  var Tooltip = function (element, options) { +    this.type       = +    this.options    = +    this.enabled    = +    this.timeout    = +    this.hoverState = +    this.$element   = null + +    this.init('tooltip', element, options) +  } + +  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.prototype.init = function (type, element, options) { +    this.enabled  = true +    this.type     = type +    this.$element = $(element) +    this.options  = this.getOptions(options) + +    var triggers = this.options.trigger.split(' ') + +    for (var i = triggers.length; i--;) { +      var trigger = triggers[i] + +      if (trigger == 'click') { +        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) +      } else if (trigger != 'manual') { +        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focus' +        var 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() +  } + +  Tooltip.prototype.getDefaults = function () { +    return Tooltip.DEFAULTS +  } + +  Tooltip.prototype.getOptions = function (options) { +    options = $.extend({}, this.getDefaults(), this.$element.data(), options) + +    if (options.delay && typeof options.delay == 'number') { +      options.delay = { +        show: options.delay +      , hide: options.delay +      } +    } + +    return options +  } + +  Tooltip.prototype.getDelegateOptions = function () { +    var options  = {} +    var defaults = this.getDefaults() + +    this._options && $.each(this._options, function (key, value) { +      if (defaults[key] != value) options[key] = value +    }) + +    return options +  } + +  Tooltip.prototype.enter = function (obj) { +    var self = obj instanceof this.constructor ? +      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) + +    clearTimeout(self.timeout) + +    self.hoverState = 'in' + +    if (!self.options.delay || !self.options.delay.show) return self.show() + +    self.timeout = setTimeout(function () { +      if (self.hoverState == 'in') self.show() +    }, self.options.delay.show) +  } + +  Tooltip.prototype.leave = function (obj) { +    var self = obj instanceof this.constructor ? +      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) + +    clearTimeout(self.timeout) + +    self.hoverState = 'out' + +    if (!self.options.delay || !self.options.delay.hide) return self.hide() + +    self.timeout = setTimeout(function () { +      if (self.hoverState == 'out') self.hide() +    }, self.options.delay.hide) +  } + +  Tooltip.prototype.show = function () { +    var e = $.Event('show.bs.'+ this.type) + +    if (this.hasContent() && this.enabled) { +      this.$element.trigger(e) + +      if (e.isDefaultPrevented()) return + +      var $tip = this.tip() + +      this.setContent() + +      if (this.options.animation) $tip.addClass('fade') + +      var placement = typeof this.options.placement == 'function' ? +        this.options.placement.call(this, $tip[0], this.$element[0]) : +        this.options.placement + +      var autoToken = /\s?auto?\s?/i +      var autoPlace = autoToken.test(placement) +      if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + +      $tip +        .detach() +        .css({ top: 0, left: 0, display: 'block' }) +        .addClass(placement) + +      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + +      var pos          = this.getPosition() +      var actualWidth  = $tip[0].offsetWidth +      var actualHeight = $tip[0].offsetHeight + +      if (autoPlace) { +        var $parent = this.$element.parent() + +        var orgPlacement = placement +        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop +        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth() +        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight() +        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left + +        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    : +                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' : +                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   : +                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  : +                    placement + +        $tip +          .removeClass(orgPlacement) +          .addClass(placement) +      } + +      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + +      this.applyPlacement(calculatedOffset, placement) +      this.$element.trigger('shown.bs.' + this.type) +    } +  } + +  Tooltip.prototype.applyPlacement = function(offset, placement) { +    var replace +    var $tip   = this.tip() +    var width  = $tip[0].offsetWidth +    var height = $tip[0].offsetHeight + +    // manually read margins because getBoundingClientRect includes difference +    var marginTop = parseInt($tip.css('margin-top'), 10) +    var marginLeft = parseInt($tip.css('margin-left'), 10) + +    // we must check for NaN for ie 8/9 +    if (isNaN(marginTop))  marginTop  = 0 +    if (isNaN(marginLeft)) marginLeft = 0 + +    offset.top  = offset.top  + marginTop +    offset.left = offset.left + marginLeft + +    $tip +      .offset(offset) +      .addClass('in') + +    // check to see if placing tip in new offset caused the tip to resize itself +    var actualWidth  = $tip[0].offsetWidth +    var actualHeight = $tip[0].offsetHeight + +    if (placement == 'top' && actualHeight != height) { +      replace = true +      offset.top = offset.top + height - actualHeight +    } + +    if (/bottom|top/.test(placement)) { +      var 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) +  } + +  Tooltip.prototype.replaceArrow = function(delta, dimension, position) { +    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '') +  } + +  Tooltip.prototype.setContent = function () { +    var $tip  = this.tip() +    var title = this.getTitle() + +    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) +    $tip.removeClass('fade in top bottom left right') +  } + +  Tooltip.prototype.hide = function () { +    var that = this +    var $tip = this.tip() +    var e    = $.Event('hide.bs.' + this.type) + +    function complete() { +      if (that.hoverState != 'in') $tip.detach() +    } + +    this.$element.trigger(e) + +    if (e.isDefaultPrevented()) return + +    $tip.removeClass('in') + +    $.support.transition && this.$tip.hasClass('fade') ? +      $tip +        .one($.support.transition.end, complete) +        .emulateTransitionEnd(150) : +      complete() + +    this.$element.trigger('hidden.bs.' + this.type) + +    return this +  } + +  Tooltip.prototype.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', '') +    } +  } + +  Tooltip.prototype.hasContent = function () { +    return this.getTitle() +  } + +  Tooltip.prototype.getPosition = function () { +    var el = this.$element[0] +    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : { +      width: el.offsetWidth +    , height: el.offsetHeight +    }, this.$element.offset()) +  } + +  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { +    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } : +           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } : +           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : +        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   } +  } + +  Tooltip.prototype.getTitle = function () { +    var title +    var $e = this.$element +    var o  = this.options + +    title = $e.attr('data-original-title') +      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title) + +    return title +  } + +  Tooltip.prototype.tip = function () { +    return this.$tip = this.$tip || $(this.options.template) +  } + +  Tooltip.prototype.arrow = function () { +    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow') +  } + +  Tooltip.prototype.validate = function () { +    if (!this.$element[0].parentNode) { +      this.hide() +      this.$element = null +      this.options  = null +    } +  } + +  Tooltip.prototype.enable = function () { +    this.enabled = true +  } + +  Tooltip.prototype.disable = function () { +    this.enabled = false +  } + +  Tooltip.prototype.toggleEnabled = function () { +    this.enabled = !this.enabled +  } + +  Tooltip.prototype.toggle = function (e) { +    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this +    self.tip().hasClass('in') ? self.leave(self) : self.enter(self) +  } + +  Tooltip.prototype.destroy = function () { +    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type) +  } + + +  // TOOLTIP PLUGIN DEFINITION +  // ========================= + +  var old = $.fn.tooltip + +  $.fn.tooltip = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.tooltip') +      var options = typeof option == 'object' && option + +      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.tooltip.Constructor = Tooltip + + +  // TOOLTIP NO CONFLICT +  // =================== + +  $.fn.tooltip.noConflict = function () { +    $.fn.tooltip = old +    return this +  } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.0.3 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2013 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"; + +  // POPOVER PUBLIC CLASS DEFINITION +  // =============================== + +  var Popover = function (element, options) { +    this.init('popover', element, options) +  } + +  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + +  Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.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>' +  }) + + +  // NOTE: POPOVER EXTENDS tooltip.js +  // ================================ + +  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + +  Popover.prototype.constructor = Popover + +  Popover.prototype.getDefaults = function () { +    return Popover.DEFAULTS +  } + +  Popover.prototype.setContent = function () { +    var $tip    = this.tip() +    var title   = this.getTitle() +    var 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') + +    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do +    // this manually by checking the contents. +    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() +  } + +  Popover.prototype.hasContent = function () { +    return this.getTitle() || this.getContent() +  } + +  Popover.prototype.getContent = function () { +    var $e = this.$element +    var o  = this.options + +    return $e.attr('data-content') +      || (typeof o.content == 'function' ? +            o.content.call($e[0]) : +            o.content) +  } + +  Popover.prototype.arrow = function () { +    return this.$arrow = this.$arrow || this.tip().find('.arrow') +  } + +  Popover.prototype.tip = function () { +    if (!this.$tip) this.$tip = $(this.options.template) +    return this.$tip +  } + + +  // POPOVER PLUGIN DEFINITION +  // ========================= + +  var old = $.fn.popover + +  $.fn.popover = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.popover') +      var options = typeof option == 'object' && option + +      if (!data) $this.data('bs.popover', (data = new Popover(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.popover.Constructor = Popover + + +  // POPOVER NO CONFLICT +  // =================== + +  $.fn.popover.noConflict = function () { +    $.fn.popover = old +    return this +  } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.0.3 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2013 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"; + +  // SCROLLSPY CLASS DEFINITION +  // ========================== + +  function ScrollSpy(element, options) { +    var href +    var process  = $.proxy(this.process, this) + +    this.$element       = $(element).is('body') ? $(window) : $(element) +    this.$body          = $('body') +    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process) +    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options) +    this.selector       = (this.options.target +      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 +      || '') + ' .nav li > a' +    this.offsets        = $([]) +    this.targets        = $([]) +    this.activeTarget   = null + +    this.refresh() +    this.process() +  } + +  ScrollSpy.DEFAULTS = { +    offset: 10 +  } + +  ScrollSpy.prototype.refresh = function () { +    var offsetMethod = this.$element[0] == window ? 'offset' : 'position' + +    this.offsets = $([]) +    this.targets = $([]) + +    var self     = this +    var $targets = this.$body +      .find(this.selector) +      .map(function () { +        var $el   = $(this) +        var href  = $el.data('target') || $el.attr('href') +        var $href = /^#\w/.test(href) && $(href) + +        return ($href +          && $href.length +          && [[ $href[offsetMethod]().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]) +      }) +  } + +  ScrollSpy.prototype.process = function () { +    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset +    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight +    var maxScroll    = scrollHeight - this.$scrollElement.height() +    var offsets      = this.offsets +    var targets      = this.targets +    var activeTarget = this.activeTarget +    var 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] ) +    } +  } + +  ScrollSpy.prototype.activate = function (target) { +    this.activeTarget = target + +    $(this.selector) +      .parents('.active') +      .removeClass('active') + +    var selector = this.selector +      + '[data-target="' + target + '"],' +      + this.selector + '[href="' + target + '"]' + +    var active = $(selector) +      .parents('li') +      .addClass('active') + +    if (active.parent('.dropdown-menu').length)  { +      active = active +        .closest('li.dropdown') +        .addClass('active') +    } + +    active.trigger('activate.bs.scrollspy') +  } + + +  // SCROLLSPY PLUGIN DEFINITION +  // =========================== + +  var old = $.fn.scrollspy + +  $.fn.scrollspy = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.scrollspy') +      var options = typeof option == 'object' && option + +      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.scrollspy.Constructor = ScrollSpy + + +  // 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()) +    }) +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.0.3 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2013 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"; + +  // TAB CLASS DEFINITION +  // ==================== + +  var Tab = function (element) { +    this.element = $(element) +  } + +  Tab.prototype.show = function () { +    var $this    = this.element +    var $ul      = $this.closest('ul:not(.dropdown-menu)') +    var selector = $this.data('target') + +    if (!selector) { +      selector = $this.attr('href') +      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 +    } + +    if ($this.parent('li').hasClass('active')) return + +    var previous = $ul.find('.active:last a')[0] +    var e        = $.Event('show.bs.tab', { +      relatedTarget: previous +    }) + +    $this.trigger(e) + +    if (e.isDefaultPrevented()) return + +    var $target = $(selector) + +    this.activate($this.parent('li'), $ul) +    this.activate($target, $target.parent(), function () { +      $this.trigger({ +        type: 'shown.bs.tab' +      , relatedTarget: previous +      }) +    }) +  } + +  Tab.prototype.activate = function (element, container, callback) { +    var $active    = container.find('> .active') +    var 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) +        .emulateTransitionEnd(150) : +      next() + +    $active.removeClass('in') +  } + + +  // TAB PLUGIN DEFINITION +  // ===================== + +  var old = $.fn.tab + +  $.fn.tab = function ( option ) { +    return this.each(function () { +      var $this = $(this) +      var data  = $this.data('bs.tab') + +      if (!data) $this.data('bs.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.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { +    e.preventDefault() +    $(this).tab('show') +  }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.0.3 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2013 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"; + +  // AFFIX CLASS DEFINITION +  // ====================== + +  var Affix = function (element, options) { +    this.options = $.extend({}, Affix.DEFAULTS, options) +    this.$window = $(window) +      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) +      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this)) + +    this.$element = $(element) +    this.affixed  = +    this.unpin    = null + +    this.checkPosition() +  } + +  Affix.RESET = 'affix affix-top affix-bottom' + +  Affix.DEFAULTS = { +    offset: 0 +  } + +  Affix.prototype.checkPositionWithEventLoop = function () { +    setTimeout($.proxy(this.checkPosition, this), 1) +  } + +  Affix.prototype.checkPosition = function () { +    if (!this.$element.is(':visible')) return + +    var scrollHeight = $(document).height() +    var scrollTop    = this.$window.scrollTop() +    var position     = this.$element.offset() +    var offset       = this.options.offset +    var offsetTop    = offset.top +    var offsetBottom = offset.bottom + +    if (typeof offset != 'object')         offsetBottom = offsetTop = offset +    if (typeof offsetTop == 'function')    offsetTop    = offset.top() +    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom() + +    var 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 +    if (this.unpin) this.$element.css('top', '') + +    this.affixed = affix +    this.unpin   = affix == 'bottom' ? position.top - scrollTop : null + +    this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : '')) + +    if (affix == 'bottom') { +      this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() }) +    } +  } + + +  // AFFIX PLUGIN DEFINITION +  // ======================= + +  var old = $.fn.affix + +  $.fn.affix = function (option) { +    return this.each(function () { +      var $this   = $(this) +      var data    = $this.data('bs.affix') +      var options = typeof option == 'object' && option + +      if (!data) $this.data('bs.affix', (data = new Affix(this, options))) +      if (typeof option == 'string') data[option]() +    }) +  } + +  $.fn.affix.Constructor = Affix + + +  // 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) +      var data = $spy.data() + +      data.offset = data.offset || {} + +      if (data.offsetBottom) data.offset.bottom = data.offsetBottom +      if (data.offsetTop)    data.offset.top    = data.offsetTop + +      $spy.affix(data) +    }) +  }) + +}(jQuery); diff --git a/pdf-as-web/src/main/webapp/assets/js/bootstrap.min.js b/pdf-as-web/src/main/webapp/assets/js/bootstrap.min.js new file mode 100644 index 00000000..1a6258ef --- /dev/null +++ b/pdf-as-web/src/main/webapp/assets/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.0.3 (http://getbootstrap.com) + * Copyright 2013 Twitter, Inc. + * Licensed under http://www.apache.org/licenses/LICENSE-2.0 + */ + +if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&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("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},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},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.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)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.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.bs.carousel")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}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("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.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("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):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).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.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,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.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},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.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")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.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>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.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"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,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())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,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)})})}(jQuery);
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/index.jsp b/pdf-as-web/src/main/webapp/index.jsp new file mode 100644 index 00000000..2dd79101 --- /dev/null +++ b/pdf-as-web/src/main/webapp/index.jsp @@ -0,0 +1,21 @@ +<html> +<head> +<title>PDF-Signatur</title> +</head> +<body> +<form role="form" action="Sign" method="POST" enctype="multipart/form-data"> +  <div class="form-group"> +    <label for="exampleInputFile">Signieren: </label> +    <input type="file" name="pdfFile" id="pdfFile"> +    <p class="help-block">Zu signierende PDF Datei</p> +  </div> +  <div class="form-group"> +  	<button type="submit" value="jks" name="connector" class="btn btn-primary">JKS</button> +	<button type="submit" value="bku" name="connector" class="btn btn-primary">Lokale BKU</button> +	<button type="submit" value="onlinebku" name="connector" class="btn btn-primary">Online BKU</button> +	<button type="submit" value="mobilebku" name="connector" class="btn btn-primary">Handy</button> +	<button type="submit" value="moa" name="connector" class="btn btn-primary">MOA-SS</button> +   </div> +</form> +</body> +</html>
\ No newline at end of file diff --git a/pdf-as-web/src/main/webapp/signstart.jsp b/pdf-as-web/src/main/webapp/signstart.jsp deleted file mode 100644 index 596f04dc..00000000 --- a/pdf-as-web/src/main/webapp/signstart.jsp +++ /dev/null @@ -1,14 +0,0 @@ -<html> -<head> -</head> -<body> -<h1>Sign PDF-Dokument</h1> -<form action="Sign" method="POST" enctype="multipart/form-data"> - -	<input type="file" name="pdffile" /> - -	<input type="submit" value="Card"> -	<input type="submit" value="Handy"> -</form> -</body> -</html>
\ No newline at end of file | 
